Вы находитесь на странице: 1из 5

APLICACIN DEL ALGORITMO PODA ALPHA-BETA PARA LA IMPLEMENTACION DEL JUEGO AJEDREZ

Jorge Edilberto Alvarado Valderrama, Lesly Rodrguez Pinillos


jorgealvarado@seccperu.org, leslyrp@hotmail.com

Universidad Nacional de Trujillo Facultad de Ciencias Fsicas y Matemticas Escuela Acadmico Profesional de Informtica
Resumen: El siguiente trabajo de investigacin, tiene como propsito mostrar la implementacin de juegos basados en computadoras, aplicando el campo de la Inteligencia Artificial, mediante la implementacin del algoritmo Poda Apha-Beta. Para mostrar la aplicacin de un juego de dos adversarios, hemos seleccionado el juego del Ajedrez, que tiene un alto grado de complejidad computacional, el cual describiremos las tcnicas usadas para implementarlo. Palabras Claves: Inteligencia Artificial, Teora de Juegos, MiniMax, Poda Alpha-Beta, Ajedrez. 1. INTRODUCCION Los juegos han sido estudiados a lo largo de la historia formulndose incluso modelos matemticos que permitiesen desarrollarlos. En un principio, estos juegos fueron estudiados por una rama de la ciencia denominada Investigacin Operativa (IO), la cual proporcionaba tcnicas que solo podran ser aplicables si exista un procedimiento finito [1]. Con el surgimiento de la Inteligencia Artificial se crean nuevos algoritmos de bsquedas que permiten desarrollar soluciones dentro de procedimientos no finitos. Uno de estos algoritmos es el algoritmo de Poda Alpha-Beta que es muy usado en la teora de Juegos y que permite encontrar soluciones dentro de un campo de bsquedas infinito. Sin embargo para poder entender mejor esta tcnica, es necesario y conveniente primero entender la tcnica de bsqueda Minimax, que es una tcnica que se centra en la resolucin de problemas de bsquedas, basadas en la alternacin de dos entes o agentes a los cuales se les denominan Min y Max[2]. la bsqueda de una solucin en un 30% comparada con la Bsqueda de MiniMax. Sin embargo la eleccin de una heurstica apropiada es lo que define mejor la solucin del juego. Para este trabajo consideramos tres heursticas las cuales explicaremos mas adelante. Para este trabajo, empezaremos definiendo algo de la teora de juegos; luego antes de entrar el desarrollo del algoritmo Poda Alpha Beta, analizaremos la tcnica del Minimax, para luego explicar las heursticas que hemos utilizado para obtener la utilidad, elemento necesario para definir una adecuada jugada. 2. La inteligencia Artificial, es una campo de que ha tomado gran inters en los ltimos tiempos debido a su capacidad de poder resolver soluciones imitando el razonamiento lgico de las personas y hasta el mecanismo de cmo ellas la resuelven. Un tema interesante a tratar a lo que concierne a la IA son los juegos. As por ejemplo, el juego del ajedrez es un juego de mesa para dos contrincantes y es uno de los juegos mas mencionados dentro de la teora de juegos de la Inteligencia Artificial, por lo que tiene bien definida su meta (el Mate) y sus acciones (conjunto de movimientos de cada una de las piezas que la conforman), las cuales, por cierto, hacen del juego algo complicado de programarlo, pero no imposible. Este juego fue estudiado por Claude Shanon y hasta el mismo Alan Turing, los cuales sugirieron algunas formas de representarlos en un ordenador. Existen, pues, varias tcnicas de bsqueda para el desarrollo de este juego. Dentro de las tcnicas de bsqueda que hemos estudiado, hemos considerado utilizar la bsqueda de Poda Alfa Beta, la cual es muy eficiente en TEORIA DE JUEGOS

3.

ESTRATEGIA MINIMAX Entrada: - Nodo N. Salida - Valor de utilidad de N Si N es nodo Hoja ValorUtilidad funcin de utilidad De lo contrario Para cada nodoHijo Hi de valorUtilidadi MiniMaxR(Hi) Fin para Si N es max valorUtilidad max(H1,H2,Hn) De lo contrario valorUtilidad min(H1,H2,Hn) Devolver (valorUtilidad) Algoritmo 1. Algoritmo recursivo de la tcnica Minimax. 4. PODA ALPHA BETA

La estrategia minimax es una estrategia de bsqueda exhaustiva mediante un rbol de bsqueda. Este algoritmo considera el caso de 2 participantes a los que se les denomina Max y Min[1]. El que inicia el juego es Max y existe una alternancia en la participacin del juego. Por lo tanto lo que tiene que hacer Max, es determinar la secuencia de jugadas que conduzca a un estado Terminal ganador o favorecedor. La figura 1 muestra parte del rbol generado para la bsqueda por la tcnica de Minimax para el juego del tres en raya [5].

hacer

Este algoritmo es el ms utilizado en las aplicaciones referidas a juegos, dada su excepcional utilidad en el aumento de la velocidad de la bsqueda sin producir prdida de la informacin. Es una extensin en particular del algoritmo de Bsqueda Minimax en juegos de dos contrincantes [2]. Fig1. Figura que muestra el rbol generado por el proceso de bsqueda minimax, por profundidad, en el juego de tres en raya. Sin embargo, esta bsqueda muchas veces tiene que evaluar ramas innecesarias que no le traern beneficio alguno para obtener el mejor resultado. Por lo tanto, es aqu donde se plantea la solucin mediante la poda de esas ramas que no beneficiaran en nada a la mejor jugada: La tcnica de Poda Alpha-Beta. El algoritmo 1 muestra la implementacin de la tcnica de Minimax en forma recursiva [3]. Cada vez que se evala un nodo u hoja, el algoritmo determina s los nuevos hijos generados pueden generar una mejor utilidad de la que ya posee el nodo estudiado y si afecta al nodo padre. De no ser as, eso significa que seguir analizando esa rama es desperdiciara recursos como tiempo y espacio, por lo cual no se sigue generando y simplemente se le poda, de all el nombre. El algoritmo 2, muestra como es el desarrollo para una bsqueda por medio de la Poda Alpha Beta. En el algoritmo 2, se detalla las entradas. Para ingresar al algoritmo, se necesita ingresar el nodo a ser evaluado, del que se obtendr su utilidad, as como la utilidad del padre para evaluar si es que la nueva utilidad afecta o no al nodo padre. De no ser as, se proceder a podar la rama [6]. Una vez podada la rama, la nueva utilidad ser la ltima en ser registrada o actualizada. Esto se da mediante la variable fNodo, que contiene la funcin de utilidad del nodo ingresado [7]. Fig 2. Figura que muestra el desarrollo general e la secuencia de la tcnica de minimax.

5. Entrada: - Nodo, fNodoP Salida: - fNodo Si nodo es MAX fNodo fNodo fin si Si nodo es hoja fNodo utilidadNodo(nodo) de lo contrario para cada ficha fi que se pueda mover para cada accion aj de fi nodoH nodoH crear nodo con ai PodaAB(nodoH,fNodo) -inf inf De lo contrario

JUEGO DEL AJEDREZ

El juego del ajedrez es un juego adecuado para tratarlo mediante tcnicas de IA debido a que tiene claramente definidos el objetivo que se quiere alcanzar (meta) y los medios para llegar (movimientos permitidos) [1]. En este juego, el programa en todo momento debe conocer la configuracin del tablero para la maquina poder tomar la decisin adecuada (jugada), que le permita ganar. Para ello necesita de gran capacidad de almacenamiento de informacin, utilizando estructuras que le permitan llegar a conclusiones coherentes. El juego se desarrolla sobre un tablero de 8 filas y 8 columnas, sobre las cuales se colocan fichas de 2 colores que simbolizan a los 2 oponentes, estos colores son generalmente: Blanco y Negro. Este juego adems posee un sin numero de fichas, de diferente tipo y movimiento. As pues tenemos: Pen Torre Alfil Caballo Reina Rey La Tabla 1 ilustra los movimientos permitidos para las diferentes fichas en un juego de ajedrez. La primera fila indica el tipo de movimiento, ya sea horizontal, vertical, diagonal o en forma de L. La segunda fila indica la direccin hacia donde puede moverse: Arriba (Arr) o Abajo (Aba). El resto de filas indican las fichas del ajedrez: Peon (P), Alfil (A), Torre (T), Caballo (C), Dama (D) y Rey (R). El nmero indicado en las casillas indican la cantidad de casillas que se pueden mover, as: 1 significa que solo puede moverse una sola posicin, mientras que n significa que puede moverse mas de 1 posicin dentro del lmite del tablero del ajedrez. Horiz. Arr Aba P T A C D R n n 1 n n 1 Vert. Arr Aba 1 n n n 1 n 1 Diag. Arr Aba 1 n n 1 n 3 n 1

si nodo es MAX si fHijo > fNodo fNodo fHijo si fNodo >=fNodoP eliminar fNodo retornar null; fin si fin si fin si si nodo es MIN si fHijo < fNodo fNodo fHijo si fNodo =<fNodoP eliminar fNodo retornar null; fin si fin si fin si fin para fin para retornar nodo; fin si Algoritmo 2. Algoritmo Poda AlphaBeta.

Tabla 1. Movimientos Permitidos en el Ajedrez Cada jugador al inicio de cada jugada posee 16 elementos, mostrados en la figura 3. Sin embargo, la configuracin de cada movimiento que se pueda generar y las posibles acciones que estas puedan sugerir, hacen de este juego algo interesante, motivo por el cual se ha tomado nfasis en estudiar este juego empezando el uso de

bsquedas sistemticas para disear programas por ordenador. Las complicaciones que presenta disear una bsqueda adecuada para este juego son bastantes, dentro de las cuales la mas principal es la complejidad espacial en un ordenador, motivo por el cual muchas veces se utiliza una determinada profundidad hasta donde se puede llegar a evaluar.

indicara que se va analizar 2 turnos para ambos jugadores y de all se extraer el mejor camino. 7. APLICACIN

Hemos aplicado una heurstica en la que se considera un peso para cada pieza segn el color: Piezas Blancas - Pen : 1 - Caballo : 3 - Alfil : 3 - Torre : 5 - Reina : 10 - Rey : 50 Piezas Negras - Pen : -1 - Caballo : -3 - Alfil : -3 - Torre : -5 - Reina : -10 - Rey : -50

Las Heurstica para la funcin de Utilidad que logramos analizar son las siguientes: Fig3. Tablero de un juego de Ajedrez, que muestra la disposicin de las fichas de los jugadores, antes de empezar el juego. 6. ESTRUCTURA DE DATOS UTILIZADA. 1 2 3 4 5 Capturar Posicin del Rey Blanco: xRB, yRB Capturar Posicin del Rey Negro: xRN, yRN Sumar N de piezas Blancas: sumaB Sumar N de piezas Negras: sumaN Calcular que tan protegido esta el rey blanco de las piezas negras: BRP 6 Calcular que tan Protegido esta el rey Negro de las piezas blancas: NRP 7 Calcular que tan cerca estn las piezas negras del rey Blanco: BAR 8 Calcular que tan cerca estn las piezas blancas del rey Negro: NAR Finalmente se obtendr la Utilidad con la siguiente ecuacin: Utilidad=(sumaB-sumaN)+(BRP-NRP)+(BAR-NAR) (sumaB+sumaN) (BRP+NRP) (BAR+NAR) La primera divisin, mide que tanta es la diferencia de fichas entre los dos oponentes. Si uno de ellos tiene una cantidad de pesos mayor en fichas, probablemente pueda tener ms ventajas sobre el otro, por lo tanto pueda ganar. La segunda divisin, es una probabilidad que hemos considerado y mide que tan protegido esta un rey. Si un rey tiene mas cerca a sus piezas, entonces la probabilidad que sea comido es menor, por lo tanto menos oportunidad de ser atacado directamente. La tercera divisin mide la probabilidad de que un rey sea atacado por el oponente. Si un rey tiene mas fichas

La estructura del nodo que se ha utilizado, tiene la siguiente estructura: Id idPadr e Tipo (Max o Min) Estado (config. del tablero) Funcion de utilidad Mejor accio n Pro f.

