You are on page 1of 5

Nombre: Mero Bailn Orley Fabin. Curso: Quinto B.

El Algoritmo Minimax
Minimax es un mtodo de decisin para minimizar la prdida mxima esperada en juegos con adversario y con informacin perfecta. Minimax es un algoritmo recursivo. El funcionamiento de Minimax puede resumirse como elegir el mejor movimiento para ti mismo suponiendo que tu contrincante escoger el peor para ti. El Algoritmo Minimax se usa para juegos de dos jugadores, o juegos con adversario, en donde un humano se enfrenta con un ordenador, o dos ordenadores se enfrentan entre ellos. Consiste en hacer la mejor jugada posible sabiendo que el rival har la jugada que ms te perjudique John von Neumann es el creador del teorema minimax, quien dio la siguiente nocin de lo que era un juego: "Un juego es una situacin conflictiva en la que uno debe tomar una decision sabiendo que los dems tambin toman decisiones, y que el resultado del conflicto se determina, de algn modo, a partir de todas las decisiones realizadas". Tambin afirm que: "Siempre existe una forma racional de actuar en juegos de dos participantes, si los intereses que los gobiernan son completamente opuestos." La demostracin a esa afirmacin se llama Teora Minimax y surge en 1926. Este teorema establece que en los juegos bipersonales de suma nula, donde cada jugador conoce de antemano la estrategia de su oponente y sus consecuencias, existe una estrategia que permite a ambos jugadores minimizar la prdida mxima esperada. En particular, cuando se examina cada posible estrategia, un jugador debe considerar todas las respuestas posibles del jugador adversario y la prdida mxima que puede acarrear. El jugador juega, entonces, con la estrategia que resulta en la minimizacin de su mxima prdida. Tal estrategia es llamada ptima para ambos jugadores slo en caso de que sus minimaxes sean iguales (en valor absoluto) y contrarios (en signo). Si el valor comn es cero el juego se convierte en un sinsentido. Pasos del algoritmo Minimax: 1. Generacin del rbol de juego. Se generarn todos los nodos hasta llegar a un estado terminal. 2. Clculo de los valores de la funcin de utilidad para cada nodo terminal. 3. Calcular el valor de los nodos superiores a partir del valor de los inferiores. Alternativamente se elegirn los valores mnimos y mximos representando los movimientos del jugador y del oponente, de ah el nombre de Minimax. 4. Elegir la jugada valorando los valores que han llegado al nivel superior. El algoritmo explorar los nodos del rbol asignndoles un valor numrico mediante una funcin de evaluacin, empezando por los nodos terminales y subiendo hacia la raz. La funcin de utilidad definir lo buena que es la posicin para un jugador cuando la alcanza. En el caso del ajedrez los posibles valores son (+1,0,-1) que se corresponden con ganar, empatar y perder respectivamente. En el caso del backgammon los posibles valores tendrn un rango de [+192,-192], correspondindose con el valor de las fichas. Para cada juego pueden ser diferentes.

Nombre: Mero Bailn Orley Fabin. Curso: Quinto B. Si Minimax se enfrenta con el dilema del prisionero escoger siempre la opcin con la cual maximiza su resultado suponiendo que el contrincante intenta minimizarlo y hacernos perder. Ejemplo 1: Puede verse el funcionamiento de Minimax en un rbol generado para un juego imaginario. Los posibles valores de la funcin de utilidad tienen un rango de [1-9]. En los movimientos del contrincante suponemos que escoger los movimientos que minimicen nuestra utilidad, en nuestros movimientos suponemos que escogeremos los movimientos que maximizan nuestra utilidad. El primer paso ser calcular los nodos terminales, en verde. Posteriormente calcularemos el cuarto nivel, movimiento min, minimizando lo elegido (5, 2 y 1). Despus podremos calcular el tercer nivel, movimiento max, maximizando la utilidad (5, 9). El segundo nivel es un movimiento min (5, 3 y 1). Finalmente llegamos al primer nivel, el movimiento actual, elegiremos el nodo que maximice nuestra utilidad (5). Ejemplo 2: Descripcin, Minimax dice: 1.- Calcula todas las posibles jugadas. Contamos con que los ordenadores hacen muy bien una cosa: calcular. Es por ello que antes los llambamos computadores. De todos modos, como la cantidad de posibilidades puede ser muy alta dependiendo del juego, este paso se puede limitar por tiempo (calcular todas las posibilidades que te d tiempo en 10 minutos).

2.- Dar valores a cada jugada final. Digamos que empezamos por el tejado. Una vez que sabemos todas las posibles jugadas, tenemos que decidir cmo de buena es cada una. Para ello se le dan puntos a cada una de las posibilidades finales. Las jugadas que lleven a una victoria tendrn puntos positivos, y los que lleven a una derrota tendrn puntos negativos. 3.- A partir de las jugadas finales, dar valor a las jugadas anteriores, hasta el inicio. Suponemos que antes de llegar a una jugada final, el rival habr hecho un movimiento que sea el peor para nosotros, y el mejor para l. Con esta informacin, tratamos de predecir el juego. Vamos dando valores a cada jugada, y al final obtenemos varias rutas. Algunas tendrn ms puntos que otras. Estos puntos dependern del tipo de juego. 4.- Elegir el siguiente movimiento. Para elegir la mejor jugada, cogemos la que lleve por el camino que nos asegura la victoria. Es decir, la jugada que est en el camino que ms puntos tiene. En la prctica el mtodo Minimax es impracticable excepto en supuestos sencillos. Realizar la bsqueda completa requerira cantidades excesivas de tiempo y memoria. Claude Shannon en su texto sobre ajedrez de 1910 (Programming a Computer for Playing Chess) propuso limitar la profundidad de la bsqueda en el rbol de posibilidades y determinar su valor mediante una

