§D3.16行列木定理と全域木の個数

最終更新

グラフの全域木が何個あるかは、辺の選び方を数え上げる問題です。この記事では、その個数が、グラフから作った1つの行列の余因子として求まることを示します。数え上げの問題が行列式の計算に置き換わるので、必修で扱った余因子展開と行基本変形がそのまま使えます。

グラフと木についての一般的な事項は「離散数学とアルゴリズム」が扱い、グラフの固有値による解析は「組合せ論・グラフ理論」が扱います。本記事は、必要な語をその場で定義し、線形代数の側から証明を組み立てます。

1 グラフとラプラシアン行列

はじめに、扱う対象を定めます。辺が同じ2頂点を何本も結ぶ場合と、辺が1つの頂点から出て同じ頂点へ戻る場合を許します。

定義 1.1 (多重グラフ). 有限集合V={1,2,…,n}V = \{1, 2, \dots, n\}と有限集合EE、およびEEの各要素eeに対してVVの 1個または2個の要素からなる集合を対応させる規則の組G=(V,E)G = (V, E)を多重グラフという。eeに2個の頂点{i,j}\{i, j\}が対応するとき、eeはiiとjjを結ぶといい、1個の頂点{i}\{i\}が対応するとき、eeを頂点iiのループという。同じ2頂点を結ぶ辺が2本以上あることを許し、それらを互いに異なる辺として区別する。

辺の集合を数えるので、平行な2本の辺は互いに異なる対象として扱います。この約束が、あとで全域木の個数に効きます。

定義 1.2 (ラプラシアン行列). 多重グラフG=(V,E)G = (V, E)について、相異なるi,j∈Vi, j \in Vに対しaija_{ij}をiiとjjを結ぶ辺の本数とし、aii=0a_{ii} = 0と定める。nn次正方行列A=(aij)A = (a_{ij})をGGの隣接行列という。またdi=∑j≠iaijd_i = \sum_{j \ne i} a_{ij}とおき、D=diag⁡(d1,…,dn)D = \operatorname{diag}(d_1, \dots, d_n)とする。

L(G)=D−AL(G) = D - A

をGGのラプラシアン行列という。

aii=0a_{ii} = 0と定め、did_iをループを数えずに定めましたので、ループはL(G)L(G)にまったく寄与しません。L(G)L(G)は対称行列であり、各行の成分の和はdi−∑j≠iaij=0d_i - \sum_{j \ne i} a_{ij} = 0です。この2つの性質だけを、以下の議論で使います。

定義 1.3 (全域木). 多重グラフG=(V,E)G = (V, E)において、相異なる頂点v1,…,vkv_1, \dots, v_k(k≥1k \ge 1)と相異なる辺e1,…,eke_1, \dots, e_kで、各iiについてeie_iがviv_iとvi+1v_{i+1}を結ぶもの(ただしvk+1=v1v_{k+1} = v_1と読む)を閉路という。k=1k = 1の場合はループ1本、k=2k = 2の場合は同じ2頂点を結ぶ相異なる2本の辺が閉路である。

GGの全域木とは、辺の部分集合F⊆EF \subseteq Eであって、(V,F)(V, F)が連結であり、かつ(V,F)(V, F)が閉路をもたないものをいう。全域木の個数をτ(G)\tau(G)と書く。

全域木を辺の集合として数えますので、平行な辺は互いに異なる全域木を与えます。またループはそれ自体が閉路ですので、どの全域木にも属しません。次の例で、この2点を確かめます。

例 1.4 (多重辺とループ).V={1,2}V = \{1, 2\}とし、11と22を結ぶ辺をkk本(k≥1k \ge 1)、頂点11のループを1本もつ多重グラフをGGとします。ループはL(G)L(G)に寄与しませんので

L(G)=(k−k−kk)L(G) = \begin{pmatrix} k & -k \\ -k & k \end{pmatrix}

であり、4つの余因子はいずれもkkです。一方、GGの全域木はkk本の辺から1本を選んだものに限られ、τ(G)=k\tau(G) = kです。ループを加える前と後で、L(G)L(G)もτ(G)\tau(G)も変わりません。

