Documente Academic
Documente Profesional
Documente Cultură
1. Sintaxa
2. Raţionamente în Prolog explicaţii simplificate
- Raţionamente deductive prin potrivire (unificare)
- once, !
3. Folosirea operatorilor
4. Folosirea listelor
5. Reguli recurente
Raţionament în Prolog - sau găsirea răspunsului la
întrebări - explicaţii simplificate
Se caută potriviri:
ana cu ana
Doi termeni se potrivesc dacă parent cu parent
o sunt identici sau
ana cu fred
o pot deveni identici pentru anumite valori ale unor variabile: parent(X,ana) cu
parent(fred,ana)
potrivirile la predicate încep de la nume şi aritate.
o variabila se poate potrivi cu o constanta sau altă variabilă X cu fred
parent(X,ana) cu
parent(X,fred)
Raţionament în Prolog - sau găsirea răspunsului la
întrebări - explicaţii simplificate
Exemplu
oras(ro, iasi). 1: nu
oras(uk, londra). 2: nu Răspuns:
oras(fr, paris). 3: da MORE X= paris more
oras(fr, lyon). 4: da MORE X= lyon
oras(ro, cluj). 5: nu
întrebare ?- oras(fr,X).
Raţionament în Prolog - sau găsirea răspunsului la
întrebări - explicaţii simplificate
oras(ro, cluj). %L1
oras(ro, iasi). %L2
oras(uk, londra). %L3 1. Potrivire cu L9: X←Y, Y←ana:
oras(fr, paris). %L4 (locuitorOras(Z,ana), oras(Y,Z))
oras(fr, lyon). %L5
fapte şi locuitorOras(iasi, ana). %L6 2. Rezolv primul subscop
reguli locuitorOras(iasi, mihai). %L7 locuitorOras(Z,ana)
locuitorOras(cluj, marius). %L8
locuitorTara(X,Y):- %L9
locuitorOras(Z,Y),%L10
2.1 Potrivire cu L6 Z=iasi,
oras(X,Z). %L11 Continui cu rezolvarea celui de-
al doilea subscop: oras(Y,iasi)
?- locuitorTara(Y,ana). Potrivire cu L1 – nu, L2-
întrebare da (Y=ro), L3-L5 nu
Revin cu backtracking
2.2 Potrivire cu L7 – nu
Y 2.3 Potrivire cu L8 – nu
=
r
STOP
o
Raţionament în Prolog - sau găsirea răspunsului la
întrebări - explicaţii simplificate
Raţionament în Prolog - sau găsirea răspunsului la
întrebări - explicaţii simplificate
Exerciții
Problemele Medicamente, Călătorii, Mașini
Raţionament în Prolog - explicaţii simplificate
p(X, 2, 2) = p(1,Y,X)
?- p(X, 2, 2) = p(1, Y, X).
No (0.00s cpu)
p(_, 2, 2) = p(1, Y, _)
?- p(_65, 2, 2) = p(1, Y, _85).
Y = 2
Yes (0.00s cpu)
Raţionament în Prolog- explicaţii simplificate
f(a,g(X,Y))=f(X,Z), Z=g(W,h(X))
?- f(a, g(X, Y)) = f(X, Z), Z = g(W, h(X)).
X = a
Y = h(a)
Z = g(a, h(a))
W = a
Yes (0.00s cpu)
Raţionament în Prolog - explicaţii simplificate
Exerciţii
[Ulle Endriss, Lecture Notes An Introduction to Prolog Programming, Institute
for Logic, Language and Computation, Univ. Amsterdam, 2016]
a(B, B).
?- a(1, X), a(X, Y), a(Y, Z), a(Z, 100).
Exerciții
Grad interacțiune
Întrebări şi exerciţii: