domingo, 13 de noviembre de 2011

Refinamientos adicionales

Espera del reposo
Cuando la condición de corte de la recursión del algoritmo MINIMAX está basada sólo en la profundidad fija del árbol explorado, puede darse el llamado efecto horizonte. Esto ocurre cuando se evalúa como buena o mala una posición, sin saber que en la siguiente jugada la situación se revierte.
La espera del reposo ayuda a evitar el efecto horizonte. Una de las condiciones de corte de recursión en el algoritmo MINIMAX debería ser el alcanzar una situación estable. Si se evalúa un nodo de un árbol de juego y este valor cambia drásticamente al evaluar el nodo después de realizar la exploración de un nivel más del árbol, la búsqueda debería continuar hasta que esto dejara de ocurrir. Esto se denomina esperar el reposo y nos asegura que las medidas a corto plazo, por ejemplo un intercambio de piezas, no influyen indebidamente en la elección.


FIGURA 4.a                   FIGURA 4.b                 FIGURA 4.c
En la figura 4.a la evaluación del nodo B tiene el valor 6 explorando sólo un nivel del árbol. Si se explora un nivel más, la evaluación da un valor de -4, como se muestra en la figura 4.b. Esto denota un cambio muy drástico de evaluación del nodo B. Por esto, se decide explorar un nivel más el árbol (figura 4.c) resultando en una evaluación de 6.2, la cual no difiere mucho de la evaluación inicial. En este nivel podría determinarse abandonar la exploración debido a la situación de reposo alcanzada.

Búsqueda secundaria
Otra manera de mejorar el procedimiento MINIMAX es realizar una doble comprobación del movimiento elegido, para asegurarnos que no hay una trampa algunos movimientos más allá de los que exploró la búsqueda inicial.
Luego de haber elegido un movimiento en concreto con un procedimiento MINIMAX que explora n niveles, la técnica de búsqueda secundaria realiza una búsqueda adicional de d niveles en la única rama escogida para asegurar que la elección sea buena.
Extensiones singulares
Cuando una captura es inminente, a menudo sólo una jugada tiene sentido y por esto se denomina forzada. En situaciones de jugada forzada, el nodo hijo que implica la captura tiene en general un valor estático que sale del resto.
La heurística de extensión singular establece que la búsqueda debe continuar mientras que el valor estático de la jugada indique una probable captura. Si se considera que un nodo hoja es muy diferente a sus hermanos, el nodo se expande una capa más.


En la figura 5.a el nodo B tiene claramente un valor superior al resto de sus hermanos, indicando una probable captura de piezas. En el movimiento siguiente, nuevamente hay una captura de piezas pero esta vez por parte del oponente, según se muestra en la figura 5.b en donde el nodo E contiene un valor muy diferente al de sus hermanos. En la figura 5.c se muestra un nivel más del árbol, en el cual no existe una jugada forzada puesto que todos los movimientos tienen valores estáticos comprendidos en un intervalo estrecho. Por tanto, la heurística de extensión singular recomienda que no se efectúe más la búsqueda.
La computadora de propósito especial DEEP THOUGHT (Anantharaman, 1990) juega al ajedrez utiliza un esquema de búsqueda con extensiones singulares. Normalmente es capaz de buscar hacia abajo hasta alrededor de 10 niveles. Mediante la heurística de extensiones singulares la computadora va más allá, buscando combinaciones de mate en mitad del juego que incluyen hasta 37 movimientos. El evaluador estático considera conteo de piezas, colocación de éstas, estructura de peones, peones perdidos y ordenamiento de peones y torres en columnas
 
Uso de movimientos de libro
La solución ideal de un juego sería seleccionar un movimiento consultando la configuración actual en catálogo y extrayendo el movimiento correcto. Naturalmente en juegos complicados esto es imposible de realizar, pues la tabla sería muy grande y además nadie sabría construirla.
Sin embargo, este enfoque resulta razonable para algunas partes de ciertos juegos. Se puede usar movimientos de libro en aperturas y finales, combinando con el uso de búsqueda MINIMAX para la parte central de la partida, mejorando el rendimiento del programa. Por ejemplo, las secuencias de apertura y los finales del ajedrez están altamente estudiados y pueden ser catalogados.
Búsqueda sesgada
Una forma de podar un árbol de juegos es hacer que el factor de ramificación varíe a fin de dirigir más esfuerzo hacia las jugadas más prometedoras.
Se puede realizar una búsqueda sesgada clasificando cada nodo hijo, quizás mediante un evaluador estático rápido y luego utilizando la siguiente fórmula:
R(hijo) = R(padre) - r(hijo)
donde R es el número de ramas de un nodo y r es el lugar que ocupa un nodo entre sus hermanos ordenados según la evaluación estática rápida.

No hay comentarios:

Publicar un comentario