Prolog

Páginas: 5 (1212 palabras) Publicado: 6 de enero de 2014
Prolog
• Es el representante más conocido del paradigma

Programación en PROLOG(1)

lógico.
• Prolog permite:
– Definir/especificar relaciones entre objetos.

Inteligencia Artificial
2º cuatrimestre de 2009

– Verificar si ciertos objetos están relacionados
entre sí.

Departamento de Ciencias e Ingeniería de la
Computación
Universidad Nacional del Sur

• A continuación veremoscómo…
2

Sintaxis Informal

Sintaxis Informal
nombres de relaciones
(también llamadas
predicados) y objetos.

• Existen 3 tipos construcciones en PROLOG

secuencias de caracteres
comenzando con
minúscula.

(llamadas cláusulas) :

• Hechos

• Prolog cuenta con variables. Las variables denotan

Permiten d fi i relaciones
P
i
definir l i
entre objetos.

objetos sinespecificar.
nombres de variables

• Reglas

secuencias de caracteres
comenzando con
mayúscula.

• Consultas
3

Hechos

Permiten verificar si ciertos
objetos están relacionados
entre sí

4

Hechos: ejemplos

• permiten establecer que una determinada tupla de
objetos están relacionados bajo una relación en
particular.

amigo(homero, barny).
suma(X, 0, X).
socio_club(juan,liniers).

• Sintaxis:

r(obj1, obj2,…,objn).
“la tupla (obj1, obj2,…,objn) pertenece a la relación r”

socio_club_liniers(juan).

ateniense(socrates).
socrates_es_ateniense.

relación de aridad 0:
proposición

1

Reglas

Reglas: ejemplos

• Permiten establecer que una determinada tupla de
mentiroso(X):- ateniense(X).

objetos están relacionados bajo una relación enparticular, pero en términos de otras relaciones.

gustos_en_comun(X,Y):- gusta(X, Algo),

• Sintaxis:

gusta(Y, Algo).
cabeza

cuello

cuerpo

r(obj1, obj2,…,objn) :- r1(…), … , rm(…).


hermanos(X,Y):- padre_de(P, X),
padre_de(P, Y).


7

8

Programas Prolog

Consultas

• Un programa Prolog es un conjunto de hechos y reglas.

• permiten verificar si una determinada tupla deobjetos

Ej:

están relacionados bajo una relación en partircular.

definición del predicado
progenitor/2

• Sintaxis:

progenitor(homero, bart).

?- r(obj1, obj2,…,objn).

progenitor(homero, lisa).
progenitor(abraham, homero).

• Ej:

abuelo(X,Y):- progenitor(X,Z), progenitor(Z,Y).
definición del
predicado abuelo/2

?- abuelo(abraham, lisa)
?- abuelo(X, bart) ¿bart tieneabuelo?

9

Resolución SLD y Backtracking

Consultas y Respuestas

Resolución de la meta “? − a.”

progenitor(homero, bart).
progenitor(homero, lisa).

1)
2)
3)
4)
5)

progenitor(abraham, homero).
( , ) p g
( , ), p g
( , )
abuelo(X,Y):- progenitor(X,Z), progenitor(Z,Y).
?- progenitor(homero, lisa).
yes

?- abuelo(abraham, bart).
yes

?- progenitor(homero, abraham).no

?- abuelo(abraham, X).
X = bart ;
X = lisa ;
¿abraham tiene
no
algún nieto?

?- progenitor(marge, lisa).
no

10

a : − b, p.
a : − e.
b : − q.
b : − e.
e.

? − a.
yes
11

a

(1)

b,p
(3)

q,p
fail

(2)

e
(5)

(4)

e,p



(5)

p
fail

12

2

(Tipos de) Términos

Estructuras: Rep. de Arboles Binarios
Arbol
binario

• Hasta ahorasolo utilizamos 2 tipos de términos ...

a

abuelo(abraham, X)
términos

b

c
d

constantes
estructuras

términos

Representación
en Prolog
(recursiva)
estructura

tree (a, tree(b, #, #), tree(c, tree(d, # ,#), #)) el functor tree

variables

tiene aridad 3

13

Estructuras: Rep. de Arboles Binarios
• A continuación se define el predicado arbolBin/1 que usa

términos14

Estructuras: Rep. de Arboles Binarios
• Otro predicado que manipula árboles binarios.

la estructura para árboles binarios.
% arbolBin(+Termino)
% Recibe como argumento un término y determina
% si éste corresponde a un árbol binario válido.

% altura(+Bin, -Alt)
% Recibe como argumento un árbol binario Bin
% y retorna su altura Alt.
altura(#, -1).
altura(tree(R,Hi,Hd), A):-...
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