Prolog Mis on prolog Prolog programming in logic











![? - member(X, [1, 2, 3]). X=1; X=2; X=3; No Listid ? - select(2, ? - member(X, [1, 2, 3]). X=1; X=2; X=3; No Listid ? - select(2,](https://slidetodoc.com/presentation_image_h/2038b06c6e32104f51f03c79aa91a90c/image-12.jpg)




- Slides: 16
Prolog
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 aatomic(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(argument 1, . . . , argumentn). • Termid – muutujad, täisarvud, reaalarvud, aatomid, listid
Plussid ja miinused • Vajab vähe ressurssi • Töötab enamustel platvormidel • Lihtne nõu saada • Vajalik matemaatiline taip • Täitmine raskesti jälgitav
factorial(0, 1). factorial(N, F) : N>0, N 1 is N-1, factorial(N 1, F 1), F is N * F 1. ? - factorial(4, X). X = 24 Yes ? ? - factorial(4, 24). Yes Rekursioon
Rekursioon t 6 sta(1, X, Y, _) : write('T 6 sta ylemine klots '), write(X), write('lt '), write(Y), write('le '), nl. t 6 sta(N, X, Y, Z) : N>1, M is N-1, t 6 sta(M, X, Z, Y), t 6 sta(1, X, Y, _), t 6 sta(M, Z, Y, X). t 6 sta(3, vasaku, parema, keske). T 6 sta ylemine klots vasakult paremale T 6 sta ylemine klots vasakult keskele T 6 sta ylemine klots paremalt keskele T 6 sta ylemine klots vasakult paremale T 6 sta ylemine klots keskelt vasakule T 6 sta ylemine klots keskelt paremale T 6 sta ylemine klots vasakult paremale Yes
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). Graafi kaar
? - member(X, [1, 2, 3]). X=1; X=2; X=3; No Listid ? - 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)} = f(a, g(b)) Unifitseerija üldkuju {x/a} {y/g(b)} = {x/a, y/g(b)}
Mäng trips-traps-trull
Kirjandus • Loogilise programmeerimise meetod (Tõnu Tamme) • Prolog ja olümpose jumalad (Jaak Henno) • http: //www. csupomona. edu/~jrfisher/www/prolog_tutorial/conten ts. html (J. R. Fisher )
Küsimused