Fecha de Clase: 29 de Junio al 3 de Julio 2015
INTRODUCCIÓN
En esta clase aprendimos sobre prolog es uno de los primeros
lenguaje de programación, también es el más conocidos y utilizados en la ingeniería
informática para el estudio de la inteligencia artificial. Prolog es muy
antiguo, y está formado por un conjunto de reglas y hechos, que se ejecutan normalmente. Este lenguaje de
programación almacena una base de conocimiento que luego estas pueden ser
consultadas, basadas en lógica de predicados de primer orden, ya que este
programa esta descrito en un lenguaje declarativo, este lenguaje implica
objetos y relaciones.
OBJETIVO
Obtener conocimientos basicos de prolog y presentar ejemplos prácticos
de este lenguaje de programación.
MARCO
TEÓRICO
PROLOG
Prolog ha sido diseñado e implementado de tal manera que puede ser
fácilmente modificado para experimentos con la programación lógica y la relación
entre la programación lógica y otros paradigmas de programación. Prolog tiene
un rico conjunto de predicados incorporados y un rendimiento razonable, lo que
hace posible el desarrollo de las aplicaciones importantes en el mismo. La
versión actual ofrece un sistema de módulos, recolección de basura y una interfaz
para el lenguaje C.
PROLOG está orientado a la resolución de problemas mediante el
cálculo de predicados, basado en (Aedo, G. 2004)
·
Base de datos a las que se realiza
preguntas.
·
Pruebas matemáticas y lógicas (and,
or, not).
· Especificaciones cómo debe ser la
solución, en vez de dar el algoritmo para su resolución. La solución se obtiene
mediante búsqueda aplicando la lógica de predicados.
ELEMENTOS DEL
LENGUAJE:
Hechos (átomos).
Reglas (cláusulas de Horn).
Preguntas u objetivos (conjunciones ó disyunciones de átomos).
HECHOS
Para explicar los fundamentos de PROLOG vamos a utilizar el típico
ejemplo de las relaciones familiares. Para decir que María es madre de Jesús,
podríamos declarar el siguiente hecho PROLOG:
madre(maria,
jesus).
“madre” es el nombre de la relación o nombre de predicado y “maria”
y “jesus” son los argumentos. Los hechos acaban siempre con punto. Nosotros interpretaremos
que María, primer argumento de la relación, es la madre de Jesús, segundo
argumento de la relación. Sin embargo, este orden es arbitrario y cada programador puede darle su propio
significado. Los nombres de las relaciones y los argumentos que se refieren a
objetos o personas concretas se escribirán con minúscula.
Otros ejemplos de hechos pueden ser los siguientes:
le_gusta_a(juan,maria).
valioso(oro).
tiene(juan,libro).
da(juan,libro,maria).
Los nombres también son arbitrarios y el programador decidirá la
interpretación que haga de ellos. La relación le_gusta_a(juan,maria) es
equivalente a la relación a(b,c), aunque para que la interpretación sea más sencilla,
se recomienda que los nombres se elijan de forma que ayuden a su
interpretación.
Los hechos no tienen que reflejar el mundo real necesariamente,
pero será única y exclusivamente lo que PROLOG tomará como verdadero. Un
conjunto de hechos (también llamados cláusulas), junto con un conjunto de
reglas, forman lo que se llama una base de datos. (Toledo, F.et al.., 2001)
REGLAS
El verdadero poder de cualquier lenguaje de programación está en
su mecanismo de abstracción. En Prolog la norma establece el mecanismo de
abstracción. Cuando un hecho sólo se puede especificar que una tupla de valores
satisface un predicado, una regla puede especificar en qué condiciones una
tupla de valores satisface un predicado.
El bloque básico de una regla edificio se llama un átomo: un
predicado seguido de una tupla de términos, donde ambas constantes y variables
son términos (veremos que un término puede realmente tener más estructura).
Vemos inmediatamente que cada hecho es un átomo. Cuando la tupla satisface el
predicado del átomo decimos el átomo es cierto. Cada regla está dividida en dos
partes por el símbolo ': -': la parte izquierda se llama el jefe de la gobernar,
mientras que el lado derecho es el cuerpo de la regla.
Ejemplo:
predecesor(X,Y):-progenitor(X,Y).
predecesor(X,Y):-progenitor(X,Z), progenitor(Z,Y).
predecesor(X,Y):-progenitor(X,Z),
progenitor(Z,V), progenitor(V,Y).
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. (Cubero, C; y Berzal, F. 2010)
Para realizar preguntas más interesantes, como por ejemplo,
qué le gusta a María o cuáles son los padres de Damián, se usarán las variables.
En PROLOG las variables empiezan por mayúscula. Por ejemplo:
?-le_gusta_a(maria,X).
?-progenitor(Y,damian).
EJEMPLO PRACTICO
ARBOL DE FAMILIA
CODIGO
PROLOG
hijo(ramona,pedro).
hijo(roberty,pedro).
hijo(genoveva,pedro).
hijo(eddy,ramona).
hijo(loly,ramona).
hijo(paola,ramona).
hijo(edward,roberty).
hijo(douglas,roberty).
hijo(xavier,genoveva).
primo(eddy,edward).
primo(eddy,douglas).
primo(eddy,xavier).
primo(loly,edward).
primo(loly,douglas).
primo(loly,xavier).
primo(paola,edward).
primo(paola,douglas).
primo(douglas,eddy).
primo(douglas,paola).
primo(douglas,loly).
primo(douglas,xavier).
primo(edward,loly).
primo(edward,paola).
primo(edward,eddy).
primo(edward,xavier).
primo(xavier,paola).
primo(xavier,eddy).
primo(xavier,loly).
primo(xavier,edward).
primo(xavier,douglas).
primo(paola,xavier).
hermano(eddy,paola).
hermano(eddy,loly).
hermano(paola,eddy).
hermano(paola,loly).
hermano(loly,eddy).
hermano(loly,paola).
hermano(douglas,edward).
CONSULTA PROLOG
CONCLUSIÓN
Prolog es el lenguaje de programación que es muy utilizado para
aprender los principios básicos de la inteligencia artificial, este lenguaje
utiliza una base de conocimiento llamada bases de datos, en donde se almacena
un conjunto de reglas y hechos, que sirven para realizar preguntas o consultas.
También prolog trabaja con relaciones y objetos, asi que es recomendable utilizar
prolog para las personas que quieran indagar sobre la IA y sus principios basicos.
Para estos hay que conocer claramente los elementos de Prolog como lo son las
reglas, los hechos y las consultas, y su utilizacion para su correcta aplicación.
BIBLIOGRAFÍA
Russell, S. y Norvig, P. 2004. INTELIGENCIA ARTIFICIAL.
UN ENFOQUE MODERNO. PEARSON EDUCACION. 2 ed. Madrid.
Wielemaker, J. 1996. SWI-Prolog 2.7-Reference Manual.
Aedo, G. 2004. Estudiaremos un caso de
lenguaje orientado a la programación lógica (cálculo de predicados): Prolog.
Formato HTML. Disponible en: http://www.desarrolloweb.com/
Toledo, F; Pacheco, J y Escrig, M. 2001. Lenguaje de programación
PROLOG.
Cubero, C; y Berzal, F. 2010. Sistemas inteligentes de gestion. Disponible
en: http://elvex.ugr.es/