La función de evaluación es una función (una rutina en el caso del C64) que, dado un tablero, determina mediante un número cómo de favorable es la situación para un bando y para el otro.
Para ese número se puede usar el rango y la codificación que se quiera, pero, típicamente, si las blancas se codifican en la matriz con números positivos y las negras con números negativos, entonces una evaluación positiva será favorable a las blancas y una evaluación negativa será favorable a las negras. Y cuanto más positiva o más negativa más favorable será para blancas o negras.
En realidad, los valores absolutos que se asignen a los tableros son lo de menos. Lo importante es que esos valores permitan comparar tableros y tomar decisiones correctas. Es decir, si un tablero recibe el valor 7 y otro el valor 13, el segundo tablero debería ser para las blancas notablemente mejor que el primero. Pero podríamos llegar a la misma conclusión con los valores 14 y 26.
Una buena función de evaluación debe contemplar muchos criterios. Como poco debería tener en cuenta:
- Aspectos materiales: qué piezas hay sobre el tablero y de qué tipos son.
- Aspectos posicionales: qué posiciones ocupan esas piezas.
Los aspectos materiales sólo son importantes en los juegos en que se puede "comer" o capturar, porque en los otros siempre hay las mismas piezas.
En el fondo, la función de evaluación es el complemento necesario de un árbol de juego limitado. Si el árbol de juego pudiera ser completo, entonces llegaría con que la función de evaluación se limitara a detectar que, para el tablero X, ganan las blancas o las negras. Pero como el árbol de juego no puede ser completo, es necesario tener una función que mida cómo de bueno o malo es un tablero, cómo de prometedor es para cada bando llegar hasta ahí.
En mi opinión, una buena función de evaluación es la pieza clave que distingue un buen programa de otro que no lo es, porque todo lo demás es más o menos rutinario. Todos los programas de ajedrez o damas tendrán que ser capaces de generar jugadas conforme a las reglas del juego, o no serán correctos. Y todos los juegos aplicarán el procedimiento minimax, porque no es más que pura lógica. Es asumir que cada bando tomará la jugada que más le beneficia.
No hay comentarios:
Publicar un comentario