Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SLD PDF
SLD PDF
Resolucion SLD
1 / 114
Refinando la resolucion
4 / 114
Predicados y programas logicos
Un predicado p queda definido por el conjunto de cla usulas
(hechos y reglas) cuyas cabezas tienen ese smbolo de
predicado. As pues la definici
on de un predicado en general
tendra 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 logico es un conjunto de definiciones de
predicados (es decir, un conjunto de cla
usulas 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, tambien se podra 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 podra plantear un objetivo, i.e., entendiendo los hechos
y las reglas que hemos escrito como premisas podramos plantear
una conclusion y tratar de mostrar la validez de la argumentacion.
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-Resolucion
11 / 114
SLD-resolucion (cont.)
Formalmente:
Sea un programa logico P, un par de objetivos G y G 0 , y una
on de G a G 0 con
funcion de seleccion fs . Una derivaci
SLD-resolucion (P {G } `SLD G 0 ) es una secuencia de
objetivos G0 , G1 , . . . , Gk tal que:
G0 = G
Gk = G 0
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
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))
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.)
1 = [X1 /X , Y1 /e]
2 = [X /a, Z1 /c]
camino(c, e)
18 / 114
Ejemplo (cont.)
4 = [Z3 /e]
camino(e, e) camino(X4 , X4 )
5 = [X4 /e]
19 / 114
Ejemplo (cont.)
Si consideramos la restricci
on a las variables del objetivo original,
es decir, a X tenemos:
0 = |{X } = [X /a]
20 / 114
Hacia Prolog
21 / 114