logo

ハベル-ハキミ アルゴリズムの証明 📂グラフ理論

ハベル-ハキミ アルゴリズムの証明

定理

非増加シーケンス D=(d1,,dn)D = (d_{1} , \cdots , d_{n}) が与えられているとしよう。DDグラフィックであれば、次の方法で DD の実現 GG を見つけることができる。

  • ステップ1.
    nn 個の頂点 v1,,vnv_{1} , \cdots , v_{n} を持つヌルグラフを作る。
  • ステップ2. k=1,,nk = 1, \cdots , n
    • ステップ2-1.
      vkv_{k}vk+1,,vdk+1v_{k+1} , \cdots , v_{d_{k} + 1} を繋げる。
    • ステップ2-2.
      dk+1,,ddk+1d_{k+1} , \cdots , d_{d_{k}+1}11 ずつ減少させる。
    • ステップ2-3.
      dk0d_{k} \gets 0 のように代入する。D=(0,,0)D = (0,\cdots , 0) になるまでステップ2.を繰り返す。

DDグラフィックであれば、次数が d1d_{1} の頂点 v1v_{1}v2,,vd1+1v_{2} , \cdots , v_{d_{1} + 1} と隣接する実現 GG が存在する。

解説

ハベル-ハキミ アルゴリズムは、エルデシュ-ガライの定理の存在を保証する実現を具体的に見つけるアルゴリズムだ。その原理は単に最も次数が高い頂点から処理して、細かい残り物がないようにするだけだ。先に次数を与えてからグラフを構築する点で、ランダムグラフの次数がどのような分布をするかを構築するのに直接使われる。

20200319\_004730.png 例えば、(5,5,5,3,2,2,1,1)(5,5,5,3,2,2,1,1) のようなシーケンスがあれば、ハベル-ハキミ アルゴリズムで得られる実現は上のようになる。時間が許せば、エルデシュ-ガライの定理を使ってグラフィックなシーケンスを作ってみて、ハベル-ハキミ アルゴリズムなしで実現を探せることを推奨する。その有用性がわかるはずだ。

証明

DD が更新されるたびに、次数の最大値は徐々に小さくなる。各ステップで次数が最大のノード vkv_{k}vk+1,,vdk+1v_{k+1} , \cdots , v_{d_{k} + 1} と隣接するだけでよく、次数が d1d_{1} の最初の頂点 v1v_{1}v2,,vd1+1v_{2} , \cdots , v_{d_{1} + 1} と隣接していることを示せば、数学的帰納法によって証明が完了する。

DD の任意の実現 RR の頂点が deg(vi)=di\deg (v_{i}) = d_{i} を満たすとして、次のように二つの集合を定義しよう。 TR:={v2,,vd1+1}NR(v1):={vV(R):vv1E(R)} T_{R} := \left\{ v_{2} , \cdots , v_{d_{1} + 1} \right\} \\ N_{R}(v_{1}) := \left\{ v \in V(R) : vv_{1} \in E(R) \right\} 定義で、TRT_{R} はシーケンス DDv1v_{1} の後の d1d_{1} 個の頂点を集めた集合であり、NR(v1)N_{R}(v_{1})v1v_{1}ニューバーフッド、つまり RR で実際に v1v_{1} と隣接している頂点の集合だ。次に、次の整数 tRt_{R} を考えてみよう。 tR:=NR(v1)TR t_{R} := \left| N_{R} (v_{1}) \cap T_{R} \right| 今、GGDD の実現の中で tGt_{G} を最大化する実現であることを示さなければならない。これはつまり、TG=NG(v1)T_{G} = N_{G}(v_{1})tG=d1t_{G} = d_{1} を満たし、次数が d1d_{1}v1v_{1}v2,,vd1+1v_{2} , \cdots , v_{d_{1} + 1} と隣接していることを意味する。もしtG=d1t_{G} = d_{1} ならば、自然にTG=NG(v1)T_{G} = N_{G}(v_{1}) であり、GGtGt_{G} を最大化する実現でいるためにこれ以上示す必要はない。今、tG<d1t_{G} < d_{1} の場合を考えてみよう。もしtG=tG+1t_{G'} = t_{G} + 1 を満たすDD の別の実現 GG' が存在すれば20200321\_150533.png

tG<d1t_{G'}<d_{1} の場合、v1v_{1} は何らかのvxTGv_{x} \in T_{G'} と隣接していない代わりに、何らかの vyTGcv_{y} \in T_{G'}^{c} と隣接する必要がある。上の図での赤い点線は、GG には存在するがGG' では削除されたエッジであり、赤い実線はv1v_{1} の次数が一定でなければならないために新しく作られたエッジだ。

20200321\_150546.png

v1v_{1} と同様に、vxv_{x}vyv_{y} の次数も維持されなければならず、もともと GGvxv_{x} とは隣接しておらずvyv_{y} と隣接していた vzv_{z} を一つ選んでvxvzv_{x} v_{z} を追加しvyvzv_{y} v_{z} を削除する。こうすると、元の次数シーケンス DD は全く変わらず、GG'DD の実現と考えられる。しかし、GG'TGT_{G'} からvxv_{x} が一つ欠け、NG(v1)N_{G'}(v_{1})vyv_{y} が一つ追加されたため、tGt_{G'} はむしろtGt_{G} より小さくなった。これはtG=tG+1t_{G'} = t_{G} + 1 を満たす実現GG' の存在に矛盾し、したがってtG=d1t_{G} = d_{1} でなければならない。つまり、実現GGv1v_{1}v2,,vd1+1v_{2} , \cdots , v_{d_{1} + 1} と隣接している。