Lógica asociada con la inteligencia artificial usando Prolog

Prolog es un lenguaje de programación lógica asociado con la inteligencia artificial y la lingüística computacional fue creado a principios de los años 70 en la Universidad de Aix-Marseille en Marsella, Francia por los estudiantes Alain Colmerauer y Philippe Roussel. Prolog proveniene del francés PROgrammation en LOGique.

Programación en Prolog.

Los programas en Prolog a diferencia de lenguajes de programación como C o python en los cuáles nuestro código fuente que no es más que un conjunto de instrucciones que se ejecutan normalmente en un orden secuencial es decir una tras de otra en Prolog se componen de cláusulas de Horn que constituyen reglas del tipo "modus ponendo ponens" que en latín significa "la forma en que se afirma afirmado".

Un ejemplo un poco mas claro de esto seria que si un evento A implica un envento B, entonces si A se afirma siendo verdad dado que A implica B, por lo tanto B tambien tiene que ser verdad.

SWI-Prolog es una implementación en código abierto del lenguaje de programación Prolog. Desde sus comienzos en 1987, el desarrollo SWI-Prolog ha sido impulsado por las necesidades de las aplicaciones del mundo real. SWI-Prolog se usa ampliamente en la investigación y la educación, así como las aplicaciones comerciales. SWI-Prolog funciona tanto en plataformas Unix, Windows, Macintosh y Linux.

¿Qué necesito antes de empezar?

Es necesario descargar e instalar SWI-Prolog, como ya mencionamos esta disponible para practicamente todos los sistemas operativos, en esta ocasión veremos como instalarlo en ubuntu a través de su repositorio PPA (repositorio personal de paquetes) la instalacion es la misma en cualquier distribución basa en Debian si necesitas instalarlo en cualquier otro sistema operativo basta con entrar en swi-prolog.org ir a la pestaña de descargas seleccionar la versión estable y elegir tu sistema operativo.

Código :

% sudo apt-add-repository ppa:swi-prolog/stable[url=http://www.cristalab.com/tags/python/]
% sudo apt-get update[/url]
% sudo apt-get install swi-prolog

Para verificar que SWI-Prolog esta instalado correctamente en nuestra máquina basta con abrir nuestra terminar y ejecutar el comando swipl para que nos despliege la terminal de SWI-Prolog.

Mi primer programa en Prolog.

Ahora, vamos a crear nuestro primer programa en Prolog en esta ocasión vamos a crear nuestro árbol genenalógico, para esto primero debemos de definirlo por lo menos para tres generaciones la imagen a continuación nos servira como base para realizar nuestro programa para esto necesitas crear un archivo con el nombre que tu quieras pero con la extensión .pl.

Muy bien una vez definido nuestro árbol genealógico vamos a empezar con nuestro código, bueno básicamente la programación en Prolog se base en dos cosas hechos y reglas.

  1. Hechos.

    Los hechos son cosas que en el momento en que tu las declaras lo haces estableciendo que cada una es verdadera, entonces de acuerdo a nuestro árbol genealógico nuestros hechos quedarían de la siguiente forma.

    Código :

    esposode(rafael, isabel). % Rafael es esposo de Isabel
    esposode(daniel, ivette). % Daniel es esposo de Ivette
    esposode(victor, nayelli). % Vitor es esposo de Nayelli
    
    padrede(rafael, daniel). % Rafael es padre de Daniel
    padrede(rafael, victor). % Rafael es padre de Nayelli
    padrede(rafael, teresa). % Rafael es padre de Teresa
    
    padrede(daniel, carolina). % Nayelli es madre de Mario
    padrede(victor, mario). % Nayelli es madre de Mario
    

    Nota: A diferencia de otros lenguajes de programación que para finalizar alguna instrucción esta termina siempre con punto y coma en Prolog siempre termina en punto y los comentarios siempre empiezan por %.

  2. Reglas

Una regla consiste en llamadas a predicados que son llamados los objetivos de las reglas que terminan su ejecución bien en verdadero o falso.

Código :

Cabeza :- Cuerpo. % esto se lee como la cabeza es verdad si el cuerpo es verdad

Entonces basándonos en esto algunas de las reglas para nuestro árbol genealógico serían:

Código :

abuelode(Abuelo,Nieto) :- padrede(Abuelo,Padre) , padrede(Padre,Nieto).

Entonces para saber quién es el abuelo de nuestros 2 nietos de acuerdo con nuestro árbol genealógico básicamente lo que estamos diciendo aquí es que para que alguien sea abuelo de un nieto tiene que cumplir con 2 reglas primera el abuelo tiene que ser padre de nuestro padre y segunda el hijo de nuestro abuelo tiene que ser nuestro padre.

Otra regla sería:

Código :

madrede(Madre,Hijo) :- esposode(Padre,Madre), padrede(Padre,Hijo).

Bueno esta regla lo que nos esta diciendo es que para ser madre de un hijo tiene que ser esposa de un padre y ese padre tiene que ser el nuestro.

Comprabando nuestro código.

Ahora bien después de todo estas cosas raras que tal vez te hicieron estallar la cabeza tu me diras pero como compruebo todo esto y yo te dire "hijo/a" pues estan facil como abrir tu terminal ir al directorio donde tienes tu programa ejecutar el comando swipl y una vez dentro de la terminal de SWI-Prolog ejecutar el comando consult(‘nombre_del_archivo.pl’). Una vez hecho esto para comprobar una de nuestras reglas basta con poner por ejemplo:

Código :

madrede(X,Y).

Esto nos desplegará a todas las madres y sus hijos de nuestro árbol genealógico.


Nota: al ejecutar madrede(X,Y). te saldra solo la primera madre y su hijo para desplegar todas las respuestas posibles presiona la barra espaciadora hasta que ya no haya más respuestas.

¿Qué hago ahora?

Ahora intenta realizar mas reglas por tu parte, prueba este codigo con tu propio árbol genealógico y recuerda que realizar un solo ejemplo nunca sirve de nada experimenta, innova. La innovación en la tecnologia nunca bien de personas que no buscan saber las de lo que ya aprendieron y busca siempre leer un poco de la documentación oficial ayuda bastante.

Enviar comentario

via Cristalab http://ift.tt/1lADRWS

Advertisements

Tags:

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: