6.2. Оценивание позиций
Теперь речь пойдет о том, чтобы каждой позиции
поставить в соответствие числовую величину
которая принимала бы тем большие по абсолютной величине отрицательные
значения, чем большим является преимущество противника. Конечно, не существует никакой теории, с помощью которой можно было бы получить для шахмат точный вид функции
но можно получить лишь знак оценки для некоторых известных дебютов. В отдельных случаях результаты могут быть еще хуже, например при позиционном преимуществе можно получить даже отрицательную оценку. Именно в этом состоит основная причина несовершенной игры программ такого типа. И если все-таки используется такой подход, то нужно при каждом плохом ходе программы попытаться внести изменения в вид функции
которые привели бы к устранению ошибки.
Наиболее важной частью оценки всегда является материальная сторона: первый член функции
пропорционален алгебраической сумме стоимостей фигур с той и другой стороны и называется балансом
Стоимости шахматных фигур подсчитываются обычным образом: пешка стоит 1, конь и слон — 3, ладья — 5 и ферзь — 10. Полный вид функции
имеет полиномиальную форму, где к уже рассмотренному материальному балансу добавляются члены, оценивающие другие аспекты игровой позиции:
Если одной из сторон удалось выиграть слона
но при этом проиграть пешку
то первый член функции будет равен 2а, где величина коэффициента а, как и
зависит от “коварства” программиста. Следующие члены идут в порядке убывания их важности. Величина
учитывает относительную безопасность обоих, королей и является тем большей, чем лучше защита короля после рокировки. Коэффициент
должен изменяться в течение партии, а по мере исчезновения с доски главных фигур может стать нулевым. При этом короли начинают поддерживать свои пешки и даже помогать в атаке, защищая свои собственные фигуры.
Член М характеризует подвижность фигур. Он зависит от числа клеток, на которые могут сделать ход фигуры. Для каждой фигуры вводится весовой коэффициент, зависящий от ее игровых возможностей. Член С зависит от степени контроля за центром доски, т. е. за полями
Связанный с ним коэффициент
имеет большие значения только в начале и середине партии. Член Р служит для учета структуры пешечного строя. Он тем больше по величине, чем лучше пешки защищены и внедрены в лагерь противника, а также чем больше у противника сдвоенных, изолированных и незащищенных пешек.
Наконец, последний член А учитывает атакующие возможности позиции и зависит от наличия защищенных фигур за четвертой горизонталью, ладей на открытых вертикалях, сдвоенных ладей, атакованных полей вблизи короля противника, а также от возможности разменять опасные фигуры противника, объявить
королю противника или блокировать его фигуры. В некоторых программах оценочная функция учитывает и другие аспекты и содержит большее число членов.
Вычисление весовых коэффициентов
зависит от терпения программиста, и ничто не мешает изменять их величины во время партии в зависимости от полного числа сделанных ходов и/или от числа фигур, оставшихся на доске. Очевидно, что оценочная функция такого вида допускает жертвы фигур. При этом член В становится отрицательным (у противника появляется преимущество по крайней мере на одну фигуру), но взвешенная сумма всех остальных членов компенсирует с ощутимым перевесом эту материальную потерю.
В гл. 9 показано, как коэффициенты
могут изменяться в программе в зависимости от обстоятельств.
Если бы можно было построить функцию
абсолютно точно оценивающую позицию, то в программе достаточно было бы найти все допустимые ходы, оценить позиции, к которым они приводят, и сделать ход, приводящий к наилучшей из них. В действительности как нельзя построить дерево, достаточное для достижения позиции, в которой можно было бы отдать явное предпочтение одному из противников, так и нельзя построить совершенную оценочную функцию. Необходим компромисс между средней глубиной анализа и качеством оценочной функции, а стремление улучшить и то и другое приведет к возрастанию времени вычислений.
В следующем разделе рассмотрена еще одна проблема: как связать конечную позицию, которая достигается при максимальной глубине анализа, с эффективным поиском хода на первом уровне. Для ее решения разработан метод, получивший название метода минимакса, который послужил отправной точкой для машинных игровых программ.