La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Prolog PROgramming in LOGic

Presentaciones similares


Presentación del tema: "Prolog PROgramming in LOGic"— Transcripción de la presentación:

1 Prolog PROgramming in LOGic
Alain Colmerauer, Universidad de Marsella, 1972 Inteligencia artificial, proyecto quinta generación ISO-Prolog Basado en lógica formal, demostrador de teoremas lógicos Programación declarativa

2 Hechos le_gusta_a(juan,maria). Comienzan con minúsculas
Relación, objetos entre paréntesis separados por comas Punto al final El orden de los argumentos es relevante Terminología: argumentos, predicado

3 Hechos valioso(oro). hembra(ana). tiene(juan,oro). padre(juan,maria).
da(juan,libro,maria).

4 Preguntas ?- tiene(maria,libro). Responde sí o no.
no, no es lo mismo que falso, es que no se puede probar

5 Preguntas le_gusta_a(jose,pescado). le_gusta_a(jose,maria).
le_gusta_a(maria,libro). le_gusta_a(juan,libro).

6 Preguntas ?- le gusta_a(jose,dinero). no ?- le gusta_a(maria,jose).
?- le gusta_a(maria,libro). yes ?- presidente(juan,francia).

7 Variables Es pesado preguntar ¿le gustan a juan los libros? ¿le gusta a Juan María? Es más sensato pedir a prolog que nos diga qué le gusta a Juan. Esto en prolog es como preguntar ¿le gusta a Juan X? ?- le_gusta_a(juan,X) Un variable puede estar instanciada o no instanciada

8 Variables Comienzan por mayúscula
La búsqueda en los hechos se realiza en el orden en que se introdujeron, las variables se van instanciando y se marcan las posiciones Por defecto una búsqueda (return), pero se pueden forzar más (; y return) siguiendo por donde se quedó.

9 Conjunciones ej: ¿se gustan juan y maria?
?- le_gusta_a(juan,maria), le_gusta_a(maria,juan). Se separan por comas, que se leen como “y”. Intenta satisfacer los objetivos por orden Las conjunciones y las variables se pueden conjugar para hacer preguntas más interesantes.

10 Conjunciones ej: ¿hay algo que le guste tanto a juan como a maria?
?- le_gusta_a(juan,X), le_gusta_a(maria,X). Cada objetivo guarda su propia marca de posición Reevaluación (backtracking). si una variable se instancia, se instanciará en todos los lugares de la pregunta en los que aparezca la variable.

11 Reglas Regla frente a lista de hechos
Reglas para expresar definiciones ej: X es un pájaro si: X es un animal, y X tiene plumas X es hermana de Y si: X es hembra, y X e Y tienen los mismos padres

12 Reglas Una variable representa el mismo objeto siempre que aparece en una regla Una regla es una afirmación general sobre objetos y sus relaciones En prolog una regla se compone de una cabeza y un cuerpo unidos mediante “:-“, que se pronuncia “si”

13 Reglas La cabeza describe qué hecho es el que la regla intenta definir
El cuerpo describe la conjunción de objetivos que deben satisfacerse, uno tras otro, para que la cabeza sea cierta ej: le_gusta_a(juan,X):- le_gusta_a(X,vino). ej: le_gusta_a(juan,X):- le_gusta_a(X,vino), le_gusta_a(X,comida).

14 Reglas ej: le_gusta_a(juan,X):- hembra(X), le_gusta_a(X,vino).
Siempre que una variable X se instancia a algún objeto, todas las X se instancian dentro del ámbito de X. Para un determinado uso de una regla el ámbito de X es toda la regla, incluyendo la cabeza, y hasta el punto final de la regla

15 Reglas varon(albert). varon(edward). hembra(alice). hembra(victoria).
padres(edward,victoria,albert). padres(alice,victoria,albert).

16 Reglas hermana_de(X,Y):- hembra(X), padres(X,M,P), padres(Y,M,P).
Un predicado estará definido por una mezcla de hechos y de reglas. A unos y otras se las denomina como cláusulas de un predicado

17 Reglas ladron(juan). le_gusta_a(maria,comida). le_gusta_a(maria,vino).
le_gusta_a(juan,X):- le_gusta_a(X,vino). puede_robar(X,Y):- ladron(X), le_gusta_a(X,Y).

18 Estructuras Functor y componentes
ej: tiene(juan, libro ( cumbres_borrascosas, autor (emily,bronte))). Pueden participar en el proceso de pregunta-respuesta con variables ej: tiene(juan,libro(X,autor(Y,bronte))). Todos los elementos de prolog están formados por constantes, variables y estructuras

19 Operadores 3+4 <=> +(3,4) x+y*z <=> +(x,*(y,z))
<=> (3,4) x+y*z <=> (x,*(y,z)) El resultado de las operaciones aritméticas se asigna con “is” ej Y is X + Y. Igualdad X = Y, prolog intenta hacer coincidir X e Y. X \= Y, X < Y, X > Y, ...

20 Coincidencia (matching)
Una variable sin instanciar coincide con cualquier objeto Un entero o un átomo sólo coindicidirá con él mismo Una estructura conincidirá con otra con el mismo functor y número de argumentos, debiendo coincidir todos los argumentos correspondientes.

21 Estructuras de datos: árboles
padres(carlos,isabel,felipe). frase ( nombre (juan), sintagma_verbal (verbo(come), nombre (pan))).

22 Estructuras de datos: listas
Secuencia ordenada de elementos Los elementos de una lista pueden ser cualquier término (constantes, variables, estructuras) incluyendo otras listas. [] lista vacía [los, hombres, [van, a, pescar]] [a,V1,b,[X,Y]]

23 Estructuras de datos: listas
Las variables de una lista se tratan como si estuvieran en cualquier otra estructura Cabeza: primer elemento de la lista Cola: lista que contiene todos los elementos menos el primero lista: [a,b,c] cabeza: a cola: [b,c]

24 Estructuras de datos: listas
Notación [X|Y], lista con cabeza X y cola Y. Esto instanciará X a la cabeza de la lista e Y a la cola. miembro(X, [X|_]). miembro(X, [_|Y]):- miembro(X,Y). ?- miembro(d, [a,b,c,d,e,f,g]). yes Variable anónima “_”,

25


Descargar ppt "Prolog PROgramming in LOGic"

Presentaciones similares


Anuncios Google