jueves, 27 de abril de 2017

BÚSQUEDA CON ADVERSARIO (JUEGOS)



En entornos competitivos, se debe considerar las acciones que pueden tomar los contendientes, el no considerar estas posibles decisiones, puede llegar a ocasionar problemas en lo que se está realizando, por esto se emplean las búsquedas con adversario, en la cual se decide la mejor jugada en un momento especifico; a este tipo de búsqueda también es popularmente conocida como un juego, sin tener en cuenta toda la teoría que está detrás basándose en la inteligencia artificial, para poder hacer los procesos más óptimos, y hacer el papel de adversario en cualquier juego. 

Los juegos son un campo tan grande que se desprende toda una teoría de ellos. Existen varios tipos de juegos, entre ellos están los de 2 jugadores, movimientos alternos e información perfecta, entre otros. 

Los juegos de suma cero, son aquellos en los cuales la ganancia de uno es la pérdida del otro, sumando las ganancias de uno, respecto a la perdida de otros, en cambio los juegos de suma, hacen alusión a aquellos juegos en los que la ganancia de uno, no representa ninguna pérdida para el otro, esto quiere decir que cada uno de los puntos ganados, han sido por estrategias bien empleadas a la hora de jugar, un ejemplo de esto es el futbol, en el cual el marcador de un equipo es por los goles realizados, y al ganar un partido el puntaje es ganada por el equipo, más no descontado del otro. 

Los juegos de movimientos alternos, o de dos jugados, son aquellos en los que cada uno de los jugadores ataca pensando en obtener los mejores resultados, y que este genere las menores ganancias para su adversario, es a lo que se le llaman Min y Max. Los juegos de información perfecta es en el que cada movimiento esta previamente establecido y cada jugador puede saber lo que va a pasar, algunos ejemplos de este tipo de juegos es el ajedrez o las damas, y contrario a estos, están los juegos de información imperfecta, en los que entra a jugar un papel decisivo el azar, y por lo tanto los jugadores no pueden llegar a determinar que va a pasar con su juego, entro estos esta cualquier juego de cartas, como lo es el póker, stratego, etc. 

Para la búsqueda con adversario se crearon varios algoritmos, teniendo en cuenta todos aquellos posibles movimientos y estrategias que se pueden tomar durante un juego, al pensar en esto, se puede ver son teorías bastante complejas, ya que los factores de ramificación pueden llegar a ser bastante grandes, tanto así que no se puede contar con la capacidad suficiente para desarrollar todo el árbol o grafo necesario para desarrollar completamente alguno de estos juegos, para esto se crean diferentes variaciones en las cuales como base siempre se tienen las búsquedas principales en la inteligencia artificial, como lo son la búsqueda en anchura y profundidad, a estas búsquedas se les agregan características propias en la búsqueda con adversario, pero siguen teniendo la misma base; entre estos algoritmos está el Minimax, Alfa/Beta y Megamax, las cuales suelen ser muy usadas en diversos juegos, que tal vez hemos experimentado o participado sin tener idea de que utilizan la inteligencia artificial para realizar las jugadas. 

Minimax es un algoritmo de búsqueda con adversario, pero también suele ser llamado un algoritmo de decisión, una de las características básicas en este tipo de juegos y en este algoritmo en especial es la información completa que este posee, por lo cual cada jugador conoce las jugadas del otro o el estado en el que se encuentra. Se elige el mejor movimiento para cada jugador, suponiendo que el contrincante siempre elegirá el peor, de ahí la frase célebre que resume todo el algoritmo elegir el mejor movimiento para ti mismo suponiendo que tu contrincante escogerá el peor movimiento para ti.”
 
El algoritmo es representado por medio de árboles, los cuales contienen nodos que representan la situación del juego, cada vez que se realice un movimiento o se tome una decisión, el algoritmo generara todo el árbol, suponiendo las estrategias que va tomar el adversario, para así tener en cuenta tanto los mejores como los peores caminos, para así poder llegar a la victoria. También se debe decir que es un procedimiento recursivo, en el cual gana algún jugador, y se exploran una cierta cantidad de niveles, hasta llegar a un punto establecido por el mismo algoritmo, para no tomar ciclos infinitos, como si lo hace el algoritmo de profundidad.

