S3.5. グラフの強連結成分分解

グラフの強連結成分分解 1
基礎数理
簡単な例題
1
図 1 のグラフが何らかのシステムの状態推移を表していると考えよう.システムには六
つの状態 {v1 , v2 , v3 , v4 , v5 , v6 } があり,辺 (vi , vj ) があるときには状態 vi から状態 vj に変
化する可能性がある.このグラフから次のようなことがわかる.
• システムが状態 v6 にあるならば,他の任意の状態に (いつかの時点で) 到達する可能
性がある.
• システムが状態 v3 にあるならば,将来の時点で可能な状態は v3 だけである.
• システムが状態 v1 にあるならば,状態 v6 に到達する可能性はない.
到達可能性によって状態を分類すると,図 2 のように,グラフの点集合 V が
V1 = {v4 , v6 },
V2 = {v1 , v2 , v5 },
V3 = {v3 }
の三つのブロックに分けられる.ここで,辺の向きは
V1 → V2 ,
V2 → V3 ,
V1 → V3
(1)
に限られており,
k > l のとき Vk から Vl に向かう辺は存在しない.
(2)
とくに,V1 = {v4 , v6 }, V2 = {v1 , v2 , v5 }, V3 = {v3 } のブロックに合わせて
v4 , v6 | v1 , v2 , v5 | v3
(3)
という順番に点を並べると,異なるブロックの 2 点を結ぶ任意の辺 (vi , vj ) について,始
点 vi は終点 vj より前にある.
このようなグラフの分解は,強連結成分分解とよばれるものであり,一般の有向グラフ
に対して,以下のように定義される.
図 1: グラフによる行列の表現
1
本資料は,室田一雄,杉原正顯: 工学教程 線形代数 II, 丸善出版, 2013 の 1.1.2 節による.
1
2
一般の場合
有向グラフ G = (V, E) を考える.まず,互いに有向道 (順につながった辺の集まりで,
辺の向きがそろっているもの) で到達できる点どうしを仲間にして,点集合 V をいくつか
の部分に分割する.これを V1 , . . . , Vp (p ≥ 1) とすると,
p
∪
Vk = V ;
Vk ̸= ∅ (k = 1, . . . , p)
(4)
k=1
となる.これを強連結成分分解といい,一つの Vk を強連結成分とよぶ.さらに,強連結
成分の間には,
Vk ⪰ Vl ⇐⇒ ある u ∈ Vk からある v ∈ Vl への有向道が存在する
(5)
によって,上下関係 (順序関係) を表す 2 項関係 Vk ⪰ Vl が定義される 2 .とくに,
u ∈ Vk , v ∈ Vl に対して辺 (u, v) ∈ E が存在 =⇒ Vk ⪰ Vl
(6)
が成り立つ.なお,全体が一つの強連結成分 (すなわち,p = 1) になる場合もあるが,そ
のようなグラフを強連結なグラフという.
図 2 の例では,式 (1) により
V1 ⪰ V2 ⪰ V3
(7)
である.この例ではすべての Vk が一列に並んでいるが,一般には,そうとは限らない.た
とえば,図 3 (左側) のグラフ G には四つの強連結成分 V1 , V2 , V3 , V4 があるが,
V1 ⪰ V3 ,
V1 ⪰ V4 ,
V2 ⪰ V4
(8)
となっていて,V1 と V2 は順序関係をもたない (V1 ⪰ V2 も V2 ⪰ V1 も不成立である).こ
のように,式 (5) で定義される関係 ⪰ は半順序となる 3 .
図 2: 図 1 のグラフの強連結成分分解
2
任意の点 v について,v から v へは長さ 0 の有向道が存在すると約束する.このとき,Vk が 1 点だけか
ら成る場合も含めて,Vk ⪰ Vk が成り立つ.
3
「半順序」は「反射律,反対称律,推移律を満たす 2 項関係」として定義される.
2
図 3: グラフ G の強連結成分分解と簡約グラフ G
強連結成分分解における半順序構造を表現するには,強連結成分 V1 , . . . , Vp をそれぞれ
1 点に縮約した簡約グラフ G をつくるとよい (図 3 参照).各強連結成分 Vk に対応する点
を v k とするとき,簡約グラフ G の点集合は
V = {v 1 , . . . , v p }
であり,辺集合 E は
(v k , v l ) ∈ E ⇐⇒ ある u ∈ Vk , v ∈ Vl に対して (u, v) ∈ E; k ̸= l
と定義される.簡約グラフ G = (V , E) は有向閉路をもたないので,点の間の関係 ⪰ を
v k ⪰ v l ⇐⇒ v k から v l への有向道が存在する
(9)
によって定義すると,これは半順序になる.簡約グラフ G の点 v k と元のグラフ G の強連
結成分 Vk との対応の下で,この半順序 (9) は強連結成分間の半順序 (5) に一致する.逆に
いえば,強連結成分間の半順序 (5) は簡約グラフ G によって表現される.
強連結成分分解における半順序は,グラフが表現している工学システムに内在する階層
構造を表現しており,応用上の意味を有していることが多い.たとえば,辺が情報の伝達
経路を表しているときには,情報共有の構造は強連結成分間の半順序によって表現される
ことになる.強連結成分分解は, O(|V | + |E|) 時間で高速に求めることができるので,大
規模なシステムに対しても適用可能である 4 .
3
数学的に厳密な定義
グラフ G = (V, E) の強連結成分分解を数学的に厳密に定義すると以下のようになる 5 .
まず,点集合 V 上の 2 項関係 ≥ を
u ≥ v ⇐⇒ u から v への有向道が存在する
と定義すると,
4
|V |, |E| は,それぞれ,集合 V , E の大きさ (要素の個数) を表す.また,O(|V | + |E|) は,ある定数 c に
よって c(|V | + |E|) で抑えられる大きさであることを表す.
5
ここの議論は,むしろ,2 項関係の諸概念を習得するために有用であろう.
3
反射律:任意の v ∈ V に対して v ≥ v ,
推移律:任意の u, v, w ∈ V に対して [ u ≥ v, v ≥ w ⇒ u ≥ w ]
が成り立つ.すなわち,2 項関係 ≥ は擬順序である (一般に,反射律と推移律を満たす 2
項関係を擬順序とよぶ).
次に,擬順序 ≥ を用いて,点集合 V 上の 2 項関係 ∼ を
u ∼ v ⇐⇒ u ≥ v かつ v ≥ u
と定義すると,
反射律:任意の v ∈ V に対して v ∼ v ,
対称律:任意の u, v ∈ V に対して [ u ∼ v ⇒ v ∼ u ],
推移律:任意の u, v, w ∈ V に対して [ u ∼ v, v ∼ w ⇒ u ∼ w ]
が成り立つ.すなわち,2 項関係 ∼ は同値関係である (一般に,反射律,対称律,推移律
を満たす 2 項関係を同値関係とよぶ).
この同値関係 ∼ から V の分割が定まる.すなわち,各 v ∈ V に対して,その同値類
[v] = {u ∈ V | u ∼ v}
を定義すると,
・任意の v ∈ V に対して v ∈ [v],
・任意の u, v ∈ V に対して [ u ∈ [v] ⇒ [u] = [v] ],
・任意の u, v ∈ V に対して [ [u] ∩ [v] ̸= ∅ ⇒ [u] = [v] ]
が成り立つ.一つの同値類 [v] を強連結成分とよび,同値類の全体の定める V の分割 (商
集合) を強連結成分分解という.一般に,同値類の全体を商集合とよび,V / ∼ という記号
で表すことが多い.式で書けば
V / ∼ = { [v] | v ∈ V }
である.
最後に,商集合 V / ∼ 上の 2 項関係 ⪰ を
[u] ⪰ [v] ⇐⇒ u ≥ v
(10)
によって定義できる.ここで「定義できる」理由は,[u] = [u′ ], [v] = [v ′ ] ならば「u ≥
v ⇐⇒ u′ ≥ v ′ 」であるから,式 (10) の右辺が同値類の代表元 (u や v) のとり方に依らず
に確定するからである.このとき,
反射律:任意の [v] ∈ V / ∼ に対して [v] ⪰ [v],
反対称律:任意の [u], [v] ∈ V / ∼ に対して
[ [u] ⪰ [v], [v] ⪰ [u] ⇒ [u] = [v] ],
推移律:任意の [u], [v], [w] ∈ V / ∼ に対して
[ [u] ⪰ [v], [v] ⪰ [w] ⇒ [u] ⪰ [w] ]
が成り立つ.すなわち,2 項関係 ⪰ は半順序である (一般に,反射律,反対称律,推移律
を満たす 2 項関係を半順序とよび,半順序の定義された集合を半順序集合という).この
ようにして,強連結成分の間に半順序 ⪰ が定義される.
以上 (2014-10-15)
4