R 이 주아이디얼정역일 때, 모든 행렬A∈Rm×n 에 대해 스미스 노멀 폼이 유일하게 존재한다. 다시 말해, 행렬A∈Rm×n 에 대해 다음을 만족시키는 d1,⋯,dr∈R 과 가역행렬P∈Rm×m, Q∈Rn×n 이 존재한다.
PAQ=d1000⋮00⋱00⋮000dr0⋮00000⋮0⋯⋯⋯⋯⋱⋯0000⋮0∈Rm×n
여기서 d1,⋯,dr 은 R 에서 0 이 아니어야 하며, d1∣⋯∣dr 이어야한다. 다시 말해 dk=0 는 dk+1 의 인자divisor여야한다. 이 때 유일성은 dk 들의 단원배를 무시한다.
행렬A 는 PID 상의 행렬이므로 UFD 상의 행렬이기도 하다. 따라서 단원unity이나 0 이 아닌 모든 성분 Aij 는 유일한 인수분해를 가지며, 그 중 가장 적은 갯수의 인수를 가지는 성분의 절대값을 α>0 이라 나타내고 미니멀 엔트리minimal Entry라 부른다.
참고로 Munkeres 교재에서는 Zm×n 이라서 그냥 가장 작은 성분을 고르는데, 정수환 Z 가 아닌 일반적인 주아이디얼정역은 유클리드 정역이라는 보장조차 없으므로 원소만 보고 ‘가장 작다’를 따지기 곤란하다. 일반적인 PID에서 깔끔하게 미니멀 엔트리를 정하려면 소인수분해를 생각하는 게 타당하다. 다만 이 포스트에서는 편의상 ‘작다’거나 a<b 같은 표현이 나오는데, 이 역시 원소의 크기가 아니라 인수의 수를 비교하는 것이라고 보면 된다.
주어진 행렬은 가우스 소거법에 따라 계속 바뀌므로 α 역시 맥락에 따라 계속해서 바뀌는 것에 주의하라.
참고로 이 알고리즘은 주어진 A 에 대해서 반드시 스미스 노멀 폼을 유도할 수 있음을 수학적으로 보이기 편한 알고리즘일 뿐 딱히 효율적이지도 않고 P,Q 도 알 수 없다.
Step 1.
A 가 영행렬이면 그 자체로 이미 스미스 노멀 폼이므로 Step 4로 넘어간다. A 가 영행렬이 아니면 다음을 수행한다.
생각하기 쉽게 우선 행과 열을 교환해서 α 를 좌상단 (1,1) 으로 끌어올리자. 이제 우리는 주어진 행렬 대부분을 신경쓰지 않고 첫 행, 첫 열 근처만 볼 것이다.
A∼αA21⋮A12A22⋮⋯⋯⋱
Step 2. k=1,⋯,r
(당연히 계산 도중에는 r 을 알 수 없다. 프로그램이 끝나면 자연스럽게 r 이 결정된다.)
모든 i,j 에 대해 α∣Aij 라면 dk←α 을 대입한다. α∣Aij 이므로 α 를 제외한 A 의 첫번째 행과 열의 모든 성분이 0 이 될 때까지 가우스 소거법을 반복할 수 있다. 반복이 끝나면 1행과 1열을 삭제하고 Step 1로 돌아간다. 이제 행렬 A 의 크기는 (m−k)×(n−k) 다.
어떤 i,j 에 대해 α∤Aij 라면 Step 3로 넘어간다.
Step 3.
이제부터의 논의는 행이든 열이든 한 방향으로 되면 다른 한 쪽에도 적용할 수 있으니, 앞으로 일반성을 잃지 않고 α=0 와 A12 만 다루도록 하자. 기본적으로 Step 2에서 적어도 하나의 i,j 에 대해서는 α∤Aij 을 보장할 수 있고, (1,2) 에 그 Aij 이 오도록해서 아래의 Case 1을 시행하는 것을 목표로 한다.
Case 1. α∤A12 인 경우 α 는 미니멀 엔트리고 α∤A12 이므로 gcd(α,A12)<α 이다. 확장된 유클리드 정리에 따라
mα+nA12
를 α 보다 작게 만드는 m,n∈D 가 존재한다. 가우스 소거법에 따라 1열에 m 을 곱한 열과 2 열에 n 을 곱한 열을 더해 2열에 대입한다. 이 새로운 열의 첫번째 성분인 A12′=gcd(α,A12) 는 원래의 α 보다 작을 뿐만 아니라, 계산 자체에서 α 의 약수이므로 기존보다 더 작고 새로운 미니멀 엔트리의 후보다. 이에 따라 1열과 2열을 교환하고 Step 1로 돌아간다.(계산 중 우연한 기회로 더 작은 미니멀 엔트리가 존재할 수도 있다.)
Case 2. α∣A12 인 경우 kα+A12=0 를 만족 시키는 어떤 k∈Z 가 존재하므로, 1 열에 k 를 곱해서 2열에서 뺀다. 그러면 이 새로운 열의 첫번째 성분인 A12′ 는 0 이다. Step 3를 반복한다.
Case 3. A12=0 인 경우 A12=0 일 때까지 열교환을 반복한다. 만약 j=1 에 대해 모든 A1j 가 0 일 경우 A21 에 대해서 Step 3를 시행한다.
α∤A21 인 경우 A21′<α 다. 미니멀 엔트리를 갱신한다.
α∣A21 이면 A21′ 을 0 으로 만든다.
A21=0 이면 지금 행렬이 다음과 같이 생겼다는 의미다.
A∼α0⋮0A22⋮⋯⋯⋱A21=0 이므로, 2행을 1행에 더하면 α 는 그대로 있고
A∼α0⋮A22A22⋮⋯⋯⋱
과 같은 꼴이 된다. Ai1=0 을 만족하는 i번째 행과 2행을 교환하고 다시 Step 3를 반복한다. 만약 α 를 제외한 1행과 1열의 모든 성분이 0 이라도 α∤Aij 를 만족하는 i,j≥2 가 여전히 적어도 한 쌍 존재해야하므로 Case 3를 반복하면 언젠간 α∤A12 이어야한다.
Case 1에 따라 A11 의 값을 계속해서 줄여나갈 수 있고, Case 2에 따라 첫행과 첫열에서 α 외의 성분을 0 으로 만들 수 있고, Case 3에 따라 반드시 α∤Aij 인 Aij 가 (1,2) 에 위치하게 된다.
Step 4. d1∣⋯∣dr
Step 4로 넘어오는 방법은 Step 1에서 남은 A 가 영행렬인 경우 뿐이다.
우리는 Step 2에서 dk←α 와 같이 dk 들을 기록해왔다. 미니멀 엔트리였던 α 가 모든 Aij 를 나눌 수 있었다는 것은 이후 남겨진 행렬에서 확장된 유클리드 정리로 만들어지는 어떤 원소든 이 α 로 나누어진다는 것이 보장된다는 것이다. 따라서 d1∣⋯∣dr 이고, 다음의 스미스 노멀 폼을 얻는다.
d1000⋮00⋱00⋮000dr0⋮00000⋮0⋯⋯⋯⋯⋱⋯0000⋮0∈Rm×n
■
Munkres. (1984). Elements of Algebraic Topology: p55~57. ↩︎