O Stockfish e a base da mesa trabalham juntos ou independentemente?

9

Eu uso o Arena GUI junto com o bacalhau em jogos de motor. Quero baixar uma base de mesa de 6 peças, mas isso é apenas muito trabalho (e talvez desnecessário). Se eu baixar o tablebase (syzygy), o stockfish funciona com ele ou apenas espera que o tabuleiro tenha 6 peças e, em seguida, o tablebase faz seus movimentos?

Aqui está o que quero dizer com mais detalhes

Bacalhau a trabalhar com a mesa

Presumo que tenho a seguinte posição:

(Nota: atualmente não estou falando das melhores jogadas, apenas um exemplo)

Stockfish 8 - Wais Kamal, Jogo de xadrez por computador, 1-0
1. Qxd4 Rxd4 1-0

O Stockfish consulta a base da tabela sobre o que acontece após o Qxd4 Rxd4 (sem continuar a avaliar o restante da linha). Se esta linha está ganhando, ela serve.

Bacalhau a trabalhar sozinho

O Stockfish continua a jogar até que seis peças sejam deixadas no tabuleiro, depois a mesa faz os movimentos.

Qual delas realmente acontece?

Wais Kamal
fonte
A posição inicial é conquistada para as brancas, mas capturar a rainha negra é um erro grave. Não faço ideia por preto se renderia que ...
Deduplicator
Atualmente não estou falando das melhores jogadas, apenas um exemplo.
Wais Kamal

Respostas:

15

jogue o jogo até seis peças

O Stockfish não faz isso, não é para isso que serve a mesa. Por breves instantes, a base de tabela aumenta a busca de mecanismos bem antes da posição de seis homens alcançada no tabuleiro.

Vamos fazer um exercício, adicione o tabuleiro 5 peças. Agora você tem 10 peças no tabuleiro, e não é algo que você pode encontrar em qualquer mesa. No entanto, durante a pesquisa do mecanismo, sempre que o Stockfish negocia até 6 partes , ele pode usar instantaneamente as informações da tabela. As informações da base de tabela dão ao Stockfish se a posição é uma vitória / derrota / empate sem nunca cair para algo como 5 peças. Portanto, a pesquisa é mais rápida e eficiente.

EDITAR:

O código relevante é https://github.com/official-stockfish/Stockfish/blob/master/src/search.cpp :

// Step 4a. Tablebase probe
if (!rootNode && TB::Cardinality)
{
    int piecesCount = pos.count<ALL_PIECES>();

    if (    piecesCount <= TB::Cardinality
        && (piecesCount <  TB::Cardinality || depth >= TB::ProbeDepth)
        &&  pos.rule50_count() == 0
        && !pos.can_castle(ANY_CASTLING))
    {

TB::Cardinalityé por padrão 6. O Stockfish verifica quantas peças, se não for mais que 6, consulta as informações da base de tabela. Caso contrário, pesquisa regular.

SmallChess
fonte
Então o bacalhau consulta a base da mesa antes de alcançar uma posição com 6 peças no tabuleiro?
Wais Kamal
@WaisKamal Atualizei com o código relevante. SF faz a verificação.
SmallChess