オイラーグラフとハミルトングラフ ― 道を巡る二つの古典問題
ケーニヒスベルクの橋問題からオイラーの定理,有向オイラーグラフ,ハミルトン路,OreとDiracの定理,NP完全性を解説する.
1 ケーニヒスベルクの橋問題
1736年,Euler はケーニヒスベルクの7つの橋をすべてちょうど1回ずつ渡って元に戻れるかという問題を考察した.これがグラフ理論の起源とされる.
この問題を多重グラフとしてモデル化すると,の次数は,の次数はそれぞれである.すべての頂点が奇数次であるため,以下の定理よりオイラー閉路は存在しない.
2 オイラー閉路とオイラー路
定義 1 (オイラー閉路・オイラー路).
グラフ のオイラー閉路(Eulerian circuit)とは, のすべての辺をちょうど1回ずつ通る閉径路である.オイラー路(Eulerian trail)とは,すべての辺をちょうど1回ずつ通る径路である.オイラー閉路を持つグラフをオイラーグラフ(Eulerian graph)という.
定理 2 (Euler の定理).
連結グラフ がオイラー閉路を持つための必要十分条件は,すべての頂点の次数が偶数であることである.
証明.
オイラー閉路が頂点 を通過するたびに, の次数に が加算される(入る辺と出る辺).すべての辺がちょうど1回使われるので は偶数. すべての頂点の次数が偶数であることを仮定する.辺数 に関する帰納法で証明する. なら自明. とする.すべての次数が であるから は閉路 を含む(次数 の頂点から出発し未訪問の辺を辿れば,有限性より同じ頂点に戻る). を考える. で各頂点の次数から偶数が引かれるので の各頂点の次数も偶数である. の各連結成分 にそれぞれ帰納法の仮定を適用すると,各成分にオイラー閉路が存在する. を辿りながら各成分のオイラー閉路を挿入することで, 全体のオイラー閉路が構成される. が連結であることから はすべての成分の頂点を少なくとも1つ含み,挿入が可能である. □
定理 3 (オイラー路の存在条件).
連結グラフ がオイラー路を持つための必要十分条件は,奇数次の頂点がちょうど 個または 個であることである. 個の場合はオイラー閉路, 個の場合はその2頂点を端点とするオイラー路が存在する.
証明.
奇数次の頂点が の2つである場合,辺 を追加した では全頂点が偶数次となりオイラー閉路が存在する.その閉路から追加した辺を除けば - オイラー路が得られる. □
3 有向オイラーグラフ
定理 4 (有向オイラーの定理).
連結有向グラフ がオイラー閉路(すべての弧をちょうど1回通る有向閉径路)を持つための必要十分条件は,すべての頂点 で (出次数 入次数)が成り立つことである.
証明.
無向版と同様の論法で示される.オイラー閉路が頂点を通過するたびに入る弧と出る弧が1つずつ使われ, が必要.十分性は閉路を取り出して帰納法で閉路を併合する. □
4 ハミルトン閉路
定義 5 (ハミルトン閉路・ハミルトン路).
グラフ のすべての頂点をちょうど1回ずつ通る閉路をハミルトン閉路(Hamiltonian cycle),すべての頂点をちょうど1回ずつ通る道をハミルトン路(Hamiltonian path)という.ハミルトン閉路を持つグラフをハミルトングラフという.
注意 6.
オイラー閉路はすべての辺を巡る問題,ハミルトン閉路はすべての頂点を巡る問題である.前者は多項式時間で判定できるのに対し,後者は著しく困難である.
定理 7 (Dirac の定理(1952)).
頂点の単純グラフ がすべての頂点 に対して を満たすならば, はハミルトングラフである.
証明.
が 以上の最小次数を持つ非ハミルトングラフのうち辺数最大のものと仮定して矛盾を導く. はハミルトン路 を持つ(辺を1本追加するとハミルトン閉路が生じるので,ハミルトン路は存在する). である(そうでなければハミルトン閉路).集合 と を考える., であり,()なので鳩ノ巣原理により . を取ると かつ であるから
がハミルトン閉路となり矛盾. □
定理 8 (Ore の定理(1960)).
頂点の単純グラフ において,隣接しない任意の2頂点 が を満たすならば, はハミルトングラフである.
注意 9.
Dirac の定理は Ore の定理の系である. ならば,隣接しない任意の に対して が成り立つ.
5 NP 完全性
注意 10.
ハミルトン閉路問題(与えられたグラフにハミルトン閉路が存在するか)は 完全問題である.これは Karp(1972)が示した21の 完全問題の1つであり, が成り立つ限り多項式時間アルゴリズムは存在しない.対照的にオイラー閉路の存在判定は各頂点の次数を調べるだけで で可能である.この著しい計算量の差が「辺を巡る」問題と「頂点を巡る」問題の根本的な違いを浮き彫りにしている.