도구스학업·수학

스프라그-그런디 수 계산기

게임 상태의 이동 관계를 넣으면 각 상태의 그런디 수를 mex(최소 제외수) 규칙으로 밑에서부터 계산합니다. 여러 게임을 합쳤을 때 XOR로 승패를 판정하는 과정도 보여 줍니다.

상태 이동 (한 줄에 «지금 다음»)

«A B»는 A에서 B로 한 수를 둘 수 있다는 뜻입니다. 화살표(->)나 쉼표로 써도 됩니다. 더 갈 곳이 없는 상태는 자동으로 종료(그런디 수 0)가 됩니다.

상태갈 수 있는 곳그런디 수
C(종료)0
BC1
AB, C2
밑에서부터 채웁니다. 종료 상태(갈 곳이 없는 상태)는 그런디 수가 0입니다. 나머지는 갈 수 있는 다음 상태들의 그런디 수 집합에서 mex(그 집합에 없는 가장 작은 음이 아닌 정수)를 구해 채웁니다.

같은 그래프를 여러 판 동시에 두는 경우를 가정합니다. 님이라면 무더기 여러 개가 이런 모양입니다.

먼저 두는 사람이 이깁니다

XOR = 2

선택한 시작 상태의 그런디 수: A=2

왜 XOR로 합쳐지는가. 여러 게임을 동시에 벌여 놓고 매 차례 그중 하나만 골라 두는 합게임의 그런디 수는, 스프라그-그런디 정리에 따라 각 게임 그런디 수의 XOR과 같습니다. 이 값이 0이 아니면 먼저 두는 사람이 상대를 늘 XOR 0인 자리로 돌려보낼 수 있어 이기고, 0이면 그 반대입니다.
돌 k개짜리 님 무더기의 그런디 수는 늘 k입니다. 0개부터 k−1개까지 모든 크기로 줄일 수 있어, 다음 상태들의 그런디 수가 귀납적으로 0,1,...,k−1이 됩니다. mex({0,...,k−1}) = k이므로 그런디 수가 곧 무더기 크기와 같아집니다. 위의 «님 무더기(0~5)» 예시로 직접 확인할 수 있습니다.

계산 방법

  1. 1한 줄에 «지금상태 다음상태»로 이동 관계를 입력합니다(화살표·쉼표·공백 모두 됩니다).
  2. 2더 갈 곳이 없는 상태가 자동으로 종료 상태(그런디 수 0)가 됩니다.
  3. 3각 상태의 그런디 수가 mex 규칙으로 밑에서부터 채워지는 과정을 봅니다.
  4. 4동시에 벌인 여러 게임의 시작 상태를 골라 XOR로 합쳐진 값과 승패를 확인합니다.

자주 묻는 질문

한 게임 상태를 숫자 하나로 요약한 값입니다. 그 상태에서 갈 수 있는 다음 상태들의 그런디 수 집합에서, 집합에 없는 가장 작은 음이 아닌 정수(mex)로 정합니다. 더 갈 곳이 없는 상태는 그런디 수가 0입니다.

0부터 하나씩 늘려가며 그 값이 집합에 있는지 확인해, 처음으로 없는 값을 찾으면 됩니다. 예를 들어 다음 상태들의 그런디 수가 {0, 1, 3}이면 2가 없으므로 mex는 2입니다.

돌 k개짜리 무더기에서는 0개부터 k−1개까지 모든 크기로 줄일 수 있습니다. 그 다음 상태들의 그런디 수가 귀납적으로 0, 1, ..., k−1이 되므로, mex({0,...,k−1}) = k가 되어 그런디 수가 늘 무더기 크기와 같아집니다.

스프라그-그런디 정리에 따르면, 여러 독립적인 비셈 게임을 동시에 벌여 놓고 매 차례 그중 하나만 골라 두는 합게임의 그런디 수는 각 게임 그런디 수의 XOR과 같습니다. 이 값이 0이 아니면 먼저 두는 사람이, 0이면 나중에 두는 사람이 이깁니다.

두 사람이 번갈아 두고, 둘 자리가 없어진 사람이 지며, 양쪽이 같은 수를 둘 수 있는 «비셈(부분게임적)» 게임에만 씁니다. 체스나 바둑처럼 두 사람이 서로 다른 말을 쓰는 게임에는 이 이론을 그대로 적용할 수 없습니다.

알아두면 좋은 점

  • 입력한 상태 전이가 사이클을 이루면(같은 상태로 돌아올 수 있으면) 그런디 수가 정의되지 않아 계산하지 않습니다. 게임이 끝나지 않을 수 있기 때문입니다.
  • 상태는 26개까지 다룹니다.
  • 두 사람이 서로 다른 규칙으로 두는 비대칭 게임(부분게임적이 아닌 게임)에는 이 정리를 적용할 수 없습니다.

함께 보면 좋은 도구

마지막 검증: 2026년 9월 3일 · 결과는 참고용 추정치입니다.