Práctica Resolución 2 - Universidad de Buenos Aires

Anuncio
Resolución lineal y, en particular,
Resolución SLD
Paradigmas de Lenguajes de Programación
Facultad de Ciencias Exactas y Naturales
Universidad de Buenos Aires
7 de Junio de 2011
Resolución en Lógica de Primer Orden Resolución SLD
Repaso Ejercicio
Resolución en lógica de primer orden
Repaso
Estrategia
Para demostrar que la fórmula F es universalmente válida
Demostramos que ¬F es insatisfactible.
Para demostrar que F se deduce de H1 , . . . Hn
Demostramos que H1 , . . . , Hn , ¬F es insatisfactible.
Esquema general
Expresar la o las fórmulas como cláusulas.
Aplicar sucesivamente un paso de resolución
(generando nuevas cláusulas)...
Hasta llegar a la cláusula vacı́a
o concluir que no es posible llegar a ella.
Resolución en Lógica de Primer Orden Resolución SLD
Repaso Ejercicio
Cómo mantenernos en lı́nea
Si un conjunto de cláusulas es insatisfactible, existe una secuencia de
pasos de resolución lineal que lo refuta (prueba su insatisfactibilidad). Es
decir, una secuencia de la forma:
B1 SSS
C0
SSSS
SS
B2 SSS
C1
SSSS
SS
B3 SSS
C2
SSSS
SS
C3
...
Bp−1 SS
SSSS
S
C
Bp SSS
SSSS p−1
Cp = 2
σ1
σ2
σ3
σp−1
σp
donde C0 y cada Bi es un elemento de S o algún Cj con j < i.
Resolución en Lógica de Primer Orden Resolución SLD
Repaso Ejercicio
Ejemplo
Recuperatorio 2◦ parcial 2◦ Cuat. 2006
Las siguientes son expresiones1 de público conocimiento:
Cast.: Para un peronista no hay nada mejor que otro peronista
1◦ o.:
∀x1 , y1 (peronista(x1 ) ∧ mejorPara(x1 , y1 ) ⇒ peronista(y1 ))
Claus.:
{¬peronista(x1 ), ¬mejorPara(x1 , y1 ), peronista(y1 )}
Cast.:
1◦ o.:
Claus.:
Cast.:
1◦ o.:
Claus.:
Lo mejor que hizo la vieja es el pibe que maneja
∀x2 (viejo(x2 ) ⇒ (∃y2 (pibe(y2 ) ∧ maneja(y2 ) ∧ mejorPara(x2 , y2 ))))
{¬viejo(x2 ), pibe(hijoDe(x2 ))}
{¬viejo(x3 ), maneja(hijoDe(x3 ))}
{¬viejo(x4 ), mejorPara(x4 , hijoDe(x4 ))}
Viejos son los trapos
∀x5 (viejo(x5 ) ⇒ trapo(x5 ))
{¬viejo(x5 ), trapo(x5 )}
Cast.: Todavı́a quedan peronistas de los viejos
1◦ o.:
∃x6 (viejo(x6 ) ∧ peronista(x6 ))
Claus.:
{viejo(elViejoPeronista)}
{peronista(elViejoPeronista)}
Resolución en Lógica de Primer Orden Resolución SLD
Repaso Ejercicio
Ejemplo (cont.)
Recuperatorio 2◦ parcial 2◦ Cuat. 2006
A partir de ellas, se desea demostrar que:
Cast.: Existe un pibe peronista que es lo mejor para un trapo
1◦ o.: ∃x8 (pibe(x8 ) ∧ peronista(x8 ) ∧ ∃y8 (trapo(y8 ) ∧ mejorPara(y8 , x8 )))
Neg.: ∀x8 (¬pibe(x8 ) ∨ ¬peronista(x8 ) ∨ ∀y8 (¬trapo(y8 ) ∨ ¬mejorPara(y8 , x8 )))
Claus.:
{¬pibe(x8 ), ¬peronista(x8 ), ¬trapo(y8 ), ¬mejorPara(y8 , x8 )}
Resolución en Lógica de Primer Orden Resolución SLD
Repaso Ejercicio
Ejemplo
Recuperatorio 2◦ parcial 2◦ Cuat. 2006
Las siguientes son expresiones1 de público conocimiento:
Cast.: Para un peronista no hay nada mejor que otro peronista
1◦ o.:
∀x1 , y1 (peronista(x1 ) ∧ mejorPara(x1 , y1 ) ⇒ peronista(y1 ))
Claus.:
{¬peronista(x1 ), ¬mejorPara(x1 , y1 ), peronista(y1 )}
Cast.:
1◦ o.:
Claus.:
Cast.:
1◦ o.:
Claus.:
Lo mejor que hizo la vieja es el pibe que maneja
∀x2 (viejo(x2 ) ⇒ (∃y2 (pibe(y2 ) ∧ maneja(y2 ) ∧ mejorPara(x2 , y2 ))))
{¬viejo(x2 ), pibe(hijoDe(x2 ))}
{¬viejo(x3 ), maneja(hijoDe(x3 ))}
{¬viejo(x4 ), mejorPara(x4 , hijoDe(x4 ))}
Viejos son los trapos
∀x5 (viejo(x5 ) ⇒ trapo(x5 ))
{¬viejo(x5 ), trapo(x5 )}
Cast.: Todavı́a quedan peronistas de los viejos
1◦ o.:
∃x6 (viejo(x6 ) ∧ peronista(x6 ))
Claus.:
{viejo(elViejoPeronista)}
{peronista(elViejoPeronista)}
Resolución en Lógica de Primer Orden Resolución SLD
Repaso Ejercicio
Ejemplo (cont.)
Recuperatorio 2◦ parcial 2◦ Cuat. 2006
A partir de ellas, se desea demostrar que:
Cast.: Existe un pibe peronista que es lo mejor para un trapo
1◦ o.: ∃x8 (pibe(x8 ) ∧ peronista(x8 ) ∧ ∃y8 (trapo(y8 ) ∧ mejorPara(y8 , x8 )))
Neg.: ∀x8 (¬pibe(x8 ) ∨ ¬peronista(x8 ) ∨ ∀y8 (¬trapo(y8 ) ∨ ¬mejorPara(y8 , x8 )))
Claus.:
{¬pibe(x8 ), ¬peronista(x8 ), ¬trapo(y8 ), ¬mejorPara(y8 , x8 )}
Resolución en Lógica de Primer Orden Resolución SLD
Repaso Ejercicio
Ejemplo (resolviendo)
Recuperatorio 2◦ parcial 2◦ Cuat. 2006
{A1 , ..., Am , P1 , ..., Pk }
{B1 , ..., Bn , ¬Q1 , ..., ¬Ql }
σ({A1 , ..., Am , B1 , ..., Bn })
donde σ es el MGU de {P1 , ..., Pk , Q1 , ..., Ql }.
1
{¬peronista(x1 ), ¬mejorPara(x1 , y1 ), peronista(y1 )}
2
{¬viejo(x2 ), pibe(hijoDe(x2 ))}
3
{¬viejo(x3 ), maneja(hijoDe(x3 ))}
4
{¬viejo(x4 ), mejorPara(x4 , hijoDe(x4 ))}
5
{¬viejo(x5 ), trapo(x5 )}
6
{viejo(elViejoPeronista)}
7
{peronista(elViejoPeronista)}
8
{¬pibe(x8 ), ¬peronista(x8 ), ¬trapo(y8 ), ¬mejorPara(y8 , x8 )}
Resolución en Lógica de Primer Orden Resolución SLD
Motivación Cláusulas de Horn Resolución Árbol de resolución
Resolución SLD (Selective Linear Definite)
La resolución es cara, pero hay cupones de descuento...
El método de resolución es completo, pero ineficiente.
Búsqueda - selección.
Resolución lineal reduce el espacio de búsqueda.
Resolución SLD es lineal y (un poco) más eficiente,
preservando completitud...
¡pero no puede aplicarse a cualquier conjunto de cláusulas!
Resolución en Lógica de Primer Orden Resolución SLD
Motivación Cláusulas de Horn Resolución Árbol de resolución
Cláusulas de Horn
Cláusulas con a lo sumo un literal positivo
{P(x), P(y ), ¬Q(y , z)}
{Q(E , z)} X
→ cláusula de definición (hecho)
{P(x), ¬P(E )} X
→ cláusula de definición (regla)
{P(x), ¬P(E ), Q(x, y )}
{P(x), ¬P(E ), ¬Q(x, y )} X→ cláusula de definición (regla)
{¬P(x), ¬P(E ), ¬Q(x, y )} X
→ cláusula objetivo
No toda fórmula puede expresarse como una cláusula de Horn
∀x(P(x) ∨ Q(x))
Resolución en Lógica de Primer Orden Resolución SLD
Motivación Cláusulas de Horn Resolución Árbol de resolución
Resolución SLD
Un caso particular de la resolución general
Cláusulas de Horn con exactamente una cláusula objetivo
Resolvemos la cláusula objetivo con una cláusula de definición
Eso nos da otra cláusula objetivo
Repetimos el proceso con esta nueva cláusula
Hasta llegar a la cláusula vacı́a
Sustitución respuesta
obj.
def.
z
}|
{
z
}|
{
{R, ¬B1 , . . . , ¬Bn }
{¬A1 , . . . , ¬Ak−1 , ¬Ak , ¬Ak+1 , . . . , ¬Am }
σ({¬A1 , . . . , ¬Ak−1 , ¬B1 , . . . , ¬Bn , ¬Ak+1 , . . . , ¬Am })
{z
}
|
nuevo obj.
donde σ es el MGU de {R, Ak }.
Resolución en Lógica de Primer Orden Resolución SLD
Motivación Cláusulas de Horn Resolución Árbol de resolución
Resolución SLD
Ejemplo
“Los enemigos de mis enemigos son mis amigos.”
1
{amigo(a, b), ¬enemigo(a, c), ¬enemigo(c, b)}
2
{enemigo(Reed, Dr. Doom)}
3
4
{enemigo(Dr. Doom, Ben)}
{enemigo(Dr. Doom, Johnny)}
5
{¬amigo(Reed, x)}
6
(1 y 5) {¬enemigo(Reed, c), ¬enemigo(c, x)}
σ = {a ← Reed, b ← x}2
7
(2 y 6) {¬enemigo(Dr. Doom, x)}
σ = {a ← Reed, b ← x, c ← Dr. Doom}
(3 y 7) 2
σ = {a ← Reed, b ← Ben, c ← Dr. Doom, x ← Ben}
8
2
En este ejemplo σ es siempre el resultado de la composición de todas las
sustituciones hasta el momento.
Resolución en Lógica de Primer Orden Resolución SLD
Motivación Cláusulas de Horn Resolución Árbol de resolución
Árbol de resolución
¡Es una secuencia!
La resolución SLD es lineal: no hay vuelta atrás posible.
Si el objetivo puede resolverse con más de una regla, elegir la
correcta.
Si hay más de una, elegir cualquiera.
Si nos equivocamos, entonces lo que hicimos no es parte de la
resolución SLD.
Puede haber varias resoluciones SLD posibles.
Prolog intenta buscar todas (resolución SLD + backtracking).
Resolución en Lógica de Primer Orden Resolución SLD
Motivación Cláusulas de Horn Resolución Árbol de resolución
Resolución SLD y Prolog
Preguntas generales
El método de resolución SLD ¿es determinı́stico?
¿Es completo?
¿Prolog usa resolución SLD? ¿Su método es completo? ¿Es
determinı́stico?
¿Dónde está el problema (o la diferencia)?
Resolución en Lógica de Primer Orden Resolución SLD
Motivación Cláusulas de Horn Resolución Árbol de resolución
Resolución SLD y Prolog
El ejemplo anterior en Prolog
“Los enemigos de mis enemigos son mis amigos.”
{amigo(a, b), ¬enemigo(a, c), ¬enemigo(c, b)}
{enemigo(Reed, Dr. Doom)}
{enemigo(Dr. Doom, Ben)}
{enemigo(Dr. Doom, Johnny)}
amigo(A, B) :- enemigo(A, C), enemigo(C, B).
enemigo(reed, drdoom).
enemigo(drdoom, ben).
enemigo(drdoom, johnny).
{¬amigo(Reed, x)}
?- amigo(reed, X).
¿Cuál es la relación? ¿Cualquier ejemplo se puede traducir ası́?
¿Qué hay que tener en cuenta?
Resolución en Lógica de Primer Orden Resolución SLD
Motivación Cláusulas de Horn Resolución Árbol de resolución
Ejemplo
◦
◦
2 parcial 2 Cuat. 2006
El juego “Seis grados de Kevin Bacon” (six degrees of Kevin
Bacon) propone que cualquier actor está vinculado en a lo sumo
seis pasos a Kevin Bacon, a través de la participación en una
pelı́cula. El grado Kevin Bacon de un actor es el número de dichos
vı́nculos. Por ejemplo, Nicole Kidman tiene grado 2: estuvo en
Ojos bien cerrados con Tom Cruise, y él en Cuestión de Honor con
Kevin Bacon.
Usaremos los sı́mbolos actuó(actor, peli) para expresar que el actor
actor actuó en la pelı́cula peli, y juntos(a1 , a1 ) para decir que los
actores a1 y a2 actuaron juntos en alguna pelı́cula. Además,
usaremos constantes como Rı́oMı́stico, RobertDeNiro, etc. para
referirnos a actores y pelı́culas.
Resolución en Lógica de Primer Orden Resolución SLD
Motivación Cláusulas de Horn Resolución Árbol de resolución
Ejemplo (cont.)
2◦ parcial 2◦ Cuat. 2006
1
Regla: “Dos actores se consideran juntos si actuaron en la
misma pelı́cula”.
2
Objetivo: “Jorge Porcel tiene grado Kevin Bacon 3” (en
términos de juntos)
3
Hechos: de la forma actuó(actor, peli), tomados de la
siguiente información de pelı́culas:
Dos por el dinero: Con Al Pacino, Matthew McConaughey,
Rene Russo y Kevin Chapman.
Rı́o Mı́stico: Con Tim Robbins, Kevin Bacon, Laurence
Fishbourne, y Kevin Chapman.
Carlito’s Way: Con Al Pacino, Sean Penn, Penelope Ann
Miller, John Leguizamo y Jorge Porcel.
Demostrar que vale el objetivo usando resolución SLD.
Resolución en Lógica de Primer Orden Resolución SLD
Motivación Cláusulas de Horn Resolución Árbol de resolución
Ejemplo (cont.)
2◦ parcial 2◦ Cuat. 2006
1
{juntos(a1 , a2 ), ¬actuó(a1 , peli), ¬actuó(a2 , peli)}
2
{actuó(KevinChapman, DosPorElDinero)}
3
{actuó(AlPacino, DosPorElDinero)}
4
{actuó(KevinChapman, Rı́oMı́stico)}
5
{actuó(KevinBacon, Rı́oMı́stico)}
6
{actuó(AlPacino, CarlitosWay)}
7
{actuó(Porcel, CarlitosWay)}
..
.
8
{¬juntos(Porcel, x), ¬juntos(x, y ), ¬juntos(y , KevinBacon)}
Resolución en Lógica de Primer Orden Resolución SLD
Motivación Cláusulas de Horn Resolución Árbol de resolución
Fin 2
Descargar