Arboles min max

25
Arboles MinMax Integrantes: Amanda Solano Katherine Rojas Samantha Mendoza Yasiell Vallejos

Transcript of Arboles min max

Arboles MinMax

Integrantes:

Amanda Solano

Katherine Rojas

Samantha Mendoza

Yasiell Vallejos

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.

Por ejemplo:

Nivel MAX

Nivel MIN

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

Existe la posibilidad de empate

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.

Ejemplo de Baja Progresiva:

Nivel

Nivel

Nivel

Petición de jugada

Para mas información y ejemplos visitar los siguientes enlaces

Código y explicación de cuatro en línea

Algoritmo de Min Max