Объяснение
Perft обходит дерево допустимых ходов из позиции и считает каждую последовательность, достигающую точной глубины. Глубина один означает подсчёт доступных сейчас допустимых ходов. Глубина два включает каждый допустимый ответ, и далее применяется тот же принцип. Каждая последовательность учитывается отдельно, даже если две разные последовательности приводят к одному состоянию доски. Результатом является воспроизводимое число для данной позиции и глубины.
Главная цель состоит в проверке генератора ходов программы. Если итог отличается от надёжного эталона, неверно реализовано какое-либо правило или обновление позиции. Вариант, называемый divide, показывает отдельный промежуточный итог для каждого начального хода и помогает разработчику найти ветвь, где возникает расхождение.
Perft особенно хорошо выявляет тонкие ошибки, связанные с шахами, взятием на проходе, специальным взятием пешкой, превращениями и , специальным совместным ходом короля и ладьи. Он также может обнаружить, что после отмены хода программа неправильно восстанавливает сторону хода, права на рокировку или целевое поле взятия на проходе.
Perft не выполняет оценку позиций, выбор лучшего хода или отсечение ветвей. Успешное прохождение показывает совпадение с проверенными подсчётами допустимых ходов, но не доказывает, что сильно играет в шахматы. Хотя название происходит от английского выражения performance test, то есть «тест производительности», правильный подсчёт является главной целью, а измерение скорости представляет отдельный тест, зависящий от реализации.
Распространённые заблуждения
Perft и сила игры
Perft проверяет правила и генерацию ходов. Он не измеряет позиционное понимание, качество оценки или тактическую силу.
Perft и хеширование
Реализация может использовать для распознавания позиций, но правильный ключ не заменяет подсчёт допустимых ходов.
Открыть терминИсточники
- 1.Perft, Chess Programming Wiki
