대칭군 동치류 계산을 위한 행렬 기반 알고리즘

대칭군 동치류 계산을 위한 행렬 기반 알고리즘

초록

**
본 논문은 양의 정수 n에 대해 대칭군 Sₙ에 정의된 새로운 동치 관계를 소개하고, 해당 관계에 의해 형성되는 동치류의 개수를 행렬 표현을 이용해 효율적으로 계산하는 알고리즘을 제시한다.

**

상세 분석

**
논문은 먼저 n!개의 원소를 갖는 대칭군 Sₙ에 대해 “좌우 곱셈에 의한 동치 관계” ∼ 를 정의한다. 구체적으로 두 순열 σ, τ∈Sₙ에 대해 σ∼τ ⇔ ∃ π∈Sₙ such that τ = π σ π⁻¹·πⁿ, 여기서 πⁿ은 π의 n제곱을 의미한다. 이 관계는 일반적인 켤레(conjugacy) 관계에 n제곱 연산을 결합한 형태로, 기존의 켤레 클래스와는 다른 세분화된 클래스를 만든다.

동치류의 개수를 직접 구하는 것은 n이 커질수록 조합 폭발이 일어나기 때문에 비현실적이다. 저자는 이를 해결하기 위해 각 순열을 n×n 0‑1 행렬(즉, 순열 행렬)으로 표현하고, 동치 관계를 행렬 연산으로 전환한다. 구체적으로, σ를 행렬 M(σ)로 바꾸면 σ∼τ ⇔ ∃ P∈GLₙ(ℤ) such that M(τ)=P M(σ) P⁻¹·Pⁿ. 여기서 P는 순열 행렬 자체이며, Pⁿ은 행렬 거듭제곱이다.

핵심 아이디어는 “정규형”을 찾는 것이다. 저자는 모든 순열 행렬을 일련의 기본 블록(순환 블록)으로 분해하고, 각 블록의 길이와 위치 정보를 정수 벡터 v(σ)로 압축한다. 동치 관계는 이 벡터에 대한 특정 군 작용에 불변인지를 검사함으로써 판별된다. 따라서 동치류의 개수는 가능한 벡터 v의 종류를 세는 문제로 환원된다.

알고리즘은 다음 단계로 구성된다.

  1. 입력 n에 대해 Sₙ의 모든 순열을 순열 행렬 형태로 생성한다(실제 구현에서는 전열을 생성하지 않고, 순환 구조만을 탐색한다).
  2. 각 순열을 사이클 분해하고, 사이클 길이들의 멀티셋을 정수 파티션 형태로 기록한다.
  3. 파티션을 정규화하는 연산을 정의하여, 두 파티션이 동치 관계에 의해 동일한 정규형을 갖는지 판단한다.
  4. 동치형을 해시 테이블에 저장하고, 새로운 정규형이 발견될 때마다 카운터를 증가시킨다.

이 과정에서 저자는 파티션의 순열적 대칭을 고려해 중복 계산을 방지하고, 동적 프로그래밍을 이용해 파티션 생성 비용을 O(p(n))(p는 파티션 함수) 수준으로 낮춘다. 또한, 행렬 거듭제곱을 직접 수행하는 대신 사이클 길이에 대한 모듈러 연산을 사용해 O(1) 시간에 결과를 얻는다.

복잡도 분석 결과, 전체 알고리즘은 O(p(n)·n) 시간과 O(p(n)) 공간을 사용한다. 이는 기존의 전수 탐색(O(n!))에 비해 지수적 개선을 의미한다. 실험에서는 n=12까지의 경우 정확한 동치류 수를 0.02초 내에 계산했으며, n=20에서는 메모리 제한 없이 약 1.3초에 결과를 도출했다.

수학적 측면에서 저자는 이 동치 관계가 실제로는 Sₙ의 부분군 Hₙ = ⟨(1 2 … n)⟩에 대한 왼쪽·오른쪽 작용의 궤도(orbit)와 동치임을 증명한다. 따라서 동치류의 개수는 Hₙ‑공액 클래스의 수와 동일하며, 이는 Burnside의 보조정리(Lemma)를 이용해 또 다른 폐쇄형 식으로 표현될 수 있다. 그러나 저자는 행렬‑벡터 접근법이 구현과 확장에 더 직관적이라고 주장한다.

마지막으로, 논문은 이 방법을 다른 유한 군, 특히 교환군이나 대칭군의 부분군에 적용할 가능성을 제시하고, 행렬 기반 정규형이 군 이론과 조합 최적화 사이의 새로운 연결 고리 역할을 할 수 있음을 시사한다.

**