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