Tablas de transposición
Ha habido un poco de controversia durante los últimos tiempos en relación
con el tamaño adecuado de las tablas hash en los programas de juego de
la familia Fritz.
El problema arranca de la difusión de una fórmula,
desarrollada en los tiempos de Fritz 5, que permite determinar el
tamaño adecuado de las tablas de transposición. Luego se ha matizado en
diversas ocasiones, a lo largo de las pistas facilitadas para Fritz
6, Fritz
7 y Fritz
8.
Las tablas de transposición o tablas hash son un sistema de
almacenamiento temporal que usan los módulos de ajedrez (si así se lo
permitimos) para aumentar su rendimiento de cálculo, ya que en ellas guardan la
referencia de posiciones que van encontrando durante los análisis, de forma que
si una posición ya considerada vuelve a darse no tiene que recalcularla sino
que usa los datos obtenidos previamente, produciéndose un ahorro de tiempo que
se invierte en aumentar la profundidad de los análisis en curso.
Las tablas de
transposición no tienen efecto mientras el programa use el libro de aperturas
(que ya cuenta con un sistema propio para detectar transposiciones) ni tampoco
cuando se alcanza una posición incluida en las tablebases o tablas de
finales, también llamadas tablas de Nalimov. Por supuesto, la influencia
concreta de las tablas en el juego depende de las posiciones concretas que se
alcancen: en variantes lineales, con secuencias forzadas, la influencia de las
tablas es menor o incluso nula, mientras que en posiciones complejas, con muchas
posibles secuencias de movimientos, las tablas de transposición son más
importantes.
Pero la creación, mantenimiento y consulta de las tablas de transposición
también son operaciones que consumen su tiempo y debe tratarse de que ese
tiempo invertido sea menor que el que se hubiese gastado sin usarlas, para que
se produzca un ahorro real en la gestión del tiempo del procesador y que, de
esta forma, se pueda emplear en aumentar la "visión" del programa.
Por este motivo las tablas hash se crean y gestionan en lo que se llama
memoria RAM del ordenador, que es muy rápida y con la que se obtiene un
rendimiento muy alto en la gestión y consulta de los datos, y no, por ejemplo,
en una zona libre del disco duro, pues el acceso a los datos en ese medio es
muchísimo más lento
El problema del tamaño radica entonces en el comportamiento del sistema
operativo Windows. En él se pueden tener abiertos varios procesos a la vez y
sus desarrolladores optaron porque cuando se ocupase todo el espacio disponible
en la RAM, se emplease para el mismo fin el espacio libre disponible en el disco
duro. Por eso a veces, cuando abrimos muchos programas, podemos ver (por medio
del LED o lucecita que nos indica la actividad en el disco duro) y oír (por el
traqueteo que producen los discos duros) que nuestro ordenador parece dejar
todas las actividades y se dedica a escribir en el disco duro durante un buen
rato. Lo mismo ocurre si fijamos unas tablas de transposición muy grandes.
En los días en que tener 32 Mb o 64 Mb de RAM era el no va más, se
desarrolló una fórmula
aproximada con la que calcular el tamaño óptimo de las tablas de
transposición en función del ritmo de juego y de la velocidad del procesador.
Hoy en día, la velocidad de los procesadores, la cantidad de memoria RAM
disponible en los ordenadores y la velocidad de acceso a ésta sobrepasan con
mucho los márgenes de aplicación de la citada formula y la norma a aplicar es:
Establezca unas tablas de transposición tan grandes como pueda, sin que
su sistema empiece a usar el disco duro para sustituir a la RAM.
A la hora
de fijar el tamaño, pulsando F3, el programa le indica la cantidad de RAM
disponible:

En
la imagen, se han seleccionado 128 Mb, pero se podrían alcanzar los 384 Mb.
Claro está, siempre que no nos pongamos luego a arrancar otros programas, pues
nos condenaremos a usar el disco duro y a ralentizar todas las operaciones.
Conviene también dejar un margen para que el sistema pueda realizar
determinadas operaciones de rutina con holgura.
No obstante, hay que hacer
algunas matizaciones, pues no sólo han cambiado los equipos sino que también
ha variado la forma en la que los programas manejan las tablas de transposición:
1)
Puede que algunos módulos antiguos no estén programados para usar tablas de
transposición muy grandes y que no puedan manejar tablas mayores de 128 Mb o
256 Mb. Por eso, se empecinan una y otra vez en usar su valor máximo
programado, en vez del superior que tratamos de asignarles.
2) Algunos
módulos borran las tablas de transposición tras calcular cada jugada. Y eso es
una operación que consume un tiempo significativo en partidas con controles de
tiempo bala o relámpago. Por eso es importante, en esos casos, no establecer un
tamaño de las tablas muy grande, pues la diferencia entre llenar y borrar 128
Mb o 256 Mb es apreciable. En la actualidad, no obstante, todos los módulos de
primera fila mantienen las tablas de transposición entre jugadas, de forma que
no las tienen que borrar, con lo que no se logra ninguna ventaja apreciable
ajustando a la baja las tablas hash, digamos entre 256 Mb y 128 Mb, en las
partidas con controles de tiempo rápidos.
3) En la actualidad, dada
la gran cantidad de memoria RAM que se puede tener, también hay que tener
en cuenta que con tablas de transposición muy grandes, el tiempo que emplea en
módulo en consultar las mismas, se hace apreciable. Por supuesto, dependerá de
la velocidad del procesador y de la velocidad de la RAM, pero puede darse la
paradoja de que se tarde más en consultar la valoración de una posición en la
tabla que en calcularla, lo que implicaría una pérdida de rendimiento. Para
medir el rendimiento del módulo tenemos la Fritzmark, en el menú Herramientas.
Bueno, la interfaz del cada módulo la denomina con arreglo al mismo: Juniormark,
Tigermark, Shreddermark, Hiarcsmark...

Con
esa función como vara de medir, los usuarios pueden ir aumentando poco a poco
el tamaño de las tablas de transposición, realizando pruebas del rendimiento
cada vez, hasta comprobar cual es el valor a partir del cual el rendimiento
empieza a caer. Habrá alcanzado entonces el límite máximo para sus sistema.
Cada módulo tiene una forma distinta de gestionar las tablas hash, así que si
tiene varios módulos deberá hacer pruebas para conocer el valor máximo para
cada uno. Las interfaces para cada módulo se cambian por medio del menú
Herramientas > Opciones. En la ventana que se abre, vaya a la pestaña
Versión.

En
la zona Versión GUI, pulse sobre la flecha que apunta hacia la parte inferior
de la pantalla y en la lista que se despliega, elija cual es la versión GUI que
quiere usar (Fritz 8, Shredder 7, Tiger 15, Junior 8, Deep Junior 8, Hiarcs 9).
Luego haga clic en Aplicar y OK sucesivamente. Cuando cierre el programa y
vuelva a arrancarlo, entrará con la GUI seleccionada, personalizada para cada
programa.