Professional Documents
Culture Documents
Clau Sulas de Horn. Resoluci On SLD
Clau Sulas de Horn. Resoluci On SLD
Resoluci´on SLD
1 /114
Refinando la resoluci´on
4 /114
Predicados y programas l´ogicos
Un predicado p queda definido por el conjunto de clau´sulas
(hechos y reglas) cuyas cabezas tienen ese s´ımbolo de
predicado. As´ı pues la definici´on de un predicado en general
tendr´a el aspecto:
p(t1, . . . , tn) ←
p(s1, . . . , sn) ←
. ..
p(u1, . . . , un) ← q1(. . .), . . . , qm(. . .)
p(u1, . . . , un) ← r1(. . .), . . . , rk (. . .)
. ..
(puede haber solo hechos, solo reglas o ambos tipos).
Un programa l´ogico es un conjunto de definiciones de
predicados (es decir, un conjunto de clau´sulas definidas:
hechos y reglas).
5 /114
Un ejemplo
a b
arco(a, b) ←
arco(a, c ) ←
arco(b, d ) ←
c d arco(c, d ) ←
arco(c, e) ←
arco(d, e) ←
6 /114
Ejemplo (cont.)
camino(X, Y ) ← X = Y
camino(X, Y ) ← arco(X, Z ), camino(Z, Y )
(la primera regla, tambi´en se podr´ıa haber escrito como un hecho:
camino(X, X ) ← )
La lectura de estas dos resglas es:
hay un camino de un nodo a otro, si son el mismo
hay un camino de un nodo X a otro Y si existe un nodo Z tal
que hay arco entre X y Z , y hay camino entre Z e Y
7 /114
Ejemplo (cont.)
Ahora, se podr´ıa plantear un objetivo, i.e., entendiendo los hechos
y las reglas que hemos escrito como premisas podr´ıamos plantear
una conclusi´on y tratar de mostrar la validez de la argumentaci´on.
Por ejemplo, podemos plantear los objetivos (o preguntas):
← arco(b, d)
← camino(a, d)
← camino(a, X )
← camino(e, Y )
← camino(X, Y )
← camino(X, b), camino(X, d)
Otro ejemplo
suma(c, X , X ) ←
suma(s(X ), Y , s(Z )) ← suma(X, Y , Z )
y plantear distintos objetivos:
← suma(s(c), s(s(c)), s(s(s(c ))))
← suma(X, s(c ), s(s(c)))
← suma(s(c), Y , Z )
← suma(X, Y , Z )
← suma(X, X , Z ), suma(Z, Z , H)
10 /114
SLD-Resoluci´on
11 /114
SLD-resoluci´on (cont.)
Formalmente:
Sea un programa l´ogico P, un par de objetivos G y G j , y una
funci´on de selecci´on fs . Una derivaci´on de G a G j con
SLD-resoluci´on (P ∪ {G } €SLD G j ) es una secuencia de
objetivos G0, G1, . . . , Gk tal que:
G0 = G
Gk = G j
para todo i ∈ {0, ..., k − 1}, Gi +1 de obtiene a partir de Gi
“resolviendo” (en el sentido de la resoluci´on general) el literal
L = fs(Gi ) con una variante de una regla de P.
12 /114
Ejemplo
Supongamos el programa (c representa cero y s sucesor):
suma(c, Y , Y ) ←
suma(s(X ), Y , s(Z )) ← suma(X, Y , Z )
θ2 = [Y2 /s(c)]
←
13 /114
Respuestas correctas
Dado un programa P y un objetivo G ≡← q1, . . . , qn, diremosque
una sustituci´on θes una respuesta correcta para P ∪ {G } si
θu´nicamente actu´a sobre las variables de G y
P |= ∀X1. . . . .∀Xm(q1 ∧ . . . ∧ qn)θ, siendo {X 1 , . . . , X n } el
conjunto de variables de G (notaci´on: P |= [(q1 ∧ . . . ∧ qn )θ]∀)
G ≡ ← suma(c,s(A), B) suma(c, Y1 , Y 1 ) ←
θ1 = [Y1 /s(A),B/s(A)]
←
14 /114
Respuestas correctas (cont.)
θ= [B/s(A)] es una respuesta correcta para P ∪ {G }:
por un lado, aplicando θtenemos suma(c, s(A), s(A))
y ahora, si consideramos cualquier otra sustituci´on σ
tendremos que
P |= suma(c, s(A), s(A))σ
15 /114
arco(a, b) ←
arco(a, c ) ←
arco(b, d ) ←
arco(c, d ) ←
arco(c, e) ←
arco(d, e) ←
camino(X, X ) ←
camino(X, Y ) ← arco(X, Z ), camino(Z, Y )
Y consideremos el objetivo ← camino(X, e)
17 /114
Ejemplo (cont.)
θ2 = [X/a, Z1 /c]
← camino(c,e)
18 /114
Ejemplo (cont.)
θ4 = [Z3 /e]
← camino(e,e) ← camino(X4 , X 4 )
θ5 = [X4 /e]
←
19 /114
Ejemplo (cont.)
20 /114
Hacia Prolog
21 /114