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