2 余因子がどれも等しいこと

行列木定理は「どの余因子も」全域木の個数に等しいと述べます。まず、余因子がどれも等しいことを、L(G)L(G)の各行の成分の和が00であることだけから導きます。そのために、余因子を並べた行列ともとの行列の積を計算します。

補題 2.1 (余因子行列との積).n≥2n \ge 2とし、A=(aij)A = (a_{ij})をnn次正方行列とする。MijM_{ij}をAAから第ii行と第jj列を除いて得られるn−1n-1次行列の行列式とし、Cij=(−1)i+jMijC_{ij} = (-1)^{i+j} M_{ij}を(i,j)(i, j)余因子という。(i,j)(i, j)成分がCjiC_{ji}であるnn次正方行列をadj⁡A\operatorname{adj} Aと書くと

A⋅adj⁡A=adj⁡A⋅A=(det⁡A)IA \cdot \operatorname{adj} A = \operatorname{adj} A \cdot A = (\det A) I

が成り立つ。

証明.A⋅adj⁡AA \cdot \operatorname{adj} Aの(i,k)(i, k)成分は∑jaijCkj\sum_{j} a_{ij} C_{kj}である。

i=ki = kのとき、これは第ii行に沿った余因子展開そのものであり、値はdet⁡A\det Aである。

i≠ki \ne kのとき、AAの第kk行を第ii行で置き換えて得られる行列をBBとする。BBから第kk行を除いた部分はAAから第kk行を除いた部分と一致するので、BBの(k,j)(k, j)余因子はCkjC_{kj}に等しい。したがってBBの第kk行に沿った余因子展開は∑jaijCkj\sum_j a_{ij} C_{kj}である。ところがBBは第ii行と第kk行が等しいので、行列式の交代性よりdet⁡B=0\det B = 0である。よって∑jaijCkj=0\sum_j a_{ij} C_{kj} = 0となる。

以上よりA⋅adj⁡A=(det⁡A)IA \cdot \operatorname{adj} A = (\det A) Iが成り立つ。列に沿った余因子展開について同じ議論を行えばadj⁡A⋅A=(det⁡A)I\operatorname{adj} A \cdot A = (\det A) Iを得る。▨

この補題をL(G)L(G)へ適用します。使うのは、各行の成分の和が00であることだけです。

命題 2.2 (ラプラシアン行列の余因子).n≥2n \ge 2とし、GGを頂点がnn個の多重グラフ、L=L(G)L = L(G)とする。このとき、ある実数ccが存在して、LLのすべての余因子CijC_{ij}がccに等しい。

証明. 成分がすべて11である列ベクトルを1\mathbf{1}と書く。LLの各行の成分の和は00であるからL1=0⃗L\mathbf{1} = \vec 0である。1≠0⃗\mathbf{1} \ne \vec 0なのでLLは正則でなく、したがってdet⁡L=0\det L = 0である。補題 2.1より

L⋅adj⁡L=adj⁡L⋅L=OL \cdot \operatorname{adj} L = \operatorname{adj} L \cdot L = O

が成り立つ。LLの階数によって場合を分ける。

rank⁡L=n−1\operatorname{rank} L = n - 1の場合。§D3.10 系 4.1よりKer⁡L\operatorname{Ker} Lの次元は11であり、1∈Ker⁡L\mathbf{1} \in \operatorname{Ker} Lかつ1≠0⃗\mathbf{1} \ne \vec 0であるからKer⁡L={t1:t∈R}\operatorname{Ker} L = \{ t\mathbf{1} : t \in \mathbb{R}\}である。等式L⋅adj⁡L=OL \cdot \operatorname{adj} L = Oはadj⁡L\operatorname{adj} Lの各列がKer⁡L\operatorname{Ker} Lに属することを述べているので、adj⁡L\operatorname{adj} Lの各列は1\mathbf{1}のスカラー倍であり、各列の成分はその列の中ですべて等しい。またadj⁡L⋅L=O\operatorname{adj} L \cdot L = Oより、adj⁡L\operatorname{adj} Lの各行ベクトルr⃗⊤\vec r^\topはr⃗⊤L=0⃗⊤\vec r^\top L=\vec 0^\topを満たす。L⊤=LL^\top=LなのでLr⃗=0⃗L\vec r=\vec 0、すなわちr⃗∈Ker⁡L=span⁡{1}\vec r\in\operatorname{Ker}L=\operatorname{span}\{\mathbf 1\}であり、各行の成分もその行の中ですべて等しい。列の中で等しく、かつ行の中で等しいので、adj⁡L\operatorname{adj} Lの成分はすべて等しい。

