Documente Academic
Documente Profesional
Documente Cultură
Algoritmul de unificare
Programare logica
Substitutii
O substitutie este o functie de nlocuire a variabilelor cu
termeni. Notatia [X1 7 t1 , . . . , Xn 7 tn ] descrie substitutia
care nlocuieste variabila X1 cu termenul t1 , X2 cu t2 , etc.
Daca este o substitutie s i e este o expresie, atunci e
este termenul obtinut prin nlocuirea variabilelor din e n
felul descris de substitutie.
Exemplu
Daca
e = are(X , masina(Y , Z ))
= [X 7 ion, Y 7 dacia(rosu), Z 7 motor (benzina)]
atunci e = are(ion, masina(dacia(rosu), motor (benzina)))
Programare logica
Compunerea substitutiilor
B Domeniul unei substitutii = [X1 7 t1 , . . . , Xn 7 tn ] este
multimea de variabile dom() = {X1 , . . . , Xn }.
B Daca 1 = [X1 7 s1 , . . . , Xm 7 sm ] s i
2 = [Y1 7 t1 , . . . , Yn 7 tn ] sunt substitutii, atunci
compunerea lui 1 cu 2 este substitutia
1 2 = [ X1 7 s1 2 , . . . , Xm 7 sm 2 ,
Yi1 7 ti1 , . . . , Yip 7 tip ]
unde {Yi1 , . . . , Yip } = {Y1 , . . . , Yn } {X1 , . . . , Xm }.
Exemplu
1 = [X 7 f (Y ), Y 7 g(Z , h(T ))], 2 = [Y 7 r (a, T ), Z 7 b, U 7 c]
1 2 = [X 7 f (r (a, T )), Y 7 g(b, h(T )), Z 7 b, U 7 c]
Programare logica
Unificatori
Definitie
Un unificator al expresiilor e1 s i e2 este o substitutie astfel
nct e1 = e2 .
Exemplu
e1 = f (X , g(a), g(Z )) s i e2 = f (g(Y ), g(Y ), g(g(X ))) au
unificatorul = {X 7 g(a), Y 7 a, Z 7 g(g(a))} deoarece
e1 = f (g(a), g(a), g(g(g(a))))
e2 = f (g(a), g(a), g(g(g(a))))
Programare logica
Unificatori
Definitie
Un unificator al expresiilor e1 s i e2 este o substitutie astfel
nct e1 = e2 .
Exemplu
e1 = f (X , g(a), g(Z )) s i e2 = f (g(Y ), g(Y ), g(g(X ))) au
unificatorul = {X 7 g(a), Y 7 a, Z 7 g(g(a))} deoarece
e1 = f (g(a), g(a), g(g(g(a))))
e2 = f (g(a), g(a), g(g(g(a))))
Problema de unificare
Se dau expresiile s s i t
Sa se determine un unificator al lui s s i t, sau sa se
Programare logica
Programare logica
Programare logica
fiecarei
expresii.
3. Se deplaseaza simultan cei 2 indicatori de la stnga la dreapta,
pna cnd ambii ajung la sfrsitul
cte un simbol deodata,
expresiilor (succes) sau pna cnd indica simboluri diferite.
1
celalalt
este primul simbol al unui subtermen (de exemplu, t).
I Daca X apare n t, returneaza fail.
I Altfel, nlocuieste X cu t n
toti termenii ce apar n
toate locurile n care apare X n s s i t
Programare logica
f (X , g(a), g(Z ))
= []
Programare logica
f (X , g(a), g(Z ))
= []
Programare logica
= [X 7 g(Y )]
Programare logica
= [X 7 g(Y )]
Programare logica
= [X 7 g(a), Y 7 a]
Programare logica
= [X 7 g(a), Y 7 a]
Programare logica
= [X 7 g(a), Y 7 a, Z 7 g(g(a))]
Programare logica
success
= [X 7 g(a), Y 7 a, Z 7 g(g(a))]
Programare logica