Prolog

Páginas: 13 (3045 palabras) Publicado: 10 de julio de 2012
Índice

Introducción a Prolog

Introducción
Hechos y consultas
Reglas. Recursión
Funcionamiento de prolog

Sintaxis y semántica del lenguaje
Enrique Alfonseca
(basado en el libro de Iván Bratko)
Escuela Politécnica Superior, UAM

Constantes y predicados
Computación simbólica, no numérica.
Resolver problemas expresados en forma de
objetos y relaciones entre ellos.

MorfologíaUnificación
Funcionamiento procedimental

Listas, operadores, aritmética
Control del backtracking

Hechos
Una parte importante de los programas en
prolog son los hechos, formados por
combinación de predicados y constantes:

Constantes: se utilizan para referirse a objetos.
Predicados: expresan relaciones entre los
objetos.

Juan

progenitor(juan,luis).
progenitor(juan,maria).Ejemplo:
progenitor(juan,luis).

Luis

Juan es el progenitor de Luis

progenitor(luis,carlos)

Carlos Laura

Consultas (I) – Preguntas de sí y no
Tras compilar un programa en el intérprete,
se pueden realizar consultas:
?- progenitor(juan, luis).
yes
?- progenitor(juan, laura).
no

Maria

progenitor(luis,laura).

Consultas (II) – Variables
Si alguno de los atributos es unavariable, el
intérprete retornará los valores que puede
tomar para ser satisfecha.
Su nombre ha de comenzar con mayúscula, o con
guión bajo: _
?- progenitor(juan,X).
X = luis ;
X = maria
?- progenitor(laura,X).
no

1

Consultas (III) – Varias variables
En consultas con varias variables, se retornarán
todas las combinaciones de valores posibles:
?- progenitor(X,Y).
X = juan
Y =luis ;
X = juan
Y = maria ;
X = luis
Y = carlos ;
X = luis
Y = maria ;

Ejercicios
Formula en prolog las siguientes consultas:
¿Quién es el progenitor de Luis?
¿Quién es el abuelo de Laura?
¿Quién es hermano de Carlos?

Reglas (II)
Las reglas en prolog tienen dos
componentes: cabeza (el consecuente) y
cuerpo (el antecedente).
hijo(Y,X) :- progenitor(X,Y).

Una vez introducida laregla en el intérprete,
podrá utilizarla para responder consultas:
?- hijo(luis,X).
X = juan

Consultas (IV) – Varios
predicados
Es posible combinar varios predicados en la
misma consulta. En este caso, para
satisfacer la consulta deberán satisfacerse
todos ellos:
?- progenitor(juan,Y),
progenitor(Y,carlos).
Y = luis ;
?- progenitor(X,luis),
progenitor(X,maria).
X = juan

Reglas(I)
Podríamos introducir todos los hechos
inversos acerca de quién es hijo de quién:
hijo(luis,juan).
hijo(maria,juan).

Una manera más sencilla sería introducir una
regla:
Para todo X e Y,
Si X es progenitor de Y,
Y es hijo de X

Reglas (III) – Varios
antecedentes
Cuando el cuerpo de una regla contiene
varios antecedentes, han de ser todos
satisfechos para que se aplique:hija(Y,X) :- progenitor(X,Y),hembra(Y).
hijo(Y,X) :- progenitor(X,Y),macho(Y).
hembra(maria).
macho(luis).
?- hija(X,juan).
X = maria

2

Reglas (IV) – Ejemplo
hermano(X,Y) :progenitor(Z,X),
progenitor(Z,Y).
?- hermano(luis,H).
H = luis ;
H = maria ;

Reglas recursivas (I)
Consideremos la relación “antepasado”:
juan es antepasado de luis, maría, carlos y laura.
luis es antepasado decarlos y laura.

X es antepasado de Y si existe una sucesión
de relaciones de paternidad entre Y y X:
antepasado(X,Y) :- progenitor(X,Y).
antepasado(X,Y) :- progenitor(X,Z), progenitor(Z,Y).
antepasado(X,Y) :- progenitor(X,Z), progenitor(Z,K),
progenitor(K,Y).
etc.

Ejercicio
¿Es correcta la siguiente definición de
antepasado?
antepasado(X,Y) :- progenitor(X,Y).
antepasado(X,Y) :-progenitor(Z,Y),
antepasado(X,Z).

Ejercicios
Escribe en prolog:
Todo aquel que tiene un hijo es feliz.
Define las relaciones “abuelo” y “nieto”
Describe (informalmente) cómo modificarías el predicado
hermano para que no saliera uno hermano de sí mismo:

Reglas recursivas (II)
X es antepasado de Y si:
O bien X es el padre de Y
O bien X es el padre de un antepasado de Y
antepasado(X,Y)...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • prologo
  • Prologo
  • Prologo
  • Prólogo
  • prologo
  • Prólogo
  • prologar
  • Prologo

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS