El procedimiento minimax

Programación retro del Commodore 64

  • Programación retro del Commodore 64
  • “Programación Retro del Commodore 64” es un blog sobre el hardware, el sistema operativo, y la programación del Commodore 64. Y más específicamente sobre programación en ensamblador. Pretende ser un blog con información de calidad, y referencia en español de la programación retro de esta maravillosa máquina.
    • Mi blog
« Publicado el: 20/04/2020 »

Ya tenemos una función de evaluación que permite asignar un valor a cada tablero. Ahora podemos aplicar esa función de forma aislada a cada tablero o, mejor todavía, relacionando unos tableros con otros.

Me explico. Supongamos que le toca mover al ordenador (negras) y, partiendo del tablero actual, generamos un árbol de juego de profundidad dos:

Minimax1

Supongamos, también, que el tablero 1 tiene muy buena valoración para las negras (-100), mejor que el tablero 2 (-50). ¿Sería correcto que el ordenador optara por el tablero 1?

Pues depende, en general no. Dependerá de los tableros que siguen. Si los tableros 1.1 y 1.2, o al menos uno de ellos, son mejores para las blancas (peores para las negras) que los tableros 2.1 y 2.2, entonces el ordenador no estaría decidiendo correctamente. Debería optar por el tablero 2.

Y este razonamiento hay que aplicarlo en cascada hasta las hojas del árbol de juego. Más allá de ese punto no se puede llevar, porque el árbol de juego tiene una profundidad limitada.

Y esto es, precisamente, el procedimiento minimax. Es pura lógica. Es asumir que, igual que tú quieres la mejor jugada para ti, tu contrincante querrá la mejor jugada para sí (salvo que esté jugando al despiste).

Por tanto, dado que a las blancas les benefician las valoraciones positivas y a las negras les benefician las valoraciones negativas, las primeras intentarán maximizar el valor en su turno, y las segundas intentarán minimizarlo en el suyo. De ahí el nombre del procedimiento: minimax, de mínimo y máximo.

En el fondo esto se traduce en que la función de evaluación sólo hay que aplicarla sobre las hojas del árbol, que son los destinos a los que podemos llegar, y, a partir de ahí, hay que hacer subir los valores hasta la raíz en función del turno. Si el turno es de las blancas se tomará el máximo valor de los hijos; si el turno es de las negras se tomará el mínimo valor de los hijos.

En nuestro ejemplo:

Minimax2

Este proceso no sólo nos da una valoración de los tableros poniéndolos en relación entre sí, incluida la raíz, sino que además nos dice por qué jugada o tablero debe optar el ordenador, en nuestro ejemplo por el tablero 2.