Lo hare pronto
Introduccion a la Inteligencia Artificial
Curso 2010–2011
Tema 3: Introducci´n a Prolog
o
Miguel A. Guti´rrez Naranjo
e
Dpto. de Ciencias de la Computaci´n e Inteligencia Artificial
o
Universidad de Sevilla
IIA 2010–11
Cc Ia
Introducci´n a Prolog
o
3.1
Historia
-350: Grecia cl´sica (Arist´teles,...)
a
o
1930: Edad de oro de la l´gica (G¨del)
o
o
1960:Demostraci´n autom´tica de teoremas
o
a
1965: Resoluci´n y unificaci´n (Robinson)
o
o
1969: QA3, obtenci´n de respuesta (Green)
o
1972: Implementaci´n de Prolog (Colmerauer)
o
1974: Programaci´n l´gica (Kowalski)
o o
1977: Prolog de Edimburgo (Warren)
1981: Proyecto japon´s de Quinta Generaci´n
e
o
1986: Programaci´n l´gica con restricciones
o o
1995: Est´ndar ISO de Prolog
a
IIA2010–11
Cc Ia
Introducci´n a Prolog
o
3.2
Un ejemplo simple: divisibilidad
Problema: Escribir un programa para declarar
que 2 divide a 6 y utilizarlo para responder a
las siguientes cuestiones:
u
¿2 divide a 6?.
u
¿3 divide a 12?.
u
¿Cu´les son los m´ ltiplos de 2?.
a
u
u
¿Cu´les son los divisores de 6?.
a
u
¿Cu´les son los elementos X e Y tales queX divide
a
a Y?.
Programa: divisibilidad-1.pl
divide(2,6).
Sesi´n
o
?- divide(2,6).
Yes
?- divide(3,12).
No
?- divide(2,X).
X = 6
Yes
?- divide(X,Y).
X=2
Y=6
Yes
IIA 2010–11
Cc Ia
Introducci´n a Prolog
o
3.3
Un ejemplo simple: divisibilidad
Conceptos
u
Relaci´n: divide/2
o
u
Nombre de una relaci´n: divide
o
u
Argumentos de una relaci´n
ou
Hecho
u
Programa
u
Constante: 2, 6
u
Variable: X, Y
u
Objetivo
u
Objetivo satisfacible
u
Respuesta
IIA 2010–11
Cc Ia
Introducci´n a Prolog
o
3.4
Unificaci´n
o
Ejemplos de unificaci´n
o
divide(2,6)
divide(2,X)
{X/6}
divide(2,6)
divide(X,6)
divide(2,Y)
{X/2, Y/6}
divide(2,6)
divide(X,6)
divide(2,X)
No unif.divide(2,6)
divide(X,X)
No unif.
divide(X,6)
divide(Y,Z)
{X/4, Y/4, Z/6}
divide(4,6)
divide(X,6)
divide(Y,Z)
{X/Y, Z/6}
divide(Y,6)
Unificador de m´xima generalidad (u.m.g.)
a
IIA 2010–11
Cc Ia
Introducci´n a Prolog
o
3.5
Ampliaci´n del programa
o
Problema: Ampliar el programa anterior,
a˜ adi´ndole que 2 divide a 12 y que 3 divide
n e
a 6 ya 12 y utilizarlo para responder a las siguientes cuestiones:
u
¿Cu´les son los elementos X e Y tales que X divide
a
a Y?
u
¿Cu´les son los m´ ltiplos de 2 y de 3?
a
u
Programa: divisibilidad-2.pl
divide(2,6).
divide(2,12).
divide(3,6).
divide(3,12).
Sesi´n
o
?- divide(X,Y).
X = 2
Y = 6 ;
X = 2
Y = 12 ;
X = 3
Y = 6 ;
X = 3
Y = 12 ;
No
?- divide(2,X),divide(3,X).
X = 6 ;
X = 12 ;
No
IIA 2010–11
Cc Ia
Introducci´n a Prolog
o
3.6
Ampliaci´n del programa
o
Conceptos:
u
Pregunta cerrada
u
Pregunta abierta
u
Pregunta compuesta
u
Respuesta
u
Respuestas m´ ltiples
u
u
Literal seleccionado
IIA 2010–11
Cc Ia
Introducci´n a Prolog
o
3.7
Reglas
Problema: Ampliar el programa anterior
a˜adi´ndole que los n´ meros divisibles por 2
n e
u
y por 3 son divisibles por 6 y utilizarlo para
responder a las siguientes cuestiones:
u
¿Cu´les son los m´ ltiplos de 6?
a
u
u
¿Cu´les son los elementos X e Y tales que X divide
a
a Y?
Programa: divisibilidad-3.pl
divide(2,6).
divide(2,12).
divide(3,6).
divide(3,12).
divide(6,X) :divide(2,X),
divide(3,X).
Interpretaci´n decl´usulas
o
a
u
Cl´usula:
a
divide(6,X) :- divide(2,X), divide(3,X).
u
F´rmula:
o
(∀X)[divide(2, X) ∧ divide(3, X) → divide(6, X)]
u
Interpretaci´n declarativa
o
u
Interpretaci´n procedimental
o
IIA 2010–11
Cc Ia
Introducci´n a Prolog
o
3.8
Reglas
Sesi´n
o
?- divide(6,X).
X = 6 ;
X = 12 ;
No
?- divide(X,Y).
X = 2 Y = 6 ;
X = 2 Y = 12 ;
X...
Regístrate para leer el documento completo.