1. はじめに:この記事の使い方
この記事は,学部レベルのグラフ理論を一記事で俯瞰することを目的とする.各トピックについて,定義・主要定理・アルゴリズムを簡潔にまとめる.
使い方:
初学者 → セクション順に読み進め,グラフ理論の全体像を掴むとよい
復習・試験対策 → 目次から必要なセクションへジャンプされたい
競プロの確認 → セクション14「定理・アルゴリズム一覧」で主要結果を一覧できる
以下の依存関係図は,各トピックがどのように繋がっているかを示す.
graph TD
A["グラフの基礎定義"] --> B["道と連結性"]
B --> C["木と森"]
B --> D["オイラー・ハミルトン"]
C --> E["最短経路"]
B --> E
B --> F["有向グラフとトポロジカルソート"]
B --> G["マッチングと被覆"]
G --> H["ネットワークフロー"]
A --> I["平面グラフ"]
I --> J["グラフ彩色"]
A --> K["代数的グラフ理論"]
C --> L["マトロイドと貪欲法"]
style A fill:#f5f5f5,stroke:#333,color:#000
style E fill:#f5f5f5,stroke:#333,color:#000
style H fill:#f5f5f5,stroke:#333,color:#000
style L fill:#f5f5f5,stroke:#333,color:#000
2. グラフの基礎定義
無向グラフ(undirected graph)G=(V,E) とは,有限集合 V(頂点集合)と,V の2元部分集合の集合 E⊆(2V)(辺集合)の組である.有向グラフ(directed graph)G=(V,A) では,辺は順序対 A⊆V×V で与えられる.
無向グラフにおける頂点 v の次数(degree)deg(v) は,v に接続する辺の本数である.有向グラフでは入次数deg−(v) と出次数deg+(v) を区別する.
無向グラフ G=(V,E) において v∈V∑deg(v)=2∣E∣
特に,次数が奇数の頂点の個数は偶数である.
完全グラフKn:n 頂点の任意の2頂点間に辺があるグラフ.∣E∣=(2n)
完全二部グラフKm,n:V=V1∪V2(∣V1∣=m,∣V2∣=n),V1 と V2 の間のすべてのペアに辺を張ったグラフ
補グラフGˉ:E(Gˉ)=(2V)∖E(G)
G1=(V1,E1) と G2=(V2,E2) が同型であるとは,全単射 φ:V1→V2 が存在して {u,v}∈E1⟺{φ(u),φ(v)}∈E2 が成り立つことをいう.
→ 詳しくは:
https://interconnectd.app/articles/dL2zmNaJ814pPXZNDoOA
3. 道と連結性
頂点列 v0,v1,…,vk で,連続する2頂点が辺で結ばれているものを歩道(walk)という.頂点が重複しないとき道(path)という.v0=vk のとき閉路(cycle)という.
任意の2頂点 u,v 間に道が存在するとき,G は連結(connected)であるという.極大連結部分グラフを連結成分という.
G の頂点連結度κ(G) は,G を非連結にするために除去が必要な最小頂点数である.辺連結度λ(G) は,最小辺数である.
κ(G)≤λ(G)≤δ(G)
ここで δ(G)=minv∈Vdeg(v) は最小次数である.
除去すると連結成分数が増加する頂点を切断点(cut vertex),辺を橋(bridge)という.
グラフ G が二部グラフ(bipartite graph)である ⟺G に奇閉路が存在しない.
グラフ G の2頂点 s,t について,s-t 間の互いに内部頂点を共有しない道の最大本数は,s-t 間を分離する最小頂点集合のサイズに等しい.
→ 詳しくは:
https://interconnectd.app/articles/eD3ngWQ0P48zNAC9alpy
4. 木と森
閉路を持たない連結グラフを木(tree)という.閉路を持たないグラフ(連結とは限らない)を森(forest)という.
n 頂点のグラフ T について,次は同値である:
T は木(連結かつ閉路なし)
T は連結で ∣E∣=n−1
T は閉路なしで ∣E∣=n−1
任意の2頂点間にちょうど1本の道が存在する
T は連結だが,任意の辺を除くと非連結になる
T は閉路を持たないが,任意の辺を追加すると閉路ができる
n 頂点のラベル付き木の総数は nn−2 である.
グラフ G の全域木(spanning tree)とは,G のすべての頂点を含む G の部分グラフであって木であるものをいう.
辺重み付きグラフにおいて,辺重みの和が最小の全域木を最小全域木(MST)という.
主要アルゴリズム:
任意のカット(V を2つに分ける辺集合)の最小重み辺はある MSTに含まれる.
→ 詳しくは:
https://interconnectd.app/articles/gaxkQJMoXSEyiKRBco9B
5. オイラーグラフとハミルトングラフ
すべての辺をちょうど1回ずつ通る閉路をオイラー閉路(Eulerian circuit)という.オイラー閉路を持つグラフをオイラーグラフという.
連結グラフ G がオイラーグラフである ⟺ すべての頂点の次数が偶数である.
すべての頂点をちょうど1回ずつ通る閉路をハミルトン閉路(Hamiltonian cycle)という.
n≥3 の単純グラフ G でもし δ(G)≥n/2 ならば G はハミルトン閉路を持つ.
n≥3 の単純グラフで,隣接しない任意の2頂点 u,v に対して deg(u)+deg(v)≥n ならば G はハミルトン閉路を持つ.
→ 詳しくは:
https://interconnectd.app/articles/Lxy0UjLpWgByBoiKiYFT
6. 最短経路問題
辺重み w:E→R を持つグラフにおいて,s-t 間の最短経路とは辺重みの和が最小の道をいう.その重みの和を dist(s,t) と書く.
主要アルゴリズム:
BFS:重みなしグラフの単一始点最短路.O(∣V∣+∣E∣)
Dijkstra:非負重みグラフの単一始点最短路.O((∣V∣+∣E∣)log∣V∣)(二分ヒープ使用時)
Bellman-Ford:負辺を含むグラフの単一始点最短路.O(∣V∣∣E∣).負閉路の検出も可能
Warshall-Floyd:全頂点間最短路.O(∣V∣3)
DAG上の最短路:トポロジカルソートに沿って緩和.O(∣V∣+∣E∣)
非負重みグラフにおいて,Dijkstraのアルゴリズムは確定済み頂点の距離が最短であることを不変条件として保つ.
Bellman-Fordで ∣V∣ 回目の反復で更新が生じる ⟺s から到達可能な負閉路が存在する.
→ 詳しくは:
https://interconnectd.app/articles/bomEbDtztcOegRkTUd0P
7. 有向グラフとトポロジカルソート
有向グラフ G の任意の2頂点 u,v 間に u→v と v→u の有向道が存在するとき,G は強連結(strongly connected)であるという.極大強連結部分グラフを強連結成分(SCC)という.
有向グラフの各 SCC を1頂点に縮約すると DAG(有向非巡回グラフ)になる.
SCCのアルゴリズム:
DAG G の頂点に全順序 v1,v2,…,vn を与えて,(vi,vj)∈A⇒i<j が成り立つようにすることをトポロジカルソートという.
グラフがトポロジカルソート可能 ⟺ DAG である.
→ 詳しくは:
https://interconnectd.app/articles/PhqOyej79FM9hJF1IEWu
8. マッチングと被覆
辺集合 M⊆E で,M のどの2辺も端点を共有しないものをマッチング(matching)という.∣M∣ が最大のものを最大マッチングという.
マッチング M に関する増加路(augmenting path)とは,M に含まれない辺と M に含まれる辺が交互に現れる道で,両端が M に被覆されていないものをいう.
マッチング M が最大 ⟺M に関する増加路が存在しない.
二部グラフ G=(X∪Y,E) において,X の完全マッチングが存在する ⟺ 任意の S⊆X に対して ∣N(S)∣≥∣S∣(Hall条件).
二部グラフにおいて,最大マッチングのサイズ = 最小頂点被覆のサイズ.
安定マッチング問題(n 人と n 人の選好リストが与えられたとき,ブロッキングペアのないマッチングを求める問題)は O(n2) で解ける.
→ 詳しくは:
https://interconnectd.app/articles/9XWlGbZ9vPHoLXgQVlYa
9. ネットワークフロー
有向グラフ G=(V,A),容量関数 c:A→R≥0,始点 s,終点 t の4つ組 (G,c,s,t) をフローネットワークという.フローf:A→R≥0 は容量制約 f(e)≤c(e) と流量保存則を満たす関数である.
S⊆V(s∈S,t∈/S)としたとき,S から V∖S への辺の容量の和 c(S,V∖S)=∑(u,v)∈A,u∈S,v∈/Sc(u,v) をカットの容量という.
主要アルゴリズム:
Ford-Fulkerson法:残余グラフ上の増加路を反復的に探す
Edmonds-Karp:BFSで増加路を選択.O(∣V∣∣E∣2)
Dinicのアルゴリズム:レベルグラフとブロッキングフロー.O(∣V∣2∣E∣)
二部グラフの最大マッチングは,始点 s,終点 t を追加して各辺容量1のフローネットワークを構成することで,最大フロー問題に帰着できる.
→ 詳しくは:
https://interconnectd.app/articles/FcN78m9a22pq5LV5mEFl
10. 平面グラフ
辺の交差なしに平面上に描けるグラフを平面的(planar)であるという.そのような描画を平面グラフ(plane graph)という.
連結平面グラフ G において V−E+F=2
ここで V は頂点数,E は辺数,F は面数(外面を含む)である.
∣V∣≥3 の単純連結平面グラフにおいて ∣E∣≤3∣V∣−6.特に K5 は平面的でない.G が三角形を含まない(K3,3 型)場合は ∣E∣≤2∣V∣−4 である.
グラフ G が平面的 ⟺G は K5 または K3,3 の部分分割(subdivision)を部分グラフとして含まない.
平面グラフ G の双対グラフG∗ は,G の各面を頂点とし,共有辺で隣接する面同士を辺で結んだグラフである.
→ 詳しくは:
https://interconnectd.app/articles/D89xD9bYJmYE6uVOIIYC
11. グラフ彩色
グラフ G の頂点彩色(vertex coloring)とは,隣接する2頂点に異なる色を割り当てることである.k 色で彩色可能なとき G は k-彩色可能といい,必要な最小の色数を彩色数χ(G) という.
ω(G)≤χ(G)≤Δ(G)+1ここで ω(G) はクリーク数,Δ(G) は最大次数である.
連結グラフ G が完全グラフでも奇閉路でもなければ χ(G)≤Δ(G) である.
P(G,k) を G の k 色彩色の総数とすると,P(G,k) は k の多項式となる.
単純グラフ G の辺彩色数χ′(G) について Δ(G)≤χ′(G)≤Δ(G)+1.
任意の平面グラフは4-彩色可能である(χ(G)≤4).
→ 詳しくは:
https://interconnectd.app/articles/hz41t0UMANbrxPe1jcIs
12. 代数的グラフ理論
n 頂点のグラフ G の隣接行列A=(aij) は,aij=1({i,j}∈E のとき),aij=0(それ以外)で定まる n×n 行列である.
Ak の (i,j) 成分は,頂点 i から頂点 j への長さ k の歩道の本数に等しい.
L=D−A(D は次数行列)をラプラシアン行列という.L は半正定値で,固有値 0≤λ1≤λ2≤⋯≤λn をもつ.
L の固有値 0 の重複度は G の連結成分数に等しい.特に λ2>0⟺G は連結である.λ2 を代数的連結度(algebraic connectivity)という.
G の全域木の本数は,L の任意の (i,i) 余因子に等しい.
→ 詳しくは:
https://interconnectd.app/articles/2LILYC8PpZPkwFfcmSun
13. マトロイドと貪欲法
有限集合 E とその部分集合族 I⊆2E の組 (E,I) がマトロイド(matroid)であるとは,次の3条件を満たすことをいう:
∅∈I
A∈I,B⊆A⇒B∈I(遺伝性)
A,B∈I,∣A∣<∣B∣⇒∃b∈B∖A s.t. A∪{b}∈I(交換性質)
I の元を独立集合という.
グラフ G=(V,E) に対して,E の部分集合が閉路を含まないとき独立と定めると,(E,I) はマトロイドをなす.これをグラフ的マトロイド(graphic matroid)という.独立集合は森,基底は全域木に対応する.
(E,I) がマトロイドのとき,重み w:E→R に対する最大重み独立集合は貪欲法で求まる:重みの大きい順に,独立性を壊さない限り加えていく.
(E,I) が遺伝性を満たすとき,任意の重み関数に対して貪欲法が最大重み独立集合を与える ⟺(E,I) はマトロイドである.
→ 詳しくは:
https://interconnectd.app/articles/PLR7YEBUPJRoULtY3lEQ
14. グラフ理論の定理・アルゴリズム一覧
離散数学と競技プログラミングで登場する主要な定理とアルゴリズムの一行サマリーである.
基本定理:
握手の補題:∑deg(v)=2∣E∣
二部グラフ判定:奇閉路なし ⟺ 二部グラフ
木の辺数:n 頂点の木は n−1 辺を持つ
Cayleyの公式:n 頂点のラベル付き木の数は nn−2
オイラーの定理:連結 + 全頂点偶数次数 ⟺ オイラー閉路
Diracの定理:δ(G)≥n/2 ならハミルトン閉路あり
オイラーの多面体公式:V−E+F=2
Kuratowskiの定理:K5,K3,3 の部分分割がなければ平面的
四色定理:任意の平面グラフは4-彩色可能
Brooksの定理:χ(G)≤Δ(G)(完全グラフ・奇閉路を除く)
Vizingの定理:Δ(G)≤χ′(G)≤Δ(G)+1
マッチング・フローの定理:
Bergeの定理:最大マッチング ⟺ 増加路なし
Hallの結婚定理:∣N(S)∣≥∣S∣⟺ 完全マッチング存在
Königの定理:二部グラフで最大マッチング = 最小頂点被覆
最大フロー最小カット定理:最大フロー = 最小カット
Mengerの定理:最大独立路数 = 最小分離集合
代数・構造の定理:
行列木定理:全域木の本数 = ラプラシアンの余因子
Ak定理:(Ak)ij= 長さ k の歩道数
貪欲法の最適性:マトロイド上で貪欲法は最適
主要アルゴリズム:
BFS / DFS:O(∣V∣+∣E∣)
Dijkstra:O((∣V∣+∣E∣)log∣V∣)
Bellman-Ford:O(∣V∣∣E∣)
Warshall-Floyd:O(∣V∣3)
Kruskal:O(∣E∣log∣E∣)
Prim:O(∣E∣log∣V∣)
Kosaraju / Tarjan(SCC):O(∣V∣+∣E∣)
Dinic(最大フロー):O(∣V∣2∣E∣)
Gale-Shapley(安定マッチング):O(n2)
15. 付録:記号と用語一覧
| 記号 |
読み |
意味 |
| G=(V,E) |
グラフ |
頂点集合 V と辺集合 E の組 |
| deg(v) |
次数 |
v に接続する辺の数 |
| δ(G) |
最小次数 |
minvdeg(v) |
| Δ(G) |
最大次数 |
maxvdeg(v) |
| κ(G) |
頂点連結度 |
非連結化に必要な最小頂点除去数 |
| λ(G) |
辺連結度 |
非連結化に必要な最小辺除去数 |
| Kn |
完全グラフ |
n 頂点の完全グラフ |
| Km,n |
完全二部グラフ |
サイズ m,n の完全二部グラフ |
| χ(G) |
彩色数 |
頂点彩色に必要な最小色数 |
| χ′(G) |
辺彩色数 |
辺彩色に必要な最小色数 |
| ω(G) |
クリーク数 |
最大クリークのサイズ |
| A |
隣接行列 |
aij=[{i,j}∈E] |
| L=D−A |
ラプラシアン |
次数行列と隣接行列の差 |
| MST |
最小全域木 |
辺重みの和が最小の全域木 |
| SCC |
強連結成分 |
極大強連結部分グラフ |
| DAG |
有向非巡回グラフ |
有向閉路を持たない有向グラフ |
| NP完全 |
NP-complete |
多項式時間で検証可能な決定問題の最困難クラス |