• No se han encontrado resultados

1. Cl´ ausulas de Horn y resoluci´ on SLD

N/A
N/A
Protected

Academic year: 2022

Share "1. Cl´ ausulas de Horn y resoluci´ on SLD"

Copied!
5
0
0

Texto completo

(1)

L´ ogica Computacional, 2017-1

Nota 10. Resoluci´ on SLD y programaci´ on l´ ogica * .

No´ e Hern´ andez S.

1. Cl´ ausulas de Horn y resoluci´ on SLD

1.1. Cl´ ausulas de Horn

Definici´on 1. Una cl´ausula de Horn es una cl´ausula de la forma A ← B1, . . . , Bn≡ A ∨ ¬B1∨ . . . ∨ ¬Bn

con a lo m´as una literal positiva. A es la cabeza y las literales negadas Bi son el cuerpo.

Un hecho es una cl´ausula de Horn unitaria positiva A ←.

Una cl´ausula meta es una cl´ausula de Horn sin literal positiva ← B1, . . . , Bn.

Una cl´ausula de programa es una cl´ausula de Horn con una literal positiva y una o m´as literales negativas.



En programaci´on l´ogica se prefiere el uso de ←, el operador de implicaci´on inverso, sobre el operador de implicaci´on hacia adelante →. En lugar de ← podemos optar tambi´en por la notaci´on de Prolog, :-.

Definici´on 2. Los siguientes conceptos ser´an de utilidad:

Un conjunto de cl´ausulas de Horn que no sean cl´ausulas meta y cuyas cabezas tengan el mismo s´ımbolo de predicado es un procedimiento.

Un conjunto de procedimientos es un programa l´ogico.

Un procedimiento compuesto por hechos sin variables es una base de datos.



*Esta nota se base en material elaborado por el prof. Favio Miranda y en el libro de Ben-Ari M., Mathematical Logic for Computer Science

(2)

1.2. Sustituci´ on de respuesta correcta

Definici´on 3. Sea P un programa y G una cl´ausula meta. Una sustituci´on θ para las variables en G es una sustituci´on de respuesta correcta si P |= ∀(¬Gθ), donde la cuantificaci´on universal se

toma sobre todas las variables libres en ¬Gθ. 

Observe que la cl´ausula meta tiene impl´ıcitamente la forma negada, que es adecuada para efectuar la refutaci´on por resoluci´on. As´ı, ∀(¬Gθ) equivale una conjunci´on de literales positivas que se satisface siempre que el programa l´ogico P se satisfaga. Es decir, dado un programa P , una cl´ausula meta G = ¬G1∨ . . . ∨ ¬Gn, y una sustituci´on de respuesta correcta θ, por definici´on P |= ∀(¬Gθ), as´ı:

