jueves, 17 de diciembre de 2015

Introducción al lenguaje Prolog

1.1.    INTRODUCCIÓN
Como hemos venido diciendo en los anteriores publicaciones algunas aplicaciones (agentes) hacen uso de algoritmos de inteligencia artificial, estos algoritmos son aplicados en videojuegos, en la automatización de procesos industriales entre otros , pero para poder lograr este tipo de algoritmos es necesario conocer cuales son los lenguajes de programación que podemos utilizar para llevar a cabo este tipo de problemas, uno de ellos es Prolog el cual fue desarrollado para la resolución de problemas lógicos de inteligencia artificial.

Este programa incorpora un lenguaje de instrucciones declarativas que hace uso de hechos y reglas  para representar datos y conocimientos entre otras características que hacen de este programa uno de los principales lenguajes de inteligencia artificial.

1.2.       OBJETIVO 

Conocer acerca del lenguaje de programación Prolog y la importancia de utilizarlo en problemas de inteligencia artificial.



2.     MARCO TEÓRICO

2.1. Que es Prolog?
Para saber con exactitud que es Prolog primero debemos conocer como esta formado un sistema de inteligencia artificial, el conocimiento es la parte fundamental de estos ya que estos le permiten adquirir experiencia de la educación. 
El conocimiento está formado por hechos, conceptos, teorías, relaciones y procedimientos que son utilizados en la solución de problemas y en la toma de decisiones.
Entre las partes que podemos destacar de un sistema de inteligencia artificial tenemos:
  • La Base del Conocimiento: Formada por los hechos y las relaciones.
  • La Maquina de Inferencia: Formada por los procedimientos y Reglas.


Imagen 2.1. Partes de un sistema de I.A

Una vez que se crea la base de conocimiento la computadora ya se encuentra en condiciones para razonar y pensar para la resolución de los problemas de inteligencia artificial.
Una vez teniendo en cuenta todos estos datos podemos saber con exactitud que es Prolog, este lenguaje de programación lógica declaritvo hace uso de las partes de un sistema de inteligencia artificial al hacer uso de hechos y reglas, es muy util debido a que 
a que resuelve problemas de objetos y de relaciones entre los mismos, y se desarrolla y se realizan pruebas paso a paso. 
2.2. Elementos de Prolog
Dentro de la estructura que utiliza este lenguaje podemos encontrar unos elementos que destacan el funcionamiento de Prolog, entre estos elementos tenemos:
Imagen 2.2. Elementos de Prolog

2.2.1. Hechos

Los hechos en Prolog son las propiedades que describen a un objeto, por ejemplo si decimos que Andres es delgado la propiedad de este objeto es que Andres, es delgado. Para declarar un hecho en Prolog lo realizamos de la siguiente manera:



Objetos: Carlos y Mariana
Relación: gusta(carlos, mariana).

2.2.2. Reglas
Las reglas en Prolog son la declaración de hechos ciertos que dependen de una relación y toda relación es un hecho, para declarar una regla en Prolog utilizamos los símbolos :- que es como si dijeramos puedo llevar a cabo mi hecho si y solo si esto se cumple. Un ejemplo seria:
padre(X,Y):- hijo(X,Z), hijo(Z,Y).

2.2.3. Variables
Las variables en Prolog son usadas para generalizar los hechos cuando existen muchos objetos involucrados, además son utilizadas para especificar las reglas. Las variables en Prolog son representadas en letras mayúsculas y para uso de estas hacemos la siguiente declaración:

Tenemos una base de conocimiento de unas frutas
fruta(mango).
fruta(uva).
fruta(pera).
fruta(sandia).

Como vamos a hacer uso de las variables la consulta seria de la siguiente forma:
?- fruta(X).
mango.
uva.
pera.
sandia.

2.2.4. Conjunciones
Las conjunciones en Prolog corresponden una instancia o el contrario de esto, son utilizadas para satisfacer objetivos numerosos que involucran una o más relaciones o uno o más objetos, un ejemplo seria de la siguiente manera:

?- le_gusta_a(nico, raquel), le_gusta_a(raquel,nico).

?- gusta_bailar(nico,raquel), gusta_bailar(raquel,nico).

2.2.4. Consultas

Las consultas en Prolog sirven para obtener una respuesta a un problema, esta se realiza una vez se hallan declarado los hechos y las reglas en la Base de Conocimientos, para su utilizarlas usamos el signo de interrogación, en caso de que nuestra pregunta sea nos devolvera un valor true y en caso de que  nuestra pregunta sea falsa nos devolvera un false.
Un ejemplo de consulta en prolog seria el siguiente:
Imagen 2.3. Consulta en Prolog



CONCLUSIONES
El lenguaje de programación lógico Prolog es muy importante para la inteligencia artificial ya que este hace uso de la programación convencional y la lógica haciendo que sea de facil entendimiento, ademas posee una base de conocimientos la cual almacena los hechos y las relaciones que existen entre los diversos elementos y los puede consultar gracias a la maquina de inferencia que posee las reglas que utilizara el sistema.