rank⁡L≤n−2\operatorname{rank} L \le n - 2の場合。LLから1行と1列を除いて得られるn−1n-1次行列をL′L'とする。行を1本除いても列ベクトルの間に成り立つ一次関係は保たれるので列階数は増えず、列を1本除いても列の部分集合を取るだけなので列階数は増えない。よってrank⁡L′≤rank⁡L≤n−2<n−1\operatorname{rank} L' \le \operatorname{rank} L \le n-2 < n-1であり、L′L'は正則でないからdet⁡L′=0\det L' = 0である。したがってすべての余因子が00であり、adj⁡L=O\operatorname{adj} L = Oとなる。

いずれの場合もadj⁡L\operatorname{adj} Lの成分はすべて等しい。adj⁡L\operatorname{adj} Lの(i,j)(i, j)成分はCjiC_{ji}であったから、LLのすべての余因子が等しい。▨

3 辺の削除と縮約

全域木の個数の側にも、余因子の側にも、同じ形の分解があります。「その辺を使うか使わないか」で場合を分けるという分解です。まず全域木の側で確かめます。

定義 3.1 (辺の削除と縮約).G=(V,E)G = (V, E)を多重グラフ、e∈Ee \in Eをループでない辺とし、eeの端点をuuとvvとする。

G−eG - eは、EEからeeだけを取り除いて得られる多重グラフとする。

G/eG / eは、uuとvvを1つの新しい頂点wwに同一視し、EEからeeを取り除いて得られる多重グラフとする。ee以外の辺は、端点がuuまたはvvであったものをwwを端点とする辺へ読み替える。とくに、ee以外にuuとvvを結ぶ辺があれば、それはwwのループになる。

補題 3.2 (削除と縮約による分解).GGを多重グラフ、eeをループでない辺とすると

τ(G)=τ(G−e)+τ(G/e)\tau(G) = \tau(G-e) + \tau(G/e)

が成り立つ。

証明.GGの全域木を、eeを含まないものと含むものに分ける。

eeを含まない全域木の全体は、G−eG - eの全域木の全体と一致する。実際、eeを含まない辺の部分集合FFについて、(V,F)(V, F)が連結であるという条件も、閉路をもたないという条件も、GGで考えてもG−eG - eで考えても同じ条件である。よって、この部分の個数はτ(G−e)\tau(G-e)である。

eeを含む全域木FFに対し、φ(F)=F∖{e}\varphi(F) = F \setminus \{e\}をG/eG/eの辺の集合とみなす。

φ(F)\varphi(F)がG/eG/eの全域木であることを示す。連結性については、G/eG/eの2頂点を取り、それらのもとになるGGの頂点を(V,F)(V, F)の道で結び、その道をG/eG/eへ読み替えればよい。道がeeを通る場合、その部分は頂点wwに潰れる。次にφ(F)\varphi(F)が閉路CCをもったとして矛盾を導く。CCの辺はF∖{e}F \setminus \{e\}の辺である。CCがwwを通らなければ、CCはそのまま(V,F)(V, F)の閉路であり、FFが全域木であることに反する。CCがwwを通る場合、CCの辺をGGへ戻すと、uuまたはvvから出てuuまたはvvへ戻る道が得られる。両端が同じ頂点であれば(V,F)(V, F)の閉路になり矛盾する。両端がuuとvvであれば、その道にeeを加えたものが(V,F)(V, F)の閉路になり、やはり矛盾する。

