Paper

1,202 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,202
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
24
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Paper

  1. 1. APLICACIÓN DEL ALGORITMO MINIMAX PARA LAIMPLEMENTACIÓN DEL JUEGO “TRES EN RAYA” Belleza Porras A.1RománCarlos H.1Salazar Tapia, H.1 Universidad Cesar Vallejo a_leo2005@hotmail.com, hromancarlos@hotmail.com, hdaves@hotmail.com ResumenEl siguiente trabajo de tres en raya, tiene como propósito utilizar una estrategia debúsqueda informada entre Adversarios, muy a menudo conocido como juegos;comenzando en la definición de un movimiento óptimo y un algoritmo paraencontrarlo. En este caso se utilizó el algoritmo “MINIMAX”Palabras ClavesInteligencia Artificial, MiniMax, Heurística, Búsqueda, Tres en raya. AbstractThe following work of tic-tac-toe, aims to use asearch strategyreportedamongadversaries, oftenreferred to asgames,startingin the definitionofanoptimalmovementand an algorithmto find it.In this casewe used thealgorithm"MINIMAX"KeywordsArtificial intelligence, MiniMax, Heurístic, Search, three in line.
  2. 2. 1. IntroducciónLa Inteligencia Artificial, es un campo del que se ha tomado gran interés en losúltimos tiempos debido a su capacidad de poder resolver soluciones imitando elrazonamiento lógico de las personas y hasta el mecanismo de cómo ellaslaresuelven.Un tema interesante a tratar son los juegos, para este caso trabajaremoscon eljuego de tres en rayaque es para dos contrincantes y es uno de los mencionadosdentro de la teoría de juegos de la Inteligencia Artificial, por lo que tiene biendefinida su meta y sus acciones, las cuales, por cierto, hacen del juego algo nomuy complicado de programarlo.Existen varios algoritmos de búsqueda para el desarrollo de este juego y hemosconsiderado utilizar la búsqueda MiniMax. Sin embargo la elección de unaheurística apropiada es lo que define mejor la solución del juego.El resto de este artículo está organizado de la siguiente manera. En la sección 2se muestran los trabajos previos. La sección 3 describe labúsqueda entreadversarios, la sección 4 describe el algoritmo MINIMAX. La forma de colocar losExperimentos y Resultados se encuentra en lasección 5. La Discusión de losExperimentos se muestra en la sección 6 y finalmente, lamanera de redactar lasconclusiones está en la sección 7.2. Trabajos previosEl trabajo que más se aproxima al presente es, “IA Algoritmo dejuegos”desarrollado por Pau Aguilar Fruto en la Universidad Peruana de CienciasAplicadas- Perú. Para la realización de este trabajo, se ha hecho uso de lastécnicas de búsqueda, específicamente la búsqueda con adversarios para laaplicación de los juegos.Otro trabajo relacionado al temas es “Aplicación de la búsqueda entre adversariosTres en raya” desarrollado por Renzo Berru Ancajima en la Universidad Nacionalde Trujillo- Perú. En este trabajo se describe los diferentes métodos de búsquedapara realizar juegos, donde resalta MINIMAX como el algoritmo de inicio y lasmejoras que aparecieron usando poda alfa. Este método realiza una exploraciónexhaustiva del grafo del juego hasta el final o hasta el límite de exploración, ya quees la que menos complejidad espacial tiene, lineal con la profundidad.
  3. 3. 3. Búsqueda entre adversariosLos entornos competitivos, en los cuales los objetivos del agente están enconflicto, dan ocasión a problemas de búsqueda entre adversarios, a menudoconocido como juegos.La manera natural de responder en juego es mediante un árbol de juegos que esuntipo especial de árbol semántico en los que los nodos representanconfiguraciones de tableros y las ramas indican una configuración en otramediante un solo movimiento.Por supuesto existe un giro especial en el hecho de que las decisiones sontomadas por dos adversarios que toman una decisión a la vez.Un juego se define formalmente como una clase de problemas de búsqueda conlos componentes siguientes. - Estado inicial: Que incluye la posición del tablero e identifica al jugador que mueve. - Una función sucesor: Que devuelve una lista de pares (movimiento, estado), indicando un movimiento legal y el estado que resulta. - Un test terminal: Que determina cuando se termina el juego. A los estados donde el juego se ha terminado se les llama estados terminales. - Una función de utilidad: o También llamada función objetivo o función de rentabilidad, que da un valor numérico a los estados terminales. o En los juegos, el resultado es un triunfo, perdida o empate, con valores +1, -1 o 0.4. AlgoritmoMiniMaxEl algoritmo MiniMax es el algoritmo más conocido (y utilizado) paraproblemas con exactamente 2 adversarios, movimientos alternos (“ahora tú ahorayo”), e información perfecta.Identificaremos a cada jugador como el jugador MAX y el jugador MIN. MAX seráel jugador que inicia el juego, el cual supondremos que somos nosotros, y nosmarcaremos como objetivo encontrar el conjunto de movimientos que
  4. 4. proporcionen la victoria a MAX (nosotros) independientemente de lo que hagael jugador MIN.Deberá existir para el juego a resolver una función de evaluación heurísticaque devuelva valores elevados para indicar buenas situaciones, y valoresnegativos para indicar situaciones favorables al oponente. Ahora ya podemos vercomo para cada movimiento conoceremos su valor numérico en función de su“grado de bondad”, y podremos ser capaces de identificar nuestro mejormovimiento.La figura 1 muestra parte del árbol generado para la búsqueda por la técnica deMinimax para el juego del tres en raya. Figura1. Muestra el árbol generado por el proceso Minimax.Para ejemplificar el algoritmo, consideremos el juego de tres en raya. En estejuego podemos usar la siguiente función de evaluación para un tablero t: E(t) = NA(t) − NC(t)
  5. 5. Dónde: - NA(t) es el número de filas, columnas o diagonales abiertas para max (donde aún puede ganar) - NC(t) es el número de filas, columnas o diagonales abiertas para min.Si t es un tablero ganado por max, E(t) = 1 y si es un tablero perdido, E(t) = −1(aquí en vez de 1 podríamos haber ocupado otro valor).La figura 2 muestra el algoritmo Minimax con un árbol de profundidad2. Figura 2: Primera etapa en la búsqueda del tres en raya
  6. 6. La figura 3 muestra otro árbol con profundidad 2, pero luego que min ya hajugadoen una de las posiciones del tablero. Figura 3: Segunda etapa en la búsqueda del tres en rayaFinalmente, la figura 4 muestra la última etapa de la búsqueda. Figura 4: Última etapa en la búsqueda de tres en raya
  7. 7. La Figura5: muestra el algoritmo recursivo de la búsquedaMinimaxFunciónMiniMax(estado) retorna movimiento mejor_mov: movimiento; max, max_actual: entero; max = -infinito;para cadamov en movimientos_posibles(estado) hacer max_actual = valorMin(aplicar(mov, estado); simax_actual>maxentonces max = max_actual; mejor_mov = mov; fsi fpara retorna mejor_mov; fFunciónFunciónvalorMax(estado) retorna entero valor_max:entero; siestado_terminal(estado) entonces retorna evaluación(estado); sinó valor_max := 9infinito; para cadamovenmovimientos_posibles(estado) hacer valor_max := max(valor_max, valorMin(aplicar(mov, estado)); fpara retornavalor_max; fsifFunciónFunciónvalorMin(estado) retorna entero valor_min:entero;siestado_terminal(estado) entonces retorna evaluación(estado);sinó valor_min := +infinito; para cadamovenmovimientos_posibles(estado) hacer valor_min := min(valor_min, valorMax(aplicar(mov, estado)); fpara retornavalor_min; fsifFunción Figura 5: Algoritmo recursivo de la búsquedaMinimax5. Experimentos y Resultados
  8. 8. Se ha utilizado el algoritmo MINIMAXen el experimento realizado sobreunprogramada de juego conocido como Tres en Raya. Los resultados obtenidosse muestran en la tabla 1. Nro Jugador 1 Jugador2 Estado Movidas 1 3 2 Gano Jugador1 2 4 5 Gano Jugador2 3 5 4 Gano Jugador1 4 4 5 Empate 5 5 4 Empate 6 2 3 Gano Jugador2 7 4 3 Gano Jugador1 8 3 4 Gano Jugador2 Tabla 1. Resultados obtenidos con el juego.En la figura6 se puede apreciar la función de evaluación de MiniMax:E(t) = NA(t) − NC(t) Figura6función de evaluación de MiniMax:
  9. 9. Como se puede apreciar en la tabla1, según las movidas establecidas por cadajugador se puede establecer quien gano o si hubo empate, las jugadas ganadorasson aquellas donde se establece las imágenes en forma vertical, horizontal odiagonal. Se puede notar que si las movidas del jugador actual con el anterior soniguales determinara que el primero ganara o empatara.Finalmente, algunas interfaces del aplicativo en Java se muestran en la figura 7. (a) (b) (c)
  10. 10. (d)Figura 7. (a) Formulario de inicio del juego. (b), (c) y (d) Resultados de los juegos.6. Discusión de los experimentosSi se quiere un ganador se tendrá que conseguir la misma imagen en formavertical, horizontal o diagonal de algunos de los jugadores. Cuando se observeque las jugadas son cerradas no será necesario terminar la partida porque habráempate.7. ConclusionesEn el presente trabajo se ha utilizado el algoritmo MINIMAX para la creación deljuego Tres en Raya, esto a partir de la necesidad de crear un juego y usar algúnalgoritmo de búsqueda.El algoritmo MINIMAX es sorprendentemente simple, pero su inconveniente es lagran cantidad de memoria y tiempo de computación que puede necesitar paraconseguir unos resultados óptimos. Hay mucha investigación para minimizar laexpansión de los árboles de juego. El método de podado más popular es elmétodo alpha-beta, permite minimizar el número de ramas para cada nodo ymantener la profundidad a un nivel razonable.
  11. 11. 8. Referencias[Koenig, 2004] Sven Koenig (2004) Incremental Heuristic Search in ArtificialIntelligence[Maxim, 2006] Maxim Likhachev (2006) Artificial Intelligence Magazine[Korf - 2000] Richard E. Korf (2000) Artificial Intelligence Search Algorithms[Aguilar, 2008] Pau Aguilar Fruto (2008) IA-Algoritmos de juegos[De la Fuente, 2009 ]Robertp J. de la Fuente Lopez (2009) Inteligencia Artificial –Introduccion y tareas de busqueda[Russel Norvig 2004] Russell, S., Norvig, P. Inteligencia Artificial, Un enfoquemodern 2aEdicion. Madrid (España)[Jouffe, 2011] Jouffe L. (2011). Introduction to Bayesian Networks Practical andTechnical Perspectives. http://www.bayesia.com/en/applications/health.php[George, 2003] George S. (2003). Inteligencia Artificial y Técnicas de Búsquedahttp://www.dccia.ua.es/dccia/inf/asignaturas/FIA/teor%EDa/tema2Juegos.pdf

×