Resolución SLD
SLD (Selective Linear Definite clause resolution) Es un método de prueba por
refutación que emplea el algoritmo de unificación como mecanismo de base y permite
la extracción de respuestas.
El antecedente puede ser una conjunción de condiciones que se denomina secuencia
de objetivos. Todos los objetivos terminan su ejecución en éxito ("verdadero"), o en
fracaso ("falso").
En Prolog, los programas se definen mediante reglas y hechos, y luego se hacen
consultas para buscar soluciones. La resolución SLD es un proceso de búsqueda
dirigido que sigue las reglas de las cláusulas definidas en el programa para encontrar
soluciones a las consultas.
La idea básica detrás de la resolución SLD es buscar una cláusula en la base de
conocimientos que unifique con la consulta actual y luego continuar la búsqueda
utilizando las cláusulas resultantes hasta que se encuentre una solución o se agoten
las posibilidades.
Este enfoque selectivo y lineal permite una ejecución eficiente del programa Prolog al
evitar la exploración de ramas que no son relevantes para la consulta actual. Es uno de
los conceptos fundamentales en la implementación y comprensión del funcionamiento
interno de Prolog.
Forma de trabajar de la resolución
(1) Se convierten todas las cláusulas a la forma clausal.
(2) Se niega el estatuto a probar, se convierte a forma clausal, y se agrega a las
cláusulas del punto (1).
(3) Se repite lo siguiente hasta encontrar una contradicción.
Se escogen dos cláusulas que se llamarán cláusulas padres, luego, se busca en ellas
un par de literales TI y ¬TI tal que una de ellas pertenezca a una cláusula padre y su
negación a la otra cláusula padre. Se eliminan ambas literales y se crea el resolvente
(se usa la unificación). La cláusula resultante se llama cláusula resolvente y si ésta es
vacía, la contradicción fue encontrada; si no, la cláusula resolvente se agrega al
conjunto de las demás.
Ejemplo - Problema
Se tiene el siguiente problema:
A. Jack es dueño de un perro
B. Quien es dueño de un perro es amante de los animales
C. Ningún amante de los animales mata a un animal
D. O Jack o Curiosidad mató al gato, cuyo nombre era Tuna
E. ¿Mató Curiosidad al gato
Pasos de la Resolución:
(1) Expresar lo anterior como predicados de primer orden, por ejemplo:
Jack es dueño de un perro: (Ǝ X) perro(X) ^ dueño(Jack, X).
(2) Se niega el estatuto a probar:
E. ¬ mata(curiosidad, tuna)
(3) Se siguen los 8 pasos para transformar las sentencias a su forma
clausulada con lo que se obtiene el siguiente conjunto de cláusulas:
A1. perro(a)
A2. dueño(jack, a)
B. ¬ perro(Z) ˅ ¬ dueño(Y, Z) ˅ naturalista(Y)
C. ¬ naturalista(U) ˅ ¬ animal(W) ˅ ¬ mata(U,W)
D1. mata(Jack, tuna) ˅ mata(curiosidad, tuna)
D2. gato(tuna)
E. ¬ mata(curiosidad, tuna)
F. ¬ gato(C) ˅ animal
Aplicaciones
•
•
•
•
•
•
•
Desarrollo de aplicaciones de inteligencia artificial.
Prueba de teoremas
Construcción de Sistemas expertos
Procesamiento del lenguaje natural
Consultas lógicas basadas en reglas
Búsquedas en bases de datos
Sistemas de control de voz
José A. Alonso. (s. f.). LI2011-T11: Resolución en lógica de primer orden. SlideShare.
Recuperado 14 de mayo de 2021, de
https://www.slideshare.net/JoseAAlonso/li2011t11-resolucin-en-lgica-de-primer-orden
Ing+Licdo:Yunior Andrés Castillo S., Monografias.com. (s. f.). Fundamentos de la
programación lógica (página 2) - Monografias.com. Fundamentos. Recuperado 14 de
mayo de 2021, de https://www.monografias.com/trabajos106/fundamentosprogramacion-logica/fundamentos-programacion-logica2.shtml