P |= ∀(G1∧ . . . ∧ Gn

Por lo tanto, para cualquier sustituci´on σ que convierta a la conjunci´on anterior en una f´ormula sin variables, (G1∧ . . . ∧ Gn)θσ es verdadera en todo modelo de P . De all´ı la terminolog´ıa pues la sustituci´on θσ da una respuesta a la consulta expresada por la cl´ausula meta.

1.3. Resoluci´ on SLD

Definici´on 4. (Resoluci´on SLD) Sea P un programa l´ogico y G una cl´ausula meta. Una derivaci´on por resoluci´on SLD es una secuencia de pasos de resoluci´on entre las cl´ausulas meta y las cl´ausulas de programa. La primer cl´ausula meta G0 es G. Gi+1 se deriva de Gi seleccionando una literal Aji ∈ Gi, eligiendo un cl´ausula Ci ∈ P tal que la cabeza de Ci unifica con Aji por un umg θ y realizando:

Gi= ← A1i, . . . , Aj−1i , Aji, Aj+1i , . . . , Anii Ci= Bi0 ← Bi1, . . . , Biki

Ajiθi= Bi0θi

Gi+1= ← (A1i, . . . , Aj−1i , Bi1, . . . , Biki, Aj+1i , . . . , Aniii Una refutaci´on SLD es una derivation SLD de .

La regla para seleccionar una literal Aji de una cl´ausula meta Gi es la regla de c´omputo. La regla para escoger una cl´ausula Ci ∈ P es la regla de b´usqueda. 

Definici´on 5. A continuaci´on se dan algunas definiciones para saber de donde proviene el t´ermino SLD para la resoluci´on que estamos estudiando:

Resoluci´on lineal. Es una regla en la cual la resoluci´on utiliza siempre la cl´ausula meta actual que se va generando.

La regla de c´omputo o funci´on de selecci´on. Se refiere a la regla que indica cual ´atomo de la meta se elige para aplicar resoluci´on. En Prolog se elige la literal m´as a la izquierda de la cl´ausula meta.

(3)

Una cl´ausula definida es de la forma A ← B1, . . . , Bi con i ≥ 0. Si i = 0, la cl´ausula es un hecho.

Resoluci´on SLD (Selected, linear, definite resolution) Resoluci´on lineal con funci´on de selecci´on tomando cl´ausulas definidas.



Note que la resoluci´on SLD es muy sensible a las reglas de c´omputo y de b´usqueda que se emplean. Puede que para un programa P y una cl´ausula meta G existan varias derivaciones pro- duciendo distintas sustituciones de respuesta correcta; o, dependiendo de estas reglas, puede que la derivaci´on entre en un ciclo y no termine, o bien, puede terminar con una falla al no poder realizar m´as pasos de la derivaci´on.

Refutaciones como c´omputos

Dado un programa y una consulta expresada como una cl´ausula meta, el resultado de una refu- taci´on exitosa es una respuesta obtenida de las sustituciones llevadas a cabo por la unificaci´on. En lenguajes de programaci´on, el control del c´omputo se construye expl´ıcitamente por el programador, quien puede ocupar estructuras de control como:

if(...) ... else ...

for(...) ...

En programaci´on l´ogica, el programador escribe f´ormulas declarativas que describen la relaci´on entre la entrada y la salida. El motor de inferencia de la resoluci´on provee una estructura de control impl´ıcita uniforme, as´ı que se mitiga la tarea del programador de especificar el control expl´ıcitamente. Los lenguajes de programaci´on l´ogicos permiten abstraer la estrucutra de control.

Dicho control depende fuertemente de las reglas de c´omputo y de b´usqueda.

1.4. Arbol SLD ´

Definici´on 6. Sea P un conjunto de cl´ausulas de programa, R una regla de c´omputo y G una cl´ausula meta. Un ´arbol SLD se genera del siguiente modo: La ra´ız se etiqueta con la cl´ausula meta G. Dado un nodo n etiquetado con un cl´ausula meta Gn, se produce un hijo ni por cada cl´ausula meta nueva Gni que se obtiene al resolver la literal escogida por R con la cabeza de una cl´ausula

en P . 

Definici´on 7. En un ´arbol SLD, una rama que lleva a una refutaci´on es una rama de ´exito. Una rama que lleva a una cl´ausula meta cuya literal seleccionada no unifica con ninguna cl´ausula en el programa es una rama de falla. Una rama que corresponde a una derivaci´on que no termina es

una rama infinita. 

Teorema 1. Sea P un programa y G una cl´ausula meta. Entonces todos los ´arboles SLD para P y G tienen un n´umero infinito de ramas de ´exito o tienen todos el mismo n´umero finito de ramas de ´exito.

(4)

Definici´on 8. Una regla de b´usqueda es un procedimiento para buscar una refutaci´on en un

´

arbol SLD. Un procedimiento de refutaci´on SLD es el algoritmo de resoluci´on SLD junto con la especificaci´on de una regla de c´omputo y una regla de b´usqueda. 

Definici´on 9. Un ´arbol de prueba por refutaci´on basado en resoluci´on SLD es un ´arbol binario (aunque su forma es lineal) con nodos etiquetados con cl´ausulas meta o cl´ausulas de programa, constru´ıdo mediante aplicaciones de la regla de resoluci´on binaria del siguiente modo: si CR es una cl´ausula resolvente a partir de la cl´ausula de programa C y de la meta G, entonces el ´arbol

tendr´a a CR como hijo de C y de G. 

2. Prolog

Prolog fue el primer lenguaje de programaci´on l´ogica. La regla de c´omputo en Prolog escoge la literal m´as a la izquierda. La regla de b´usqueda toma cl´ausulas de arriba hacia abajo. La notaci´on en Prolog difiere de la notaci´on matem´atica que hemos usado:

a) las variables inician con letras may´usculas, b) los predicados inician con letras min´usculas,

c) todas las declaraciones terminan con un punto (.), y d) el s´ımbolo :- se usa en lugar de ←.

2.1. B´ usqueda a profundidad

La b´usqueda en un ´arbol SLD generado por Prolog sigue una b´usqueda a profundidad, lo que puede originar la no terminaci´on de un c´omputo, incluso si existe un c´omputo que en efecto termina. Un programador de Prolog debe ordenar cuidadosamente las cl´ausulas dentro de un procedimiento y las literales dentro de las cl´ausulas para evitar la no terminaci´on.

Como una falla puede ocurrir en cualquier paso, Prolog almacena una lista de puntos de retorno1. Estos puntos representan nodos previos en el ´arbol SLD donde existen ramas adicionales por explorar.

Un concepto importante al programar en Prolog es el forzar la falla. Esto se implementa por el predicado fail. En esencia, una vez llegado el predicado fail se obliga a regresar al punto de retorno inmediato anterior. Prolog carece de estructuras iterativas tales como los ciclos for y while, as´ı que la recursi´on y el forzar la falla son t´ecnicas de programaci´on fundamentales en este lenguaje.

2.2. Prolog y la teor´ıa de programaci´ on l´ ogica

