Está en la página 1de 4

ndice:

1. Introduccin
Introduccin a la Programacin
Lgica: PROLOG 2. Hechos
3. Preguntas
4. Variables
5. Conjunciones
6. Reglas
UNIVERSIDAD DE VALLADOLID
7. Ejercicios

Introduccin (I) Introduccin (II)


Basado en la lgica de Primer Orden. Hecho: propiedad de un objeto
Ejemplo: el diamante es valioso
valioso(diamante).
Resolver problemas formulados como una
serie de objetos y relaciones entre ellos: base
de conocimiento Reglas: forma de describir relaciones
Ejemplo:Dos personas son hermanas, si ambas son
hembras y tienen los mismos padres
Ejemplo: Juan tiene un libro
Objetos: Juan y libro Programacin en PROLOG:
Relacin: tiene (predicado) Declarar hechos sobre objetos y sus relaciones
Importancia del orden Definir reglas sobre objetos y sus relaciones
tiene(juan, libro). Hacer preguntas sobre objetos y relaciones:
Trabajar contra una base de (datos) conocimiento

Hechos (I) Hechos (II)


Ejemplo: Los nombre de objetos y relaciones comenzarn
por minsculas
Objetos: Juan, Pepe, vino y cerveza
Primero la relacin y despus los objetos a modo
de argumentos
Relacin: A <objeto> le gusta <objeto>
Se permite _ para separar caracteres
Hechos: A Juan le gusta el vino
A Pepe le gusta la cerveza Al final debe aparecer un punto

PROLOG:
a_le_gusta (juan, vino). Coherencia con el orden de los objetos
a_le_gusta (pepe, cerveza). A Juan le gusta el vino Al vino le gusta Juan

1
Hechos (III) Preguntas (I)
Admite predicados (relaciones) Formalmente igual que un hecho precedido
del smbolo ?
mondicos o polidicos:
En primera instancia, busca en la base de
conocimiento, si el hecho inquirido est
valioso(diamante). El diamante es valioso. almacenado.
hembra(ana). Ana es una hembra. Ejemplo:
tiene(juan, oro). Juan tiene oro.
padre(juan, maria). Juan es el padre de Mara. Base de Conocimiento Preguntas Resp.
dar(juan, libro, maria). Juan da un libro a Mara gusta(jose, maria). ?- gusta(maria, jose). No
gusta(maria, libro). ?- gusta(maria, libro). Yes
gusta(juan, coche). ?- gusta(juan, pescado). No
gusta(jose, pescado). ?- gusta(jose, pescado). Yes

Preguntas (II) Variables (I)


Introduccin de la base de conocimiento en Formalmente comienzan por mayscula
SWI-PROLOG: Instanciada: con un valor asignado
Doble click en el fichero con la extensinpl No instanciada: sin valor a priori

La respuesta no significa que no hay Ejemplo:


coincidencia con hechos almacenados en la qu le gusta a Juan?
base. ?- gusta(juan, X). X est no instanciada

X = coche ; X est instanciada con valor coche

qu le gusta a Jos?
Para averiguar qu le gusta a Maria, hay que ?- gusta(jose, X). X adquiere el primer valor encontrado

X = maria ;
recurrir a las variables. X = pescado ;
pulsar sucesivamente n para pasar al siguiente

?- gusta(X, maria).

Variables (II) Conjunciones (I)


PROLOG localiza el primer hecho coincidente en el Ejemplo: Base de Conocimiento
predicado y con los mismos argumentos literales. El gusta(maria, comida).
sentido de bsqueda es de arriba abajo. gusta(maria, vino).
En la variable almacenar el objeto, cuya posicin gusta(juan, vino).
coincida con sta.
gusta(juan, maria).
Marca el hecho en la base y muestra la variable,
ahora s, instanciada: X=maria
Si pulsa [RETURN], se detiene la bsqueda dndose Pregunta: Juan y Mara se gustan?
por satisfechos con la respuesta.
Si se teclea ;, X pasa a no instanciada y se repetira A Maria le gusta Juan? Y A Juan le gusta Maria?
el proceso pero empezando en la marca establecida
en la ltima instancia. ?- gusta(juan, maria), gusta(maria, juan).
A esto se le denomina resatisfacer la pregunta.

2
Conjunciones (II) Conjunciones (III)
PROLOG intenta satisfacer el primer objetivo: A Hay algo que les guste a Juan y a Mara tambin?
Mara le gusta Juan? ?- gusta(maria, X), gusta(juan, X).
X=vino;
Pasos:
Si fuera as, establece una marca en la base y gusta(maria, comida). X=comida; Marca.
probar a satisfacer el segundo objetivo: A Juan le ?- gusta(juan, X=comida). No. Resatisfacer 1 obj.
gusta Mara? gusta(maria, vino). X=vino; Marca.
?- gusta(juan, X=vino). Yes. Marca. Mostrar X.

