EFN, Katedra za Računarstvo Veštačka inteligencija, 2007/2008 Doc.

dr Leonid Stoimenov

Programski jezici veštačke inteligencije
Sadržaj
zOsnovne

karakteristike

Lisp z Prolog
z

Poredjenje konvencionalnih programa i VI
Programi VI Vrsta obrade Model rešavanja Tip rešenja Upravljanje/p odaci Znanje Modifikacije simbolička Deklarativan (deo baze znanja) Zadovoljavajuće Odvojeni Neprecizno Česte
VI 2007/08, L.Stoimenov

Konv.programi numerička Proceduralan (algoritam) Optimalno Isprepleteni Precizno Retke

z Zaključivanje zasnovano na znanju.Osnovni koncepti kod sistema VI Simboličko umesto numeričkog izračunavanja.Stoimenov Zašto posebni jezici za VI ? z z z z Složenost mnogih problema iz veštačke inteligencije Često se ne mogu primeniti principi za razvoj softvera iz softverskog inženjerstva Simbolička obrada Kod standardnih programskih jezika programer treba da vodi računa o velikom broju različitih struktura.Stoimenov . z Nealgoritamski pristup rešavanju problema. VI 2007/08. L. tipova podataka. L. alokaciji memorije i sl. deklaraciji promenljivih. z Primenljivost kod loše struktuiranih problema i podataka z VI 2007/08.

VI 2007/08. L.Moderni programski jezici z z z z z Primena principa sofverskog inženjerstva Mogućnost primene alata i okruženja za razvoj ugrađene strukture podataka (liste. Java.Stoimenov . Za realizaciju sistema VI: z C.) gotove operacije za pristup i manipulisanje (na primer..Stoimenov Jezici za simboličku obradu z z z z Prilagođeni problemima veštačke inteligencije koriste složene strukture podataka. kriju detalje (upravljanje memorijom. ali i poklapanje uzoraka).. VI 2007/08. dinamičke strukture) Nude viši nivo simboličke obrade koja ima svoju cenu – prevođenje i izvršavanje nije kao kod standardnih programskih jezika. IO. obilazak. L. stabla i sl. C++. .

L.Dve paradigme z Funkcionalna. L. primena principa logike predikata. glavni predstavnik ove grupe jezika je Lisp.Stoimenov z Logička z z Lisp (LISt Processing) z z z z z z John McCarthy. Funkcionalna z z podrazumeva primenu rekurzivnih funkcija. VI 2007/08. glavni predstavnik ove grupe jezika je Prolog. 1958 Jezik opšte namene Funkcionalan jezik (komponovanje funkcija i rekurzija) Interpretiran jezik (read-eval-execute) Sada takodje inkrementalna kompilacija Rekurzija VI 2007/08.Stoimenov . odnosno principa formalne logike).

Stoimenov Osnovne osobine Lisp-a (2) z z z Interpretiran jezik. Automatsko i dinamičko upravljanje memorijom.Stoimenov . tako i za simboličku obradu. Rekurzija je prirodni način programiranja. Mnogi dijalekti nude mogućnost korišćenja tipova podataka. Lisp ima jednostavnu sintaksu. L. Danas postoje i prevodioci za Lisp.Osnovne osobine Lisp-a (1) z z z z Programi i podaci se tretiraju na istovetan način. VI 2007/08. Funkcionalno programiranje zasniva se na ideji da se rezultat svake funkcije može iskoristiti kao argument druge funkcije. Lisp omogućava komponovanje (kombinovanje) funkcija. Lisp je programski jezik bez javne definicije tipa. VI 2007/08. a i poziv funkcije je lista čiji je prvi element ime funkcije (koristi se prefix notacija). Jezik sa funkcionalnim načinom programiranja. i može se primeniti kako za matematička izračunavanja. L. ali to nije neophodno. a razvojna okruženja često nude i prevodioce i interpretatore. samo u procesu izvršenja. tj. Jednostavna sintaksa. Lisp koristi liste kao osnovne strukture podataka. Primenjuje se ciklus read-evalexecute. Sistem sam rezerviše i oslobađa memoriju prema potrebama. Ne postoje tipovi podataka. U tom slučaju provera i vezivanje tipa je dinamičko. Obično postoji inkrementalno prevođenje.

Stoimenov . tako da se najlakše uči na računaru.Ispit iz VI i Lisp z z z z z z z z Common Lisp (Allegro CL. L. tako da progam može imati jasno deklarativno značenje. Uniformnost.Stoimenov Uvodne napomene o Lisp-u z z z z Umesto sekvencijalnog navođenja naredbi. preko osnovne strukture podataka . Interaktivni jezik. vežbe se rade u Lisp-u Projekat 1 se radi u Lisp-u VI 2007/08. L.liste.com Okruženje Veliki broj ugradjenih funkcija Knjiga: Common Lisp: the Language (Steele) On-line dokumentacija Lab. Rekurzivno definisanje funkcija. odnosno predstavljanje programa i podataka na isti način.franz.) http://www. Franz inc. bez opterećivanja nepotrebnim detaljima. Lisp koristi ugnježdavanje i komponovanje funkcija za definisanje programa. VI 2007/08.