El primer campo indica el ident del nodo que se esta generando. El siguiente dato, corresponde al padre que lo gener. El tipo hace referencia a que nodo se esta analizando: si es Max o es Min. En caso de ser Max, el algoritmo tratar de obtener la jugada de mayor utilidad, pues genera beneficio para Max; sin embargo cuando es Min, la maquina elegir la menor utilidad posible, perjudicando al oponente. El estado, es la configuracin del tablero, es decir, corresponde al ambiente que ser analizado por la maquina. La funcin de utilidad corresponde a la utilidad calculada por la heurstica explicada posteriormente [2]. La mejor accin es una variable que me va recolectando el camino que se genera con la mejor jugada posible, para esto debe basarse en la utilidad. Y finalmente la profundidad, indica, que tan profundo se va a analizar las jugadas, es decir, si se escoge una profundidad de 4, esto

enemigas cerca, entonces la probabilidad de ser atacado aumenta, y por lo tanto pueda ejecutarse el mate. Por lo tanto, la ecuacin presentada, mide que tanta ventaja tiene un oponente sobre el otro. 8. RESULTADOS

toma de una decisin, mejorando la bsqueda sin llegar a una profundidad muy alta. 10. REFERENCIA BIBLIOGRFICA [1] Francisco Astudillo Pacheco, Daniel Borrajo Millan, Carmen Tarta Alcalde y Irma Trueba Valle, Informtica Aplicada: Juegos Inteligentes en Microordenadores, Ediciones Siglo Cultural, Espaa, 1986. [2] Stuart Russell and Peter Norvig, Inteligencia Artificial: Un Enfoque Moderno, Edicin Prentice Hall, ISBN 0-13-10385-2, 1996. [3] Francisco Jose Ribadas Pena, Busqueda en Espacio de Estados, [en lnea], Formato PDF, 2004, disponible en: http://ccia.ei.uvigo.es/docencia/IA/Tema2.pdf [4] Juegos y MiniMax: Poda Alpha Beta, [en linea], Formato PDF, 2006, Disponible en: http://arantxa.ii.uam.es/~ia/p4/p4.pdf [5] Jos Ignacio Nuez Varela, Introduccin a la Inteligencia Artificial, [en lnea], Universidad Autnoma de Juan Luis Potos, Formato PPT, 2007, Disponible en: www.itnuevolaredo.edu.mx [6] Inteligencia Artificial: Algoritmo Poda Alpha- Beta, [en lnea], Formato PPT, Disponible en: ciep.ing.uaslp.mx/jnunez/materias/ia/slides/6juegos.ppt. [7] Definicin de una Poda Alpha-Beta, [en lnea], Disponible en: http://www.lania.mx/~asanchez/IA/ minimax3.html

Para la aplicacin, hemos considerado varias profundidades, que determinaban el nivel de juego: Profundidad 3 Profundidad 4 Profundidad 5 Nivel Principiante Nivel Intermedio Nivel Avanzado.

Estas profundidades mostraron tener ptimos resultados, demorando en el ltimo, a lo mas 30 segundos de ejecucin, tiempo razonable debido a la gran cantidad de nodos que se tenan que evaluar.

Fig4. Aplicacin en Ejecucin mostrando algunos resultados en el juego. 9. CONCLUSIONES

El algoritmo de Poda Alfa-Beta, es un algoritmo eficaz en cuanto a la bsqueda de una solucin, si bien no comparamos en este trabajo la diferencia con el otro algoritmo estudiado, MiniMax, hemos probado que la poda por cierto camino que no aportara nada a la decisin aumenta en un 30% la eficiencia de la bsqueda. Las limitaciones que encontramos para este trabajo es trabajar con respecto a la profundidad. Esto se debe a que trabajamos con una profundidad no tan alta, como 5 en el trabajo presentado, teniendo una respuesta de menos de 1 minuto en la bsqueda de la solucin. En el trabajo presentado, hemos considerado dos heursticas que hemos credo conveniente considerar: una basada en el ataque a un rey y otra basada en la defensa de un rey. Estas dos tcnicas nos han permitido tener un mejor resultado en la

Вам также может понравиться