Si tambin resultase satisfactorio pone otra marca en Los objetivos se van satisfaciendo de izda. a dcha.
la base, por si hubiera que resatisfacer a
continuacin.
Supone un proceso de instanciar y desinstanciar,
satisfacer y resatisfacer objetivos: reevaluacin
Nota: cada objetivo establece sus marcas. (backtracking prximos captulos)

Reglas (I) Reglas (II)


Para declarar un hecho dependiente de otros. Ejemplo:
Base de Conocimiento Preguntas
Ejemplo: varon(alberto). ?- hermana_de(alberto, eduardo).
X es un pjaro si: No
varon(eduardo).
X es un animal, y
hembra(alicia). ?- hermana_de(alicia, victoria)
X tiene plumas.
hembra(victoria). No
Formalmente se compone de: padres(eduardo, victoria, alberto). ?- hermana_de(alicia, eduardo).
<Cabeza> :- <cuerpo> padres(alicia, victoria, alberto).
Yes
<cuerpo> = hechos con conjunciones y variables hermana_de(X,Y):-
? hermana_de(alicia, X).
X=eduardo;
Ejemplo: hembra(X),
X=alicia
Juan es amigo de los amantes del ftbol padres(X,M,P),
?- hermana_de(X,eduardo).
Juan es amigo de X, si a X le gusta el ftbol padres(Y,M,P). X=alicia
gusta(juan, X) :- gusta (X, futbol)

Reglas (III) Reglas (IV)


Al igual que en las conjunciones: Dar informacin a PROLOG sobre predicados:
Proceso de instanciar y desinstanciar, satisfacer y hechos o reglas (=clusulas)
resatisfacer de izquierda a derecha.

/* 1 */ ladron(juan).
Base de Conocimiento hermana_de(X=alicia,Y(=X)):- Comentarios igual que en C
? hermana_de(alicia, X). ?- hembra(alicia). YES /* 2 */ gusta(maria,comida).
varon(alberto).
X=eduardo; ?- padres(alicia, M, P). M=victoria P=alberto /* 3 */ gusta(maria, vino).
varon(eduardo).
hembra(alicia).
X=alicia ?- padres(Y, victoria, alberto). Y=eduardo
/* 4 */ gusta(juan,X):- gusta(X,vino). Un mismo tipo de definicin
?- padres(Y, victoria, alberto). Y=alicia
hembra(victoria). /* 5 */ puede_robar(X,Y) :- mediante tres clusulas:
padres(eduardo, victoria, alberto). ladron(X), /*2*/, /*3*/ y /*4*/
hermana_de(X,Y=eduardo):-
padres(alicia, victoria, alberto). gusta(X,Y).
?- hembra(X). X=alicia Dos hechos y una regla.
hermana_de(X,Y):- ?- padres(alicia, M, P). M=victoria P=alberto
hembra(X), ?- hermana_de(X,eduardo). ?- padres(Y, victoria, alberto). Y=eduardo, ?- puede_robar(juan,X).
X=alicia M=victoria, P=alberto
padres(X,M,P), X=maria;
padres(Y,M,P).
?- hembra(X). X=victoria
?- padres(victoria, M, P). NO

3
Ejercicios (I) Ejercicios (II)
Modificar la regla hermana_de para que una misma Constryase el rbol genealgico a base de las
persona no sea hermana de s misma. relaciones:
Para ello, tngase presente que una relacin que refleja que progenitores_de(X, Y, Z) /* X e Y son progenitores de Z*/
dos objetos son distintos recurre al operador /= matrimonio(X, Y) /* X e Y estn casados */

juan \= pedro Obtener las reglas para definir las relaciones:


padre_de (X, Y) / madre_de(X, Y) /* X es padre/madre de Y */
Pedro y Maria se casan y tienen tres hijos: Juan, hijo_de(X, Y) / hija_de(X, Y) /* X es hijo/a de Y */
Margarita y Paula. A su vez, cada uno de ellos se hermano_de(X, Y) / hermana_de(X, Y) /* X es hermano/a de Y */
casa con Virginia, Jos y Manuel respectivamente. tio_de(X, Y) / tia_de(X, Y) /* X es to/a de Y */
Como consecuencia, Juan y Virginia tienen dos hijos: sobrino_de(X, Y) / sobrina_de (X, Y) /* X es sobrino/a de Y */
Isabel y Fernando. Por su parte, Jos y Margarita primo_de(X, Y) / prima_de(X, Y) /* X es primo/a de Y */

solamente tienen a Felipe. Finalmente Paula y cunhado_de(X, Y) / cunhada_de(X, Y) /* X es cuado/a de Y */


abuelo_de(X, Y) / abuela_de(X, Y) /*X es abuelo/a de Y*/
Manuel son padres de Javier, Eva y Alicia.

También podría gustarte