공정 조합 게임
두 사람이 번갈아 두고, 둘 다 같은 수를 둘 수 있으며(공정성), 정보가 모두
공개되고 무승부가 없으며, 더 둘 수 없는 사람이 지는 게임을 공정 조합 게임
(impartial game) 이라 한다. 스프라그-그런디 정리는 이런 게임의 승패를 하나의
수로 환원한다.
님 게임
돌무더기가 여러 개 있고, 한 번에 한 무더기에서 원하는 만큼 가져간다. 마지막
돌을 가져가는 사람이 이긴다(normal play). 님의 필승 판정은 놀랍도록 간단하다.
모든 무더기 크기의 XOR가 0이 아니면 선공 승, 0이면 후공 승이다.
XOR가 0이 아니면 항상 XOR를 0으로 만드는 수가 있고, 0이면 어떤 수를 둬도
0이 아니게 된다 — 이 두 사실이 귀납적으로 필승 전략을 보장한다.
그런디 수 (Sprague-Grundy)
일반 게임의 한 상태 \(s\)에 대해, 거기서 한 번에 갈 수 있는 다음 상태들의 그런디
수 집합을 보고 그 집합에 없는 가장 작은 음이 아닌 정수를 그런디 수로
정의한다. 이 연산을 mex(minimum excludant)라 한다.
$$ g(s) = \operatorname{mex}\{\, g(t) : s \to t \,\} $$
- 더 둘 수 없는(종료) 상태의 그런디 수는 \(0\).
- \(g(s) = 0\)이면 그 상태는 패배(P-position), \(g(s) \ne 0\)이면 승리
(N-position) 다.
직관: 크기 \(k\)인 님 무더기의 그런디 수가 정확히 \(k\)이므로, 그런디 수는 "이
게임이 크기 얼마짜리 님 무더기와 같은가"를 알려 준다.
스프라그-그런디 정리
여러 게임을 동시에 진행(한 턴에 그중 한 게임에서만 둠)하는 합 게임의 그런디
수는 각 게임 그런디 수의 XOR다.
$$ g(G_1 + G_2 + \dots + G_k) = g(G_1) \oplus g(G_2) \oplus \dots \oplus g(G_k) $$
따라서 복잡한 게임도 (1) 부분 게임마다 그런디 수를 구하고, (2) 전부 XOR한 뒤,
(3) 0인지로 승패를 판정하면 된다. 이 정리가 조합 게임 이론의 핵심이다.
적용 조건
normal play(마지막에 두는 사람이 승), 공정성, 유한·무사이클(또는 잘 정의된
종료)이 전제다. misère(마지막에 두면 짐)나 비공정 게임에는 그대로 쓸 수
없으니 주의한다.