Introdución a PROLOG

28
Prolog 1 Introdución a PROLOG Jorge Cabrera Gámez Departamento de Informática y Sistemas Universidad de Las Palmas de Gran Canaria

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

Page 1: 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

Page 2: Introdución a PROLOG

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.

Page 3: Introdución a PROLOG

Prolog 3

¿Qué es Prolog?

Lenguaje de Programación

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

Para resolver problemas que involucran

• OBJETOS

• RELACIONES

Page 4: Introdución a PROLOG

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

Page 5: Introdución a PROLOG

Prolog 5

Hechos

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

Objetos: raquel, teresa.Relación: hija

Observar:

• Minúsculas• El punto final

Page 6: Introdución a PROLOG

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

Page 7: Introdución a PROLOG

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

Page 8: Introdución a PROLOG

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

Page 9: Introdución a PROLOG

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?

Page 10: Introdución a PROLOG

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?

Page 11: Introdución a PROLOG

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?

Page 12: Introdución a PROLOG

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),

Page 13: Introdución a PROLOG

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.

Page 14: Introdución a PROLOG

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.

Page 15: Introdución a PROLOG

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),

Page 16: Introdución a PROLOG

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í

Page 17: Introdución a PROLOG

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

Page 18: Introdución a PROLOG

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

Page 19: Introdución a PROLOG

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

Page 20: Introdución a PROLOG

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

Page 21: Introdución a PROLOG

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.

Page 22: Introdución a PROLOG

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 ...

Page 23: Introdución a PROLOG

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 ?

Page 24: Introdución a PROLOG

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

...

Page 25: Introdución a PROLOG

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

Page 26: Introdución a PROLOG

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).

Page 27: Introdución a PROLOG

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

Page 28: Introdución a PROLOG

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