ジョモロジアンのアルゴリズム誘導
📂位相データ分析ジョモロジアンのアルゴリズム誘導
概要
ZomorodianとCarlssonの論文「Computing Persistent Homology」で紹介されたアルゴリズムの導出プロセスを説明する。抽象的なシンプレクシャルコンプレックスで作られたフィルタードコンプレックスを受け取り、P-インターバルを返す。計算機で扱いにくいパーシステントモジュールの構築を省略し、行列のリダクションにより持続的ホモロジーを計算する。
導出
Part 0. 事前調査

アルゴリズムの本格的な導出に先立ち、上の図で描写されるパーシステンスコンプレックスが数式的にどのような形式であるかをまず検討する。このプロセスをしっかりと固めておかないと、論文を読むのが非常に苦痛になるだろう。
- まず、下部にある数字をdegとし、これが0から5まで増加しながら次のようにフィルタードコンプレックスを形成する。
{a,b}=K0⊂K1⊂K2⊂K3⊂K4⊂(K4∪{acd})=K5
- degとは関係なく、Kは2-シンプレックスとして、ホモロジーを考慮する文脈で次のようなチェインコンプレックスを形成する。
C2⟶∂2C1⟶∂1C0
アルゴリズムの目標は、このような∂2と∂1がデータに与える代数的トポロジカル情報、たとえばベッチ数βkなどが、どのdegで現れていつdegで消えるかを次のように計算することである。
L0=L1={(0,∞),(0,1),(1,1),(1,2)}{(2,5),(3,4)}

L0はβ0に該当する情報、つまりコンポーネントがいつ現れて消えるかを示すP-インターバルで構成され、L1はβ1に該当する情報、つまり空間で「穴」と呼べるものがいつ現れて消えるP-インターバルで構成されている。
Part 1. ∂1
論文では、著者たちはその計算が全てのフィールドで可能であると主張しているが、簡単にグレード付きモジュールであるZ2[t]-モジュールでどのような計算が行われるかを見てみよう。これからCkの同次基底を{ej}、Ck−1の同次基底を{e^i}と表記することにする。ここで同次とは、Ckをグレード付きモジュールと見たとき、項が一つしかないという意味で受け取ってもよく、つまりt2+tのようではなくt4のような単項形式であると考えても構わないということである。

degMk(i,j)=degej−dege^i
ホモロジー代数にある程度慣れていれば、今度は∂kに対応する境界行列Mkを上のテーブルと方程式に合わせて構成し、そのスミス標準形M~1を求めに行く感じがするだろう。まずk=1の場合を考えてみると、先に行列の基底が同次であると言ったので、次のように唯一のM1を得ることができる。

このように基底を持って行列を構成することは、∂kの一つの役割がtnを掛けること(群作用を取ることでグレード付きモジュールで次数が上がること)の逆を行うことだと見ると理解できる。感覚を掴むために、直接計算してみよう。
degM1(2,5)=degM1(4,5)=degM1(2,2)=degac−degc=3−1=2=degt2degac−dega=3−0=3=degt3degbc−degc=1−1=0=degt0=deg1
先に言ったように、今度はこのエシュロン形、特にカラムエシュロン形を作
ると次のようになる。

大学で学んだ線形代数を思い出してみると、各カラムで一番上にありながら0でない、図のように四角で囲んだ部分のようなものをピボットと呼んでいた。ここで次の2つの補助定理を紹介する。
- (1): カラムエシュロン形の対角成分はスミス標準形の対角成分と同じである。
- (2): M~kのi行のピボットがM~k(i,j)=tnであればホモロジーグループHk−1の∑dege^iF[t]/tnに該当し、それ以外はHk−1の∑dege^iF[t]に該当する。これはLk−1が(dege^i,dege^i+n)と(dege^i,∞)で構成されることと同値である。
つまり、
- 補助定理(1)により、持続的ホモロジーを計算する際は行操作が必要なく、列操作だけで良いことになる。
- 補助定理(2)により、Lk−1は(dege^i,dege^i+n)と(dege^i,∞)で構成される。
- 最初の行のピボットがt1であり、degd=1であるため、(1,1+1)を得る。
- 2番目の行のピボットがt0であり、degc=1であるため、(1,1+0)を得る。
- 3番目の行のピボットがt1であり、degb=0であるため、(0,0+1)を得る。
- 4番目の行にピボットがなく、dega=0であるため、(0,∞)を得る。
これは、アルゴリズムを導出する前に言及したL0と完全に一致する。
L0={(0,∞),(0,1),(1,1),(1,2)}
Part 2. ∂2

L1を得るための∂2の行列形M2は上のようである。しかし、次の補助定理で計算を減らし、簡単に進めることができる。
- (3): Ck+1の標準基底とZkに対する∂k+1を表現するためには、M~kに対応する行をMk+1から単に削除しても良い。
言葉は少し難しく聞こえるが、現在の具体的な状況では、M~1の1-シンプレックスab,bc,cd,ad,acの中で、cd,bc,abのピボットだけが残っているので、これを単にM2から削除しても良いということである。直感的に考えると、これらがすでにk次元で使用されたので、k+1では見る必要もないという程度に受け取っても構わない。こうしてカラムエシュロン形M~2を直接構築する過程を省略し、その3つの行を削除してみると、次のように下が切り取られたMˇ2を得る。
z2=z1=ac−bc−abad−bc−cd−ab
再び補助定理(2)に従って計算してみよう。
- 最初の行のピボットがt1であり、
degz2=deg(ac−bc−ab)=maxdeg{ac,bc,ab}=3
であるため、(3,3+1)を得る。
- 2番目の行のピボットがt3であり、
degz1=deg(ad−bc−cd−ab)=maxdeg{ad,bc,cd,ab}=2
であるため、(2,2+3)を得る。
これは、アルゴリズムを導出する前に言及したL1と完全に一致する。
L1={(2,5),(3,4)}
このようなプロセスをコンプレックスKの次元dimKまで繰り返すと、求めていたアルゴリズムを得ることができる。行列の左右の大きさは∂kに従い、その成分はdegに従って充填されると考えると少し混乱しなくなるだろう。
■
一方、補助定理(1)で列操作だけで十分だということは、これまでの導出で見たように行列表現に固執する理由がないということでもある。また、補助定理(3)により、「過去にすでに計算が終わった」部分に対して大胆に行を捨てるような効率的なプロシージャが含まれており、これにはピボットでないカラムを「マーキング」する能力などが必要である。結果として、実際のアルゴリズムの擬似コードpseudo Codeは、行列をそのまま使用するのではなく、もう少し高度なデータ型、ディクショナリーやデータフレームなどで説明されることになる。これは実際に体験すると非常に戸惑いやすく難しい。
実装