Explication
Perft parcourt l'arbre des coups légaux depuis une position et compte chaque séquence qui atteint une profondeur exacte. À la profondeur 1, il compte les coups légaux disponibles immédiatement. À la profondeur 2, il inclut chaque réponse légale, et le principe se poursuit ainsi. Chaque séquence est comptée séparément, même si deux séquences différentes atteignent le même état de l'échiquier. Le résultat est un nombre reproductible pour cette position et cette profondeur.
Son objectif principal est de vérifier le générateur de coups d'un programme. Si le total diffère d'une référence fiable, une règle ou une mise à jour de la position est erronée. Une forme appelée divide indique un sous-total distinct pour chaque coup initial, ce qui aide le développeur à localiser la branche où commence l'écart.
Perft est particulièrement efficace pour révéler des erreurs subtiles concernant les échecs, la prise en passant, qui est une prise spéciale de pion, les promotions et le , mouvement spécial combiné du roi et d'une tour. Il peut aussi montrer qu'un programme restaure incorrectement le camp au trait, les droits de roque ou la case cible de la prise en passant après avoir annulé un coup.
Perft n'effectue aucune évaluation de position, aucune sélection du meilleur coup et aucun élagage de branche. Réussir ce test prouve la concordance avec des décomptes de coups légaux vérifiés, mais pas qu'un joue bien aux échecs. Bien que le nom vienne de performance test, le décompte correct est l'objectif central; la mesure de la vitesse est un test supplémentaire qui dépend de l'implémentation.
Confusions fréquentes
Perft et force de jeu
Perft valide les règles et la génération des coups. Il ne mesure ni la compréhension positionnelle, ni la qualité de l'évaluation, ni la force tactique.
Perft et hachage
Une implémentation peut utiliser le pour reconnaître les positions, mais une clé correcte ne remplace pas le décompte légal.
Voir le termeSources
- 1.Perft, Chess Programming Wiki
