Lo hare pronto

Páginas: 7 (1550 palabras) Publicado: 27 de septiembre de 2014
´
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...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Pronto Lo Har{E
  • Es de un pronto
  • De Pronto
  • pronto
  • Muy pronto
  • Pronto
  • Hare
  • Lo hare

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS