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