Опубликован: 08.04.2009 | Уровень: для всех | Доступ: платный
Лекция 11:

Анализ игр

11.5. Ретроспективный анализ

Существенно ли описанное в прошлом разделе улучшение алгоритма (переход от полного перебора к \alpha-\beta -процедуре)? С одной стороны, да: в нашем примере переход от 4^n к 3^n дает выигрыш в (4/3)^n раз, а (4/3)^n экспоненциально растет с ростом n. С другой стороны, экспонента остается экспонентой, даже если ее показатель уменьшается с 4 до 3, поэтому надежды полностью проанализировать даже не очень сложную и долгую игру таким способом почти нет.

Поэтому на практике обычно выбирают некоторую оценку позиции - легко вычислимую функцию, которая по мнению практиков как-то отражает преимущество того или иного игрока (скажем, материальный перевес в шахматах). Затем вместо настоящей игры рассматривают ограниченную игру, в которой делается сравнительно небольшое число k ходов, а затем результатом игры считается оценка полученной позиции, и в этой игре выполняют перебор (применяя \alpha-\beta -оптимизацию). Конечно, это ничего не гарантирует в настоящей игре, но что поделаешь.

Бывают, однако, и ситуации, когда удается определить цену данной позиции точно. Это удается сделать для шахматных эндшпилей с небольшим числом фигур - например, можно рассчитать, за какое минимальное число ходов можно поставить мат королем, слоном и конем против одинокого короля в заданных начальных условиях. Заметим, что при этом число ходов может измеряться десятками, а каждый ход имеет десятки вариантов, поэтому о полном переборе (или даже о несколько сокращенном) не может идти и речи.

11.5.1. Придумать другой подход, использующий ограниченность общего числа возможных позиций (скажем, для четырех упомянутых фигур на шахматной доске это 64^4=2^{24}=16 "мегапозиций"; с учетом очередности хода будет 32 мегапозиции; массив такого размера помещается в память современных компьютеров без труда).

Решение. Заведем массив, отведя ячейку для каждой позиции. Просмотрим его один раз и отметим все матовые позиции (записав туда число 0 в знак того, что позиция выигрышная и до выигрыша осталось 0 ходов). Затем просмотрим массив еще раз и пометим как проигрышные все позиции, из которых можно пойти лишь в матовые (напишем там -1 в знак того, что можно протянуть лишь еще 1 ход). Затем отметим все позиции, из которых есть ход в позиции с числом -1, написав там 2. Затем - позиции, из которых все ходы ведут в позиции 0 или 2, написав там -3, и т.п. Так будем делать до тех пор, пока будут появляться новые пометки. Как только это кончится, для каждой позиции будет известно, можно ли в ней выиграть и сколько ходов для этого нужно.

Фактически эта процедура повторяет доказательство теоремы Цермело (но дополнительно мы получаем информацию о том, сколько ходов до выигрыша или проигрыша при наилучшей игре).

11.5.2. Могут ли при этом остаться неотмеченные позиции и чему они соответствуют?

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

А.Л. Брудно заметил, что есть ситуация, в которой такой анализ требует совсем небольших ресурсов и может быть реализован на очень небольшой памяти, хотя для человека соответствующая задача не проста: пусть белые имеют короля на поле c3, которого им запрещено двигать, и ферзя (на каком-то другом поле) и хотят поставить мат одинокому черному королю. Ограничение (неподвижность короля), затрудняющее жизнь человеку-шахматисту, облегчает анализ (уменьшая количество позиций почти что в 64 раза за счет того, что не надо рассматривать разные положения короля!)

Использование таблицы описанного типа можно считать применением метода динамического программирования (мы не вычисляем цену игры для одной и той же позиции снова и снова, обходя дерево, а заполняем таблицу цен систематически).

Татьяна Новикова
Татьяна Новикова
Россия, Пошатово
Artem Bardakov
Artem Bardakov
Россия