1 / 28

Introdución a PROLOG

Introdución a PROLOG. Jorge Cabrera Gámez Departamento de Informática y Sistemas Universidad de Las Palmas de Gran Canaria. ¿Qué es Prolog?. Prolog = PROgramming in LOGic. Desarrollado a partir de trabajos en demostración automática de teoremas

Download Presentation

Introdución a 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. Introdución a PROLOG Jorge Cabrera Gámez Departamento de Informática y Sistemas Universidad de Las Palmas de Gran Canaria Prolog

  2. ¿Qué es Prolog? • Prolog = PROgramming in LOGic. • Desarrollado a partir de trabajos en demostración automática de teoremas • Aplicado inicialmente en problemas de Procesamiento del Lenguaje Natural • Permite un prototipado más rápido que con muchos lenguajes porque es mucho más proximo a la especificación lógica del programa. Prolog

  3. ¿Qué es Prolog? Lenguaje de Programación Computación simbólica y no-numérica Para resolver problemas que involucran • OBJETOS • RELACIONES Prolog

  4. Para programar en Prolog: Declarar hechossobre objetos y sus relaciones Declarar reglas sobre los objetos y sus relaciones Hacer preguntas sobre los objetos y sus relaciones Prolog

  5. Hechos “Raquel es hija de teresa” hija ( raquel, teresa). Objetos: raquel, teresa. Relación: hija • Observar: • Minúsculas • El punto final Prolog

  6. pedro maria Ejemplo: progenitor (pedro, teresa). progenitor (maria, teresa). progenitor (maria, elena). progenitor (teresa, jorge). progenitor (teresa, raquel). progenitor (raquel, miguel). teresa elena jorge raquel miguel cláusulas Prolog

  7. pedro maria ?- progenitor (teresa, raquel). Yes ?- progenitor (jorge, miguel). No teresa elena ?- progenitor (X, raquel). X = teresa ; No jorge raquel ?- progenitor (teresa, Y). Y = jorge ; Y = raquel ; No miguel Prolog

  8. pedro maria ?- progenitor (X, Y). X = pedro Y = teresa ; X = maria Y = teresa ; X = maria Y = elena ; X = teresa Y = jorge ; X = teresa Y = raquel ; X = raquel Y = miguel ; No teresa elena jorge raquel miguel Prolog

  9. pedro maria ¿Quién es abuelo de jorge? ?- progenitor (PoM, jorge), progenitor (Abuelo, PoM). PoM = teresa Abuelo = pedro ; PoM = teresa Abuelo = maria ; No teresa elena jorge raquel miguel Prolog

  10. pedro maria ¿Quién es nieto de pedro? ?- progenitor (pedro, Hijo), progenitor (Hijo, Nieto). Hijo = teresa Nieto = jorge ; Hijo = teresa Nieto = raquel ; No teresa elena jorge raquel miguel Prolog

  11. pedro maria ¿Quién es abuelo de jorge? ?- progenitor (X, jorge), progenitor (Y, X). X = teresa Y = pedro ; X = teresa Y = maria ; No teresa elena jorge raquel miguel Prolog

  12. Paso 1. ¿Quién es abuelo de jorge? ?- progenitor (X, jorge), progenitor (Y, X). progenitor (Y, teresa). progenitor (pedro, teresa). progenitor (maria, teresa). progenitor (maria, elena). progenitor (teresa, jorge). progenitor (teresa, raquel). progenitor (raquel, miguel). X = teresa La base de hechos Prolog

  13. Paso 2. ¿Quién es abuelo de jorge? ?- progenitor (X, jorge), progenitor (Y, teresa). Y = pedro progenitor (pedro, teresa). progenitor (maria, teresa). progenitor (maria, elena). progenitor (teresa, jorge). progenitor (teresa, raquel). progenitor (raquel, miguel). Respuesta X = teresa, Y = pedro La base de hechos Prolog

  14. Paso 3. ¿Quién es abuelo de jorge? ?- progenitor (X, jorge), progenitor (Y, teresa). progenitor (pedro, teresa). progenitor (maria, teresa). progenitor (maria, elena). progenitor (teresa, jorge). progenitor (teresa, raquel). progenitor (raquel, miguel). Y = maria Respuesta X = teresa, Y = maria La base de hechos Prolog

  15. Paso 4. ¿Quién es abuelo de jorge? ?- progenitor (X, jorge), progenitor (X, jorge), progenitor (Y, teresa). progenitor (Y, X). progenitor (pedro, teresa). progenitor (maria, teresa). progenitor (maria, elena). progenitor (teresa, jorge). progenitor (teresa, raquel). progenitor (raquel, miguel). Backtrack La base de hechos Prolog

  16. Aquí Paso 5. ¿Quién es abuelo de jorge? ?- progenitor (X, jorge), progenitor (Y, X). progenitor (pedro, teresa). progenitor (maria, teresa). progenitor (maria, elena). progenitor (teresa, jorge). progenitor (teresa, raquel). progenitor (raquel, miguel). No La base de hechos Prolog

  17. Reglas X Para todos X e Y, X es descendiente de Y SI Y es progenitor de X. progenitor descendiente Y descendiente(X,Y) :- progenitor(Y,X). cabeza cuerpo Para todos X e Y, SI Y es progenitor de X Entonces X es descendiente de Y. Prolog

  18. Ejemplo: la relación madre Para todos X y W, X es madrede W SI X es progenitor de W Y X es mujer X mujer madre progenitor W madre (X, W) :- progenitor(X, W), mujer(X). La coma significa conjunción (Y) Relación unaria Prolog

  19. Ejemplo: la relación abuelo X Para todos X y Z, X es abuelode Z SI X es progenitor de W y W es progenitor de Z y X es hombre hombre progenitor W abuelo abuelo (X, Z) :- progenitor (X, W), progenitor (W, Z), hombre (X). progenitor Z Prolog

  20. Ejemplo: la relación hermana Z Para todos X y W, X es hermanade W SI Z es progenitor de X y W, y X es mujer progenitor progenitor X W hermana mujer hermana (X, W) :- progenitor(Z, X), progenitor(Z, W), mujer(X). Prolog

  21. pedro maria Añadimos estos hechos. hombre(pedro). mujer(maria). mujer(elena). mujer(teresa). hombre(jorge). mujer(raquel). hombre(miguel). teresa elena jorge raquel ¿Quién es hermana de jorge? ?- hermana(X, jorge). X = raquel ; No miguel Prolog

  22. pedro maria Un pequeño problema ... ¿Quién es hermana de teresa? ?- hermana(X, teresa). X = teresa ; X = teresa ; X = elena ; No teresa elena jorge raquel miguel Prolog

  23. pedro maria Programa: progenitor(pedro, teresa). progenitor(maria, teresa). progenitor(maria, elena). progenitor(teresa, jorge). progenitor(teresa, raquel). progenitor(raquel, miguel). hombre(pedro). mujer(maria). mujer(elena). mujer(teresa). hombre(jorge). mujer(raquel). hombre(miguel). hermana(X, W) :- progenitor(Z, X), progenitor(Z, W), mujer(X). teresa elena jorge raquel miguel Prolog ¿Sería más eficiente intercambiar el orden de los dos predicados progenitor/2 en la definición de hermana/2 ?

  24. X Ejemplo: la relación antepasado Para todos X y Z, X es antepasadode Z SI X es progenitor de W y W es antepasado de Z y progenitor antepasado W antepasado (X, Z) :- progenitor (X, W), antepasado (W, Z). antepasado ... Una definición recursiva Z Prolog

  25. X Ejemplo: la relación antepasado ?- antepasado(X, jorge). No progenitor antepasado W antepasado (X, Z) :- progenitor (X, W), antepasado (W, Z). antepasado ... Z Prolog

  26. X Ejemplo: la relación antepasado ?- antepasado(X, jorge). X = teresa ; X = pedro ; X = maria ; No progenitor antepasado W antepasado(X, Z) :- progenitor(X, Z). antepasado antepasado (X, Z) :- progenitor (X, W), antepasado (W, Z). ... Z Prolog

  27. Sumario • Declarar hechos relativos a objetos • Plantear preguntas sobre los hechos • Utilizar variables • Utilizar la conjunción • Definir relaciones mediante reglas • Un rápido vistazo al mecanismo de backtracking Prolog

  28. pedro maria Ejercicio Definir las relaciones tia, tio, sobrino, sobrina, primos, ... y ensayarla sobre la base de datos de la figura teresa elena juan jorge raquel jose miguel SWI-Prolog Prolog

More Related