Z_Presentacion Introduccion Prolog

25
PEOGRAMACION LOGICA Y FUNCIONAL P R O L O G

description

Introduccion Prolog

Transcript of Z_Presentacion Introduccion Prolog

Presentacin de PowerPoint

PEOGRAMACION LOGICA Y FUNCIONAL

P R O L O GIntroduccin a PrologEl Prolog (o PROLOG), proveniente del francs PROgrammation en LOGique, es un lenguaje para programar artefactos electrnicos mediante el paradigma lgico con tcnicas de produccin final interpretada. Es bastante conocido en el rea de la Ingeniera Informtica para investigacin en Inteligencia Artificial.

Desarrollado en los aos 70 en Europa en Marsella, Francia.

Base del proyecto 5 Generacin en Japn (Prolog hubiese sido un lenguaje de maquina).

Paradigma de Programacin: Imperativo, funcional y declarativo.Introduccin a Prolog

PrologResolucin de problemas planteados en base a objetos y las relaciones entre ellos.Objetos: Juan, libros, casa, carro, etc

Los hechos describirn propiedades de los objetos Ejemplo: tiene ( juan , libro )

Las reglas describirn relaciones entre objetos. Dos personas son hermanas, porque?

Programa en PROLOG.Declarar hechos sobre objetos (tuplas de relaciones)Definir reglas (describir relaciones)Hacer consultas sobre objetos o relaciones en la Base de Conocimiento

PrologSoftware de libre disposicinhttp://www.swi-prolog.org/

Basado en la sintaxis de Edimburgo

Tradicionalmente interpretado, ahora compilado.

Disponible manual de referenciaElementos de PrologHechos

2. Consultas

3. Variables

4. Conjunciones

5. Disyuncin

6. ReglasElemento de PrologUn hecho describe una propiedad de un objetoEjemplo: el diamante es valiosoHecho: valioso ( diamante ).

Ejemplo: Juan es un programador.Hecho: programador ( juan )

Ejemplo: El len es un mamfero.Hecho: ??

Ntese que se anota primero el predicado y entre parntesis el sujeto de la proposicin. 1. HECHOSElemento de PrologEl programador debe definir la interpretacin de los objetos y las relaciones entre ellos:Objetos: juan, libro Juan tiene un libroRelacin: tiene ( juan , libro )

El orden de la relacin es importante. 1. HECHOSElemento de PrologEjemplo:Objetos: Juan, Mara, Maz, Vino.Relaciones: A le gusta Hechos: A Juan le gusta el Maz.A Juan le gusta el vinoA Maria le gusta el vino

PROLOGle_gusta ( juan, maiz ).le_gusta ( juan, vino ). le_gusta ( maria, vino ).

1. HECHOSElemento de PrologEl nombre de los objetos y relaciones empiezan por minscula.

Primero se escribe la relacin y despus los objetos a modo de argumento.

Se permite _ para separar caracteres.

Al final debe aparecer un punto.

1. HECHOSElemento de PrologLos predicados pueden ser:

Mondicosvalioso ( diamante ). El diamante es valioso mujer ( ana ). Ana es una mujer.

Polidicos tiene ( juan, libro ). Juan tiene el libro. da ( juan, libro, maria ). Juan da el libro a Mara.

1. HECHOSElemento de PrologVariables: Maysculas. Constantes: Minsculas. Cada afirmacin debe terminar con un punto. No se aceptan constantes o variables con espacios en blanco, en lugar de ello se usa el guin bajo (_)

Ejemplo: primer_ministro ( ).

1. HECHOS1.1 SintaxisElemento de PrologComienzan por: ?-

Equivale a preguntar: la consulta se deduce de la base de conocimiento (hechos + reglas).

Ante una consulta, PROLOG intenta hacer un matching sobre la base de conocimiento: Mismo predicadoMismo nmero de argumentosMismos argumentos: trminos / variables (instanciadas) 2. ConsultasElemento de PrologLas respuestas a una consulta pueden ser: Yes Se deduce que es ciertoNo No se deduce; no es lo mismo que falso

Qu responder a una consulta?[ENTER] Termina.; Hay ms respuestas?

2. Consultas

Elemento de Prolog/* Los comentarios como en C */

/* Hechos: le_gusta_a(A,B) --> a A le_gusta B */

le_gusta_a ( juan, maria ). le_gusta_a ( pedro, coche ). le_gusta_a ( maria, libro ). le_gusta_a ( maria, juan ). le_gusta_a ( jose, maria ). le_gusta_a ( jose, coche ). le_gusta_a ( jose, pescado ). 2. ConsultasElemento de PrologPara hacer preguntas genricas necesitaremos variables.Qu libros le gustan a Mara?Qu cosas le gustan a Mara?Hay algo que le guste tanto a Mara como a Juan?

Una variable permite hacer referencias a mltiples objetos en funcin del contexto

Una variable puede estar libre o ligada

3. VariablesElemento de PrologEn PROLOG todas las variables empiezan por Maysculas o _ (ms adelante)

?- le_gusta_a(maria, X). ?- le_gusta_a(juan, X), le_gusta_a(maria, X).

Aunque en PROLOG se suelen utilizar X, Y, las variables pueden tener nombres mnemotcnicos:

3. VariablesElemento de PrologEmplea el operador lgico AND

Se utiliza la coma ( , )

Permiten expresar mltiples objetivos que deben satisfacerse simultneamente: Se gustan Juan y Mara?

?- le_gusta_a ( juan, maria ), le_gusta_a ( maria, juan ). ?- le_gusta_a ( jose, maria ), le_gusta_a ( maria, jose ).

Permitimos la CONJUNCIN LGICA entre (n) objetivos. 4. ConjuncionesElemento de PrologPROLOG intentar satisfacer TODOS los objetivos, en el orden dado (de izquierda a derecha).

Ejemplo: Hay algo que le guste a Juan y a Mara?

?- le_gusta_a ( juan, Algo ), le_gusta_a ( maria, Algo )

4. ConjuncionesElemento de PrologEmplea el operador lgico OR

Se utiliza el punto y coma ( ; )

Ejemplo: A Jorge le gusta el caf o el chocolate?

?- le_gusta ( jorge, chocolate) ; le_gusta ( jorge, chocolate)

5. DisyuncinElemento de PrologEstablece dependencias entre hechos, de forma compacta: afirmacin general sobre objetos y sus relaciones.

Una regla tendr: :- hechos con conjunciones y variables

Ejemplo: Juan es amigo de aquellos a quienes les gustan los coches.

En PROLOG: es_amigo(Juan,Y) :- le_gusta_a(Y, coche).

6. ReglasElemento de PrologEjemplo:

Si el len come carne, entonces es carnvoro

comecarne ( leon ) :- carnivoro ( leon )

6. ReglasElemento de Prolog6. Reglas

Elemento de Prolog6. Reglas

Elemento de PrologTALLER