Predicados no l´ogicos

Los predicados no l´ogicos son predicados cuyo prop´osito principal es generar efectos secundarios.

El ejemplo obvio son los predicados de entrada y salida (I/O) read y write que no tienen significado declarativo como f´ormulas l´ogicas.

1Backtrack point

(5)

Aritm´etica

Prolog deja la programaci´on l´ogica te´orica en su tratamiento de tipos de datos num´ericos.

Aunque es posible formalizar la aritm´etica en l´ogica de primer orden, hay dos problemas con este formalismo. Primero, ser´ıa algo inc´omodo, por ejemplo, al ejecutar una consulta sobre el n´umero de empleados en un departamento y recibir como respuesta el t´ermino f (f (f (f (f (a))))) en lugar de 5. El segundo problema es la ineficiencia de la resoluci´on como m´etodo de computaci´on n´umerica.

Prolog soporta el c´omputo de la artim´etica est´andar. La sintaxis es la de un predicado con un operador infijo, a saber, Result is Expression.

Los predicados aritm´eticos difieren de los predicados ordinarios porque son de ida ´unicamente, no como lo es la unificaci´on. Si 10 is X+Y, X y Y podr´ıan ser unificados con 0 y 10, y al tomar puntos de retorno, podr´ıan ser unificados con 1 y 9, y as´ı sucesivamente. Sin embargo, esto es ilegal. En Result is Expression, Expression debe ser evaluada a un valor n´umerico, entonces dicho valor es unificado con Result (quien es t´ıpicamente una variable que no se ha instanciado).

Los predicados aritm´eticos no son enunciados de asignaci´on.

Cut

La modificaci´on m´as controversial a la programaci´on l´ogica introducida en Prolog es el cor- te(cut). Considere el siguiente programa para calcular el factorial de un n´umero N :

factorial(0, 1).

factorial(N, F):- N1 is N-1,

factorial(N1, F1), F is N*F1.

Esta es una traducci´on a Prolog de la f´ormula recursiva:

f (0) = 1, f (n) = n · f (n − 1).

Ahora, supongamos que es llamado por otro procedimiento, tal vez uno que verifique una propiedad de n´umeros que son factoriales:

check(N) :- factorial(N, F), property(F).

Si check es invocado con N=0, llamar´a a factorial(0, F) lo que devolver´a F=1 y llamar´a a property(1). Suponga que esta llamada falla. Entonces el procedimiento de resolu- ci´on SLD volver´a a un punto de retorno, deshar´a la sustituci´on F=1, y lo intentar´a con la segunda cl´ausula en el procedimiento para factorial. La llamada recursiva a factorial(-1, F1) iniciar´a un c´omputo que no terminar´a. Una llamada a factorial con argumento 0 tiene una ´unica soluci´on;

si volvemos a puntos de retorno, la cl´ausula meta fallar´a.

Esto puede ser evitado introduciendo un corte, denotado por un s´ımbolo de exclamaci´on, al final de la primer cl´ausula:

factorial(0, 1):- !.

El corte impide volver a puntos de retorno en este procedimiento. Una vez que el corte se ejecuta se tala una porci´on del ´arbol SLD e impide volver a puntos de retorno indeseados.

Referencias

Documento similar

Figura 5.9 Comparaci´ on del ranking la mejor soluci´ on encontrada hasta cada iteraci´ on, entre el algoritmo de b´ usqueda y su respectiva b´ usqueda aleatoria, para cada funci´

El m´ etodo de Phi2Scan consiste en observar el espectro de generaci´ on de segundo arm´ onico para un pulso al que se le introducen distintos valores de dispersi´ on de segundo

PROPUESTA DE RESOLUC IÓN DE SOLICITANTES SELECCIONADOS Y SUPLENTES EN EL PROC ESO DE SELECCIÓN DEL PROGRAMA DE AS ISTENTES DE ESPAÑOL, CON VOCADO POR RESOLUC IÓN DE 15 DE

1. LAS GARANTÍAS CONSTITUCIONALES.—2. C) La reforma constitucional de 1994. D) Las tres etapas del amparo argentino. F) Las vías previas al amparo. H) La acción es judicial en

A continuaci ´on analizaremos con algo m ´as de profundidad los problemas que surgen al considerar un modelo de regresi ´on lineal cl ´asico en el que la variable dependiente

Autoevaluaci´ on Resoluci´ on Rouch´ e-Fr¨ obenius Bibliograf´ıa y webs recomendadas.. Curso cero “Matem´ aticas en

Dado el enorme inter´ es registrado en los ´ ultimos a˜ nos por los modelos no cl´ asicos de conducci´ on del calor, debido a la necesidad de considerar fen´ omenos de conducci´ on

Otro acercamiento a la investigaci´on hist´orico-epistemol´ogica, es el que intenta determinar concepciones y obst´aculos ligados al desarrollo de una no- ci´on matem´atica, como