segunda-feira, 9 de fevereiro de 2009

Entendendo hashtable e tablebase

Para facilitar o entendimento, vamos utilizar a interface Fritz com a engine rybka como referência. A função do hashtable, visa proporcionar economia de tempo com o aumento da força da engine, visto que se utiliza um espaço da memória RAM para armazenar posições, de forma não ter que processá-las novamente. Por sua vez, tablebase consiste em posições em até 6 peças, de forma assegurar precisão nos movimentos de finais. Visto que a tabela de finais é extensa, chegando atingir 40 gigabytes aproximadamente, a engine passa a consultar sistematicamente os dados armazenados no HD - disco rígido. Esta consulta por ser sistemática, via de regra, acaba por desgastar o disco rígido, mas já existe no mercado o HD em eprom, portanto "good bye" aos discos mecânicos. Na realidade tablebase consiste em um banco de dados e se armazenado de forma correta, tem a capacidade de resolver qualquer final com até 6 peças no tabuleiro. http://en.wikipedia.org/wiki/Tablebase.
Voltando ao hashtable, para se ter uma idéia, nos torneios do Playchess, este recurso consistia-se em um verdadeiro segredo entre os participantes, já que máquinas processando com um único núcleo, por vezes ganhavam de dual em partidas de 3 minutos. Vários testes foram efetuados, chegando-se a conclusão que quando maior era o hash, menor era o número de lances analisados pela engine. A conclusão, é que o hash seria melhor aproveitado em partidas longas, tanto é que no Freestyle bychamp usou 1 gigabyte de hash, mas as partidas se desenrolaram em 90 minutos. Lembrar que bychamp foi assistido por Dirk Dagobert, estrategista e com grandes conhecimentos de xadrez agressivo. Assim, conclui-se que quanto menor o hash, mais rápido se processa os lances. Obviamente não podemos perder de vista que os computadores embora precisos, não deixam de ser estúpidos e não raro vislumbra-se lances com erros materiais relevantes. Nos dedicados, a visualização fica mais difícil, pois ao consultarmos o programa Mephisto Magellan veremos que vem equipado com uma memória de 512kB de hash, enquanto o Mephisto Senator, escrito pelo mesmo programador, nao possui esta característica. Ainda, o módulo Brute Force, escrito pelo mesmo programador, vem equipado com 128kB de hash. Como eu não possuo o magellan, não tenho conhecimento se esta função pode ser desativada. Finalizando, um exemplo prático é comparar a engine rybka com 1 mbyte de hash contra 250 mbyte de hash. Com 1 mbyte de hash, em 60 segundos, rybka consegue processar 225 mil kn/s, e com 250 mbytes de hash rybka processa 163 kn/s. Contudo, a melhor forma é testar cada engine e tirar as conclusões no sentido de qual seria o melhor setup, dado um certo tempo de jogo. (bychamp)




Nenhum comentário: