160 likes | 438 Views
Prolog. Mis on prolog. Prolog – programming in logic. Sobib tehisintellekti rakenduste programmeerimiseks (unifitseerimine, resolutsioonimeetod) Deklaratiivne. Prologi kasutus. Lausearvutuses L oomuliku keele analüüs (grammatikareeglid) E kspertsüsteemid (otsingureeglid)
E N D
Mis on prolog • Prolog – programming in logic. • Sobib tehisintellekti rakenduste programmeerimiseks (unifitseerimine, resolutsioonimeetod) • Deklaratiivne
Prologi kasutus Lausearvutuses Loomuliku keele analüüs (grammatikareeglid) Ekspertsüsteemid (otsingureeglid) Kujutuvastus (tuvastusreeglid) Planeerimine (logistikas marsruudi otsimine)
Loogikatehted prologis • Konjunktsioon: a,b • Disjunktsioon: a;b • Eitus: \+a • Implikatsioon: \+a;b • Ekvivalentsus: a,b;\+a,\+b • Unifitseerimine a = b a \== b • Objektide võrdus a == b a \== b
Loogikatehted prologis • atom(X) X on aatom • atomic(X) X on aatom või täisarv • integer(X) X on täisarv • number(X) X on arv • float(X) X on mittetäisarv • var(X) X on väärtustamata muutuja • nonvar(X) X on väärtustamata • compound(X) X on liitterm • ground(X) X on kinnine term
Aritmeetika prologis • + liitmine • - lahutamine • * korrutamine • / jagamine • // jagamine ilma murdosata • mod jäägiga jagamine • ** astendamine • is omistamine • =:= võrdne • =\= mittevõrdne
Predikaatloogika • Aatomid -- andmete, programmide, failide jne. nimed • predikaadi_nimi(argument1, ..., argumentn). • Termid – muutujad, täisarvud, reaalarvud, aatomid, listid
Plussid ja miinused • Vajalik matemaatiline taip • Täitmine raskesti jälgitav • Vajab vähe ressurssi • Töötab enamustel platvormidel • Lihtne nõu saada
Rekursioon factorial(0,1). factorial(N,F) :- N>0, N1 is N-1, factorial(N1,F1), F is N * F1. ?- factorial(4,X). X = 24 Yes ?- ?- factorial(4,24). Yes
Rekursioon t6sta(1,X,Y,_) :- write('T6sta ylemine klots '), write(X), write('lt '), write(Y), write('le '), nl. t6sta(N,X,Y,Z) :- N>1, M is N-1, t6sta(M,X,Z,Y), t6sta(1,X,Y,_), t6sta(M,Z,Y,X). t6sta(3,vasaku,parema,keske). T6sta ylemine klots vasakult paremale T6sta ylemine klots vasakult keskele T6sta ylemine klots paremalt keskele T6sta ylemine klots vasakult paremale T6sta ylemine klots keskelt vasakule T6sta ylemine klots keskelt paremale T6sta ylemine klots vasakult paremale Yes
Graafi kaar kaar(1,2). kaar(2,1). kaar(1,3). kaar(3,1). kaar(1,4). kaar(4,1). kaar(1,5). kaar(5,1). kaar(2,3). kaar(3,2). kaar(2,4). kaar(4,2). kaar(3,4). kaar(4,3). kaar(4,5). kaar(5,4).
Listid ?- member(X,[1,2,3]). X = 1 ; X = 2 ; X = 3 ; No ?- select(2,[1,2,3],Osa). Osa = [1,3] Yes ?- length([a,b,c],N). N = 3 Yes
Unifitseerimine f(x,g(b)) = f(a,y) {x/a} F(a,g(b)) = f(a,y) {y/g(b)} {y/g(b)} = f(a,g(b)) Unifitseerija üldkuju {x/a} {y/g(b)} = {x/a,y/g(b)}
Kirjandus • Loogilise programmeerimise meetod (Tõnu Tamme)Prolog ja olümpose jumalad (Jaak Henno)http://www.csupomona.edu/~jrfisher/www/prolog_tutorial/contents.html (J.R.Fisher )