Introdución a PROLOG

Post on 03-Jan-2016

68 views 7 download

description

Introdución a PROLOG. Jorge Cabrera Gámez Departamento de Informática y Sistemas Universidad de Las Palmas de Gran Canaria. ¿Qué es Prolog?. Prolog = PROgramming in LOGic. Desarrollado a partir de trabajos en demostración automática de teoremas - PowerPoint PPT Presentation

Transcript of Introdución a PROLOG

Prolog 1

Introdución a

PROLOG

Jorge Cabrera GámezDepartamento de Informática y Sistemas

Universidad de Las Palmas de Gran Canaria

Prolog 2

¿Qué es Prolog?

•Prolog = PROgramming in LOGic.

•Desarrollado a partir de trabajos en demostración

automática de teoremas

•Aplicado inicialmente en problemas de

Procesamiento del Lenguaje Natural

•Permite un prototipado más rápido que con

muchos lenguajes porque es mucho más proximo

a la especificación lógica del programa.

Prolog 3

¿Qué es Prolog?

Lenguaje de Programación

Computación simbólica y no-numérica

Para resolver problemas que involucran

• OBJETOS

• RELACIONES

Prolog 4

Para programar en Prolog:

Declarar hechos sobre objetos y sus relaciones

Declarar reglas sobre los objetos y sus relaciones

Hacer preguntas sobre los objetos y sus relaciones

Prolog 5

Hechos

“Raquel es hija de teresa”hija ( raquel, teresa).

Objetos: raquel, teresa.Relación: hija

Observar:

• Minúsculas• El punto final

Prolog 6

Ejemplo:pedro maria

teresa elena

jorge raquel

miguel

progenitor (pedro, teresa).

progenitor (maria, teresa).

progenitor (maria, elena).

progenitor (teresa, jorge).

progenitor (teresa, raquel).

progenitor (raquel, miguel).

cláusulas

Prolog 7

?- progenitor (teresa, raquel).Yes

pedro maria

teresa elena

jorge raquel

miguel

?- progenitor (jorge, miguel).No

?- progenitor (X, raquel).X = teresa ;No

?- progenitor (teresa, Y).Y = jorge ;Y = raquel ;No

Prolog 8

?- progenitor (X, Y).X = pedroY = teresa ;X = mariaY = teresa ;X = mariaY = elena ;X = teresaY = jorge ;X = teresaY = raquel ;X = raquelY = miguel ;No

pedro maria

teresa elena

jorge raquel

miguel

Prolog 9

?- progenitor (PoM, jorge), progenitor (Abuelo, PoM).

PoM = teresaAbuelo = pedro ;

PoM = teresaAbuelo = maria ;

No

pedro maria

teresa elena

jorge raquel

miguel

¿Quién es abuelo de jorge?

Prolog 10

?- progenitor (pedro, Hijo), progenitor (Hijo, Nieto).

Hijo = teresaNieto = jorge ;

Hijo = teresaNieto = raquel ;

No

pedro maria

teresa elena

jorge raquel

miguel

¿Quién es nieto de pedro?

Prolog 11

?- progenitor (X, jorge), progenitor (Y, X).

X = teresaY = pedro ;

X = teresaY = maria ;

No

pedro maria

teresa elena

jorge raquel

miguel

¿Quién es abuelo de jorge?

Prolog 12

?-

¿Quién es abuelo de jorge?

progenitor (pedro, teresa).

progenitor (maria, teresa).

progenitor (maria, elena).

progenitor (teresa, jorge).

progenitor (teresa, raquel).

progenitor (raquel, miguel).

La base de hechos

progenitor (Y, X).

X = teresa

Paso 1.

progenitor (Y, teresa).progenitor (X, jorge),

Prolog 13

?-

¿Quién es abuelo de jorge?

progenitor (pedro, teresa).

progenitor (maria, teresa).

progenitor (maria, elena).

progenitor (teresa, jorge).

progenitor (teresa, raquel).

progenitor (raquel, miguel).

La base de hechos

progenitor (X, jorge),

Y = pedro

progenitor (Y, teresa).

X = teresa, Y = pedro

Respuesta

Paso 2.

Prolog 14

?-

¿Quién es abuelo de jorge?

progenitor (pedro, teresa).

progenitor (maria, teresa).

progenitor (maria, elena).

progenitor (teresa, jorge).

progenitor (teresa, raquel).

progenitor (raquel, miguel).

La base de hechos

progenitor (X, jorge),

Y = maria

progenitor (Y, teresa).

X = teresa, Y = maria

Respuesta

Paso 3.

Prolog 15

?-

¿Quién es abuelo de jorge?

