Está en la página 1de 25

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
Espacio de estados para el juego
del 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.
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

También podría gustarte