Prolog Mis on prolog Prolog programming in logic

  • Slides: 16
Download presentation
Prolog

Prolog

Mis on prolog • Prolog – programming in logic. • Sobib tehisintellekti rakenduste programmeerimiseks

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

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;

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

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 //

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, . .

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

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),

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 '),

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(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,

? - 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)} =

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

Mäng trips-traps-trull

Kirjandus • Loogilise programmeerimise meetod (Tõnu Tamme) • Prolog ja olümpose jumalad (Jaak Henno)

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

Küsimused