"Информатика (в 2-х частях)", Горячев А.В., Герасимова В.Г., Макарина Л.А., Островский С.Л., Паволоцкий А.В., Семёнов А.А., Юдина А.Г., Чернышёва Т.Л.
Стратегия в игре — это правило, которое подсказывает игроку, какой ход выбрать в каждой возможной ситуации. Чтобы найти выигрышную стратегию, нужно описать позиции и разрешённые ходы, а затем проверить варианты развития игры. Удобно представить их в виде дерева: от конечных положений рассуждать назад и выяснить, где игрок может гарантировать победу независимо от ответов соперника.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Игровая позиция — состояние игры в конкретный момент, определяемое правилами и текущими значениями игровых объектов. Например, в игре с камнями позицию задаёт количество камней в куче. Это понятие помогает точно описать, где находится игра, и сравнивать разные варианты.
Стратегия — правило выбора хода, указывающее игроку, как действовать в каждой возможной ситуации. Это не один заранее выбранный ход, потому что после ответа соперника положение может измениться. Стратегия нужна, чтобы игрок знал, как продолжать игру при разных событиях.
Выигрышная стратегия — стратегия, которая позволяет игроку добиться победы независимо от ходов соперника. Игрок не просто надеется на ошибку другого, а выбирает действия так, чтобы сохранять возможность победить. Такое определение помогает отличить гарантированный план от удачного, но случайного развития партии.
Дерево игры — схема возможных ходов игроков и возникающих после них позиций. Вершина показывает игровую позицию, а ветвь — ход, который переводит игру в другую позицию. Дерево нужно, чтобы наглядно перечислить варианты и не забыть возможные ответы соперника.
Сначала игру описывают правилами: указывают начальную позицию, допустимые ходы, порядок действий игроков и условие окончания. Это необходимо, потому что без точных правил нельзя понять, какие варианты действительно возможны. Например, в задаче о камнях следует сказать, сколько камней лежит в куче и сколько разрешено убрать за ход.
Каждый допустимый ход из одной позиции приводит к новой позиции, поэтому его изображают отдельной ветвью дерева игры. Вершины дерева соответствуют состояниям, а ветви связывают состояние с результатом одного хода. Такое представление помогает увидеть не только собственные действия, но и все ответы соперника, которые могут последовать за ними.
Размечать дерево удобнее от конца к началу, поскольку исход конечной позиции уже известен по условию игры. Если игроку предстоит ход, а сделать его нельзя или он уже проиграл по правилу, такую позицию отмечают как проигрышную. Затем рассматривают позиции, ведущие к ней, и постепенно определяют исход всё более ранних состояний.
Позиция выигрышна для игрока, если среди допустимых действий есть хотя бы одно, после которого соперник окажется в проигрышной позиции. Игрок может выбрать именно этот ход, поэтому ему не требуется, чтобы удачными были все варианты. Напротив, позиция проигрышна, если каждый возможный ход отдаёт сопернику выигрышную позицию; значит, избежать проигрыша при правильной игре нельзя.
Когда позиции в дереве размечены, можно определить, у кого есть выигрышная стратегия. Для первого игрока проверяют начальную позицию: выигрышная она или проигрышная для него. Если она выигрышная, выбирают ветвь к проигрышной позиции соперника; дальше стратегия состоит в том, чтобы каждый раз сохранять это преимущество при любом ответе противника.
| Тип позиции | Что можно сделать за один ход | Исход при правильной игре |
|---|---|---|
| Конечная позиция, в которой игра проиграна игроком, которому предстоит ход | Продолжить игру нельзя или по условию она уже проиграна | Проигрышная для игрока, которому предстоит ход |
| Позиция, из которой есть ход в проигрышную для соперника позицию | Выбрать ход, после которого соперник окажется в проигрышном положении | Выигрышная для игрока, которому предстоит ход |
| Позиция, из которой все ходы ведут в выигрышные для соперника позиции | Какой бы ход ни был выбран, соперник получает выигрышное положение | Проигрышная для игрока, которому предстоит ход |
Пользуйся таблицей, начиная с конечных позиций и постепенно рассматривая ходы назад. Для каждой позиции проверь все допустимые продолжения: достаточно найти один ход к проигрышной позиции соперника, чтобы отметить её как выигрышную. Если такого хода нет, а все продолжения ведут к выигрышным позициям соперника, позиция проигрышная.
Последний камень забирает победитель, поэтому позиция без камней проигрышна для того, кому предстоит ход. Обозначим количество камней числом n и будем отмечать исходы от меньших значений к большим. Нужно выяснить, какое положение останется после каждого разрешённого хода.
Ответ: выигрывает первый игрок. Ему следует убрать один камень и затем, если соперник убрал 1 или 2, забирать соответственно 2 или 1, оставляя сопернику проигрышное количество.
После того как игрок забирает последний камень, партия заканчивается его победой. Начнём с нуля и найдём количества, при которых игроку, чей ход, не удаётся передать сопернику проигрышную позицию. Повторяющийся шаг разметки позволит не перебирать все продолжения отдельно.
Ответ: выигрышная стратегия первого игрока — убрать 3 камня. Затем нужно дополнять ход соперника до 4: если он убрал 1, убрать 3; если 2 — убрать 2; если 3 — убрать 1.
Позиция задаётся парой чисел: количеством камней в первой и второй кучке. За ход разрешено убрать любое положительное число камней только из одной кучки. Рассмотрим не отдельные количества, а одинаковые кучки: если после хода соперника их размеры различаются, можно восстановить равенство ответным ходом.
Ответ: при правильной игре выигрывает первый игрок. Его стратегия — первым нарушить равенство кучек, а затем после каждого хода соперника уравнивать их, повторяя его действие в другой кучке.
Называть один ход стратегией — значит путать действие сейчас с правилом на всю игру. Так ошибаются, когда найденный удачный ход кажется достаточным, хотя соперник ещё может ответить по-разному. Проверь себя: можешь ли ты объяснить, что делать после каждого допустимого ответа соперника?
Позицию иногда объявляют выигрышной, заметив в ней «хороший» ход, но не проверив результат этого хода. Такой вывод неверен, если соперник после него получает возможность гарантировать победу. Проверяй не название хода, а исход позиции, в которую он ведёт, и все последующие варианты.
Количество оставшихся предметов само по себе не определяет исход: всё зависит от разрешённых ходов и условия окончания. Можно ошибочно решить, что большая куча обязательно выгоднее, или что близость конца игры означает победу. Для проверки выпиши правила и выясни, какие позиции можно получить из рассматриваемой.
Проверка только одной линии дерева игры не доказывает, что стратегия выигрышная. Соперник может выбрать другую ветвь, и тогда план перестанет работать. Чтобы проверить себя, перечисли все его допустимые ответы и убедись, что стратегия сохраняет победу при каждом из них.
Для анализа стратегии нужно уметь точно формулировать правила и перечислять допустимые действия: иначе дерево игры получится неполным или в него попадут невозможные варианты. Построение такого дерева связано с ветвлением и перебором вариантов в алгоритмах, где проверяют разные пути решения. Те же идеи применяют при создании игровых программ: программа должна учитывать текущее состояние и выбирать следующий ход. Анализ пошаговых выборов помогает решать задачи не только об играх, но и о планировании действий.
Чем стратегия отличается от одного удачного хода?
Удачный ход описывает только действие в текущей ситуации. Стратегия задаёт правило выбора ходов для разных возможных позиций и учитывает ответы соперника.
Как понять, что позиция выигрышная?
Позиция выигрышна для игрока, которому предстоит ход, если он может одним ходом перевести игру в проигрышную для соперника позицию. Это должно быть верно при правильной дальнейшей игре обоих участников.
Почему анализ игры начинают с конечных позиций?
В конечных позициях исход уже известен: например, игрок, которому нечего делать по правилам, проиграл. От них можно шаг за шагом определить исход предыдущих позиций, для которых все возможные продолжения уже оценены.
Как доказать, что стратегия сработает при любом ответе соперника?
Нужно проверить все допустимые ответы соперника после выбранного хода. Если каждый из них оставляет игроку возможность продолжать по правилу стратегии и в итоге победить, стратегия гарантирует выигрыш.
Всегда ли для определения стратегии нужно строить полное дерево игры?
Нет. Если позиции повторяются по понятному правилу или игра симметрична, можно обосновать стратегию без перечисления всех ветвей. Но нужно доказать, что вывод охватывает любые допустимые ходы соперника.
§ 2. Стратегии