stringtranslate.com

Игровое дерево

В контексте комбинаторной теории игр , которая обычно изучает последовательные игры с полной информацией , игровое дерево — это граф, представляющий все возможные игровые состояния в такой игре. К таким играм относятся такие известные игры, как шахматы , шашки , го и крестики-нолики . Это можно использовать для измерения сложности игры , поскольку оно представляет все возможные способы, которыми игра может быть успешной. Из-за больших игровых деревьев сложных игр, таких как шахматы, алгоритмы, предназначенные для игры в этот класс игр, будут использовать частичные игровые деревья, что делает вычисления осуществимыми на современных компьютерах. Существуют различные методы решения игровых деревьев. Если можно сгенерировать полное игровое дерево, можно использовать детерминированный алгоритм , такой как обратная индукция или ретроградный анализ . Рандомизированные алгоритмы и алгоритмы minmax, такие как MCTS, могут использоваться в случаях, когда полное игровое дерево невозможно.

Понимание дерева игры

Чтобы лучше понять игровое дерево, его можно рассматривать как метод анализа состязательных игр, которые определяют действия, которые игрок предпринимает для победы в игре. В теории игр игровое дерево — это направленный граф, узлы которого являются позициями в игре (например, расположение фигур в настольной игре), а ребра — ходами (например, перемещение фигур из одной позиции на доске в другую). [1]

Полное игровое дерево для игры — это игровое дерево, начинающееся с начальной позиции и содержащее все возможные ходы из каждой позиции; полное дерево — это то же самое дерево, которое получено из развернутого представления игры. Если говорить точнее, полная игра — это норма для игры в теории игр. Которая может четко выражать многие важные аспекты. Например, последовательность действий, которые могут предпринять заинтересованные стороны, их выбор в каждой точке принятия решения, информация о действиях, предпринимаемых другими заинтересованными сторонами, когда каждая заинтересованная сторона принимает решение, и выгоды от всех возможных результатов игры. [2]

Первые два слоя игрового дерева для крестиков-ноликов

На схеме показаны первые два уровня, или plies , в дереве игры в крестики-нолики . Повороты и отражения позиций эквивалентны, поэтому у первого игрока есть три варианта хода: в центре, на краю или в углу. У второго игрока есть два варианта ответа, если первый игрок играл в центре, в противном случае — пять вариантов. И так далее.

Число конечных узлов в полном дереве игры — это число возможных различных способов игры. Например, игровое дерево для крестиков-ноликов имеет 255 168 конечных узлов.

Деревья игры важны в искусственном интеллекте, потому что один из способов выбрать лучший ход в игре — это поиск по дереву игры с использованием любого из многочисленных алгоритмов поиска по дереву в сочетании с правилами типа минимакса для обрезки дерева . Дерево игры для крестиков-ноликов легко поддается поиску, но полные деревья игры для более крупных игр, таких как шахматы , слишком велики для поиска. Вместо этого шахматная программа ищет по частичному дереву игры : обычно столько ходов от текущей позиции, сколько она может найти за отведенное время. За исключением случая «патологических» деревьев игры [3] (которые, по-видимому, встречаются довольно редко на практике), увеличение глубины поиска (т. е. количества просмотренных ходов) обычно повышает шанс выбора лучшего хода.

Игры двух игроков также можно представить в виде деревьев и-или . Для того, чтобы первый игрок выиграл игру, должен существовать выигрышный ход для всех ходов второго игрока. Это представлено в дереве и-или с помощью дизъюнкции для представления альтернативных ходов первого игрока и с помощью конъюнкции для представления всех ходов второго игрока.

Решение игровых деревьев

Детерминированная версия алгоритма

Произвольное игровое дерево, полностью раскрашенное

Имея полное игровое дерево, можно «решить» игру, то есть найти последовательность ходов, которую может выполнить либо первый, либо второй игрок, что гарантирует наилучший возможный результат для этого игрока (обычно победу или ничью). Детерминированный алгоритм (который обычно называют обратной индукцией или ретроградным анализом ) можно рекурсивно описать следующим образом.

  1. Раскрасьте последний слой игрового дерева так, чтобы все победы игрока 1 были окрашены одним цветом (синим на схеме), все победы игрока 2 были окрашены другим цветом (красным на схеме), а все ничьи были окрашены третьим цветом (серым на схеме).
  2. Посмотрите на следующий слой выше. Если существует узел, окрашенный противоположно текущему игроку, раскрасьте этот узел для этого игрока. Если все непосредственно нижележащие узлы окрашены для того же игрока, раскрасьте этот узел для того же игрока. В противном случае раскрасьте этот узел в ничью.
  3. Повторяйте для каждого слоя, двигаясь вверх, пока все узлы не будут окрашены. Цвет корневого узла определит характер игры.

На диаграмме показано игровое дерево для произвольной игры, раскрашенное с использованием вышеописанного алгоритма.

Обычно игру можно решить (в техническом смысле слова «решить»), используя только подмножество игрового дерева, поскольку во многих играх ход не нужно анализировать, если есть другой ход, который лучше для того же игрока (например, альфа-бета-отсечение может использоваться во многих детерминированных играх).

Любое поддерево, которое может быть использовано для решения игры, называется деревом решений , а размеры деревьев решений различных форм используются в качестве мер сложности игры . [4]

Версия рандомизированных алгоритмов

Рандомизированные алгоритмы могут использоваться при решении игровых деревьев. В этом типе реализации есть два основных преимущества: скорость и практичность. В то время как детерминированная версия решения игровых деревьев может быть выполнена за Ο ( n ) , следующий рандомизированный алгоритм имеет ожидаемое время выполнения θ ( n 0,792 ), если каждый узел в игровом дереве имеет степень 2. Более того, это практично, потому что рандомизированные алгоритмы способны «сбить противника с толку», то есть противник не может победить систему игровых деревьев, зная алгоритм, используемый для решения игрового дерева, потому что порядок решения случаен.

Ниже представлена ​​реализация алгоритма решения рандомизированного дерева игры: [5]

def  gt_eval_rand ( u )  ->  bool : """Возвращает True, если этот узел оценивается как выигрыш, в противном случае False""" if u . leaf : return u . win else : random_children = ( gt_eval_rand ( child ) for child in random_order ( u . children )) if u . op == "OR" : return any ( random_children ) if u . op == "AND" : return all ( random_children )                         

Алгоритм использует идею « короткого замыкания »: если корневой узел считается оператором « ИЛИ », то как только будет найдено одно значение True , корень классифицируется как True ; и наоборот, если корневой узел считается оператором « И », то как только будет найдено одно значение False , корень классифицируется как False .

[6]

Смотрите также

Ссылки

  1. ^ Цукерман, Инон; Уилсон, Брэндон; Нау, Дана С. (2018). «Избегание патологии игрового дерева в состязательном поиске с двумя игроками». Computational Intelligence . 34 (2): 542–561. doi :10.1111/coin.12162. ISSN  1467-8640. S2CID  46926187.
  2. ^ Хуан, Цзышуо; Ю, Ханг; Чу, Сянъян; Пэн, Чжэньвэй (2018-05-01). «Новая модель оптимизации на основе дерева игры для систем преобразования нескольких видов энергии». Энергия . 150 : 109–121. Bibcode : 2018Ene...150..109H. doi : 10.1016/j.energy.2018.02.091. ISSN  0360-5442.
  3. ^ Нау, Дана (1982). «Исследование причин патологии в играх». Искусственный интеллект . 19 (3): 257–278. doi :10.1016/0004-3702(82)90002-9.
  4. ^ Виктор Эллис (1994). Поиск решений в играх и искусственном интеллекте (PDF) . Кандидатская диссертация, Университет Лимбурга, Маастрихт, Нидерланды. ISBN 90-900748-8-0.
  5. ^ Дэниел Рош (2013). SI486D: Случайность в вычислениях, подразделение игровых деревьев. Военно-морская академия США, кафедра компьютерных наук. Архивировано из оригинала 08.05.2021 . Получено 29.04.2013 .
  6. ^ Пекарж, Либор; Матушу, Радек; Андрла, Йиржи; Личманнова, Мартина (сентябрь 2020 г.). «Обзор исследований игры Калах и предложение нового эвристически-детерминированного алгоритма в сравнении с решениями поиска по дереву и принятием решений человеком». Информатика . 7 (3): 34. doi : 10.3390/informatics7030034 . hdl : 10084/142398 .

Дальнейшее чтение