Лекция: Программы игры в шахматы.
Принцип минимакса, наряду с альфа-бета-алгоритмом, является основой многих удачных программ ведения игр; наиболее известными из них являются шахматные программы. Общая схема такой программы состоит в следующем: выполнить альфа-бета-поиск в текущей позиции игры, вплоть до некоторой фиксированной предельной глубины (которая определяется временными ограничениями, налагаемыми правилами соревнований), используя характерную для данной игры функцию оценки для определения значений заключительных позиций поиска; после этого выполнить на игровой доске наилучший ход (в соответствии с альфа-бета-алгоритмом), принять ответ противника и снова приступить к выполнению того же цикла.
Поэтому двумя основными компонентами подобной программы являются альфабета-алгоритм и эвристическая функция оценки. Для создания качественной программы ведения такой сложной игры, как шахматы, необходимо ввести ряд усовершенствований в эту основную схему. В данном разделе рассматриваются некоторые стандартные методы.
Многое зависит от функции оценки. Если бы у нас была идеальная функция оценки, то достаточно было бы рассмотреть только непосредственных преемников текущей позиции, фактически устранив при этом поиск. Но в таких играх, как шахматы, любая функция оценки с практически приемлемой вычислительной сложностью обязательно должна быть просто эвристической функцией оценки. Эта оценка основана на «статических» свойствах позиции (в частности, числа фигур на доске) и поэтому в некоторых позициях является более надежной, чем в других. Например, рассмотрим подобную функцию оценки для шахмат, основанную на учете количества фигур (как принято называть их в шахматах — материала) и представим себе позицию, в которой белые имеют лишнего коня. Безусловно, что эта функция оценит позицию белых как более благоприятную. Разумеется, такая оценка является вполне приемлемой, если игра развивается спокойно и черные не имеют в своем распоряжении внезапных угроз. С другой стороны, если на следующем ходе черные могут взять ферзя белых, то такая оценка может привести к роковой ошибке, поскольку она не позволяет оценить позицию динамически. Безусловно, что статической оценке можно скорее доверять в спокойной игре, а не в резко изменяющихся позициях острой борьбы, когда каждая из сторон непосредственно угрожает взять фигуры противника. Очевидно, что статическая оценка может использоваться только в спокойных позициях. Поэтому стандартный прием состоит в том, что поиск в опасных позициях должен продлеваться за пределы глубины до тех пор, пока не будет достигнута спокойная позиция. В частности, для применения этого расширения необходимо запрограммировать последовательности взятия фигур с обеих сторон (обмена фигурами) в шахматах.
Еще одним усовершенствованием является эвристическое отсечение. Оно предназначено для достижения большего предела глубины благодаря исключению из рассмотрения некоторых менее перспективных продолжений. Этот метод позволяет отсекать некоторые ветви дерева игры в дополнение к тем, которые были отсечены с помощью самого альфа-бета-алгоритма. Поэтому он связан с тем риском, что некоторые удачные продолжения не будут обнаружены, а значение минимакса вычислено неправильно.
Еще одним важным методом является последовательное углубление. Программа повторно выполняет альфа-бета-поиск, вначале осуществляя поиск на некоторую небольшую глубину, а затем увеличивая предел глубины после каждой итерации. Этот процесс останавливается после достижения определенного предела времени. Затем выполняется ход, который оказался наилучшим в соответствии с результатами наиболее глубокого поиска. Такой метод имеет следующие преимущества.
9. Позволяет учитывать контроль времени; после достижения предела времени всегда имеется в запасе некоторый наилучший ход, найденный до сих пор.
10. Минимаксные значения предыдущей итерации могут использоваться для предварительного упорядочения позиций в следующей итерации, что позволяет в альфа-бета-алгоритме в первую очередь выполнять поиск среди самых сильных ходов.
При последовательном углублении возникают определенные дополнительные издержки (связанные с повторным поиском в верхних частях дерева игры), но они является довольно незначительными по сравнению с общим положительным результатом.
Известным недостатком программ, реализованных по этой общей схеме, является эффект горизонта. Предположим, что рассматривается шахматная позиция, в которой игрок, за которого выступает программа, неизбежно теряет коня. Но потерю коня можно отдалить, пожертвовав менее ценную фигуру, скажем, пешку. Такая промежуточная жертва может отодвинуть фактическую потерю коня за пределы поиска(за «горизонт», куда не может заглянуть программа). В таком случае, не видя, что конь в конечном итоге все равно будет потерян, программа выбирает этот вариант, а не такое продолжение, в котором потеря коня произойдет быстрее, но без ненужных жертв. Поэтому программа в конечном итоге потеряет и пешку (без необходимости), и коня. Эффект горизонта может быть устранен путем продления поиска вплоть до спокойной позиции.
Но программы, основанные на использовании принципа минимакса, имеют более фундаментальное ограничение, связанное с тем, что в них применяются лишь ограниченная форма знаний, характерных для данной проблемной области. Это становится особенно заметным при сравнении лучших шахматных программ с опытными шахматистами. Мощные программы часто выполняют поиск среди миллионов (и даже большего числа) позиций, прежде чем выбрать очередной ход. А психологические исследования показывают, что шахматисты обычно выполняют поиск лишь среди нескольких десятков позиций, самое большее среди нескольких сотен. Несмотря на такую «низкую производительность» поиска, шахматист все еще может выиграть у программы. Преимущество шахматных мастеров заключается в их знаниях, которые намного превосходят все, что содержатся в программах. Соревнования между компьютерами и сильными шахматистами показывают, что невероятное превосходство вычислительной мощности не всегда может полностью компенсировать нехватку знаний.
Знания, которые могут быть введены в программы, основанные на принципе минимакса, принимают следующие основные формы.
10. Функция оценки.
11. Эвристические методы отсечения поддеревьев дерева.
12. Эвристические методы поиска спокойных позиций.
Функция оценки сводит многочисленные аспекты игровой ситуации к единственному числу, и такое сокращение может иметь отрицательный эффект. В отличие от этого, понимание игровой позиции хорошим игроком является многомерным. Рассмотрим пример из шахмат: некоторая функция оценки может оценить позицию как
равную, просто указав, что ее значение равно 0. А оценка той же позиции шахматистом может быть гораздо более содержательной и указывать на то, как дальше должна развиваться игра. Например, у черных есть лишняя пешка, но белые имеют хорошую атакующую инициативу, которая компенсирует материал, поэтому шансы равны.
В шахматах программы, основанные на принципе минимакса, обычно играют лучше в жестких тактических битвах, когда решающим становится точный расчет форсированных вариантов. Их слабости с большей вероятностью проявляются в спокойных позициях, когда игра этих программ характеризуется отсутствием долговременных планов, играющих решающую роль в медленных, стратегических играх. Изза отсутствия плана создается впечатление, что на протяжении всей игры программа случайным образом переходит от одной шахматной идеи к другой.