逆にG/eG/eの全域木F′F'に対し、ψ(F′)=F′∪{e}\psi(F') = F' \cup \{e\}をGGの辺の集合とみなす。wwを端点としていた辺は、GGにおける端点uuまたはvvへ戻す。(V,ψ(F′))(V, \psi(F'))は連結である。実際、F′F'がG/eG/eを連結にしており、eeがuuとvvを結ぶからである。閉路をもたないことを示す。閉路CCがあったとする。CCがeeを含まない場合を2つに分ける。CCがuuとvvの一方しか通らないかどちらも通らなければ、CCをG/eG/eへ読み替えたものは頂点も辺も相異なるままであり、F′F'の閉路になって矛盾する。CCがuuとvvの両方を通れば、CCはuuとvvによって2本の道に分かれ、e∉Ce \notin Cよりどちらの道も辺を1本以上もつ。一方の道をG/eG/eへ読み替えると、wwを出てwwへ戻り、途中の頂点と辺がすべて相異なる閉路になるので、やはり矛盾する。CCがeeを含む場合、eeはループでないのでCCは2本以上の辺をもち、CCからeeを除くとuuとvvを結ぶ長さ11以上の道が残る。この道をG/eG/eへ読み替えるとwwを出てwwへ戻る閉路になり、矛盾する。

φ\varphiとψ\psiは互いに逆であるから、eeを含む全域木の個数はτ(G/e)\tau(G/e)である。 2つの場合を合わせてτ(G)=τ(G−e)+τ(G/e)\tau(G) = \tau(G-e) + \tau(G/e)を得る。▨

4 行列木定理

定理 4.1 (行列木定理).00次の正方行列(行も列もない行列)の行列式は11と約束します。

GGを頂点がn≥1n \ge 1個の多重グラフとする。頂点rrを1つ選び、L(G)L(G)から第rr行と第rr列を除いて得られるn−1n-1次行列をLr(G)L_r(G)と書くと

det⁡Lr(G)=τ(G)\det L_r(G) = \tau(G)

が成り立つ。n≥2n \ge 2のとき、命題 2.2と合わせて、L(G)L(G)のどの余因子もτ(G)\tau(G)に等しい。

証明. ループでない辺の本数についての帰納法で示す。主張は、頂点の個数n≥1n \ge 1と根rrの取り方を問わずに証明する。

ループでない辺が00本の場合。n=1n = 1ならばLr(G)L_r(G)は00次行列でありdet⁡Lr(G)=1\det L_r(G) = 1である。一方、辺の集合として空集合が唯一の全域木であるからτ(G)=1\tau(G) = 1となり、一致する。n≥2n \ge 2ならばL(G)=OL(G) = OなのでLr(G)L_r(G)は11次以上の零行列でありdet⁡Lr(G)=0\det L_r(G) = 0である。また相異なる2頂点を結ぶ道が存在しないので連結な全域部分グラフは存在せず、τ(G)=0\tau(G) = 0となり、一致する。

ループでない辺が1本以上ある場合。そのような辺eeを1本取り、端点をuuとvvとする。このときn≥2n \ge 2である。命題 2.2よりdet⁡Lr(G)\det L_r(G)はrrの取り方によらないので、r=vr = vの場合を示せばよい。

L(G)L(G)とL(G−e)L(G-e)を比べると、eeは(u,u)(u,u)成分と(v,v)(v,v)成分に+1+1を、(u,v)(u,v)成分と(v,u)(v,u)成分に−1-1を寄与する。第vv行と第vv列を除いたLvL_vにおいては、eeの寄与は(u,u)(u,u)成分の+1+1だけである。すなわち、Lv(G)L_v(G)の第uu列はLv(G−e)L_v(G-e)の第uu列に、第uu成分が11で他が00であるベクトルε⃗\vec\varepsilonを加えたものであり、他の列は両者で一致する。行列式の第uu列についての線形性より

det⁡Lv(G)=det⁡Lv(G−e)+det⁡N\det L_v(G) = \det L_v(G-e) + \det N

となる。ここでNNは、Lv(G)L_v(G)の第uu列をε⃗\vec\varepsilonで置き換えた行列である。

det⁡N\det Nを第uu列に沿って余因子展開すると、ε⃗\vec\varepsilonの00でない成分は第uu成分だけであるから、det⁡N\det NはNNから第uu行と第uu列を除いた行列の行列式に等しい。これはL(G)L(G)から第uu行と第uu列、第vv行と第vv列を除いた行列にほかならない。

この行列がLw(G/e)L_w(G/e)に等しいことを確かめる。i,j∉{u,v}i, j \notin \{u, v\}に対し、G/eG/eにおいてiiとjjを結ぶ辺の本数はGGにおけるそれと等しい。またi∉{u,v}i \notin \{u, v\}に対し、G/eG/eにおけるiiの次数も、GGにおけるそれと等しい。iiに接続する辺は、他方の端点がwwへ読み替えられるだけで本数が変わらず、iiのループの本数も変わらないからである。よって両者の成分は一致する。

G−eG - eはループでない辺がGGより1本少なく、G/eG/eではループでない辺のうちeeが消え、eeに平行であった辺がループへ変わるので、いずれも帰納法の仮定を適用することができる。したがって

det⁡Lv(G)=τ(G−e)+τ(G/e)\det L_v(G) = \tau(G-e) + \tau(G/e)

となり、補題 3.2より右辺はτ(G)\tau(G)に等しい。▨

主張が「どの余因子も」と述べていることは、計算の自由度として使うことができます。次数の大きい頂点を根に選べば、残る行列の非零成分が減ります。

5 連結でないグラフでは 0 になる

全域木は連結であることを条件に含むので、もとのグラフが連結でなければ全域木は存在しません。このことは、余因子の値としてそのまま現れます。

系 5.1 (連結性との対応). 頂点がn≥1n \ge 1個の多重グラフGGについて、τ(G)=0\tau(G) = 0であることと、GGが連結でないことは同値である。したがってn≥2n \ge 2のとき、L(G)L(G)の余因子がすべて00であることと、GGが連結でないことは同値である。

証明.GGが連結でないとする。全域木FFが存在すれば(V,F)(V, F)は連結であり、F⊆EF \subseteq EよりGG自身も連結になる。これは仮定に反するのでτ(G)=0\tau(G) = 0である。

GGが連結であるとする。辺の本数についての帰納法でτ(G)≥1\tau(G) \ge 1を示す。GGが閉路をもたなければ、EE自身が全域木でありτ(G)≥1\tau(G) \ge 1である。GGが閉路CCをもつならば、CCの辺eeを1本取る。G−eG - eは連結である。実際、eeを通る道があれば、そのeeの部分をCCの残りの辺がなす道で置き換えることができるからである。辺の本数が減ったので帰納法の仮定よりτ(G−e)≥1\tau(G-e) \ge 1であり、G−eG - eの全域木はGGの全域木でもあるからτ(G)≥1\tau(G) \ge 1である。▨

6 完全グラフの全域木の個数

行列木定理の使い方を、頂点がnn個で相異なる2頂点がすべて1本の辺で結ばれたグラフ、すなわち完全グラフKnK_nで確かめます。

例 6.1 (完全グラフの全域木).n≥2n \ge 2とします。KnK_nではすべての頂点の次数がn−1n-1であり、相異なる2頂点を結ぶ辺は1本ですので、成分がすべて11であるnn次正方行列をJnJ_nと書くと

L(Kn)=nIn−JnL(K_n) = n I_n - J_n

です。実際、対角成分はn−1n - 1、非対角成分は−1-1です。根を1つ選んで第m=n−1m = n-1次の行列Lr(Kn)=nIm−JmL_r(K_n) = n I_m - J_mの行列式を求めます。

各列の成分の和は(n−1)+(m−1)⋅(−1)=n−m=1(n-1) + (m-1)\cdot(-1) = n - m = 1です。そこで第22行から第mm行までを第11行に加えると、行列式を変えずに第11行を(1,1,…,1)(1, 1, \dots, 1)にすることができます。続いてi≥2i \ge 2について第11行を第ii行に加えると、第ii行は第ii成分が(n−1)+1=n(n-1) + 1 = n、他の成分が−1+1=0-1 + 1 = 0になります。最後に、i≥2i \ge 2について第ii行の1/n1/n倍を第11行から引くと、第11行は第11成分だけが11になります。得られた行列は対角行列diag⁡(1,n,…,n)\operatorname{diag}(1, n, \dots, n)ですので

τ(Kn)=det⁡Lr(Kn)=nm−1=nn−2\tau(K_n) = \det L_r(K_n) = n^{m-1} = n^{n-2}

です。n=3n = 3のとき31=33^1 = 3であり、三角形の全域木が3本の辺から1本を除いた3個であることと一致します。n=4n = 4のとき42=164^2 = 16です。

小さいグラフで、定理の主張を成分の計算として確かめておきます。

例 6.2 (余因子を2通りに取る).V={1,2,3,4}V = \{1,2,3,4\}とし、辺が{1,2}\{1,2\}、{1,3}\{1,3\}、{2,3}\{2,3\}、{3,4}\{3,4\}の4本であるグラフGGを考えます。次数はd1=2d_1 = 2、d2=2d_2 = 2、d3=3d_3 = 3、d4=1d_4 = 1ですので

L(G)=(2−1−10−12−10−1−13−100−11)L(G) = \begin{pmatrix} 2 & -1 & -1 & 0 \\ -1 & 2 & -1 & 0 \\ -1 & -1 & 3 & -1 \\ 0 & 0 & -1 & 1 \end{pmatrix}

です。r=4r = 4として第44行と第44列を除くと

det⁡(2−1−1−12−1−1−13)=2(6−1)+1(−3−1)−1(1+2)=10−4−3=3\det \begin{pmatrix} 2 & -1 & -1 \\ -1 & 2 & -1 \\ -1 & -1 & 3 \end{pmatrix} = 2(6 - 1) + 1(-3 - 1) - 1(1 + 2) = 10 - 4 - 3 = 3

です。r=1r = 1として第11行と第11列を除くと

det⁡(2−10−13−10−11)=2(3−1)+1(−1−0)+0=4−1=3\det \begin{pmatrix} 2 & -1 & 0 \\ -1 & 3 & -1 \\ 0 & -1 & 1 \end{pmatrix} = 2(3 - 1) + 1(-1 - 0) + 0 = 4 - 1 = 3

となり、同じ値です。数え上げでも確かめます。辺{3,4}\{3,4\}は、これを除くと頂点44が孤立しますので、どの全域木にも属します。残りは三角形1,2,31, 2, 3から1本の辺を除いた3通りですのでτ(G)=3\tau(G) = 3です。

8 自分で確かめる

次の三つを、資料を見ずに行ってください。

  1. 例 6.2のグラフから辺{3,4}\{3,4\}を取り除いたグラフについて、ラプラシアン行列の余因子を1つ計算し、値が00になることを確かめてください。あわせて、その値になる理由を系 5.1の言葉で述べてください。
  2. 頂点が2個で、それらを結ぶ辺がkk本であるグラフについて、補題 3.2の両辺を直接計算し、等式が成り立つことを確かめてください。縮約したグラフの頂点が1個になることと、00次行列の行列式を11と約束したことが、どこで効くかを述べてください。
  3. K4K_4の全域木を辺の集合として書き出し、個数が1616になることを確かめてください。K4K_4の辺は6本ですので、3本の辺の選び方(63)=20\binom{6}{3} = 20通りのうち、閉路を含むものを除きます。

3では、除かれるのは三角形をなす4通りです。20−4=1620 - 4 = 16が例 6.1の44−24^{4-2}と一致します。

参考文献

  1. J. H. van Lint and R. M. Wilson, A Course in Combinatorics, 2nd ed., Cambridge University Press, 2001.グラフ理論の側からの行列木定理と全域木の数え上げを参考にしました。
  2. Béla Bollobás, Modern Graph Theory, Graduate Texts in Mathematics, Springer, 1998.ラプラシアン行列の固有値とグラフの性質の関係を参考にしました。
  3. Arthur Cayley, A theorem on trees, The Quarterly Journal of Pure and Applied Mathematics 23 (1889), 376–378.頂点が n 個の完全グラフの全域木の個数を参考にしました。

前提記事