prolog - ingeniería en sistemas computacionales | … · el lenguaje prolog prolog es un lenguaje...
TRANSCRIPT
![Page 1: Prolog - Ingeniería en Sistemas Computacionales | … · El lenguaje Prolog Prolog es un lenguaje Declarativo, a diferencia de otros lenguajes que son orientados a objetos o procedurales](https://reader030.vdocuments.mx/reader030/viewer/2022012405/5bb494d709d3f2d3728d915b/html5/thumbnails/1.jpg)
PrologProlog
II.4
![Page 2: Prolog - Ingeniería en Sistemas Computacionales | … · El lenguaje Prolog Prolog es un lenguaje Declarativo, a diferencia de otros lenguajes que son orientados a objetos o procedurales](https://reader030.vdocuments.mx/reader030/viewer/2022012405/5bb494d709d3f2d3728d915b/html5/thumbnails/2.jpg)
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.
![Page 3: Prolog - Ingeniería en Sistemas Computacionales | … · El lenguaje Prolog Prolog es un lenguaje Declarativo, a diferencia de otros lenguajes que son orientados a objetos o procedurales](https://reader030.vdocuments.mx/reader030/viewer/2022012405/5bb494d709d3f2d3728d915b/html5/thumbnails/3.jpg)
![Page 4: Prolog - Ingeniería en Sistemas Computacionales | … · El lenguaje Prolog Prolog es un lenguaje Declarativo, a diferencia de otros lenguajes que son orientados a objetos o procedurales](https://reader030.vdocuments.mx/reader030/viewer/2022012405/5bb494d709d3f2d3728d915b/html5/thumbnails/4.jpg)
![Page 5: Prolog - Ingeniería en Sistemas Computacionales | … · El lenguaje Prolog Prolog es un lenguaje Declarativo, a diferencia de otros lenguajes que son orientados a objetos o procedurales](https://reader030.vdocuments.mx/reader030/viewer/2022012405/5bb494d709d3f2d3728d915b/html5/thumbnails/5.jpg)
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.
![Page 6: Prolog - Ingeniería en Sistemas Computacionales | … · El lenguaje Prolog Prolog es un lenguaje Declarativo, a diferencia de otros lenguajes que son orientados a objetos o procedurales](https://reader030.vdocuments.mx/reader030/viewer/2022012405/5bb494d709d3f2d3728d915b/html5/thumbnails/6.jpg)
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.
![Page 7: Prolog - Ingeniería en Sistemas Computacionales | … · El lenguaje Prolog Prolog es un lenguaje Declarativo, a diferencia de otros lenguajes que son orientados a objetos o procedurales](https://reader030.vdocuments.mx/reader030/viewer/2022012405/5bb494d709d3f2d3728d915b/html5/thumbnails/7.jpg)
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).
![Page 8: Prolog - Ingeniería en Sistemas Computacionales | … · El lenguaje Prolog Prolog es un lenguaje Declarativo, a diferencia de otros lenguajes que son orientados a objetos o procedurales](https://reader030.vdocuments.mx/reader030/viewer/2022012405/5bb494d709d3f2d3728d915b/html5/thumbnails/8.jpg)
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.
![Page 9: Prolog - Ingeniería en Sistemas Computacionales | … · El lenguaje Prolog Prolog es un lenguaje Declarativo, a diferencia de otros lenguajes que son orientados a objetos o procedurales](https://reader030.vdocuments.mx/reader030/viewer/2022012405/5bb494d709d3f2d3728d915b/html5/thumbnails/9.jpg)
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.
![Page 10: Prolog - Ingeniería en Sistemas Computacionales | … · El lenguaje Prolog Prolog es un lenguaje Declarativo, a diferencia de otros lenguajes que son orientados a objetos o procedurales](https://reader030.vdocuments.mx/reader030/viewer/2022012405/5bb494d709d3f2d3728d915b/html5/thumbnails/10.jpg)
Ejemplo deEjemplo dePrologProlog
II.4
![Page 11: Prolog - Ingeniería en Sistemas Computacionales | … · El lenguaje Prolog Prolog es un lenguaje Declarativo, a diferencia de otros lenguajes que son orientados a objetos o procedurales](https://reader030.vdocuments.mx/reader030/viewer/2022012405/5bb494d709d3f2d3728d915b/html5/thumbnails/11.jpg)
Ejemplo
Pamela Tomás
Roberto Elizabeth
Ana Patricia
Jaime
![Page 12: Prolog - Ingeniería en Sistemas Computacionales | … · El lenguaje Prolog Prolog es un lenguaje Declarativo, a diferencia de otros lenguajes que son orientados a objetos o procedurales](https://reader030.vdocuments.mx/reader030/viewer/2022012405/5bb494d709d3f2d3728d915b/html5/thumbnails/12.jpg)
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
![Page 13: Prolog - Ingeniería en Sistemas Computacionales | … · El lenguaje Prolog Prolog es un lenguaje Declarativo, a diferencia de otros lenguajes que son orientados a objetos o procedurales](https://reader030.vdocuments.mx/reader030/viewer/2022012405/5bb494d709d3f2d3728d915b/html5/thumbnails/13.jpg)
Ejemplo
Se carga el programa usando [nombre].
![Page 14: Prolog - Ingeniería en Sistemas Computacionales | … · El lenguaje Prolog Prolog es un lenguaje Declarativo, a diferencia de otros lenguajes que son orientados a objetos o procedurales](https://reader030.vdocuments.mx/reader030/viewer/2022012405/5bb494d709d3f2d3728d915b/html5/thumbnails/14.jpg)
Ejemplo
Una consulta con éxito
Una consulta sin éxito
![Page 15: Prolog - Ingeniería en Sistemas Computacionales | … · El lenguaje Prolog Prolog es un lenguaje Declarativo, a diferencia de otros lenguajes que son orientados a objetos o procedurales](https://reader030.vdocuments.mx/reader030/viewer/2022012405/5bb494d709d3f2d3728d915b/html5/thumbnails/15.jpg)
Ejemplo
Otras consultas:
?- padre(X, elizabeth).?- padre(roberto,X).?- padre(X,Y).
![Page 16: Prolog - Ingeniería en Sistemas Computacionales | … · El lenguaje Prolog Prolog es un lenguaje Declarativo, a diferencia de otros lenguajes que son orientados a objetos o procedurales](https://reader030.vdocuments.mx/reader030/viewer/2022012405/5bb494d709d3f2d3728d915b/html5/thumbnails/16.jpg)
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).
![Page 17: Prolog - Ingeniería en Sistemas Computacionales | … · El lenguaje Prolog Prolog es un lenguaje Declarativo, a diferencia de otros lenguajes que son orientados a objetos o procedurales](https://reader030.vdocuments.mx/reader030/viewer/2022012405/5bb494d709d3f2d3728d915b/html5/thumbnails/17.jpg)
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?
![Page 18: Prolog - Ingeniería en Sistemas Computacionales | … · El lenguaje Prolog Prolog es un lenguaje Declarativo, a diferencia de otros lenguajes que son orientados a objetos o procedurales](https://reader030.vdocuments.mx/reader030/viewer/2022012405/5bb494d709d3f2d3728d915b/html5/thumbnails/18.jpg)
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”?
![Page 19: Prolog - Ingeniería en Sistemas Computacionales | … · El lenguaje Prolog Prolog es un lenguaje Declarativo, a diferencia de otros lenguajes que son orientados a objetos o procedurales](https://reader030.vdocuments.mx/reader030/viewer/2022012405/5bb494d709d3f2d3728d915b/html5/thumbnails/19.jpg)
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).
![Page 20: Prolog - Ingeniería en Sistemas Computacionales | … · El lenguaje Prolog Prolog es un lenguaje Declarativo, a diferencia de otros lenguajes que son orientados a objetos o procedurales](https://reader030.vdocuments.mx/reader030/viewer/2022012405/5bb494d709d3f2d3728d915b/html5/thumbnails/20.jpg)
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).
![Page 21: Prolog - Ingeniería en Sistemas Computacionales | … · El lenguaje Prolog Prolog es un lenguaje Declarativo, a diferencia de otros lenguajes que son orientados a objetos o procedurales](https://reader030.vdocuments.mx/reader030/viewer/2022012405/5bb494d709d3f2d3728d915b/html5/thumbnails/21.jpg)
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).
![Page 22: Prolog - Ingeniería en Sistemas Computacionales | … · El lenguaje Prolog Prolog es un lenguaje Declarativo, a diferencia de otros lenguajes que son orientados a objetos o procedurales](https://reader030.vdocuments.mx/reader030/viewer/2022012405/5bb494d709d3f2d3728d915b/html5/thumbnails/22.jpg)
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).
![Page 23: Prolog - Ingeniería en Sistemas Computacionales | … · El lenguaje Prolog Prolog es un lenguaje Declarativo, a diferencia de otros lenguajes que son orientados a objetos o procedurales](https://reader030.vdocuments.mx/reader030/viewer/2022012405/5bb494d709d3f2d3728d915b/html5/thumbnails/23.jpg)
23
Cláusula de Horn
¿Cómo se puede definir “es abuelo de”?
![Page 24: Prolog - Ingeniería en Sistemas Computacionales | … · El lenguaje Prolog Prolog es un lenguaje Declarativo, a diferencia de otros lenguajes que son orientados a objetos o procedurales](https://reader030.vdocuments.mx/reader030/viewer/2022012405/5bb494d709d3f2d3728d915b/html5/thumbnails/24.jpg)
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).
![Page 25: Prolog - Ingeniería en Sistemas Computacionales | … · El lenguaje Prolog Prolog es un lenguaje Declarativo, a diferencia de otros lenguajes que son orientados a objetos o procedurales](https://reader030.vdocuments.mx/reader030/viewer/2022012405/5bb494d709d3f2d3728d915b/html5/thumbnails/25.jpg)
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).
![Page 26: Prolog - Ingeniería en Sistemas Computacionales | … · El lenguaje Prolog Prolog es un lenguaje Declarativo, a diferencia de otros lenguajes que son orientados a objetos o procedurales](https://reader030.vdocuments.mx/reader030/viewer/2022012405/5bb494d709d3f2d3728d915b/html5/thumbnails/26.jpg)
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”.