Найти в Дзене
ChessMaster ♘ Шахматы

Как шахматный движок оценивает ходы? Отвечаем просто и понятно

Наверняка, каждый игрок хотя бы раз задумывался над тем, как шахматный движок оценивает ходы. Мы поискали информацию на Хабре и других форумах программистов, чтобы вникнуть в корень этого вопроса. Постараемся объяснить просто и без лишних терминов, которые понятны лишь мастерам кода, да и то не всем.

В основе подсчета оценки шахматного хода лежит математическая функция. О функциях все слышали, надеемся) Как известно, в любой функции есть переменные, а в нашем случае каждая переменная отвечает за разную область оценки шахматного хода. Например, существуют переменные, отвечающие за разность материала (качество и т.п.). Есть переменные, отвечающие за позицию фигуры. Например, сдвоенная пешка, изолированная или проходная. Для этого аспекта существуют отдельные таблицы позиций фигур.

Другие переменные отвечают за возможные ходы фигуры и определяют их мобильность. Чем больше возможных ходов у всех фигур, тем выше оценка мобильности, которая влияет и на общую оценку позиции. После каждого хода значение переменных пересчитывается и функция выдает обновленную оценку.

Пример оценки статической позиции

Компьютер оценивает любую позицию в пешках. +1.0 говорит о том, что у белых преимущество в одну пешку, -0.5 означает, что у черных преимущество в половину пешки.

-2

Мат оценивается как 300 пешек. Позиция, в которой уже известно минимальное количество ходов до мата x — в (300-0.01x) пешек. Например, +299.85 значит, что белые ставят мат в 15 ходов. При этом программа шахматного движка оперирует оценками в сантипешках. Одна сантипешка – это 1/100 пешки.

Все оценивается в материале и даже позиционное преимущество. Почему так? Потому что любое позиционное преимущество должно превратиться в материальное или мат.

Надеемся, что ответили на этот интересный вопрос, но если вы хотите включить глубину анализа побольше и познать матчасть вопроса, советуем ознакомиться с этой статьей на Хабре.