Erklärung
Perft durchläuft von einer Stellung aus den Baum der legalen Züge und zählt jede Zugfolge, die eine exakt festgelegte Tiefe erreicht. Tiefe eins bedeutet, die aktuell verfügbaren legalen Züge zu zählen. Tiefe zwei schließt jede legale Antwort ein, und so setzt sich das Muster fort. Jede Zugfolge wird separat gezählt, auch wenn zwei verschiedene Folgen denselben Brettzustand erreichen. Das Ergebnis ist für diese Stellung und Tiefe reproduzierbar.
Der Hauptzweck besteht darin, den Zugerzeuger eines Programms zu überprüfen. Weicht die Gesamtsumme von einem vertrauenswürdigen Referenzwert ab, ist eine Regel oder eine Aktualisierung der Stellung fehlerhaft. Eine als divide bezeichnete Form gibt für jeden Ausgangszug eine eigene Teilsumme aus und hilft dem Entwickler, den Zweig zu finden, in dem die Abweichung beginnt.
Perft eignet sich besonders gut, um feine Fehler bei Schachgeboten, en passant, also einem besonderen Bauernschlag, Umwandlungen und der , dem besonderen gemeinsamen Zug von König und Turm, aufzudecken. Es kann auch zeigen, dass ein Programm nach dem Zurücknehmen eines Zuges die Seite am Zug, die Rochaderechte oder das en-passant-Zielfeld falsch wiederherstellt.
Perft führt keine Stellungsbewertung, Auswahl des besten Zuges oder Zweigpruning durch. Das Bestehen zeigt die Übereinstimmung mit geprüften Zählwerten legaler Züge, beweist aber nicht, dass eine stark spielt. Obwohl der Name von performance test stammt, ist das korrekte Zählen der zentrale Zweck. Die Zeitmessung ist ein zusätzlicher Benchmark, der von der Implementierung abhängt.
Häufige Verwechslungen
Perft und Spielstärke
Perft validiert Regeln und Zugerzeugung. Der Test misst weder Stellungsverständnis noch Bewertungsqualität oder taktische Stärke.
Perft und Hashing
Eine Implementierung kann zum Erkennen von Stellungen verwenden, doch ein korrekter Schlüssel ersetzt nicht das legale Zählen.
Begriff anzeigenQuellen
- 1.Perft, Chess Programming Wiki
