Функция Шпрага-Гранди

Функция Шпрага-Гранди

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

В случае дискретных игр иногда называется нимбером.

Теорема Шпрага-Гранди была независимо сформулирована и доказана Р. Шпрагом (1935) и П. М. Гранди (1939).

Содержание

Определения

Определение 1

Функцией Шпрага-Гранди называется такая функция G, определенная для x и принимающая неотрицательные значения, так что:

\!G(x) = \min \{n\geq 0 : n\neq G(y), y \in F(x)\},
где
  • n — любое целое неотрицательное число,
  • y — одна из позиций, в которую можно перейти непосредственно из позиции х за один ход,
  • G(y) — значения Шпрага-Гранди позиций, в которые можно перейти непосредственно из позиции х за один ход,
  • F(x) — список позиций, в которые можно перейти непосредственно из позиции х за один ход.

Таким образом, G(x) — наименьшее неотрицательное целое число, не найденное среди значений Шпрага-Гранди для определенных х.

Определение 2

Функция F определена на множестве всех позиций игры G следующим образом:

F(P) = 0,~ если позиция P — однозначно проигрышная (нельзя сделать ни одного хода)
F(P) = \min ( \Omega\setminus\{F(Q)|Q \in G(P)\} )~ в иных случаях,

где \Omega — множество целых неотрицательных чисел, а G(P) — множество всех допустимых ходов из позиции P.

Основные свойства

  1. Если х — конечная позиция, то G(x) = 0. Позиции х, для которых G(x) = 0, являются П-позициями (проигрышными для игрока чья очередь делать ход), тогда как все другие позиции соответственно Н-позициями (выигрышными для игрока который только что сделал ход). Выигрышная стратегия заключается в том, чтобы выбирать на каждом шаге ход, в котором значение Шпрага-Гранди равно нулю.
  2. Из позиции х, для которой G(x) = 0, существуют ходы только в позицию у такую, что G(y) ≠ 0.
  3. Из позиции х, для которой G(x) ≠ 0, существует хотя бы один ход в позицию у, для которой G(y) = 0.

Применение

Одно из полезных свойств функции Шпрага-Гранди заключается в том, что она равна нулю для всех проигрышных позиций и положительна для всех выигрышных позиций. Это даёт метод нахождения выигрышной стратегии:

  1. Найти функцию Шпрага-Гранди, например, строя её рекуррентно, начиная с конечных позиций.
  2. Если в начальной позиции функция Гранди равна нулю, то игра для первого игрока проигрышна.
  3. В противном случае, первый игрок может выиграть, перемещаясь каждым ходом в позицию с нулевым значением функции Гранди.

Сумма игр

Если у нас имеется n игр G_1, G_2, \dots, G_n, то можно рассмотреть комбинацию этих игр, для которой игровое поле состоит из совокупности игровых полей для игр G_1, G_2, ..., G_n и за один ход игрок может выбрать некоторое i, 1 ≤ in, и сделать ход на игровом поле для игры G_i. Такая комбинация называется суммой игр G_1, G_2, \dots, G_n и обозначается G_1 + G_2 + \dots + G_n. Ситуацию на игровом поле игры G_1 + G_2 + \dots + G_n, когда игровое поле игры Gi находится в позиции P_i, удобно обозначать как (P_1, P_2, \dots, P_n).

Функция Шпрага-Гранди обладает одним удивительным свойством, которое позволяет оптимально играть в сумму игр G_1 + G_2 + ... + G_n, зная функцию Шпрага-Гранди для всех позиций каждой из игр Gi. Формулируется оно следующим образом:

\!F(P_1, P_2, \dots, P_n) = F(P_1)\oplus F(P_2)\oplus \dots \oplus F(P_n),

где \!\oplus — исключающее «или».

Пример

Задача

Имеется площадь, состоящая из 10 клеток. Играют два игрока. За один ход разрешается делить площадь на две неравные ненулевые площади так, чтобы единство каждой отдельно взятой клетки не нарушалось(то есть клетку делить нельзя). Проигрывает тот, кто не может сделать ход. Кто выигрывает при условии правильной справедливой игры?

Решение

Задача решается с конца. Рассмотрим варианты деления площади для всех случаев от 1 до 10 клеток и найдем для них значения функции Шпрага-Гранди. Заметим, что для данной игры, в результате деления площади каждый раз на две новые площади, значение функции Шпрага-Гранди находится с помощью Ним-суммы.

Значение Шпрага-Гранди для n = 10 получается равным 0. Следовательно, игрок, делающий ход первым проигрывает. При любом его ходе, второй игрок переходит в позиции 4+4 или n=1/2/7, значение Шпрага-Гранди для которых также равно 0.

Ответ

Выигрывает тот, кто ходит вторым.

См. также

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать реферат

Полезное


Смотреть что такое "Функция Шпрага-Гранди" в других словарях:

  • Функция Гранди — функция, определённая для игр для 2 игроков, где проигрывает игрок, не имеющий возможности сделать очередной ход. Широко используется в теории игр. В случае дискретных игр иногда называется нимбером. Функция определена на множестве всех позиций… …   Википедия

  • Игра Гранди — это математическая игра на стратегию для двух игроков. Сначала существует одна куча предметов. Два игрока по очереди разделяют одну кучу на две кучи разных размеров. Игра заканчивается, когда остаются только кучи из двух и менее предметов и ни… …   Википедия

  • Ним (игра) — У этого термина существуют и другие значения, см. Ним (значения). Ним  математическая игра, в которой два игрока по очереди берут предметы, разложенные на несколько кучек. За один ход может быть взято любое количество предметов (большее… …   Википедия

  • Игра Ним — Ним  математическая игра, в которой два игрока по очереди берут предметы, разложенные на несколько кучек. За один ход может быть взято любое количество предметов (большее нуля) из одной кучки. Выигрывает игрок, взявший последний предмет. В… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»