De forma más clara, se empieza en la posición inicial, y de ahí se pasa determinar cada uno de los movimientos permitidos por el juego, generando todas las posiciones posibles, hasta llegar al nivel final –si así el juego lo permite- o llegar un nivel establecido, si las ramificaciones son demasiadas y no se cuenta con la capacidad para hacerlo; al llegar a este punto se aplica una función evaluadora, la cual usa una heurística que tiene la capacidad para determinar si un movimiento es bueno o malo para cada jugador, después de aplicar la función el algoritmo elige el movimiento para el jugador, devolviéndose en el árbol para poder evaluar cada uno de los niveles.

La función de evaluación se establece de la manera en la que los valores positivos son para el jugador o la máquina que hace uso del algoritmo, y se desprenden valores negativos para el adversario como las mejores jugadas para esté, así utilizando el estos valores para maximizar los valores del jugador, y minimizar los valores del adversario, esto en el árbol se hace de forma alterna, avanzando de un nivel a otro, o de un movimiento a otro, durante el juego.

Juegos como el ajedrez utilizan este algoritmo, pero el problema principal de esté, y de muchos juegos más, es el hecho que no se puede realizar el árbol completo de movimientos posibles, ya que su factor de ramificación es gigante, y no existe la capacidad necesaria para poder efectuar el desarrollo del mismo, y tampoco se conoce una heurística precisa para que se asegure que el juego va a ser ganado.

Otro algoritmo popular en la búsqueda con adversario, es el alfa/beta, que en realidad es una variante del ya mencionado Minimax, ya que este contiene grandes problemas al realizar la búsqueda en el árbol, porque los nodos que este puede llegar a generar pueden ser bastantes, tanto así que no puede ser posible llegar a generarlos, haciendo uso de hardware en el que se debe situar el software para así poder tener un buen desarrollo del algoritmo, por todos los problemas que puede llegar a generar el algoritmo, se creó la variante alfa/beta, la cual usa un mecanismo bastante parecido al Minimax, pero en este se reduce el número de nodos a evaluar, eliminando partes del árbol en el que se considere que no se va llegar a ninguna parte hablando en términos del juego, esto quiere decir, que se pone en el papel del adversario, y según la función evaluadora y la heurística que esta trae consigo, elimina aquellos caminos que considera no van a influir en una decisión final.
El funcionamiento del algoritmo viene a estar dado por el uso de dos parámetros, el alfa y el beta, que guía la búsqueda en el árbol. Alfa es la mejor opción en el recorrido para el máximo valor, y el beta es la mejor opción hasta el momento, para el valor mínimo, representando el mínimo valor que se le puede asignar un nodo Max. 

Este algoritmo puede traer problemas por el hecho de no considerar una “mala jugada”, ya que según muchos jugadores, y lo que ha sido demostrado desde algoritmos, y grandes batallas entre estos y los mejores jugadores de ciertos juegos en específicos, es que para llegar a encontrar el mejor camino para un juego, y tomar las decisiones apropiadas en cuanto a movimientos, se debe pensar en cada posible mal jugada, para así tener en cuenta el camino que el juego puede tomar desde esa postura, por lo tanto, el algoritmo no es completo ni optimo, ya que al no recorrer todo el árbol, puede que no encuentre la mejor solución, o simplemente no la encuentre.

Negamax es otro de los algoritmos en búsqueda con adversario, como los ya mencionados, tiene un funcionamiento en el cual se tienen en cuenta los valores máximos y mínimos que se puede tomar en el recorrido del juego, haciendo uso de una función evaluadora, en la cual se pueden determinar los mejores o peores movimientos; la generación del árbol para según haya sido establecido, si hay demasiados niveles o si en caso contrario el juego es corto y se puede llegar a desarrollar los niveles en su totalidad.

