Algoritmo Minimax I

Anuncio
INTELIGENCIA EN REDES DE COMUNICACIONES
JUEGOS CON ADVERSARIO
ALGORITMO MINIMAX
PODA ALFA­BETA
OTRAS MEJORAS
ANA BEATRIZ SOLANA SÁNCHEZ
JUEGOS BIPERSONALES
●
Este tipo de juegos los podemos definir como:
–
Un estado inicial (una posición del tablero e indicación de a quien le toca jugar)
–
Un conjunto de operadores que indican las jugadas que se pueden realizar
–
Una prueba terminal que indica el final del juego
–
Una función de utilidad que asigna un valor numérico al resultado del juego
Algoritmo Minimax I
●
●
●
En los juegos bipersonales, el algoritmo más utilizado se denomina Minimax
Minimax es un algortimo de búsqueda en profundidad, de profundidad limitada. La profundidad puede venir limitada por:
–
Gana un jugador
–
Se han explorado N capas (N establecido)
–
Se ha agotado el tiempo de exploración
–
Se llega a una situación estática en la que no hay grandes cambios de un nivel a otro
Algoritmo Minimax II
●
●
●
El jugador que comienza a jugar se denomina MAX y el contrincante se denomina MIN
El algoritmo va a maximizar la función para MAX y minimizarla para MIN
Consta de 5 pasos:
–
1.­ Generación de todo el árbol de juego, completamente hasta llegar a los estados terminales. (En nuestro caso hasta nuestro corte)
–
2.­ Aplicación de la función de utilidad a cada estado terminal y obtención de su valor respectivo.
–
3.­ Uso de la utilidad de los estados terminales para calcular la utilidad de los nodos de nivel superior en el árbol de búsqueda.
Algoritmo Minimax III
●
●
–
4.­ Continuación del respaldo a los valores de los nodos hojas, en dirección a la raíz, una capa a la vez.
–
5.­ Finalmente, los valores respaldados llegan a la parte superior del árbol; aquí, MAX selecciona la jugada que le permite obtener el valor más alto.
NOTA:
–
Cada capa correponde a una jugada de MAX o MIN respectivamente
–
La función de utilidad en nuestro caso es una función de evalución heurística puesto que cortamos la recursión
Ejemplo numérico
Poda alfa­beta
●
La poda consiste en evitar la exploración de una de las ramas del árbol de búsqueda y que produce la misma jugada que se obtendría con minimax pero eliminando aquellas ramas que no influirán en la decisión final
●
Para el algortimo Minimax éste es el mecanismo utilizado puesto que exiten dos jugadores maximixador y minimizador, exiten dos valores umbral:
–
Alfa: cota inferior del valor que puede asignarse en último término a un nodo maximizante
–
Beta: cota superior del valor que puede asinarse en último término a un nodo minimizante
Ejemplo numérico
Eficiencia poda alfa­beta
●
●
La eficiencia de la poda alfa­beta dependerá del orden en que se exploren los sucesores.
Es decir, se obtendrá mayor beneficio si exploramos primero aquellos caminos más óptimos, pero claro, no haríamos la búsqueda si supieramos de antemano el mejor camino.
Refinamientos adicionales
●
Poda de inutilidades:
–
●
Espera del reposo
–
●
Consiste en la finalización de la exploración en un subárbol que ofrece pocas posibilidades de mejora sobre otros caminos ya explorados.
Evita el efecto horizonte (cuando se toma una decisión errónea debido a que la recursión no es infinita), cortando la recursión cuando se llega a una solución estable
Refinamientos adicionales
●
Búsqueda secundaria
–
●
Consite en realizar una doble comprobación del movimiento elegido para comprobar que no hay trampa en movimientos posteriores a los explorados
Exiten algoritmos alternativos, para solventar problemas del algoritmo Minimax:
–
No considera tiempo
–
Confía en que el adversario elija el camino óptimo
●
Minimax dependiente de adversario ●
Profundidad iterativa
BIBLIOGRAFÍA
●
dmi.uib.es/~abasola/intart/2­juegos.html#2.3.
●
pdf.rincondekvago.com/juegos_4.html
●
club.telepolis.com/ohcop/clase9_1.ppt
●
www.uhu.es/nieves.pavon/pprogramacion/pr
acticas/febrero/juego/alfabeta.html
Descargar