progenitor (pedro, teresa).

progenitor (maria, teresa).

progenitor (maria, elena).

progenitor (teresa, jorge).

progenitor (teresa, raquel).

progenitor (raquel, miguel).

La base de hechos

progenitor (X, jorge), progenitor (Y, teresa).

Paso 4.

Backtrack

progenitor (Y, X).progenitor (X, jorge),

Prolog 16

?-

¿Quién es abuelo de jorge?

progenitor (pedro, teresa).

progenitor (maria, teresa).

progenitor (maria, elena).

progenitor (teresa, jorge).

progenitor (teresa, raquel).

progenitor (raquel, miguel).

La base de hechos

Paso 5.

No

progenitor (Y, X).progenitor (X, jorge),

Aquí

Prolog 17

Reglas

descendiente(X,Y) :- progenitor(Y,X).

Para todos X e Y,

X es descendiente de Y SI

Y es progenitor de X.

Para todos X e Y,

SI Y es progenitor de X

Entonces X es descendiente de Y.

X

Y

progenitor descendiente

cabeza cuerpo

Prolog 18

Ejemplo: la relación madre

madre (X, W) :-

progenitor(X, W),

mujer(X).

Para todos X y W,

X es madre de W SI

X es progenitor de W Y

X es mujer

La coma significaconjunción (Y)

X

W

progenitor

mujer

madre

Relación unaria

Prolog 19

Ejemplo: la relación abuelo

abuelo (X, Z) :-

progenitor (X, W),

progenitor (W, Z),

hombre (X).

Para todos X y Z,

X es abuelo de Z SI

X es progenitor de W y

W es progenitor de Z y

X es hombre

X

W

progenitor

hombre

abuelo

Z

progenitor

Prolog 20

Ejemplo: la relación hermana

hermana (X, W) :-

progenitor(Z, X), progenitor(Z, W),

mujer(X).

Para todos X y W,

X es hermana de W SI

Z es progenitor de X y W, y

X es mujer

Z

X W

progenitorprogenitor

hermanamujer

Prolog 21

pedro maria

teresa elena

jorge raquel

miguel

?- hermana(X, jorge).X = raquel ;No

¿Quién es hermana de jorge?

hombre(pedro).mujer(maria).mujer(elena).mujer(teresa).hombre(jorge).mujer(raquel).hombre(miguel).

Añadimos estos hechos.

Prolog 22

pedro maria

teresa elena

jorge raquel

miguel

?- hermana(X, teresa).X = teresa ;X = teresa ;X = elena ;No

¿Quién es hermana de teresa?

Un pequeño problema ...

Prolog 23

pedro maria

teresa elena

jorge raquel

miguel

Programa:progenitor(pedro, teresa).progenitor(maria, teresa).progenitor(maria, elena).progenitor(teresa, jorge).progenitor(teresa, raquel).progenitor(raquel, miguel).

hombre(pedro).mujer(maria).mujer(elena).mujer(teresa).hombre(jorge).mujer(raquel).hombre(miguel).

hermana(X, W) :- progenitor(Z, X), progenitor(Z, W), mujer(X).

¿Sería más eficiente intercambiar el orden de los dospredicados progenitor/2 en la definición de hermana/2 ?

Prolog 24

Ejemplo: la relación antepasado

antepasado (X, Z) :-

progenitor (X, W),

antepasado (W, Z).

Para todos X y Z,

X es antepasado de Z SI

X es progenitor de W y

W es antepasado de Z y

X

W

progenitor

antepasado

Z

antepasado

Una definición recursiva

...

Prolog 25

Ejemplo: la relación antepasado

antepasado (X, Z) :-

progenitor (X, W),

antepasado (W, Z).

X

W

progenitor

antepasado

Z

antepasado

...

?- antepasado(X, jorge).No

Prolog 26

Ejemplo: la relación antepasado

antepasado (X, Z) :-

progenitor (X,

W),

antepasado (W,

Z).

X

W

progenitor

antepasado

Z

antepasado

...

?- antepasado(X, jorge).X = teresa ;X = pedro ;X = maria ;No

antepasado(X, Z) :- progenitor(X, Z).

Prolog 27

Sumario

• Declarar hechos relativos a objetos

• Plantear preguntas sobre los hechos

• Utilizar variables

• Utilizar la conjunción

• Definir relaciones mediante reglas

• Un rápido vistazo al mecanismo de backtracking

Prolog 28

Ejercicio

Definir las

relaciones tia, tio,

sobrino, sobrina,

primos, ...

y ensayarla sobre

la base de datos

de la figura

pedro maria

teresa elena

jorge raquel

miguel

jose

juan

SWI-Prolog