Introducción a Prolog
Document Details
Uploaded by AffirmativeWormhole9413
ESPE
Ing. Mauricio Loachamín V.
Tags
Summary
This document provides an introduction to the Prolog programming language. It covers the fundamental concepts and principles of Prolog, including syntax, data structures, and logic programming paradigms. Prolog is a declarative programming language, emphasizing logic based operations and solving problems.
Full Transcript
Departamento de Ciencias de la Computación Inteligencia Artificial Sistemas Basados en Conocimiento Ing. Mauricio Loacham...
Departamento de Ciencias de la Computación Inteligencia Artificial Sistemas Basados en Conocimiento Ing. Mauricio Loachamín V. 1 Inteligencia Artificial espe.edu.ec Prolog Programación Lógica 2 Inteligencia Artificial espe.edu.ec Definición PROLOG, el nombre proviene del francés “PROgrammation en LOGique”, es un lenguaje de programación declarativa muy utilizado en Inteligencia Artificial. Inteligencia Artificial espe.edu.ec 3 Tipos de Programación ❑ Programación Imperativa ❑ Programación Funcional ❑ Programación Lógica Inteligencia Artificial espe.edu.ec 4 Empleo de Prolog Como shell para la programación de Sistemas Expertos Basados en Reglas, PROLOG usa Lógica de Predicados de Primer Orden (restringida a cláusulas de Horn) para representar datos y conocimiento, utiliza encadenamiento hacia atrás y una estrategia de control retroactiva sin información heurística (backtracking). Inteligencia Artificial espe.edu.ec 5 Elementos del lenguaje ❑ Hechos (átomos). ❑ Reglas (cláusulas de Horn). ❑ Preguntas u objetivos (conjunciones ó disyunciones de átomos). Inteligencia Artificial espe.edu.ec 6 Símbolos del lenguaje Caracteres ❑ Alfanuméricos: A..Z a..z 0..9 ❑ Especiales: + - * / = :- & Inteligencia Artificial espe.edu.ec 7 Símbolos del lenguaje Tokens Los nombres de predicados y las constantes del dominio empiezan con minúscula y se construyen como cadenas de letras, dígitos y _ p.ej. pedro x25 x_1 funcion predicado CUIDADO: Algunos ya están predefinidos: atomic, var, repeat… Inteligencia Artificial espe.edu.ec 8 Operaciones aritméticas Inteligencia Artificial espe.edu.ec 9 Operaciones aritméticas Inteligencia Artificial espe.edu.ec 10 Unification En Prolog “=” no es para asignación “=” tampoco es para evaluar expresiones “=” significa que “vamos a unificar términos” Inteligencia Artificial espe.edu.ec 11 Operaciones ❑ Uso de “is” para evaluar operaciones aritméticas Inteligencia Artificial espe.edu.ec 12 Hechos ❑ Átomos en Lógica de Predicados. ❑ No se permiten disyunciones. ❑ Los nombres de los predicados empiezan con minúscula. ❑ El hecho debe terminar con un punto. Inteligencia Artificial espe.edu.ec 13 Preguntas u objetivos En tiempo de ejecución, aparece el prompt ?- y el intérprete de PROLOG espera que el usuario introduzca un objetivo en forma de predicado, con o sin variables. Inteligencia Artificial espe.edu.ec 14 Preguntas u objetivos Para cargar un fichero, escribiremos: ?- [baseconoc]. ?- esHombre(juan). yes ?- esHombre(pedro). yes ?- esHombre(juanCarlos). no ?- esMamifero(leon). no Inteligencia Artificial espe.edu.ec 15 Justificación En una sesión de trabajo, PROLOG asume que todo lo que no se declare explícitamente (hechos o conclusiones que puedan demostrarse usando las reglas) es falso. Formalmente, PROLOG va buscando en la memoria de trabajo, hechos que se unifiquen con el objetivo. Inteligencia Artificial espe.edu.ec 16 Justificación En general, una pregunta [query] puede ser más compleja que una simple consulta a la base de datos. Por ejemplo, puede ser una conjunción de átomos: ?- esHombre(juan), esHombre(pedro). yes En PROLOG, la coma representa el conectivo ∧. Puede usarse dentro de una pregunta y (como se verá después) dentro de una regla, pero no en la declaración de un hecho. Inteligencia Artificial espe.edu.ec 17 Tipos de preguntas ❑ Sin variables: La respuesta es, simplemente, yes o no. ? esHombre(juan), esHombre(pedro). Yes ❑ Con variables: cuando estamos interesados en obtener todos los objetos que cumplen un objetivo. ? esHombre(Persona). Persona = juan ; Persona = pedro ; No El punto y coma (;), introducido por el usuario, le indica al intérprete de PROLOG que siga buscando respuestas. El punto (.) se emplea cuando ya no nos interesa obtener más respuestas. Inteligencia Artificial espe.edu.ec 18 Tipos de preguntas ❑ Con la variable anónima ( _ ), cuando estamos interesados en saber si existe algún objeto que cumpla un objetivo. La respuesta de PROLOG es, simplemente, yes o no ?- esHombre(_). Yes Ejemplos ?- gusta(X,maria). ?- gusta(_,maria). ?- gusta(maria,_). ?- gusta(juan,X) , gusta(maria,Y). ?- gusta(juan,X) , gusta(maria,X). Inteligencia Artificial espe.edu.ec 19