Existen varias búsquedas con adversario, solo se han mencionado tres, pero existen muchas variantes de los ya mencionados, tomando en su mayoría de caso el Minimax como la base para ellos, siendo este el más usado en la mayoría de juegos; se sabe que la inteligencia artificial ha avanzado bastante en la investigación de toda la teoría de juegos, consiguiendo derrotar, por ejemplo, al mejor jugador de ajedrez del mundo con la Deep blue que es una súper computadora desarrollada hace casi unos 20 años, desde ese momento, hemos visto como la tecnología ha avanzado, creando cada vez cosas mejores, y una mayor innovación, en cuanto a juegos, haciendo uso de una gran variedad de búsquedas.  


miércoles, 26 de abril de 2017

TALLER DE FRAMES





I. Resuelva lo siguiente:


1.    Señale las ventajas del uso de frames como forma de representación del conocimiento
  • Ofrece un muy buen mecanismo en programación, ya que es muy estructurado, haciéndolo así más poderoso y flexible en la inteligencia artificial.
  • La base de conocimiento se organiza en componentes que se pueden diferenciar, precisando objetos, relaciones y propiedades entre ellas.
  • Se pueden implementar esquemas de representación del conocimiento sin distinción entre ellos, haciendo así que se puedan implementar diversos paradigmas de programación.
  • Se pueden heredar atributos de objetos superiores o frames padres a objetos inferiores o frames hijos.
  • Las secuencias de estados que se van generando en una búsqueda se representan de forma eficiente, siendo más óptimos cada uno de sus procesos, flexibles y sin dejar de detallar cada uno de los niveles que se van generando.

2. Si usted fuera productor de desarrollos en IA, cual(es) formas de representación del conocimiento implementaría. Razone su respuesta. Tenga en cuenta que casi ninguna forma de RC viene implementada,  sola en las herramientas comerciales.

Si yo realizara desarrollos de inteligencia artificial, implementaría los frames y las redes semánticas, porque considero que estas dos muestran de forma más detallada, las interacciones y lo que se quiere representar, desde la forma en la que se desarrolla cada una de ellas, por ejemplo, los frames permiten mejor visibilidad, ya que son más fáciles de comprender para una persona acostumbrada al desarrollo, teniendo en cuenta que su sintaxis y forma de expresión es muy similar a la programación orientada a objetos; por otro lado las redes semánticas al tener en cuenta los nodos y los arcos, permiten una mejor comprensión de lo que se quiere representar, haciendo así que el proceso de búsqueda sea mucho más rápido, por la forma en la que están conectados cada uno de los nodos, y la forma gráfica en la que se representan estas redes, también ayudan mucho a entender la representación.

II. Represente utilizando frames el siguiente conocimiento.
1.    El computador es una máquina que realiza proceso simbólico y numérico y cuya característica principal es su gran velocidad de operación y exactitud. Sus componentes principales son: CPU y dispositivos de E/S. El computador texas instrument soporta un ambiente multiusuario baso so unix. Las estaciones de trabajo SUN son computadores que permiten desarrollos multiusuario y con un coste bajo bajo ambiente UNIX y con herramientas de cuarta generación.


2.    Los vegetales son seres vivos que carecen de movimiento y tienen ciclo de vida completo (nacen, crecen, se reproducen y mueren.

  • El grupo de las fanerógamas son vegetales con órganos reproductores visibles. 
  • El grupo de las criptogramas son vegetales con órganos reproductores ocultos. 
  • La división de las gimnospermas son fanerógamas con semillas sin envoltura. 
  • La clase de las coníferas agrupan a las que producen conos y están entre las gimnospermas.
  • La familia de las taxaceas reúne a aquellas en las cuales el tronco no produce resina y el fruto es carnoso. Son de la clase de las coníferas. 
  • La familia de las pinaceas reúne aquellas en las cuales el tronco produce resina y el fruto es un cono. Es de la clase de las coníferas
  • La división de las angiospermas reúne a las plantas que poseen semilla con envoltura. 
  • La clase de las monocoteledoneas son aquellas cuya semilla tienen 1 cotiledon y la clase de las  dicotiledoneas son aquellas con 2 cotiledones. y pertenecen a las angiospermas. 
  • La familia de las amarilidáceas reúne a las de hojas carnosas, las liliáceas a las de hojas planas y las gramieas a las de hojas alargadas. todas son monocotiledoneas.