Arboles min max
-
Upload
amanda-solano-astorga -
Category
Education
-
view
1.222 -
download
6
Transcript of Arboles min max
Teorema MinMax
John von Neumann es el creador del teorema MinMax y surge en 1926.
Establece que en los juegos bipersonales de suma cero, donde cada jugador conoce de antemano la estrategia de su oponente y sus consecuencias, existe una estrategia que permite a ambos jugadores minimizar la pérdida máxima esperada.
En particular, cuando se examina cada posible estrategia, un jugador debe considerar todas las respuestas posibles del jugador adversario y la pérdida máxima que puede acarrear. El jugador juega, entonces, con la estrategia que resulta en la minimización de su máxima pérdida.
MinMax
Minmax es un método de decisión para minimizar la pérdida máxima esperada en juegos con adversario y con información perfecta. Minimax es un algoritmo recursivo.
El algoritmo MinMax es el algoritmo más conocido y utilizado para juegos de 2 adversarios, movimientos alternos (“ahora tu, ahora yo”). No se puede utilizar en juegos donde hay “azar”, sino perfectamente definido como las tres en raya y el ajedrez.
Se utilizará una estrategia de profundidad limitada para explorar el conjunto de jugadas. Como es imposible hacer una exploración exhaustiva de todas las jugadas, se hace una búsqueda limitada en profundidad, esto quiere decir que en lugar de estudiar todas las posibles situaciones hasta el fin de la partida, se buscaran por ejemplo todas las situaciones de aquí 3 turnos (un modo de poda).
Características de los MinMax El Minimax aporta una herramienta de proceso recursiva muy útil
Información completa (cada jugador conoce el estado del otro)
Elección del mejor movimiento para cada jugador, suponiendo que el contrincante escogerá el peor
El espacio de estados se representa mediante árboles alternados, donde:
Nodo: Representa una situación del juego
Sucesores de un nodo: Situaciones del juego a las que se accede por movimientos legales aplicando sus reglas
Nivel: Contiene todas las situaciones posibles para uno de los jugadores
Durante el procedimiento recursivo y el corte de la recursión del algoritmo, presenta una serie de condiciones:
Gana algún jugador
Se han explorado N capas, siendo N el límite establecido
Se ha agotado el tiempo de exploración
Se ha llegado a una situación estática donde no hay grandes
Cambios de un nivel a otro.
Se pueden aplicar modificaciones al algoritmo para hacerlo más eficiente
En el juego de las tres en raya:
Gana el +1, pierde el -1 y empate 0
La profundidad máxima es de 9, como el número de jugadas posible
No hay restricciones sobre la validez de un movimiento, simplemente que no se haya hecho antes, por lo que el coste del cálculo es bajo (no hay que aplicar reglas complejas)
Almacenar las soluciones intermedias no es excesivamente complejo
Generar los diferentes tableros con las soluciones intermedias a explorar no es costoso pero podría ser un problema en otros juegos y limitar la profundidad por memoria
La máquina nunca pierde, el juego está completado
Las partidas entre jugadores máquina siempre quedan en tablas
Ventajas del algoritmo MinMax
Capacidad de aprender de acuerdo a la información que se consigue en el momento en que genera el árbol del juego, es decir aprende con experiencia.
Algoritmo casi infalible o un gran oponente a vencer.
Aprende del oponente y al tiempo le da ventaja.
Desventajas del algoritmo MinMax
Algoritmo de complejidad elevada a la hora de implementar.
Es de aprendizaje lento, pues por cada jugada realizada y el conjunto de las que tiene almacenadas lo obliga a implementar algoritmos de comparación, búsqueda, inserción, etc.
Solo vale para enfrentarse a un oponente a la vez.
Representación de los juegos
Posición inicial.
Conjunto de operadores o reglas del juego (definen movimientos legales).
Estado terminal.
Función de utilidad. Por ejemplo: gana, pierde o empata.
Funcionamiento de MinMax
El funcionamiento de Minimax puede resumirse como elegir el mejor movimiento para ti mismo suponiendo que tu contrincante escogerá el peor para ti.
Deberá existir una función de evaluación heurística que devuelva valores elevados para indicar buenas situaciones, y valores negativos para indicar situaciones favorables al oponente.
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 nos marcaremos como objetivo encontrar el conjunto de movimientos que proporcionen la victoria a MAX (nosotros) independientemente de lo que haga el jugador MIN.
Pasos del Algoritmo MinMax
1. Generación del árbol de juego: Se generarán todos los nodos hasta llegar a un estado terminal o determinando una profundidad concreta (poda o corte). Se considera el nodo raíz como la situación actual del juego.
2. Cálculo de los valores de la función de utilidad para cada nodo terminal: Para cada resultado final, cómo de beneficioso me resulta si estamos en MAX o cuanto me perjudicará si estamos en MIN.
3. Calcular el valor de los nodos superiores a partir del valor de los inferiores: Alternativamente se elegirán los valores mínimos y máximos 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 asignándoles un valor numérico mediante una función de utilidad, empezando por los nodos terminales y subiendo hacia la raíz.
Colocar 0 ó 1 en los nodos terminales dependiendo si gana MIN o MAX.
La función de utilidad definirá lo buena que es la posición para un jugador cuando la alcanza.
Se requiere de una estrategia que garantice llegar a estados terminales ganadores independientemente de lo que haga el oponente.
Un valor positivo indica la ventaja de un jugador y uno negativo la ventaja del otro.
El jugador que espera valores positivos se conoce como maximizador. Y el jugador que espera valores negativos se conoce como minimizador.
El maximizador busca movimientos que lo conduzcan al mayor número positivo. Mientras que el minimizador busca movimientos que lo conduzcan al menor número negativo.
El maximizador:
Puede esperar llegar a un valor de 8.
Sabe que el minimizador puede escoger un movimiento que lo lleve a un valor de 1.
Desde el punto de vista de el maximizador, el minimizador puede escoger 2 ó 1.
Los resultados de un nivel determinan la acción y el resultado del nivel inmediato superior.
Aplicación: El Juego del Gato
Dos jugadores MIN y MAX
Los jugadores colocan fichas en un tablero de 3 X 3
MAX usa las fichas X
MIN usa las fichas O
Reglas:
Inicialmente el tablero está vacío
MAX empieza y se alternan los movimientos
MAX gana si obtiene una línea de 3 X’s
MIN gana si obtiene una línea de 3 O’s
O O X
O X O
O X X
Espacio de estados para el juegodel gato
Procedimiento Se desarrolla una búsqueda por niveles, generando los nodos del cada nivel
Se aplica una función de evaluación a cada nodo
La función de evaluación considera los siguientes factores:
Número de casillas restantes
Posición de casillas vacías
La función de evaluación devolverá los siguientes valores:
Positivos altos: Si la situación de uno de los jugadores es ventajosa
Negativos altos: Si la situación del otro jugador es ventajosa
Cero: Si ninguno de los jugadores tiene ventaja
Función de evaluación para el juego del gato
Se define la función de evaluación:
f(s)=NMAX(s)-NMIN(s)
donde:
S: Situación o distribución del tablero
f(s): Función de evaluación del tablero (nodo del espacio de estados)
NMAX(s): No. de filas, columnas o diagonales abiertas para MAX (donde aún puede ganar)
NMIN(s): No. de filas, columnas o diagonales abiertas para MIN (donde aún puede ganar)
Mejoras Del Algoritmo Minimax
Poda Alfa-beta: Para juegos con un factor de ramificación elevado, esta profundidad no podrá ser muy grande, ya que el cálculo necesario para cada decisión será prohibitivo. Su tiempo de exploración será muy grande. Produce la misma jugada que se obtendría con MiniMax, pero elimina todas las ramas que posiblemente no influirán en la decisión final.
Alfa: valor de la mejor opción encontrada hasta entonces en un punto de elección a través de la ruta de MAX
Beta: el valor de la mejor (valor más bajo) opción encontrada hasta entonces en un punto de opción a lo largo de la ruta MIN
Poda de inutilidades: Es una evolución de la Poda Alfa-beta, pero en lugar de podar una rama si sabes que no tendrás resultados mejores, podarás si sabes que no tendrás resultados suficientemente mejores .
Algoritmo NegaMax: Trata de una versión mas compacta del MiniMax. En vez de utilizar dos rutinas(una para Max y otra para MIN), lo que hace es utilizar la puntuación negada utilizando la relación matemática.
Continuación Heurística: En vez de llegar a los estados terminales, suspender la búsqueda antes, y aplicar a esas hojas y produce una Estimación de la utilidad esperada.
Búsqueda Sesgada: Clasifica cada nodo hijo según los resultados que prometa un movimiento, se buscarán más o menos siguientes situaciones más allá de éste.
Bajada Progresiva: Consiste en ir recorriendo todos los nodos por niveles hasta que nos llegue la petición de jugada(fin del tiempo), y entonces devolveremos la solución encontrada en el último nivel procesado por completo.
Para mas información y ejemplos visitar los siguientes enlaces
Código y explicación de cuatro en línea
Algoritmo de Min Max