Title: Sin ttulo de diapositiva
1Introdución a PROLOG
Jorge Cabrera Gámez Departamento de Informática y
Sistemas Universidad de Las Palmas de Gran Canaria
2Qué 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.
3Qué es Prolog?
Lenguaje de Programación
Computación simbólica y no-numérica
Para resolver problemas que involucran
4Para 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
5Hechos
Raquel es hija de teresa hija ( raquel,
teresa).
Objetos raquel, teresa. Relación hija
- Observar
- Minúsculas
- El punto final
6pedro
maria
Ejemplo
progenitor (pedro, teresa). progenitor (maria,
teresa). progenitor (maria, elena). progenitor
(teresa, jorge). progenitor (teresa,
raquel). progenitor (raquel, miguel).
teresa
elena
jorge
raquel
miguel
cláusulas
7pedro
maria
?- progenitor (teresa, raquel). Yes
?- progenitor (jorge, miguel). No
teresa
elena
?- progenitor (X, raquel). X teresa No
jorge
raquel
?- progenitor (teresa, Y). Y jorge Y raquel
No
miguel
8pedro
maria
?- progenitor (X, Y). X pedro Y teresa X
maria Y teresa X maria Y elena X
teresa Y jorge X teresa Y raquel X
raquel Y miguel No
teresa
elena
jorge
raquel
miguel
9pedro
maria
Quién es abuelo de jorge?
?- progenitor (PoM, jorge), progenitor
(Abuelo, PoM). PoM teresa Abuelo pedro
PoM teresa Abuelo maria No
teresa
elena
jorge
raquel
miguel
10pedro
maria
Quién es nieto de pedro?
?- progenitor (pedro, Hijo), progenitor
(Hijo, Nieto). Hijo teresa Nieto jorge
Hijo teresa Nieto raquel No
teresa
elena
jorge
raquel
miguel
11pedro
maria
Quién es abuelo de jorge?
?- progenitor (X, jorge), progenitor (Y,
X). X teresa Y pedro X teresa Y maria
No
teresa
elena
jorge
raquel
miguel
12Paso 1.
Quién es abuelo de jorge?
?-
progenitor (Y, X).
progenitor (Y, teresa).
progenitor (X, jorge),
progenitor (pedro, teresa). progenitor (maria,
teresa). progenitor (maria, elena). progenitor
(teresa, jorge). progenitor (teresa,
raquel). progenitor (raquel, miguel).
X teresa
La base de hechos
13Paso 2.
Quién es abuelo de jorge?
?-
progenitor (X, jorge),
progenitor (Y, teresa).
Y pedro
progenitor (pedro, teresa). progenitor (maria,
teresa). progenitor (maria, elena). progenitor
(teresa, jorge). progenitor (teresa,
raquel). progenitor (raquel, miguel).
Respuesta
X teresa, Y pedro
La base de hechos
14Paso 3.
Quién es abuelo de jorge?
?-
progenitor (X, jorge),
progenitor (Y, teresa).
progenitor (pedro, teresa). progenitor (maria,
teresa). progenitor (maria, elena). progenitor
(teresa, jorge). progenitor (teresa,
raquel). progenitor (raquel, miguel).
Y maria
Respuesta
X teresa, Y maria
La base de hechos
15Paso 4.
Quién es abuelo de jorge?
?-
progenitor (X, jorge),
progenitor (Y, teresa).
progenitor (Y, X).
progenitor (X, jorge),
progenitor (pedro, teresa). progenitor (maria,
teresa). progenitor (maria, elena). progenitor
(teresa, jorge). progenitor (teresa,
raquel). progenitor (raquel, miguel).
Backtrack
La base de hechos
16Paso 5.
Quién es abuelo de jorge?
?-
progenitor (Y, X).
progenitor (X, jorge),
progenitor (pedro, teresa). progenitor (maria,
teresa). progenitor (maria, elena). progenitor
(teresa, jorge). progenitor (teresa,
raquel). progenitor (raquel, miguel).
No
La base de hechos
17Reglas
X
Para todos X e Y, X es descendiente de Y SI Y
es progenitor de X.
progenitor
descendiente
Y
descendiente(X,Y) - progenitor(Y,X).
cabeza
cuerpo
Para todos X e Y, SI Y es progenitor de X
Entonces X es descendiente de Y.
18Ejemplo la relación madre
Para todos X y W, X es madre de W SI X es
progenitor de W Y X es mujer
X
mujer
madre
progenitor
W
madre (X, W) - progenitor(X, W), mujer(X).
La coma significa conjunción (Y)
Relación unaria
19Ejemplo la relación abuelo
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
hombre
progenitor
W
abuelo
abuelo (X, Z) - progenitor (X, W),
progenitor (W, Z), hombre (X).
progenitor
Z
20Ejemplo la relación hermana
Z
Para todos X y W, X es hermana de W SI Z
es progenitor de X y W, y X es mujer
progenitor
progenitor
X
W
hermana
mujer
hermana (X, W) - progenitor(Z, X),
progenitor(Z, W), mujer(X).
21pedro
maria
Añadimos estos hechos.
hombre(pedro). mujer(maria). mujer(elena). mujer(t
eresa). hombre(jorge). mujer(raquel). hombre(migue
l).
teresa
elena
jorge
raquel
Quién es hermana de jorge?
?- hermana(X, jorge). X raquel No
miguel
22pedro
maria
Un pequeño problema ...
Quién es hermana de teresa?
?- hermana(X, teresa). X teresa X teresa
X elena No
teresa
elena
jorge
raquel
miguel
23pedro
maria
Programa
progenitor(pedro, teresa). progenitor(maria,
teresa). progenitor(maria, elena). progenitor(tere
sa, jorge). progenitor(teresa, raquel). progenitor
(raquel, miguel). hombre(pedro). mujer(maria). mu
jer(elena). mujer(teresa). hombre(jorge). mujer(ra
quel). hombre(miguel). hermana(X, W) -
progenitor(Z, X), progenitor(Z, W), mujer(X).
teresa
elena
jorge
raquel
miguel
Sería más eficiente intercambiar el orden de los
dos predicados progenitor/2 en la definición de
hermana/2 ?
24X
Ejemplo la relación antepasado
Para todos X y Z, X es antepasado de Z SI
X es progenitor de W y W es antepasado de
Z y
progenitor
antepasado
W
antepasado (X, Z) - progenitor (X, W),
antepasado (W, Z).
antepasado
...
Una definición recursiva
Z
25X
Ejemplo la relación antepasado
progenitor
?- antepasado(X, jorge). No
antepasado
W
antepasado (X, Z) - progenitor (X, W),
antepasado (W, Z).
antepasado
...
Z
26X
Ejemplo la relación antepasado
?- antepasado(X, jorge). X teresa X pedro
X maria No
progenitor
antepasado
W
antepasado(X, Z) - progenitor(X, Z).
antepasado
antepasado (X, Z) - progenitor (X, W),
antepasado (W, Z).
...
Z
27Sumario
- 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
28pedro
maria
Ejercicio
Definir las relaciones tia, tio, sobrino,
sobrina, primos, ... y ensayarla sobre la base
de datos de la figura
teresa
elena
juan
jorge
raquel
jose
miguel
SWI-Prolog