7-2 Hamiltonグラフ

$$\newcommand{abs}[1]{\left\lvert #1 \right\rvert} \newcommand{cG}[0]{\mathcal{G}} \newcommand{diam}[0]{\operatorname{Diam}} \newcommand{la}[0]{\leftarrow} \newcommand{lt}[0]{\left} \newcommand{Mod}[1]{\ \left(\mathrm{mod}\ #1\right)} \newcommand{mR}[0]{\mathbb{R}} \newcommand{p}[0]{\prime} \newcommand{ra}[0]{\rightarrow} \newcommand{rad}[0]{\operatorname{rad}} \newcommand{rt}[0]{\right} $$

前提知識:同型・部分グラフ・補グラフ

辺を尽くす問題と頂点を尽くす問題

Euler問題では「すべての辺を一度ずつ使う」ことを考えました。各頂点へ入る辺と出る辺を対にできるため、次数の偶奇だけで存在を特徴づけられ、Hierholzer算法で線形時間に構成できました。
今度は「すべての頂点を一度ずつ訪れる」ことを考えます。訪問すべき対象が辺から頂点へ変わるだけに見えますが、問題の性質は大きく変わります。頂点次数は有力な手掛かりを与えるものの、それだけでは必要十分条件になりません。

Hamilton pathとHamilton cycle

有限グラフ $G$ の全頂点をちょうど一度ずつ含むpathをHamilton路|Hamilton pathという。全頂点をちょうど一度ずつ含むcycleをHamilton閉路|Hamilton cycleという。
Hamilton cycleをもつグラフをHamilton graph、Hamilton pathをもつグラフをtraceable graphという。

cycleの始点と終点は同じ頂点ですが、その一致した端点を一回と数え、途中で他の頂点を繰り返さないものとします。従って $n$ 頂点のHamilton cycleは $n$ 本の辺を使います。
完全グラフ $K_n$ は $n\ge3$ なら
$$ 1,2,\ldots,n,1 $$
というHamilton cycleをもちます。cycle graph $C_n$ は自分自身がHamilton cycleです。一方、三頂点以上のpath graph $P_n$ はHamilton pathをもちますがHamilton cycleをもちません。

最初に分かる必要条件

Hamilton cycleから辺を一本除けば全頂点を通るpathが残るので、Hamilton graphはtraceableです。さらに、cycleは一頂点を取り除いても残りを一本のpathで結びます。

Hamilton graphは2-connected

$|V(G)|\ge3$ のHamilton graph $G$ は連結で、cut vertexをもたない。特に各頂点の次数は2以上である。

Hamilton cycle $C$ は全頂点を含むので、$C$ の辺だけでも全頂点が連結され、$G$ は連結です。
任意の頂点 $v$ を取ります。cycle $C$ から $v$ とその接続二辺を除くと、残りの全頂点を含むpathになります。従って $G-v$ はそのpathを部分グラフとして含み、連結です。よって $v$ はcut vertexではありません。
またHamilton cycle上で各頂点には直前と直後の相異なる二頂点が隣接するため、次数は2以上です。□

次数2以上だけでは十分ではありません。二つの完全グラフ $K_4$ を一頂点だけ共有させたグラフでは、共有頂点以外の次数は3、共有頂点の次数は6ですが、共有頂点がcut vertexなのでHamilton cycleはありません。
cut vertex条件を一般化すると、頂点を何個か除いた後の成分数に制約が出ます。$c(H)$ でグラフ $H$ の連結成分数を表します。

Hamilton cycleの成分数条件

$G$ がHamilton graphなら、任意の空でない頂点集合 $S\subseteq V(G)$ に対して
$$ c(G-S)\le |S| $$
が成り立つ。

$G$ のHamilton cycleを $C$ とします。$S$ の頂点をcycleから削除します。cycle上で削除された頂点が連続している場合もありますが、残る辺は高々 $|S|$ 本の互いに頂点素なpathへ分かれます。
詳しくは、$C-S$ の各非空path成分の直前には、cycleの向きに見て $S$ の頂点があります。異なるpath成分には異なる直前頂点が対応するため、$C-S$ の成分数は高々 $|S|$ です。
$G-S$ は $C-S$ に辺を追加したグラフです。辺を追加して連結成分数が増えることはないので
$$ c(G-S)\le c(C-S)\le |S|. $$
□

$|S|=1$ の場合がcut vertexをもたないという条件です。大きな $S$ を選ぶことで、一頂点削除では見えない障害も検出できます。

二部グラフに現れる色の個数の障害

二部グラフ $G=(X\sqcup Y,E)$ のwalkは、$X,Y$ を交互に訪れます。

二部Hamilton graphの部の大きさ

二部グラフ $G=(X\sqcup Y,E)$ がHamilton cycleをもつなら
$$ |X|=|Y| $$
である。Hamilton pathをもつなら
$$ \bigl||X|-|Y|\bigr|\le1 $$
である。

二部グラフの各辺は一方の部から他方の部へ渡るので、pathまたはcycle上の頂点は $X,Y,X,Y,\ldots$ と交互に並びます。cycleでは開始部へ戻るため両部の出現回数が等しいです。Hamilton cycleは全頂点を含むので $|X|=|Y|$ です。
pathでは両端が異なる部なら出現回数は等しく、同じ部ならその部が一つ多くなります。従って差の絶対値は高々1です。□

完全二部グラフについては、この必要条件が十分でもあります。

完全二部グラフのHamilton性

$m,n\ge1$ とする。

  1. $K_{m,n}$ がHamilton cycleをもつための必要十分条件は $m=n\ge2$ である。
  2. $K_{m,n}$ がHamilton pathをもつための必要十分条件は $|m-n|\le1$ である。

必要性は前命題から従います。十分性を示します。二つの部を
$$ X=\{x_1,\ldots,x_m\},\qquad Y=\{y_1,\ldots,y_n\} $$
とします。
$m=n\ge2$ なら
$$ x_1,y_1,x_2,y_2,\ldots,x_n,y_n,x_1 $$
はHamilton cycleです。$m=n$ なら最後の $x_1$ を除いた列がHamilton pathです。$m=n+1$ なら
$$ x_1,y_1,x_2,y_2,\ldots,x_n,y_n,x_{n+1} $$
がHamilton pathで、$n=m+1$ も部を交換すれば同様です。□

例えば $K_{2,3}$ は各頂点次数が少なくとも2でcut vertexもありませんが、部の大きさが異なるためHamilton cycleをもちません。これで「2-connectedならHamilton」という素朴な予想も壊れます。

高い次数はHamilton cycleを強制する

必要条件だけを集めても簡単な完全判定にはなりません。しかし、グラフが十分に密ならHamilton cycleの存在を保証できます。その代表がDiracの定理です。

Diracの定理

$n\ge3$ 頂点の単純グラフ $G$ が
$$ \delta(G)\ge\frac n2 $$
を満たすなら、$G$ はHamilton graphである。ここで $\delta(G)$ は最小次数である。

証明では、最長pathの両端をつなぐ辺がなくても、両端からの隣接関係をずらして組み合わせればcycleを作れることを示します。

Dirac条件のグラフは連結

$n\ge3$ 頂点のグラフで $\delta(G)\ge n/2$ なら $G$ は連結である。

$G$ が非連結と仮定し、最小の連結成分の頂点数を $r$ とします。成分が二つ以上あるので $r\le n/2$ です。その成分内の頂点は成分外へ隣接できず、次数は高々 $r-1< n/2$ です。これは最小次数条件に反します。□

Diracの定理の証明

$G$ の最長pathを
$$ P=(v_1,v_2,\ldots,v_k) $$
とします。最長性により、端点 $v_1,v_k$ のすべての隣接頂点は $P$ 上にあります。もし外部の頂点へ隣接すれば、その頂点を端へ付けてより長いpathを作れるからです。
添字集合 $\{1,2,\ldots,k-1\}$ の二つの部分集合
$$ A=\{i\mid v_1v_{i+1}\in E(G)\},\qquad B=\{i\mid v_iv_k\in E(G)\} $$
を考えます。$v_1$ の隣接頂点はすべて $v_2,\ldots,v_k$ にあるので $|A|=\deg(v_1)$、同様に $|B|=\deg(v_k)$ です。従って
$$ |A|+|B|=\deg(v_1)+\deg(v_k)\ge n. $$
一方、$A,B$ はともに $k-1$ 個の添字からなる集合の部分集合で、$k\le n$ です。もし $A\cap B=\varnothing$ なら
$$ |A|+|B|\le k-1\le n-1 $$
となり矛盾します。従ってある $i\in A\cap B$ があります。
この $i$ に対し
$$ v_1,v_2,\ldots,v_i,v_k,v_{k-1},\ldots,v_{i+1},v_1 $$
はcycleです。最初の区間と逆向きの区間では $P$ の辺を使い、つなぎ目では $v_iv_k$ と $v_{i+1}v_1$ を使っています。これは $P$ の全 $k$ 頂点を含みます。
もし $k< n$ なら、このcycleの外に頂点があります。補題 [26-lem-dirac-connected] により $G$ は連結なので、cycle外の頂点からcycleへ至るpathを取り、cycleへ初めて入る辺 $xy$ を選べます。ここで $x$ はcycle外、$y$ はcycle上です。cycleから $y$ に接続する二辺の一方を外し、$x,y$ と進んでからcycleを一周すれば、cycleの $k$ 頂点と $x$ をすべて含むpathができます。これは $P$ より長く、最長性に反します。
従って $k=n$ であり、構成したcycleは全頂点を含むHamilton cycleです。□

条件は境界で鋭いです。$n=2r$ とし、完全二部グラフ $K_{r-1,r+1}$ を考えると最小次数は $r-1=n/2-1$ ですが、部の大きさが異なるのでHamilton cycleをもちません。従って一般に $n/2$ を $n/2-1$ へ下げることはできません。

二頂点の次数和を見るOreの定理

Dirac条件は各頂点へ同じ下限を課します。実際には、隣接していない二頂点の次数が互いに不足を補えば十分です。

Hamilton cycleを保つ辺追加

$G$ を $n$ 頂点の単純グラフとし、$u,v$ を非隣接頂点で
$$ \deg_G(u)+\deg_G(v)\ge n $$
を満たすものとする。$G+uv$ がHamilton graphなら、$G$ もHamilton graphである。

$G+uv$ のHamilton cycleが追加辺 $uv$ を使わないなら、そのcycleは既に $G$ にあります。追加辺を使う場合、$uv$ を除くと $G$ 内のHamilton path
$$ u=x_1,x_2,\ldots,x_n=v $$
が得られます。
$\{1,\ldots,n-1\}$ の部分集合
$$ A=\{i\mid ux_{i+1}\in E(G)\},\qquad B=\{i\mid x_iv\in E(G)\} $$
を考えます。$u,v$ は非隣接なので、$u$ の全隣接頂点は $x_2,\ldots,x_{n-1}$ に、$v$ の全隣接頂点は $x_2,\ldots,x_{n-1}$ にあり、それぞれ $|A|=\deg_G(u)$、$|B|=\deg_G(v)$ です。
次数和が $n$ 以上である一方、添字は $n-1$ 個しかないため、$A\cap B$ は空ではありません。$i\in A\cap B$ を取れば
$$ u=x_1,x_2,\ldots,x_i,v=x_n,x_{n-1},\ldots,x_{i+1},u $$
は $G$ のHamilton cycleです。□

Oreの定理

$n\ge3$ 頂点の単純グラフ $G$ で、任意の非隣接二頂点 $u,v$ が
$$ \deg(u)+\deg(v)\ge n $$
を満たすなら、$G$ はHamilton graphである。

$G$ に欠けている辺を一つずつ加え、完全グラフ $K_n$ にします。辺を加えると頂点次数は減らないので、各段階でまだ非隣接な二頂点の次数和条件は保たれます。
$K_n$ はHamilton graphです。最後に加えた辺から逆順に取り除きます。各辺を加える直前のグラフでは、その両端の次数和が $n$ 以上だったので、補題 [26-lem-ore-edge-addition] により、その辺を取り除いてもHamilton cycleの存在は保たれます。すべての追加辺を取り除くと元の $G$ がHamilton graphだと分かります。□

Dirac条件なら非隣接な $u,v$ について
$$ \deg(u)+\deg(v)\ge \frac n2+\frac n2=n $$
なので、Oreの定理からDiracの定理を再び得られます。ただし先ほどの直接証明は、最長pathをcycleへ閉じる中心的な発想を目に見える形で示しています。

十分条件は判定定理ではない

Dirac条件やOre条件を満たさなくてもHamilton graphである場合は多数あります。cycle $C_n$ は $n\ge5$ なら最小次数2が $n/2$ 未満ですが、自分自身がHamilton cycleです。
逆に、全頂点の次数が高そうに見えても、部の個数や頂点削除後の成分数が障害になります。Hamilton性を調べるときは、次の三段階を区別します。

  1. cut vertex、成分数条件、二部の大きさなどで存在しないことを証明する。
  2. Dirac・Oreなどで存在することを保証する。
  3. どちらにも当てはまらない場合に、実際のcycleを構成するか有限探索を行う。
    条件を満たさないことは、Hamilton cycleがないことの証明にはなりません。例えばDirac条件の不成立は、定理を適用できないというだけです。

全頂点集合を状態にする有限算法

小さなグラフなら全順列を試せますが、$n!$ 個の順序を列挙すると同じ部分pathを何度も調べます。終点と既訪問頂点集合だけを記録すれば重複をまとめられます。
頂点を $1,\ldots,n$ とし、開始頂点を1に固定します。$1\in S\subseteq V(G)$ と $v\in S$ に対し、命題
$$ H(S,v)=\text{「1から始まり、$S$ の頂点をちょうど一度ずつ使って $v$ で終わるpathがある」} $$
を考えます。

Hamilton pathの部分集合漸化式

初期値を $H(\{1\},1)=\mathrm{true}$ とし、それ以外の一頂点状態をfalseとする。$|S|\ge2$、$v\ne1$ に対して
$$ H(S,v)=\bigvee_{\substack{u\in S\setminus\{v\}\\uv\in E(G)}}H(S\setminus\{v\},u) $$
と定める。このとき $G$ がHamilton cycleをもつための必要十分条件は、ある $v$ について
$$ H(V(G),v)=\mathrm{true},\qquad v1\in E(G) $$
となることである。

$|S|$ に関する帰納法で、$H(S,v)$ の意味が定義文のpathの存在と一致することを示します。一頂点の場合は初期値どおりです。
$S$ をちょうど一度ずつ使って $v$ で終わるpathがあるなら、$v$ の直前の頂点を $u$ とすると $uv\in E(G)$ で、最後の $v$ を除いた部分は $S\setminus\{v\}$ をちょうど一度ずつ使って $u$ で終わるpathです。帰納法により右辺の対応する項がtrueです。
逆に右辺のある項 $H(S\setminus\{v\},u)$ がtrueなら、帰納法で得られるpathの末尾へ辺 $uv$ と未使用頂点 $v$ を加えれば、$S$ をちょうど一度ずつ使って $v$ で終わるpathになります。従って漸化式は正しいです。
最後に $S=V(G)$ とし、そのpathの終点 $v$ が開始点1に隣接すれば、辺 $v1$ を加えてHamilton cycleになります。逆に1を開始点とするHamilton cycleから最後の辺を除けば、そのような状態が得られます。□

部分集合は $2^n$ 個、終点は高々 $n$ 個、遷移で直前頂点を高々 $n$ 個調べるので、この素朴な実装は $O(n^2 2^n)$ 時間、$O(n2^n)$ 空間です。Euler算法の線形時間とは大きな差がありますが、全順列の $n!$ よりは重複を大幅に減らしています。

Gray code――一bitずつ変えて全状態を巡る

$n$ 次元hypercube $Q_n$ は、頂点を長さ $n$ の二進列とし、ちょうど一箇所だけ異なる二列を辺で結ぶグラフです。Hamilton cycleは、全 $2^n$ 状態を重複なく訪れ、毎回一bitだけ変更して出発状態へ戻る順序を与えます。これを巡回Gray codeと呼びます。

hypercubeのHamilton cycle

$n\ge2$ に対し、$Q_n$ はHamilton cycleをもつ。

$n$ に関する帰納法で示します。$n=2$ では
$$ 00,01,11,10,00 $$
がHamilton cycleです。
$Q_n$ のHamilton cycleから開始頂点を重ねずに切った頂点列を
$$ g_1,g_2,\ldots,g_{2^n} $$
とし、連続する $g_i,g_{i+1}$ および $g_{2^n},g_1$ が一bitだけ異なるとします。
$Q_{n+1}$ で次の列を考えます。
$$ 0g_1,0g_2,\ldots,0g_{2^n}, 1g_{2^n},1g_{2^n-1},\ldots,1g_1,0g_1. $$
最初の半分と後半の逆順部分では、帰納法により末尾 $n$ bitの一箇所だけが変わります。中央の $0g_{2^n}$ と $1g_{2^n}$、最後の $1g_1$ と $0g_1$ は先頭bitだけが異なります。
先頭bitが0の全頂点と1の全頂点をそれぞれ一度ずつ含むので、これは $Q_{n+1}$ の全 $2^{n+1}$ 頂点を一度ずつ訪れるcycleです。帰納法により全 $n\ge2$ で成立します。□

$n=3$ なら構成は
$$ 000,001,011,010,110,111,101,100,000 $$
です。二進数を通常の順序で並べると複数bitが同時に変わる境界がありますが、Gray codeでは常に一bitだけ変わります。この性質は回転encoder、状態遷移、誤読を減らす符号化に使われます。

演習

wheel graphのHamilton性

$n\ge4$ とし、cycle $C_{n-1}$ の全頂点へ新しい中心頂点を接続したwheel graph $W_n$ を考える。$W_n$ がHamilton graphであることを示せ。

解答

外周を順に $v_1,v_2,\ldots,v_{n-1},v_1$、中心を $c$ とします。外周の辺 $v_{n-1}v_1$ の代わりに中心を通れば
$$ c,v_1,v_2,\ldots,v_{n-1},c $$
となります。中心と全外周頂点を一度ずつ含むのでHamilton cycleです。$n=4$ でも同じ構成が使えます。□

cut vertexによる反証

二つのcycle $C_m,C_n$($m,n\ge3$)を一頂点だけ共有させたグラフが、Euler circuitをもつがHamilton cycleをもたないことを示せ。

解答

共有頂点の次数は4、他の頂点の次数は2です。グラフは連結で全次数が偶数なので、Euler定理によりEuler circuitをもちます。
共有頂点を除くと、二つのcycleの残りが別々の連結成分になります。従って共有頂点はcut vertexです。命題 [26-prop-hamilton-two-connected] によりHamilton graphはcut vertexをもたないので、このグラフにHamilton cycleはありません。辺を尽くせても頂点を一度ずつ尽くせるとは限らない例です。□

成分数条件で判定する

完全二部グラフ $K_{2,4}$ がHamilton cycleをもたないことを、部の交互性ではなく定理 [26-thm-hamilton-component-condition] を用いて示せ。

解答

大きさ2の部を $S$ とします。$S$ を削除すると、大きさ4の他方の部の各頂点は孤立し、
$$ c(K_{2,4}-S)=4>2=|S| $$
です。Hamilton graphが満たすべき成分数条件に反するので、Hamilton cycleはありません。□

Dirac条件を適用する

10頂点の単純グラフで、各頂点の次数が5以上である。このグラフが連結であることを別に仮定せず、Hamilton cycleの存在を証明せよ。また「各次数が4以上」では同じ結論が必ずしも成り立たない例を挙げよ。

解答

$n=10$ で最小次数は5以上、すなわち
$$ \delta(G)\ge5=\frac{10}{2} $$
です。Diracの定理の仮定を満たすため、連結性を別に確認しなくてもHamilton cycleが存在します。実際、連結性はDirac定理の証明中の補題から自動的に従います。
反例として $K_{4,6}$ を取れます。小さい部の頂点次数は6、大きい部の頂点次数は4なので最小次数は4です。しかし二部の大きさが異なるためHamilton cycleをもちません。□

条件を検算してOreの例へ直す

$K_6$ から一頂点 $v$ に接続する二辺 $va,vb$ を削除したグラフ $G$ を考える。「$G$ はDirac条件を満たさないがOre条件を満たす」という主張が正しいか判定せよ。正しくなければ、$v$ から削除する辺数だけを変えて、Ore条件を満たすがDirac条件を満たさない例へ修正せよ。

解答

$G$ は6頂点です。$v$ の次数は3なので
$$ \delta(G)=3=\frac62 $$
となり、実はこのままではDirac条件を満たします。従って問題文の主張はこの例では成立しません。この計算は、候補例を定理へ当てる前に次数を確認すべきことを示します。
正しい例へ修正します。$K_6$ から同じ頂点 $v$ に接続する三辺 $va,vb,vc$ を削除します。このとき $deg(v)=2<3$ なのでDirac条件を満たしません。非隣接対は $(v,a),(v,b),(v,c)$ だけで、$a,b,c$ の次数は4です。従って各非隣接対の次数和は
$$ 2+4=6=n $$
となり、Ore条件を満たします。ゆえに修正後のグラフはOreの定理によりHamilton graphです。□

この演習は、提示された予想自体を検算する例です。主張に証明を付け始める前に小さな不変量を計算すると、条件の誤りを早く発見できます。

四bit Gray code

本文の反射構成を使い、$Q_4$ のHamilton cycleを一つ書け。隣り合う列が一bitだけ異なり、16個の四桁二進列が重複なく現れることを確認せよ。

解答

$Q_3$ の列
$$ 000,001,011,010,110,111,101,100 $$
の前に0を付け、その逆順の前に1を付けます。得られる巡回列は
$$ \begin{aligned} &0000,0001,0011,0010,0110,0111,0101,0100,\\ &1100,1101,1111,1110,1010,1011,1001,1000,0000. \end{aligned} $$
各半分の内部では末尾3 bitの一箇所だけが変わります。中央の $0100,1100$ と最後の $1000,0000$ は先頭bitだけが変わります。先頭0の8列と先頭1の8列がそれぞれ末尾三bitの全状態を一度ずつ含むため、16頂点は重複なく尽くされています。□

本章で得たもの

Hamilton cycleがあれば、cut vertexがなく、頂点削除後の成分数が削除頂点数を超えず、二部グラフでは両部の大きさが等しくなります。これらは強い非存在判定ですが、一般には十分ではありません。一方、Dirac条件とOre条件は密なグラフで存在を保証しますが、必要条件ではありません。
Euler問題では辺を局所的に対にできました。Hamilton問題では未訪問頂点の全体を意識する必要があり、有限算法の状態は頂点部分集合まで膨らみます。それでもhypercubeのように再帰構造がある場合は、Gray codeとしてHamilton cycleを明示的に作れます。

Mathpediaは寄付と、参考文献の書籍リンク(Amazonアソシエイト)の紹介料で運営されています。 支援について / 寄付する

前ページへ
グラフ理論 ― 連結性・木・マッチング・フロー・平面性・彩色の表紙
次ページへ