martes, 30 de junio de 2015

PROLOG

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/


No hay comentarios.:

Publicar un comentario