Это повторение предыдущего вопроса .
Рассмотрим следующую беспристрастную идеальную информационную игру между двумя игроками, Алисой и Бобом. Игроки получают перестановку целых чисел от 1 до n. На каждом ходу, если текущая перестановка увеличивается, текущий игрок проигрывает, а другой игрок выигрывает; в противном случае текущий игрок удаляет одно из чисел, и игра переходит к другому игроку. Алиса играет первой. Например:
(1,2,3,4) - Боб выигрывает немедленно, по определению.
(4,3,2,1) - Алиса выигрывает после трех ходов, независимо от того, как кто-либо играет.
(2,4,1,3) - Боб может выиграть в свой первый ход, независимо от того, как играет Алиса.
(1,3,2,4) - Алиса немедленно выигрывает, удаляя 2 или 3; в противном случае Боб может выиграть в свой первый ход, убрав 2 или 3.
(1,4,3,2) - Алиса в конечном итоге выигрывает, если она берет 1 в свой первый ход; в противном случае Боб может выиграть в свой первый ход, не убрав 1.
Существует ли алгоритм полиномиального времени, чтобы определить, какой игрок выигрывает в этой игре по заданной начальной перестановке, предполагая идеальную игру ? В более общем плане, поскольку это стандартная беспристрастная игра, каждая перестановка имеет значение Спраг-Гранди ; например, (1,2,4,3) имеет значение * 1 и (1,3,2) имеет значение * 2. Насколько сложно вычислить это значение?
Очевидные работает алгоритм отслеживания в обратном направлении в O (N!) Время, хотя это может быть сведено к времени с помощью динамического программирования.
Ответы:
«Игра перестановок» изоморфна следующей игре:
Граф соответствующий конкретной начальной перестановке π ∈ S n, содержит только те ребра ( i , j ), для которых i - j и π ( i ) - π ( j ) имеют противоположные знаки. То есть каждая пара чисел в неправильномGπ π∈Sn (i,j) i−j π(i)−π(j) порядок в перестановке связан с ребром. Очевидно, что разрешенные ходы изоморфны ходам в игре с перестановками (удалить число = удалить узел), и условия победы также изоморфны (нет пар в порядке убывания = нет ребер).
Дополнительный вид получается путем рассмотрения вопроса о «двойной» игре на дополнении графа , которое содержит те ребра ( i , j ), для которых i и j находятся в правильном порядке в перестановке. Двойная игра для отключения:граммсπзнак равно Gр ( π) ( я , j ) я J
В зависимости от конкретной перестановки одна из этих игр может показаться более простой, чем другая, для анализа. Преимущество представления графа состоит в том, что ясно, что несвязанные компоненты графа являются отдельными играми, и поэтому можно надеяться на некоторое снижение сложности. Это также делает симметрию положения более очевидной. К сожалению, условия победы нестандартны ... игра перестановок всегда заканчивается до того, как все ходы израсходованы, что придает ей что-то вроде мизерного характера. В частности, значение nim не может быть вычислено как nim-сумма (двоичное значение XOR) значений nim отключенных компонентов.
Для отключения, то не трудно заметить , что для любого графа и любого четного п , игра G ∪ ˉ K является безреберных, то первый игрок сразу же проигрывает (обе игры закончились). В противном случае первый игрок может перейти в любой из G , а второй игрок может скопировать свой ход в другой (уменьшив до G ′ + G ′ ∪ ¯ Kграмм N эквивалентна G (где ˉ К п является Edgeless граф на п вершинах). Чтобы доказать это, мы должны показатьчто разделительная сумма G + G ∪ ˉ K п является победой вторых игроков. Доказательство по индукции на | G | + п . Если ГG ∪ K¯N грамм К¯N N G + G ∪ K¯N | G | +n грамм грамм с помощью|G′|=|G|-1); или, еслип≥2, первый игрок может двигаться в отключенном части, а второй игрок может сделать то же самое (сведение кG+G∪ ° K п-2).грамм'+ G'∪ КN¯ | грамм'| = | G | -1 n ≥ 2 G + G ∪ K¯п - 2
Это показывает, что любой граф эквивалентен H ∪ K p , где H ∪ G ′ ∼ ( H ∪ H ′ ) ∪ K p ⊕грамм ЧАС∪ Кп ЧАС является частью без каких - либо разъединенных вершин, и р = 0 или 1 является четность числа разъединенных вершин в G . Все игры в классе эквивалентности имеют одинаковое nim-значение, и, кроме того, отношение эквивалентности учитывает операцию объединения: если G ∼ H ∪ K p и G ′ ∼ H ′ ∪ K p ′, то Gграмм р = 0 1 грамм G ∼ H∪ Кп грамм'∼ H'∪ Кп' . Кроме того, можно видеть, что игры в[H∪K0]и[H∪K1]имеют разные значения nim, если толькоH неявляется нулевым графиком: при игре вH+H∪K1первый игрок может взять изолированный вершина, оставляяH+H, а затем скопируйте ходы второго игрока после этого.G ∪ G'∼ ( H∪ H') ∪ Кp⊕p′ [H∪K0] [H∪K1] H H+H∪K1 ЧАС+ H
Я не знаю никаких связанных результатов разложения для Reconnect.
Два специальных типа перестановок соответствуют особо простым играм с кучей.
Небольшая мысль показывает, что эти две разные игры на кучах (мы можем назвать их « 1 куча» и « одна куча» при некотором риске путаницы), на самом деле сами по себе изоморфны. Оба могут быть представлены игрой на диаграмме Юнга (как первоначально предложено @domotorp), в которой игроки поочередно убирают нижний правый квадрат, пока не останется только один ряд. Это, очевидно, та же самая игра, что и 1-Heaps, когда столбцы соответствуют кучам, и та же игра, что и One-Heap, когда строки соответствуют кучам.
Ключевой элемент этой игры, который распространяется на Disconnect и Reconnect, заключается в том, что продолжительность связана с конечным состоянием игры простым способом. Когда придет ваш ход, вы выиграете, если в игре осталось нечетное количество ходов, включая тот, который вы собираетесь сделать. Так как каждый ход удаляется из одного квадрата, это означает, что вы хотите, чтобы количество квадратов, оставшихся в конце игры, имело противоположный паритет, который он имеет сейчас. Более того, число квадратов будет одинаковым на всех ваших ходах; Таким образом, вы с самого начала знаете, какой паритет вы хотите получить в конечном счете. Мы можем назвать двух игроков Евой и Отто, в зависимости от того, должен ли окончательный счет быть четным или нечетным, чтобы они выиграли. Ева всегда движется в состояниях с нечетной четностью и создает состояния с четной четностью, а Отто - противоположность.
В своем ответе @PeterShor дает полный анализ One-Heap. Без повторения доказательства получается следующее:
Как уже отмечалось, это дает оптимальные стратегии и для 1-кучи, хотя они несколько более неуклюжи для фразы (и я вполне могу допустить ошибку в перво-двойственном «переводе»). В игре 1-Кучи:
Как отмечает @PeterShor, не ясно, как (или если) эти анализы можно распространить на более общие игры Disconnect и Reconnect.
источник
В своем ответе domotorp предлагает проанализировать особый случай игры. Этот особый случай возникает, когда перестановка представляет собой серию возрастающих последовательностей, каждая из которых больше следующей, такой как (8,9,5,6,7,4,1,2,3). В этой игре вы начинаете с набора кучи камней, а игроки поочередно убирают один камень из кучи. Игрок, который оставляет одну кучу, побеждает. Скажем, у есть кучаi камней, и предположим, что h i даны в порядке убывания. Например, для приведенной выше перестановки h ihi hi hi 3,3,2,1. Я попытался дать анализ этой игры в комментариях к ответу domotorp, но (а) я ошибся и (б) в комментариях недостаточно места, чтобы дать реальное доказательство.
Чтобы проанализировать эту игру, нам нужно сравнить две величины: , количество куч, содержащих отдельные камни, и t =s ; обратите внимание, что мы игнорируем самую большую кучу в сумме. Это количество камней, которое вы должны будете удалить, чтобы все кучи, кроме одного, содержали не более двух камней. Мы утверждаем, что убыточные позиции заключаются в следующем:t=∑i≥2,hi>2hi−2
Позиции, где содержащие нечетное количество камней.t≤s−2
Положения, в которых содержит четное количество камней.t≥s
Легко показать, что из проигрышной позиции вы должны перейти в выигрышную позицию, поскольку может меняться не более чем на 1 за каждый ход, а количество камней уменьшается на 1 за каждый ход.t−s
Чтобы закончить, показывая, что это правильно, нам нужно показать, что из любой позиции, не входящей в категорию (1) или (2), первый игрок может за один ход либо достичь позиции в категории (1) или (2), или выиграть напрямую.
Есть два случая:
Позиции, где содержащее нечетное количество камней. Здесь, если s > 0 , удалите камень из кучи одним камнем. Если осталась только одна куча, мы выиграли. В противном случае у нас теперь t ≥ s . Если с одним камнем нет кучи, удалите камень из кучи, по крайней мере, с тремя камнями. (Поскольку было нечетное количество камней, это возможно). Поскольку s = 0 , мы имеем t ≥ s .t≥s−1 s>0 t≥s s=0 t≥s
Позиции, где содержащее четное количество камней. Здесь, если есть какие-либо кучи с хотя бы двумя камнями, кроме самой большой кучи, удалите камень из одного из них. Если в этой куче три или более камней, t уменьшается на один. Если в нем ровно два камня, s увеличивается на один. Теперь у нас есть t ≤t≤s−1 t s . Последний случай, когда все кучи, кроме одной, состоят из отдельных камней; в этом случае легко проверить, выигрывает ли первый игрок, если есть четное количество камней.t≤s−2
Я пытался обобщить эту стратегию для оригинальной игры, и не понял, как это сделать.
источник
Я реализовал решение для быстрой проверки гипотез. Не стесняйтесь играть с ним . Если у вас нет компилятора C ++ локально, вы можете запустить его на разных входах удаленно, используя ссылку «загрузить с новым вводом».O ( 2Nн )
@ Jɛ ff E Случилось так, что (1,4,3,2) имеет значение * 1, а не * 2, как вы предложили.
источник
Правка 5 января: На самом деле игра «Одна куча», описанная ниже, является особым случаем проблемы, то есть когда числа следуют друг за другом определенным образом, так что первая группа больше второй группы, которая больше третьей и т. Д. и число в каждой группе увеличивается. Например, 8, 9, 4, 5, 6, 7, 2, 3, 1 - это такая перестановка. Поэтому я предлагаю решить этот частный случай в первую очередь.
Отказ от ответственности: я больше не утверждаю, что приведенное ниже доказательство является правильным, см., Например, комментарий Цуёси, который показывает, что удаление числа из перестановки даст диаграмму, которую нельзя получить, удалив квадрат из диаграммы перестановки. Я оставил здесь ответ, чтобы показать, что этот подход не работает, плюс он содержит еще одну простую игру.
В игре очень простая другая формулировка благодаря Young Tableaux. Я уверен, что он может быть проанализирован оттуда, как и другие игры, и он даст линейный алгоритм времени.
Сначала определите следующую игру на диаграммах Юнга: на каждом ходу, если текущая диаграмма горизонтальна (все квадраты на одной линии), текущий игрок проигрывает, а другой игрок выигрывает; в противном случае текущий игрок удаляет один из правых нижних квадратов, и игра переходит к другому игроку.
Теперь закажите последовательность чисел в Таблице Юнга. Основное утверждение состоит в том, что победитель в оригинальной игре такой же, как и победитель, в виде диаграммы, начиная с этой формы. Чтобы увидеть это, обратите внимание, что всякий раз, когда игроки удаляют число, диаграмму новой последовательности можно получить, удалив нижний правый квадрат диаграммы. Более того, любая такая диаграмма может быть достигнута путем удаления числа из соответствующего нижнего правого квадрата. Эти утверждения следуют из стандартной теории молодых таблиц.
Хотя эта игра-диаграмма достаточно проста, она тривиально эквивалентна следующей игре, которая кажется более стандартной:
Одна игра с кучей: игрокам дают кучу с несколькими камешками в каждой. На каждом ходу, если осталась только одна куча, текущий игрок проигрывает, а другой игрок выигрывает; в противном случае текущий игрок удаляет камушек из кучи, и игра переходит к другому игроку.
Если есть простое решение для игры в кучу (и я твердо верю, что оно есть), мы также получим решение для оригинальной игры: просто поместите последовательность в таблицу Юнга и преобразуйте ее диаграмму в кучу.
К сожалению, я не вижу, какие позиции в куче выигрывают / как определить значения Спрэга-Гранди. Я проверил несколько случаев вручную, и ниже приведены проигрышные позиции с максимум 6 камешками:
одна куча; (1,1,1); (2,2); (3,1,1); (2,1,1,1); (1,1,1,1,1); (4,2); (3,3); (2,2,2).
Кто-нибудь может решить эту игру?
Редактировать: Питер Шор может, увидеть его ответ!
источник