Игра на четность проводится на цветном ориентированном графе , где каждый узел раскрашен в соответствии с приоритетом — одним из (обычно) конечного числа натуральных чисел . Два игрока, 0 и 1, перемещают (один, общий) токен вдоль рёбер графа. Владелец узла, на который попадает токен, выбирает узел-последователя (делает следующий ход). Игроки продолжают перемещать токен, в результате чего образуется (возможно, бесконечный) путь , называемый игрой.
Победителем в конечной игре становится игрок, противник которого не может сделать ход. Победитель в бесконечной игре определяется приоритетами, появляющимися в игре. Обычно игрок 0 выигрывает в бесконечной игре, если наибольший приоритет, который бесконечно часто встречается в игре, является четным. В противном случае выигрывает игрок 1. Это объясняет слово «четность» в названии.
Паритетные игры лежат на третьем уровне иерархии Бореля и, следовательно, определены . [1]
Игры, связанные с играми на четность, неявно использовались в доказательстве Рабина разрешимости монадической теории второго порядка n преемников ( S2S для n = 2), где была доказана определенность таких игр. [2] Теорема Кнастера–Тарского приводит к относительно простому доказательству определенности игр на четность. [3]
Более того, игры на паритет определяются без учета истории. [3] [4] [5] Это означает, что если у игрока есть выигрышная стратегия, то у этого игрока есть выигрышная стратегия, которая зависит только от текущей позиции на доске, а не от истории игры.
Решение игры на четность, разыгрываемой на конечном графе, означает решение для заданной начальной позиции, какой из двух игроков имеет выигрышную стратегию. Было показано, что эта задача находится в NP и co-NP , точнее UP и co-UP, [6] , а также в QP ( квазиполиномиальное время ). [7] Остается открытым вопрос, разрешима ли эта задача принятия решений в PTime .
Учитывая, что игры на четность определяются без истории, решение данной игры на четность эквивалентно решению следующей простой на вид задачи теории графов. Дан конечный цветной ориентированный двудольный граф с n вершинами и V , раскрашенный в цвета от 1 до m , существует ли функция выбора, выбирающая одно исходящее ребро из каждой вершины , такая, что полученный подграф обладает свойством, что в каждом цикле наибольший встречающийся цвет является четным.
Зеленка описал рекурсивный алгоритм, который решает игры на четность. Пусть будет игрой на четность, где соответственно — это наборы узлов, принадлежащие игроку 0 соответственно 1, — это набор всех узлов, — это общий набор ребер, а — это функция назначения приоритетов.
Алгоритм Зелонки основан на обозначении аттракторов. Пусть будет набором узлов и будет игроком. i -аттрактор U — это наименьший набор узлов, содержащий U, такой, что i может заставить посетить U из каждого узла в . Его можно определить с помощью вычисления неподвижной точки:
Другими словами, мы начинаем с начального набора U. Затем для каждого шага ( ) мы добавляем все узлы, принадлежащие игроку 0, которые могут достичь предыдущего набора ( ) с помощью одного ребра, и все узлы, принадлежащие игроку 1, которые должны достичь предыдущего набора ( ) независимо от того, какое ребро выберет игрок 1.
Алгоритм Зелонки основан на рекурсивном спуске по числу приоритетов. Если максимальный приоритет равен 0, то сразу видно, что игрок 0 выигрывает всю игру (с произвольной стратегией). В противном случае пусть p будет наибольшим, а пусть будет игроком, связанным с приоритетом. Пусть будет набором узлов с приоритетом p , а пусть будет соответствующим аттрактором игрока i . Теперь игрок i может гарантировать, что каждая игра, которая посещает A бесконечно часто, выигрывается игроком i .
Рассмотрим игру, в которой все узлы и затронутые ребра A удалены. Теперь мы можем решить меньшую игру с помощью рекурсии и получить пару выигрышных наборов . Если пусто, то так же будет и для игры G , поскольку игрок может решить только сбежать из A , что также приведет к победе игрока i .
В противном случае, если не пусто, мы точно знаем, что игрок может выиграть , так как игрок i не может уйти из в A (так как A является i -аттрактором). Поэтому мы вычисляем аттрактор и удаляем его из G , чтобы получить меньшую игру . Мы снова решаем ее с помощью рекурсии и получаем пару выигрышных наборов . Из этого следует, что и .
В простом псевдокоде алгоритм можно выразить так:
функция p := максимальный приоритет в G, если return else U := узлы в G с приоритетом p , если return return
Небольшая модификация вышеприведенной игры и связанной с ней проблемы теории графов делает решение игры NP-трудным . Модифицированная игра имеет условие принятия Рабина , и, таким образом, каждая вершина окрашена набором цветов вместо одного цвета. Соответственно, мы говорим, что вершина v имеет цвет j, если цвет j принадлежит цветовому набору v . Бесконечная игра выигрывает для игрока 0, если существует i, такое, что бесконечно много вершин в игре имеют цвет 2i , но конечное множество имеют цвет 2i+1 .
Четность — это особый случай, когда каждая вершина имеет один цвет. В частности, в приведенном выше сценарии двудольного графа проблема теперь заключается в том, чтобы определить, существует ли функция выбора, выбирающая одно исходящее ребро из каждой вершины V 0 , такая, что полученный подграф обладает свойством, что в каждом цикле (и, следовательно, в каждом сильно связанном компоненте ) существует i и узел с цветом 2 i , и нет узла с цветом 2 i + 1...
Обратите внимание, что в отличие от игр на четность эта игра больше не симметрична относительно игроков 0 и 1.
Несмотря на интересный статус теории сложности, решение игры с четностью можно рассматривать как алгоритмический бэкэнд для задач автоматизированной верификации и синтеза контроллера. Например, известно, что проблема проверки модели для модального μ-исчисления эквивалентна решению игры с четностью. Кроме того, проблемы принятия решений, такие как валидность или выполнимость для модальной логики, можно свести к решению игры с четностью.
{{cite book}}
: CS1 maint: multiple names: authors list (link)Ниже приведены два современных набора инструментов для решения игр на четность: