Tryu pendulo
1. Introducción 2. Hechos 3. Preguntas 4. Variables 5. Conjunciones 6. Reglas
UNIVERSIDAD DE VALLADOLID
7. Ejercicios
Introducción (I)
Basado en la lógica de Primer Orden. Resolver problemas formulados como una serie de objetos y relaciones entre ellos: base de conocimiento Ejemplo: Juan tiene un libro
Objetos: “Juan” y “libro”Relación: “tiene” (predicado) Importancia del orden
tiene(juan, libro).
Introducción (II)
Hecho: propiedad de un objeto
Ejemplo: “el diamante es valioso”
valioso(diamante).
Reglas: forma de describir relaciones
Ejemplo:“Dos personas son hermanas, si ambas son hembras y tienen los mismos padres”
Programación en PROLOG:
Declarar hechos sobre objetos y sus relaciones Definir reglas sobreobjetos y sus relaciones Hacer preguntas sobre objetos y relaciones:
Trabajar contra una base de (datos) conocimiento
Hechos (I)
Ejemplo:
Objetos: Juan, Pepe, vino y cerveza Relación: A le gusta Hechos: A Juan le gusta el vino A Pepe le gusta la cerveza
Hechos (II)
Los nombre de objetos y relaciones comenzarán por minúsculas Primero la relación y después los objetos a modo de argumentosSe permite “_” para separar caracteres Al final debe aparecer un punto
PROLOG:
a_le_gusta (juan, vino). a_le_gusta (pepe, cerveza).
Coherencia con el orden de los objetos
A Juan le gusta el vino ≠ Al vino le gusta Juan
Hechos (III)
Admite predicados (relaciones) monádicos o poliádicos:
valioso(diamante). hembra(ana). tiene(juan, oro). padre(juan, maria). dar(juan, libro, maria).Preguntas (I)
Formalmente igual que un hecho precedido del símbolo “?” En primera instancia, busca en la base de conocimiento, si el hecho inquirido está almacenado. Ejemplo:
Base de Conocimiento gusta(jose, maria). gusta(maria, libro). gusta(juan, coche). gusta(jose, pescado). Preguntas ?- gusta(maria, jose). ?- gusta(maria, libro). ?- gusta(juan, pescado). ?- gusta(jose, pescado). Resp. No YesNo Yes
El diamante es valioso. Ana es una hembra. Juan tiene oro. Juan es el padre de María. Juan da un libro a María
Preguntas (II)
Introducción de la base de conocimiento en SWI-PROLOG:
Doble click en el fichero con la extensión”pl”
Variables (I)
Formalmente comienzan por mayúscula
Instanciada: con un valor asignado No instanciada: sin valor a priori
La respuesta “no” significaque “no” hay coincidencia con hechos almacenados en la base. Para averiguar qué le gusta a Maria, hay que recurrir a las variables.
?- gusta(X, maria).
Ejemplo:
¿qué le gusta a Juan?
?- gusta(juan, X). X = coche ;
X está no instanciada X está instanciada con valor “coche”
¿qué le gusta a José?
?- gusta(jose, X). X = maria ; X = pescado ;
X adquiere el primer valor encontrado pulsarsucesivamente “n” para pasar al siguiente
Variables (II)
PROLOG localiza el primer hecho coincidente en el predicado y con los mismos argumentos literales. El sentido de búsqueda es de arriba abajo. En la variable almacenará el objeto, cuya posición coincida con ésta. Marca el hecho en la base y muestra la variable, ahora sí, instanciada: X=maria Si pulsa [RETURN], se detiene la búsqueda dándosepor satisfechos con la respuesta. Si se teclea “;”, X pasa a no instanciada y se repetiría el proceso pero empezando en la marca establecida en la última instancia. A esto se le denomina “resatisfacer” la pregunta.
Conjunciones (I)
Ejemplo:
Base de Conocimiento gusta(maria, comida). gusta(maria, vino). gusta(juan, vino). gusta(juan, maria).
Pregunta: ¿Juan y María se gustan?
¿A Maria legusta Juan? Y ¿A Juan le gusta Maria? ?- gusta(juan, maria), gusta(maria, juan).
Conjunciones (II)
PROLOG intenta satisfacer el primer objetivo: ¿A María le gusta Juan? Si fuera así, establece una marca en la base y probará a satisfacer el segundo objetivo: ¿A Juan le gusta María? Si también resultase satisfactorio pone otra marca en la base, por si hubiera que “resatisfacer” a continuación....
Regístrate para leer el documento completo.