Professional Documents
Culture Documents
Introduccin al PROLOG
1. Qu es el PROLOG? 2. Los elementos de PROLOG 3. Un programa de ejemplo 4. Ejercicios propuestos
Prcticas de IA-I
Paradigmas de programacin: imperativa, orientacin a objetos, funcional y declarativa Programacin declarativa frente a imperativa
Orientada a objetivos vs orientada a datos Enfoque what-to-do frente a how-to-do Slo se especifican las propiedades del problema, no como alcanzar la solucin
Conjunto de frmula + motor de inferencias
Tema 1. Introduccin al Prolog
Programacin lgica
Prcticas de IA-I
PROLOG
Programa Prolog: conjunto de clusulas Horn Ejecucin: inferencias lgicas (bsqueda) Puede que no se encuentre la solucin ptima o de la forma ms eficiente Influye el orden de las clusulas Adems, tiene clusulas ejecutables
Tema 1. Introduccin al Prolog
Prcticas de IA-I
Programa en PROLOG
Prcticas de IA-I
1.3. SWI-PROLOG
http://www.swi-prolog.org/
Basado en la sintaxis de Edimburgo Tradicionalmente interpretado, ahora compilado Disponible manual de referencia
Tema 1. Introduccin al Prolog
Prcticas de IA-I
2. Elementos de Prolog
1. 2. 3. 4.
5.
Prcticas de IA-I
2.1. Hechos
El programador debe definir la interpretacin de los objetos y las relaciones entre ellos:
Prcticas de IA-I
2.1. Hechos
Ejemplo:
Objetos: Juan, Maria, Cocido, Vino. Relaciones: A <Objeto> le gusta <Objeto> Hechos:
PROLOG:
Prcticas de IA-I
2.1. Hechos
El nombre de los objetos y relaciones empiezan por minscula Primero se escribe la relacin y despus los objetos a modo de argumento Se permite _ para separar caracteres Al final debe aparecer un punto
Prcticas de IA-I
2.1. Hechos
Mondicos
valioso(diamante). mujer(ana).
Polidicos
tiene(juan, libro). da(juan, libro, maria).
Prcticas de IA-I
2.2. Consultas
Comienzan por: ?Equivale a preguntar: la consulta se deduce de la base de conocimiento (hechos + reglas). Ante una consulta, PROLOG intenta hacer un matching sobre la base de conocimiento:
Mismo predicado Mismo nmero de argumentos Mismos argumentos: trminos / variables (instanciadas)
Prcticas de IA-I
2.2. Consultas
Yes No
[ENTER] ;
Base de conocimiento le_gusta_a(jose, maria). le_gusta_a(maria, libro). le_gusta_a(juan, coche). le_gusta_a(jose, pescado).
Prcticas de IA-I
2.2. Consultas
/* Los comentarios como en C */
Prcticas de IA-I
2.3. Variables
Una variable permite hacer referencias a mltiples objetos en funcin del contexto Una variable puede estar libre o ligada
En PROLOG todas las variables empiezan por Maysculas o _ (ms adelante)
Tema 1. Introduccin al Prolog
Prcticas de IA-I
2.3. Variables
?- le_gusta_a(maria, X). ?- le_gusta_a(juan, X), le_gusta_a(maria, X).
Aunque en PROLOG se suelen utilizar X, Y, las variables pueden tener nombres mnemotcnicos:
?- le_gusta_a(maria, Persona).
Ante una consulta se busca la primera instanciacin (ligadura) de la variable que satisfaga el predicado (si hay alguna). En ese momento se aade una marca y si pedimos ms respuestas ([;]) se consulta a partir de esa marca.
Tema 1. Introduccin al Prolog
Prcticas de IA-I
2.4. Conjunciones
PROLOG intentar satisfacer TODOS los objetivos, en el orden dado (de izquierda a derecha).
Tras satisfacer cada objetivo, marca el punto en la BC y las instanciaciones que ha hecho para llegar ah.
Tema 1. Introduccin al Prolog
Prcticas de IA-I
2.4. Conjunciones
Las conjunciones implican instanciar y desinstanciar, para satisfacer o resatisfacer objetivos reevaluacin (con backtracking)
Prcticas de IA-I
2.5. Reglas
Establece dependencias entre hechos, de forma compacta: afirmacin general sobre objetos y sus relaciones. Una regla tendr:
<cabeza> :- <cuerpo> <cuerpo> hechos con conjunciones y variables Ejemplo: Juan es amigo de aquellos a quienes les gustan los coches. En PROLOG: es_amigo(Juan,Y) :- le_gusta_a(Y, coche).
Prcticas de IA-I
2.5. Reglas
Prcticas de IA-I
4. Ejercicios propuestos
Define reglas que permitan saber: - Quin es abuelo/a de quin, - Quin es padre/madre, - Quin es hermana/hermano.
Prcticas de IA-I Tema 1. Introduccin al Prolog