Prolog - Ingeniería en Sistemas Computacionales | … · El lenguaje Prolog Prolog es un lenguaje...

Post on 03-Oct-2018

254 views 1 download

Transcript of Prolog - Ingeniería en Sistemas Computacionales | … · El lenguaje Prolog Prolog es un lenguaje...

PrologProlog

II.4

El lenguaje PrologProlog es un lenguaje Declarativo, a diferencia de otros lenguajes que son orientados a objetos o procedurales

Creador: Robert Kowalski Algoritmo = Lógica + Control Aspectos importantes:

La forma de representar la información. Las técnicas de búsqueda que se implementan en el

lenguaje.

De Lógica de Primer Orden a Programas Lógicos

Sólo se permiten implicaciones en la representación de predicados.El formato es:∀Xi (P1

P∧2 … P∧ ∧

n → H)

Se denominan cláusulas de HornP

1 P∧

2 … P∧ ∧

n es el cuerpo

H es el encabezadoPrograma Lógico: Es una colección de cláusulas de Horn.

De Programas Lógicos a Prolog

1. Eliminar los cuantificadores universales: Son asumidos por Prolog

2. Invertir la cláusula: P

1 P∧

2 … P∧ ∧

n → H

Se escribe: H ← P1 P∧

2 … P∧ ∧

n

3. Escribir ← como :- Se escribe: H :- P

1 P∧

2 … P∧ ∧

n

4. Escribir como comas y con un punto al final:∧ Se escribe: H :- P

1, P

2, … , P

n.

Ejemplo

“En cualquier clase, si el maestro es bueno, o si el tema de la materia es de interés, entonces los estudiantes están atentos y animados”

∀ X (tiene_buen_maestro(X) ∨ tema_de_interés(X) → estudiantes_atentos(X) ∧ estudiantes_animados(X))

Escrito en un programa de Prolog:

estudiantes_animados(X) :- tiene_buen_maestro(X).estudiantes_animados(X) :- tema_de_interes(X).estudiantes_atentos(X) :- tiene_buen_maestro(X).estudiantes_atentos(X) :- tema_de_interes(X).

Búsqueda en Prolog

Los programas de Prolog son una base de datos con cláusulas de HornPara hacer una consulta: ?- busqueda_predicado(X).

Prolog busca en la base de datos: De forma secuencial, buscando la

correspondencia del encabezado y la aridad del predicado.

Búsqueda en PrologSi encuentra una correspondencia: Verifica si puede hacer correspondencia con los argumentos: Usando las variables en el cuerpo de la cláusula Haciendo Unificación:

Las variables son instanciadas con constantes

Si existe correspondencia, la consulta es true.Si no encuentra correspondencia, se asume falsa.

Ejemplo deEjemplo dePrologProlog

II.4

Ejemplo

Pamela Tomás

Roberto Elizabeth

Ana Patricia

Jaime

Ejemplo

Pamela Tomás

Roberto Elizabeth

Ana Patricia

Jaime

padre(pamela,roberto).padre(tomas,roberto).padre(tomas,elizabeth).padre(roberto,ana).padre(roberto,patricia).padre(patricia,jaime).

Familia.pl

Ejemplo

Se carga el programa usando [nombre].

Ejemplo

Una consulta con éxito

Una consulta sin éxito

Ejemplo

Otras consultas:

?- padre(X, elizabeth).?- padre(roberto,X).?- padre(X,Y).

Ejemplo

¿Quién es el abuelo de Jaime?

?- padre(X, jaime),padre(Y,X).

¿Quién es el nieto de Tomás?

?- padre(tomas,X),padre(X,Y).

¿Ana y Patricia tienen el mismo padre?

?- padre(X,ana),padre(X,patricia).

17

Tarea 40:

1.- Utilizando el programa lógico “familia.pl”, ¿cuál es el resultado de las siguientes consultas? a).- ?- padre(jaime,X). b).- ?- padre(X,jaime). c).- ?- padre(pamela,X), padre(X,patricia). d).- ?- padre(pamela,X), padre(X,Y), padre(Y,jaime).2.- ¿Cuál es el significado de los incisos c y d?3.- Formule una consulta en Prolog para lo siguiente: a).- ¿Quién es el padre de Patricia? b).- ¿Tiene Elizabeth un hijo? c).- ¿Quién es el abuelo de Patricia?

18

Cláusula de Horn

La relación definida en el programa lógico es “padre de”.¿Cómo se puede definir “es hijo de”?

19

Cláusula de Horn

La relación definida en el programa lógico es “padre de”.¿Cómo se puede definir “es hijo de”?

“si X es padre de Y, entonces Y es hijo de X”

padre(X,Y) → eshijo(Y,X).

20

Cláusula de Horn

La relación definida en el programa lógico es “padre de”.¿Cómo se puede definir “es hijo de”?

“si X es padre de Y, entonces Y es hijo de X”

padre(X,Y) → eshijo(Y,X).

En Prolog:

eshijo(Y,X) :- padre(X,Y).

21

Cláusula de Horn

¿Cómo se puede definir “es madre de”?

Es necesario definir el concepto de sexo en la persona:

mujer(pamela).hombre(tomas).hombre(roberto).mujer(elizabeth).mujer(patricia).mujer(ana).hombre(jaime).

22

Cláusula de Horn

¿Cómo se puede definir “es madre de”?

“Si X es padre de Y, y X es mujer, entonces X es madre de Y”

padre(X,Y) mujer(X)∧ → madre(X,Y).

En Prolog:

madre(X,Y) :- padre(X,Y),mujer(X).

23

Cláusula de Horn

¿Cómo se puede definir “es abuelo de”?

24

Cláusula de Horn

¿Cómo se puede definir “es abuelo de”?

padre(X,Y) padre(Y,Z)∧ → abuelo(X,Z).

En Prolog:

abuelo(X,Z) :- padre(X,Y),padre(Y,Z).

25

Cláusula de Horn

¿Cómo se puede definir “es hermana de”?

padre(Z,X) padre(Z,Y)∧ mujer(X)∧ → hermana(X,Y).

En Prolog:

hermana(X,Y) :- padre(Z,X),padre(Z,Y),mujer(X).

26

Tarea 41:

1.- Formule las cláusulas de Horn para lo siguiente: a).- Cualquiera que tiene un hijo es feliz (Defina la relación “feliz”). b).- Para todo X, si X tiene un hijo que tiene una hermana, entonces X tiene dos hijos (Defina la relacion “tienedoshijos”).

2.- Defina la relación “nieto” usando la relación “padre”. Ésta es similar a la relación “abuelo”.

3.- Defina la relación “tia(X,Y)” en términos de las relaciones “padre” y “hermana”.