1 / 25

Prolog

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. Hechos. le_gusta_a(juan,maria). Comienzan con minúsculas

Download Presentation

Prolog

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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). • no • ?- le gusta_a(maria,libro). • yes • ?- presidente(juan,francia). • no

  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)) • 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 “_”,

More Related