logo

スミス標準形の存在証明 📂位相データ分析

スミス標準形の存在証明

アルゴリズム

RR主イデアル領域の時、全ての行列 ARm×nA \in R^{m \times n}についてスミス標準形が一意に存在する。つまり、行列 ARm×nA \in R^{m \times n}に対して、次を満たすd1,,drRd_{1} , \cdots , d_{r} \in R可逆行列 PRm×mP \in R^{m \times m}QRn×nQ \in R^{n \times n}が存在する。 PAQ=[d10000000000dr000000000000]Rm×n PAQ = \begin{bmatrix} d_{1} & 0 & 0 & 0 & \cdots & 0 \\ 0 & \ddots & 0 & 0 & \cdots & 0 \\ 0 & 0 & d_{r} & 0 & \cdots & 0 \\ 0 & 0 & 0 & 0 & \cdots & 0 \\ \vdots & \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & 0 & 0 & \cdots & 0 \end{bmatrix} \in R^{m \times n} ここでd1,,drd_{1} , \cdots , d_{r}RR00であってはならず、d1drd_{1} \mid \cdots \mid d_{r}でなければならない。言い換えると、dk0d_{k} \ne 0dk+1d_{k+1}の因数divisorでなければならない。この時の一意性はdkd_{k}単元倍を無視する。

証明 1 2

戦略:行、列の交換とガウス消去法を使用するアルゴリズムで、具体的なスミス標準形を直接見つけてその存在を示す。

全ての主イデアル領域は一意因数分解領域である。

行列 AAは、PID上の行列なので、UFD上の行列でもある。従って、単元や00でない全ての要素AijA_{ij}は、ユニークな因数分解を持ち、その中で最も少ない因数の数を持つ要素の絶対値α>0\alpha > 0と表示し、ミニマルエントリーminimal Entryと呼ぶ。

ちなみにMunkeresの教科書ではZm×n\mathbb{Z}^{m \times n}で、単に最も小さい要素を選ぶのだが、整数環Z\mathbb{Z}ではなく、一般的な主イデアル領域ユークリッド領域である保証すらないため、要素だけ見て「最小」と判断するのは難しい。一般的なPIDできれいにミニマルエントリーを定める場合、因数分解を考えるのが妥当だ。ただし、このポストでは便宜上、「小さい」やa<ba < bのような表現が出てくるが、これは要素の大きさではなく、因数の数を比較していると理解すればいい。

与えられた行列はガウス消去法により続けて変化するため、α\alphaも文脈によって続けて変化することに注意せよ。

ちなみに、このアルゴリズムは与えられたAAに対して必ずスミス標準形を導けることを数学的に見せるためのアルゴリズムであり、特に効率的というわけではなくP,QP, Qも分からない。


ステップ1.

AAゼロ行列なら、そのままでスミス標準形なのでステップ4に進む。AAがゼロ行列でないなら、以下を実行する。

理解しやすくするために、まず行と列を交換して、α\alphaを左上の(1,1)(1,1)に引き上げよう。これから与えられた行列のほとんどを気にせずに、最初の行、最初の列だけを見ることになる。 A[αA12A21A22] A \sim \begin{bmatrix} \alpha & A_{12} & \cdots & \\ A_{21} & A_{22} & \cdots & \\ \vdots & \vdots & \ddots & \end{bmatrix}


ステップ2. k=1,,rk= 1, \cdots , r

(当然ながら、計算中にはrrが分からない。プログラムが終わると自然とrrが決まる。)

  • 全てのi,ji, jに対してαAij\alpha \mid A_{ij}ならば、dkαd_{k} \gets \alphaを用いる。αAij\alpha \mid A_{ij}なので、α\alphaを除くAAの最初の行と列の全ての要素が00になるまでガウス消去法を繰り返すことができる。繰り返しが終わったら、11行と11列を削除してステップ1に戻る。この時、行列AAのサイズは(mk)×(nk)(m - k) \times (n - k)になる。
  • 何らかのi,ji, jに対してαAij\alpha \nmid A_{ij}ならば、ステップ3に進む。

ステップ3.

ここからの議論は、行でも列でも、一方が成り立てば他方にも適用できるので、一般性を失わずにα0\alpha \ne 0A12A_{12}だけを扱おう。基本的にはステップ2で少なくとも一つのi,ji, jに対してαAij\alpha \nmid A_{ij}が保証され、(1,2)(1,2)の下にそのAijA_{ij}が来るように以下のCase1を実施することを目指す。

主イデアル領域はベズー領域である: PIDはベズー領域なので、拡張ユークリッドの定理が成立する。つまり、全てのa,bDa, b \in Dに対して、次を満たすm,nDm,n \in Dが存在する。 ma+nb=gcd(a,b) m a + n b = \gcd \left( a, b \right)

  • ケース1. αA12\alpha \nmid A_{12}の場合
    α\alphaはミニマルエントリーで、αA12\alpha \nmid A_{12}なので、gcd(α,A12)<α\gcd \left( \alpha, A_{12} \right) < \alphaである。拡張ユークリッドの定理によって、 mα+nA12 m \alpha + n A_{12} α\alphaより小さくするm,nDm,n \in Dが存在する。ガウス消去法によって、11列にmmを掛けた列と22列にnnを掛けた列を加えて、22列に代入する。この新しい列の最初の要素であるA12=gcd(α,A12)A_{12}' = \gcd \left( \alpha , A_{12} \right)は、元のα\alphaより小さく、計算自体からα\alphaの約数であるため、以前よりも小さく、新しいミニマルエントリーの候補だ。11列と22列を交換して、ステップ1に戻る(計算中に偶然、より小さいミニマルエントリーが存在する可能性もある)。
  • ケース2. αA12\alpha \mid A_{12}の場合
    kα+A12=0k \alpha + A_{12} = 0を満たす何らかのkZk \in \mathbb{Z}が存在するので、11列にkkを掛けて、22列から引く。すると、この新しい列の最初の要素であるA12A_{12} ' 00となる。ステップ3を繰り返す。
  • ケース3. A12=0A_{12} = 0の場合
    A120A_{12} \ne 0になるまで列交換を繰り返す。全てのj1j \ne 1に対して、全て

  1. Munkres. (1984). Elements of Algebraic Topology: p55~57. ↩︎

  2. https://en.wikipedia.org/wiki/Smith_normal_form#Algorithm ↩︎