Explicação
Perft percorre a árvore de lances legais a partir de uma posição e conta cada sequência que alcança uma profundidade exata. Profundidade um significa contar os lances legais disponíveis agora. Profundidade dois inclui todas as respostas legais do adversário, e o padrão continua a partir daí. Cada sequência é contada separadamente, mesmo quando duas sequências diferentes chegam ao mesmo estado do tabuleiro. O resultado é um número reproduzível para aquela posição e profundidade.
Seu principal objetivo é verificar o gerador de lances de um programa. Se o total diferir de uma referência confiável, alguma regra ou atualização da posição está incorreta. Uma modalidade chamada divide informa um subtotal separado para cada lance inicial, ajudando o desenvolvedor a localizar o ramo em que a divergência começa.
Perft é especialmente eficaz para revelar erros sutis envolvendo xeques, en passant, uma captura especial de peão, promoções e , o movimento especial conjunto do rei e da torre. Também pode revelar que um programa restaura incorretamente o lado a jogar, os direitos de roque ou a casa-alvo de en passant depois de desfazer um lance.
Perft não realiza avaliação de posições, escolha do melhor lance nem poda de ramos. Passar no teste demonstra concordância com contagens verificadas de lances legais, mas não demonstra que um jogue xadrez com força. Embora o nome venha de performance test, a contagem correta é o objetivo central; medir o tempo é um teste adicional de desempenho que depende da implementação.
Confusões frequentes
Perft e força de jogo
Perft valida regras e geração de lances. Não mede compreensão posicional, qualidade da avaliação nem força tática.
Perft e hashing
Uma implementação pode usar para reconhecer posições, mas uma chave correta não substitui a contagem legal.
Ver termoFontes
- 1.Perft, Chess Programming Wiki
