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