L. broj. ako ispred liste nije quote (‘) z Lista: elementi liste su atomi ili liste z VI 2007/08. …) z Nema razlike izmedju malih i velikih slova (osim u stringovima) Prvi element liste se tretira kao ime funkcije. L.Stoimenov . nil.Stoimenov Primer: Liste u Lisp-u Atomi z A 1 5 neki-atom_sa_dugackimimenom Liste: z (A B C) (1 b a 3 c) Lista atoma: z (1 2 3 4 a b) Prava lista (lista listi): z (1 (2 3) (c d (e) f) 4 5) VI 2007/08.Osnovni elementi jezika Lisp S-izraz z Atom (simbol. t. string.

.Funkcije Funkcije se zadaju u prefiks notaciji. tako da je prvi element liste ime funkcije.lista kao podatak z quote(obj1 obj2 obj3 . objn) . objn) . L... a ostali elementi argumenti.lista kao podatak z (proc arg1 arg2 . takođe u obliku liste.Stoimenov .poziv funkcije Primer: Razlika između poziva funkcija i liste z Liste (podatak): z ’(+ 9 3) ili (quote (+ 9 3)) z Poziv funkcije: z (+ 9 3) => 12 z VI 2007/08.. Za poziv funkcije navodi se ime funkcije iza koga slede argumenti: z (ime-funkcije {argumenti}) Primer: (+ 2 3 5 7 100) z VI 2007/08.. argn) . L..Stoimenov Razlika između funkcija i podataka ’(obj1 obj2 obj3 .

or. log. L. 0. every Funkcije za rad sa listama: cons. rest.Stoimenov Sistemske funkcije z z z z Numericke: +.length. consp. =. first.Konstante i specijalne vrednosti z z z z z z “string” 1. equal. list. car. … Predikati: atom. *. member. cdr. … VI 2007/08. -. … Logicke: and. 5 ’simbol #\a (karakter) #( 1 2 3 ) (vektor) TRUE i FALSE z FALSE: ( ). append. /. nth. L.Stoimenov . listp. not. <. NIL ili nil VI 2007/08.

Primer: Numeričke funkcije z z z z z z z z (+ 1 2 3 4 5) => 15 (.logičko I objekata obji (or obj1 obj2 … objn) . L.Stoimenov Primer: Logičke funkcije z z z (not obj) .Stoimenov .logičko ILI objekata obji (and '() '(1 2 3)) => ( ) (or '() '(1 2 3)) => (1 2 3) z z VI 2007/08.4142135 (exp 1) => 2.negacija objekta obj (and obj1 obj2 … objn) .7182817 (square 5) => 25 VI 2007/08.1 2 3 4 5) => -13 (* 5 4 3) => 60 (/ 12 3 2) => 2 (random 100) => 55 (sqrt 2) => 1. L.

Funkcije za rad sa listama z z z z z z z z cons list append car cdr first rest length. defvar (defun kvadrat(n) (* n n)) Uslovne: if. with-open-file. osim prvog (first '(1 2 3 4)) => 1 .Stoimenov Upravljačke funkcije z z z z z z z Defun. z z z z z Primer: (car '(1 2 3 4)) => 1 .prvi element liste (cdr '(1 2 3 4)) => (2 3 4) ostatak liste. tj. apply U/I funkcije: open. svi elementi kao lista.prvi element liste (rest '(1 2 3 4)) => (2 3 4) ostatak liste. svi elementi kao lista. cond. L. when. dolist Lokalne promenljive: let i let* Globalne promenljive: setf Eval. read. tj. osim prvog VI 2007/08. close. … VI 2007/08. unless (defun fact(n) (if (= n 0) 1 (* n (fact (1.n))) Iteracija: do. write. do*. funcall. L. defparamater.Stoimenov . itd.

Stoimenov Struktura programa Program = Forme + Funkcije z Forme mogu da budu: z z z z samo-evaluirajuće (self-evaluating) simboli (symbols. variables) liste (Lists) z Argumenti funkcija mogu biti konstante.Stoimenov . ali takođe i pozivi drugih funkcija. L. atomi ili liste.nastavak z z z Paketi (packages) Strukture CLOS: objektno-orijentisana ekstenzija VI 2007/08. L. VI 2007/08.LISP .

Stoimenov .Stoimenov Jednostavniji primeri (2) z z (defun rotate-left (l) (append (cdr l) (list (car l)))) Poziv funkcije: (rotate-left '(a b c d e f)) => (B C D E F A) VI 2007/08. L.Jednostavniji primeri (1) z z (defun kvadrat(n) (* n n)) => KVADRAT Poziv realizovane funkcije: (kvadrat 3) => 9 (kvadrat 5) => 25 VI 2007/08. L.

pravila i pitanja Rekurzija VI 2007/08.Jednostavniji primeri (3) (defun flatten (l) (cond ((atom l) l) ((atom (car l)) (cons (car l) (flatten (cdr l)))) (:else (append (flatten (car l)) (flatten (cdr l)))) )) Primeri poziva: (flatten '(1 2 3)) => (1 2 3) (flatten '(1 2 (3 4) 5)) => (1 2 3 4 5) VI 2007/08.Stoimenov PROLOG z z z z PROgramming in LOGic Deklarativan jezik Jednostavna sintaksa: aksiomi. L. L.Stoimenov .

nastavak z z z z z z Logika predikata prvog reda Deklarativno programiranje Atomi (konstante): brojevi.nastavak z z z Pravila zakljucak:.y is 1+2 daje y=3. Izrazi VI 2007/08. ?.y=1+2 daje y=1+2. L. L.nasapunjan(X).1+2 =:= 2+1 daje Yes VI 2007/08. promenljive Promenljive (pocinju velikim slovom ili _) _x Strukture: skupovi entiteta.Stoimenov .opran(X). ispran(X). ?.konjukcija premisa Uvek su univerzalno kvantifikovana cist(X):. simboli.Stoimenov PROLOG . Trazenje ??. medved). predstavljaju relacije izmedju objekata prijatelj(tigar.PROLOG . prijatelj(tigar. opran(X):.X).

Stoimenov Pitanja? Dileme? Komentari? . VI 2007/08.nastavak z Disjunkcija Mrtav(X) :.PROLOG . Mrtav(X) :. L.nema_puls(X).ne_dise(X).

Sign up to vote on this title
UsefulNot useful