Este sistema integra un lenguaje declarativo en donde se encuentran los hechos, reglas, conjunciones, variables que son muy utilizados en la inteligencia artificial.




BIBLIOGRAFÍA

Berzal, F y Curbero, J. 2011. Tutorial de PROLOG. (En línea). ES. Consultado el 9 de Jul. 2015. Formato PDF. Disponible en: http://elvex.ugr.es/decsai/intelligent/workbook/ai/PROLOG.pdf


Gonzalez, A. s.f. Guía Básica de PROLOG. (En línea). ES. Consultado el 7 de Jul. 2015. Formato PDF. Disponible en: http://www.gedlc.ulpgc.es/docencia/lp/documentacion/GB_Prolog.pdf



Russell, S., Norvig, P. 2008. Inteligencia Artificial Un Enfoque ModernoSegunda Edición. Pearson Education. España



viernes, 27 de noviembre de 2015

El Algoritmo Minimax y Poda Alfa-Beta

1.1.       INTRODUCCIÓN
Como hemos venido mencionado en la anterior publicación sobre búsquedas entre adversarios, existen algoritmos que hacen uso de estrategias optimas que los guien a estados objetivos, entre estos algoritmos tenemos al algoritmo minimax, este algoritmo es fundamental para contrincantes óptimos en problemas de juegos, el cual basa su teoría de las investigaciones de Claude Shannon y Alan Turing en el año de 1950.
Otro algoritmo que se utiliza en este tipo de problemas de búsquedas entre adversarios es el algoritmo Poda Alfa-Beta que es una versión mejorada del algoritmo Minimax que no necesita hacer un recorrido de todos los nodos para poder obtener una decisión óptima.
En esta publicación hablaremos sobre el algoritmo Minimax y el algoritmo Poda Alfa-Beta, sus principales características y que tipo de decisiones optimas utilizan en juegos multi-jugadores.

1.2.       OBJETIVO 

Conocer cómo funcionan los algoritmos entre adversario Minimax y Poda Alfa-Beta y en base a qué factores toman decisiones para problemas con juegos.

2.     MARCO TEÓRICO

2.1.       El Algoritmo Minimax

El algoritmo minimax es una de los algoritmos de las búsquedas de adversarios, cuyo objetivo es minimizar la perdida contra adversarios en juegos, para ello hace uso de un cálculo recurrente de cada uno de sus estados sucesores para elegir el mejor movimiento. Este algoritmo hace uso de búsqueda en profundidad para explorar el conjunto de jugadas posibles es decir explora todo el árbol de juegos.
Entre las principales características que posee este algoritmo tenemos:
·         Facilidad de problemas complejos con reglas simples.
·         Pruebas contra humanos escalables
·         Existencia de un solo ganador
·         Exploración de N capas
·         Tiempo de exploración agotado
·         Situaciones estáticas sin cambios significativos

Este algoritmo principalmente está enfocado en problemas matemáticos de juegos en donde los costos de los tiempos son poco prácticos.
Imagen 1: Algoritmo Minimax


1.1.       Decisiones Optimas en Juegos Multi-Jugador


En la actualidad muchos de los juegos son populares se orientan a más de dos jugadores, lo que intenta el algoritmo minimax es proporcionar una idea de cómo enfocar su estrategia utilizando las funcionalidades del mismo. Para explicar de una mejor manera pondré un ejemplo con tres jugadores en donde cada tendrá asignado un nodo, este para poder obtener el estado terminal tendrá que hacer uso de la función de utilidades la cual nos va a devolver un vector de utilidades, seguido de esto tendremos que analizar los estados no terminales para reconocer los movimientos que nos conducirán hacia un estado terminal con utilidades, se podría decir que el valor hacia atrás de un nodo será el vector de utilidades de cualquier estado sucesor que tiene el valor más alto para cada jugador.

Imagen 2: Ejemplo de juego con tres jugadores

1.1.       El algoritmo Poda Alfa-Beta

El algoritmo poda Alfa-Beta como ya lo habíamos mencionado anteriormente es una técnica mejorada del algoritmo Minimax en la cual es posible calcular un estado objetivo sin la necesidad de recorrer todos los nodos del árbol de juegos, este tipo de algoritmo suele utilizarse para cualquier tipo de árbol de búsqueda en profundidad y para subárboles enteros. Este algoritmo al igual que el Minimax hace uso de la búsqueda en profundidad asi que para poder encontrar un resultado solo tendremos que considerar los nodos a lo largo de un solo camino.
Entre las principales características que posee este algoritmo en comparación con el Minimax tenemos:
·         Omisión de expansión de nodos que por sus valores no pueden ser los mejores.
·         No afecta al resultado final.
·         Permite búsquedas el doble de profundas que el Minimax
·         Importancia de orden y no de valores exactos

Hay que tener en cuenta que para poder podar en un árbol que utiliza este algoritmo se debe recorrer el orden ya fijado, los valores de Max (Alfa) son los del límite inferior y los de Min (Beta) son los limites superiores. Esto quiere decir que en los niveles maximizantes solo Beta puede podar y en los niveles minimizantes solo alfa puede podar.
Imagen 3: Algoritmo Poda Alfa-Beta