Nombre: Mero Bailn Orley Fabin. Curso: Quinto B. funcin heurstica. Para optimizar Minimax puede limitarse la bsqueda por nivel de profundidad o por tiempo de ejecucin. Otra posible tcnica es el uso de la poda alfa-beta. Esta optimizacin se basa en la suposicin que el jugador contrario no nos permitir jugar nuestras mejores jugadas. El problema de la bsqueda Minimax es que el nmero de estados a explorar es exponencial al nmero de movimientos. Partiendo de este hecho, la tcnica de poda alfa-beta trata de eliminar partes grandes del rbol, aplicndolo a un rbol Minimax estndar, de forma que se devuelva el mismo movimiento que devolvera este, gracias a que la poda de dichas ramas no influye en la decisin final. 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. La poda alfa beta es una tcnica de bsqueda que reduce el nmero de nodos evaluados en un rbol de juego por el algoritmo Minimax. Se trata de una tcnica muy utilizada en programas de juegos entre adversarios como el ajedrez, el tres en raya o el Go. Entre los pioneros en el uso de esta tcnica encontramos a Arthur Samuel, D.J Edwards y T.P. Hart, Alan Kotok, Alexander Brudno, Donald Knuth y Ronald W. Moore. Descripcin del algoritmo La bsqueda minimax es primero en profundidad, por ello en cualquier momento slo se deben considerar los nodos a lo largo de un camino en el rbol. La poda alfa-beta toma dicho nombre de la utilizacin de dos parmetros que describen los lmites sobre los valores hacia atrs que aparecen a lo largo de cada camino: es el valor de la mejor opcin hasta el momento a lo largo del camino para MAX, esto implicar por lo tanto la eleccin del valor ms alto. es el valor de la mejor opcin hasta el momento a lo largo del camino para MIN, esto implicar por lo tanto la eleccin del valor ms bajo. Esta bsqueda alfa-beta va actualizando el valor de los parmetros segn se recorre el rbol. El mtodo realizar la poda de las ramas restantes cuando el valor actual que se est examinando sea peor que el valor actual de o para MAX o MIN, respectivamente. Ejemplo 1: La figura muestra un ejemplo de la poda alfa-beta. Cada nivel representa la jugada de los jugadores MAX y MIN, que tendrn que definir un valor o respectivamente. A continuacin se presenta un ejemplo de aplicacin del algoritmo para el rbol de la figura. En ella los nodos podados al aplicar el algoritmo se presentan sombreados en gris.

Poda alfa-beta

Nombre: Mero Bailn Orley Fabin. Curso: Quinto B. Comenzamos con la bsqueda de primero en profundidad. El padre de los nodos hoja ms a la izquierda, etiquetados con 5 y 6 respectivamente, deber escoger un valor al tratarse de un nivel MIN, esto implica que deber escoger el valor mnimo entre dichos nodos, es decir 5. Siguiendo el desarrollo, se expandirn el resto de sucesores del padre. En este caso se expande el camino que conduce a los nodos hoja 7 y, buscando un valor menor, el nodo etiquetado con 4. En este momento el valor momentneo de en ese nivel es 4 (el mnimo entre 7 y 4). Esto implica que en este momento en el nivel superior, el padre del nodo que etiquetamos anteriormente con igual a 5, y de este igual a 4 momentneo, debe decidir el mejor valor, el ms alto al encontrarse en un nivel MAX), si siguiramos expandiendo hijos del nodo MIN padre de 7 y 4, slo podramos conseguir valores menores a 4, lo que seguira implicando una eleccin de la jugada izquierda en el nivel MAX, por lo tanto, podemos podar el resto de hijos. El resto del desarrollo del rbol se seguira utilizando los criterios mencionados con anterioridad. Ejemplo 2: 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. 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. Algoritmo 2. Algoritmo Poda AlphaBeta Entrada: - Nodo, fNodoP Salida: - fNodo ---------------------------------------------------------------------------------------Si nodo es MAX fNodo <- -inf De lo contrario fNodo <- inf 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 <- crear nodo con ai nodoH <- PodaAb(nodoH,fNodo) si nodo es MAX si fHijo> fNodo fNodo<- fHijo si fNodo>=fNodoP eliminar fNodo retorna null; fin si fin si

Nombre: Mero Bailn Orley Fabin. Curso: Quinto B. 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 retorna nodo; fin si Direccin: http://www.csie.ntu.edu.tw/~ai2007s/examples/alpha.html En esta aplicacin se ha utilizado el algoritmo Poda alfa-beta. Caractersticas: 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. Reduce el nmero de nodos evaluados en el rbol. Va actualizando el valor de los parmetros segn se recorre el rbol. El mtodo realiza la poda de las ramas restantes cuando el valor actual que se est examinando sea peor que el valor actual de MAX o MIN. Bibliografa http://jsbsan.blogspot.com/2011/01/aplicacion-algoritmo-minimax-juego-3-en.html http://delendaestcarthago.com/lareinaroja/?tag=algoritmo-minimax http://es.wikipedia.org/wiki/Poda_alfa-beta http://es.wikipedia.org/wiki/Minimax http://www.luisespino.com/pub/desarrollo_algoritmo_minimax_alfa_beta_othello_common_lispluis_espino.pdf http://jsbsan.blogspot.com/2011/01/inteligencia-artificial-algoritmos.html

You might also like