Теория игр в информатике представляет собой раздел дискретной математики и алгоритмики, исследующий модели пошагового взаимодействия рациональных участников, принимающих решения в условиях конфликта интересов, ограниченности ходов и заранее заданных правил. В школьной и экзаменационной практике по информатике под теорией игр обычно понимаются прежде всего конечные детерминированные игры с полной информацией, в которых два игрока поочерёдно выполняют допустимые ходы, а исход зависит от текущего состояния и качества выбранной стратегии.
В контексте ЕГЭ по информатике теория игр занимает особое место, поскольку требует не только вычислительных навыков, но и способности формализовать состояние, выделить допустимые ходы, определить выигрышные и проигрышные позиции, а затем построить строгую логическую схему рассуждения. Такие задания проверяют владение рекурсией, динамическим программированием, логикой, деревьями состояний и методами доказательства.
Ниже представлен развёрнутый научно-академический разбор темы: от формальной модели игры и классификации позиций до алгоритмических методов анализа, типичных ошибок, мини-шпаргалки и пяти практических упражнений, ориентированных на экзаменационный формат.
Игра как математический объект
Конечную пошаговую игру удобно описывать кортежем
G = (S, A, T, P, W, s0)
где:
S – множество игровых состояний;
A(s) – множество допустимых ходов в состоянии s;
T(s, a) – функция перехода, переводящая состояние s в новое состояние после хода a;
P(s) – функция, определяющая игрока, который делает ход в состоянии s;
W(s) – предикат или функция выигрыша, определяющая, является ли состояние терминальным и кто в нём считается победителем;
s0 – начальное состояние.
Если все допустимые ходы и их последствия заранее известны, а случайность отсутствует, игра называется детерминированной с полной информацией. Именно такие игры наиболее характерны для заданий ЕГЭ.
Игровое дерево
Процесс игры можно представить в виде ориентированного дерева состояний, где:
вершины – игровые позиции;
рёбра – допустимые ходы;
листья – терминальные состояния, в которых игра заканчивается.
Если из позиции s возможны состояния s1, s2, ..., sk, то говорят, что s имеет потомков s1, s2, ..., sk. Анализ игры заключается в определении логического статуса каждой вершины.
Терминальные состояния
Состояние s называется терминальным, если в нём игра заканчивается и новые ходы не выполняются.
Пример формальной записи:
Terminal(s) ⇔ A(s) = ∅
или, если конец игры задаётся условием:
Terminal(s) ⇔ f(s) ≥ M
где M – пороговое значение.
Именно терминальные состояния служат базой для рекурсивного анализа выигрышности.
Выигрышные и проигрышные позиции
Позиция называется выигрышной, если игрок, который должен ходить из этой позиции, может обеспечить себе победу при правильной стратегии.
Позиция называется проигрышной, если при любой стратегии текущего игрока противник способен добиться победы.
Формально для конечных игр эти понятия определяются рекурсивно:
s – проигрышная позиция, если все ходы из неё ведут в выигрышные позиции;
s – выигрышная позиция, если существует хотя бы один ход из неё в проигрышную позицию.
Это фундаментальное рекуррентное правило:
Lose(s) ⇔ ∀ s' ∈ Next(s): Win(s')
Win(s) ⇔ ∃ s' ∈ Next(s): Lose(s')
Позиции с выигрышем за 1, 2, 3 хода
В задачах ЕГЭ часто требуется более детальная классификация:
позиция, из которой игрок выигрывает за один ход;
позиция, из которой игрок выигрывает не позднее второго своего хода;
позиция, из которой он не может выиграть сразу, но может при любой игре соперника выиграть позже.
Тогда вводятся обозначения:
W1 – позиции, из которых существует ход в терминальное выигрышное состояние;
L1 – позиции, из которых все ходы ведут в W1;
W2 – позиции, из которых существует ход в L1;
L2 – позиции, из которых все ходы ведут в W1 ∪ W2;
и так далее.
Именно такая ступенчатая классификация лежит в основе большинства заданий 19–21 ЕГЭ по информатике.
Стратегия
Стратегия – это правило выбора хода для каждого возможного состояния.
Стратегия называется выигрышной, если при её использовании игрок гарантирует победу независимо от ответов соперника.
Если стратегия зависит только от текущего состояния, а не от всей истории партии, то она называется позиционной. В детерминированных играх с полной информацией позиционных стратегий обычно достаточно.
Принцип обратной индукции
Если игра конечна, анализ удобнее вести с конца, начиная с терминальных состояний. Это называется методом обратной индукции.
Алгоритм логического анализа:
Найти терминальные состояния.
Объявить их базовыми.
Поочерёдно подниматься вверх по дереву:
если из вершины есть ход в проигрышную вершину, то текущая вершина выигрышная;
если все ходы ведут в выигрышные вершины, текущая вершина проигрышная.
Рекурсивная функция оценки
Для компьютерной реализации часто вводится функция:
F(s) = статус позиции s
Например:
F(s) = 0, если s терминальна
F(s) = 1, если существует ход в позицию со статусом 0
F(s) = -1, если все ходы ведут в позиции со статусом 1
Однако в школьных задачах удобнее использовать более содержательную схему:
если позиция терминальна → False/True в зависимости от того, кто победил
иначе анализировать потомков
Пример рекуррентной логики
Пусть игра задаётся числом S, из которого за ход можно получить S+1 или 2S, а выигрывает тот, кто первым получает число не меньше M.
Тогда:
Win(s) = True, если s ≥ M и предыдущий игрок уже выиграл
иначе
Win(s) = True, если существует ход в Lose(next)
Lose(s) = True, если все ходы ведут в Win(next)
Здесь важно точно различать: кто совершил последний ход и для кого оценивается позиция.
Идея минимакса
Если каждому терминальному состоянию сопоставить выигрыш +1, проигрыш −1, ничью 0, то в двухигровой антагонистической игре с полной информацией применяется принцип минимакса:
текущий игрок выбирает ход, максимизирующий свой результат;
соперник выбирает ответ, минимизирующий результат первого.
Формально:
V(s) = max_{a ∈ A(s)} V(T(s, a)), если ход первого игрока
V(s) = min_{a ∈ A(s)} V(T(s, a)), если ход второго игрока
Почему в ЕГЭ чаще обходятся без полного минимакса
В школьных задачах вместо числовой минимакс-оценки чаще используется логическая рекурсия выигрыша, потому что:
она проще для ручного анализа;
не требует построения полной оценки всех листьев;
естественно соотносится с формулировками «выигрывает не позже второго хода».
Однако с методической точки зрения задания ЕГЭ являются частным случаем минимаксного анализа.
Когда рекурсия становится таблицей
Если множество состояний можно пронумеровать, а переходы зависят только от текущего состояния, то игру можно анализировать с помощью динамического программирования.
Например, для игры с параметром S все состояния 1, 2, ..., M можно расположить по возрастанию или убыванию и вычислять их статус в таблице.
Табличный подход
Пусть dp[s] – статус состояния s. Тогда:
dp[s] = W, если существует ход в L
dp[s] = L, если все ходы ведут в W
или в более подробной классификации:
dp[s] = W1, если есть ход в терминальное
dp[s] = L1, если все ходы ведут в W1
dp[s] = W2, если есть ход в L1
...
Этот подход особенно удобен, если:
состояний немного;
переходы однотипны;
требуется найти все стартовые позиции с заданным свойством.
Преимущества динамического подхода
исключаются повторные вычисления;
можно анализировать целый диапазон стартовых значений;
легко строить таблицу для ответа на несколько вопросов сразу.
Сначала точно определить состояние.
В задачах ЕГЭ состояние почти всегда должно включать только те параметры, от которых зависит набор последующих ходов. Нельзя перегружать состояние лишними деталями.
Явно задать условие окончания игры.
Нужно строго понимать, какая позиция считается терминальной и кто в ней победил.
Не путать “позиция после хода” и “позиция перед ходом”.
Это одна из самых частых ошибок при рекурсивном анализе.
Различать “существует ход” и “все ходы”.
Выигрышная позиция определяется через квантор существования, проигрышная – через квантор всеобщности.
При анализе “за два хода” учитывать ходы обоих игроков.
Фраза «игрок выигрывает вторым ходом» означает, что между его первым и вторым ходом обязательно есть ход соперника.
Фиксировать семантику обозначений.
Если используются W1, L1, W2, L2, необходимо строго определить каждое обозначение до начала анализа.
Проверять крайние случаи.
Если начальная позиция уже терминальна, рекурсивная логика может измениться.
Базовые определения
Win(s) ⇔ ∃ s' ∈ Next(s): Lose(s')
Lose(s) ⇔ ∀ s' ∈ Next(s): Win(s')
Классификация по числу ходов
W1: есть ход в терминальное выигрышное состояние
L1: все ходы ведут в W1
W2: есть ход в L1
L2: все ходы ведут в W1 или W2
W3: есть ход в L2
Минимакс
V(s) = max V(next), если ход игрока Max
V(s) = min V(next), если ход игрока Min
Табличный анализ
для s от M−1 до 1:
если существует ход в проигрышную позицию:
s – выигрышная
иначе:
s – проигрышная

Ошибка 1. Неверное понимание терминального состояния
Иногда учащиеся считают терминальной позицию, из которой можно выиграть ходом, а не ту, в которой игра уже закончилась.
Исправление: терминальное состояние – это состояние, в котором дальнейших ходов нет или победа уже зафиксирована правилами.
Ошибка 2. Смешение кванторов
Фраза «если из позиции есть хотя бы один плохой ход, то позиция плохая» неверна.
Исправление:
Ошибка 3. Неправильный анализ позиций “второго хода”
Часто пропускается логика ответа соперника.
Исправление: анализировать цепочку:
мой ход → ход соперника → мой ход
Ошибка 4. Повторный анализ одинаковых состояний
При дереве игры одно и то же состояние может встречаться многократно.
Исправление: использовать мемоизацию или таблицу динамики.
Ошибка 5. Отсутствие строгих обозначений
Без формального определения W1, L1, W2 решение становится расплывчатым.
Исправление: сначала ввести систему обозначений, затем применять её последовательно.
Теория игр особенно важна для заданий, где нужно:
Работа с такими задачами развивает:
С методической точки зрения теория игр тесно связана с:
Упражнение 1. Игра с прибавлением 1 и удвоением
Условие. Из числа S за ход можно получить S+1 или 2S. Выигрывает тот, кто первым получает число не меньше 20. Определите, какие позиции являются выигрышными в один ход.
Решение.
Позиция выигрышна в один ход, если из неё можно сразу перейти в число ≥ 20.
То есть должно выполняться хотя бы одно из условий:
S + 1 ≥ 20
2S ≥ 20
Из первого:
S ≥ 19
Из второго:
S ≥ 10
Объединяя:
S ≥ 10
Но если рассматриваются только нетерминальные позиции, то S < 20.
Следовательно:
W1 = {10, 11, 12, ..., 19}
Упражнение 2. Проигрышные позиции первого уровня
Условие. Для той же игры найдите позиции L1, из которых игрок не может выиграть за один ход, а любой его ход переводит соперника в W1.
Решение.
Нужно, чтобы:
Проверим условие:
S+1 ≥ 10 ⇒ S ≥ 9
2S ≥ 10 ⇒ S ≥ 5
Совместно с S < 10 получаем кандидата S = 9.
Проверка:
9+1 = 10 ∈ W1
2·9 = 18 ∈ W1
Значит:
L1 = {9}
Упражнение 3. Выигрыш за два хода
Условие. Для той же игры найдите позиции W2.
Решение.
Позиция W2 – это такая позиция, из которой есть ход в L1.
Поскольку L1 = {9}, ищем все S, для которых:
S+1 = 9 или 2S = 9
Из первого:
S = 8
Из второго целого решения нет.
Следовательно:
W2 = {8}
Упражнение 4. Табличный анализ игры
Условие. Из числа S за ход можно получить S+2 или 3S. Игра заканчивается, когда S ≥ 30. Постройте фрагмент таблицы статусов для S = 1..10.
Решение.
Сначала найдём W1:
S+2 ≥ 30 ⇒ S ≥ 28
3S ≥ 30 ⇒ S ≥ 10
Следовательно, среди нетерминальных позиций:
W1 = {10, 11, ..., 29}
Теперь L1 – позиции, из которых оба хода ведут в W1.
Проверяем:
Для меньших значений не выполняется первое условие.
Тогда:
L1 = {8, 9}
Далее W2 – позиции, из которых можно попасть в L1:
Значит:
W2 = {3, 6, 7}
Итоговая классификация для 1..10:
Упражнение 5. Рекурсивная функция статуса
Условие. Напишите псевдокод рекурсивной функции, определяющей, является ли позиция выигрышной, если из числа S можно перейти в S+1 или 2S, а победа достигается при S ≥ M.
Решение.
функция Win(S, M): лог
если S ≥ M то
вернуть ЛОЖЬ
все
если Win(S + 1, M) = ЛОЖЬ или Win(2*S, M) = ЛОЖЬ то
вернуть ИСТИНА
иначе
вернуть ЛОЖЬ
все
конец
Пояснение.
Если S ≥ M, игра уже завершилась предыдущим ходом, следовательно, текущий игрок проиграл – функция возвращает ЛОЖЬ.
Если существует ход в проигрышную для соперника позицию, текущая позиция выигрышная.
Иначе она проигрышная.
Для ускорения практической реализации следует добавить мемоизацию.
Сначала выпишите правила игры в виде переходов.
Затем явно укажите условие победы.
Определите терминальные состояния.
Введите обозначения W1, L1, W2, L2, если задача требует анализа по числу ходов.
Если состояний много и они повторяются, используйте таблицу или мемоизацию.
При оформлении решения обязательно поясняйте, почему используется:
«существует ход»;
«все ходы».
Теория игр в информатике – это не просто раздел о развлечениях или абстрактных стратегиях, а строгий инструмент анализа дискретных процессов выбора. В школьной информатике она выступает в виде конечных детерминированных игр, где особенно важны формализация состояний, рекурсивное определение выигрышности и умение строить стратегию на основе логического анализа.
Для подготовки к ЕГЭ эта тема имеет двойную ценность. Во-первых, она непосредственно представлена в ряде экзаменационных заданий. Во-вторых, она формирует универсальный стиль мышления: умение рассматривать задачу как систему состояний, переходов и стратегий. Именно это делает теорию игр одной из наиболее содержательных и интеллектуально насыщенных тем школьной информатики.