CONCLUSIONES
Estos algoritmos son de suma importancia para los problemas de arboles de juegos, cada uno a sido diseñado para que los agentes puedan desenvolverse sin dificultades, el algoritmo Minimax  trata de minimizar la perdida contra adversarios en juegos, para ello hace uso de un cálculo recurrente de cada uno de sus estados sucesores para elegir el mejor movimiento mientras que el algoritmo Poda Alfa-Beta es una version mejorada del algortimo Minimax la cual no necesita explorar todos los nodos para encontrar una solucion optima para problemas de juegos.

BIBLIOGRAFIAS
Russell, S., Norvig, P. 2008. Inteligencia Artificial Un Enfoque ModernoSegunda Edición. Pearson Education. España

jueves, 12 de noviembre de 2015

Búsqueda entre Adversarios

1.1.       INTRODUCCIÓN
Haciendo memoria de las anteriores publicaciones sobre inteligencia artificial los agentes se clasifican de diversas maneras según el entorno en el que se encuentren, estos tipos de agentes los cuales se desenvuelven en un entorno en el que existe al menos un agente del cual dependa sus acciones, se los conoce como multiagentes.
Para entender de mejor manera lo que es un entorno multiagente les explicare con el siguiente ejemplo de un juego en el cual tenemos un agente A el cual debe esperar el movimiento del agente B para poder realizar una acción que dé como resultado una ganancia, haciendo que nuestro agente se desenvuelva en un entorno de competitividad.
Como ya había mencionado anteriormente existen diversos tipos de búsquedas que se aplican dependiendo del tipo de agente, ¿pero qué sucede cuando un agente compite con otro y ambos poseen una medida de rendimiento en la cual tienen que ganar? Bueno para poder evaluar este tipo de situaciones tenemos que utilizar lo que se conoce como búsqueda entre adversarios y los diversos algoritmos existentes que utilizan este tipo de búsquedas.

1.2.       OBJETIVO 

Conocer sobre las búsquedas entre adversarios y las diversas estrategias de búsqueda para problemas con juegos.

2.     MARCO TEÓRICO

2.1.       Juegos

Uno de los primeros pasos de la inteligencia artificial fue establecer la teoría de juegos, estos en la inteligencia artificial representan a un entorno en donde se encuentren dos agentes que traten de maximizar su rendimiento pero que a su vez solo uno de ellos debe ganar.
Entre los tipos de juegos que se pueden enlistar según la inteligencia artificial tenemos los siguientes:
·         Juegos de suma cero
·         Minimax o de dos jugadores
·         Por turnos
·         Deterministas
·         De información perfecta.
Una de las principales razones que hace que la inteligencia artificial se interese en la teoría de los juegos es porque en estos se toman decisiones que afectan de manera directa al agente, en muchos casos estas decisiones se realizan sin haber calculado si es la mejor decisión o simplemente es una decisión más.

2.2.       Decisiones Optimas en Juegos

Para realizar decisiones optimas en juegos analizaremos el caso dos agentes que para explicarlo de mejor manera y para entender la temática que le sigue los llamaremos MIN y MAX, en este ejemplo témenos que MAX mueve primer, y que luego de esto se mueve cada uno por turnos hasta que el juego termine, al finalizar el juego se le concederá puntos al agente que gane mientras que al agente que no logre ganar se le penalizara.
Es importante conocer que los juegos cuentan con varios componentes que los definen entre ellos tenemos:
Imagen 1: Juego de Tic-Tac-Toe

2.3.       Estrategias Optimas

Ya conocemos los típicos problemas de búsqueda normal en donde un agente trate de encontrar una solución óptima que lo conduzca hacia un estado objetivo, ¿pero en qué se diferencia este tipo de búsqueda de las búsquedas que se realizan en los juegos? Bueno en los juegos tendremos a dos agentes que compiten por ganar, en donde uno de los dos deberá encontrar una estrategia que le permita responder ante los posibles movimientos del otro agente, expresado de otra forma una estrategia optima es aquella que nos conduce a un resultado tan bueno que cualquier otro tipo de estrategia de búsqueda cuando nos encontramos al frente de un agente infalible.
Imagen
Un ejemplo claro de este tipo de estrategias seria el del juego Tic-Tac-Toe en donde dibujar un árbol para conocer todos los posibles movimientos resultar demasiado complejo.

Existen diversos algoritmos que utilizan estrategias óptimas para poder obtener un mejor resultado como es el caso del algoritmo Minimax pero lo que hace especial este algoritmo es que es fundamental contra aquellos agentes óptimos.

CONCLUSIONES
La búsqueda en adversarios fue creada por los investigadores de la inteligencia artificial, para resolver los problemas de agentes que se encuentran en entornos multiagente, y que son competitivos o cooperativos, en el caso de los juegos, ambos agentes requieren ganar, pero solamente puede haber uno que gane, y la se debe realizar esa búsqueda hasta que se consiga ese objetivo.

BIBLIOGRAFIASRussell, S., Norvig, P. 2008. Inteligencia Artificial Un Enfoque ModernoSegunda Edición. Pearson Education. España