ハミルトン閉路問題

From Wikipedia, the free encyclopedia

ハミルトン閉路問題(Hamiltonian Cycle Problem)とは、与えられたグラフにおいて、すべての頂点を一度だけ通って出発点に戻る路(ハミルトン閉路)が存在するかどうかを判定する問題である[1][2]

名称は、1857年にこの問題を正十二面体上のパズル「ハミルトンの世界一周ゲーム(Icosian Game)」として考案した数学者ウィリアム・ローワン・ハミルトンに由来する[2]

与えられたグラフが有向グラフの場合は有向ハミルトン閉路問題無向グラフの場合は無向ハミルトン閉路問題と呼ばれる。

ハミルトン閉路の「出発点に戻る(閉路である)」という条件を緩和し、全頂点を一度ずつ通る「路」の有無を問う問題は、ハミルトン路問題と呼ばれる。

また、無向ハミルトン閉路問題は、各辺に重み(距離)が付けられたグラフにおいて最小重量のハミルトン閉路を求める巡回セールスマン問題(TSP)の特殊ケース(すべての辺の重みが等しい場合)と見なすことができる。

計算複雑性

ハミルトン路・閉路問題は、有向グラフおよび無向グラフのいずれにおいてもNP完全問題であることが、1972年にリチャード・カープによって証明された[3]

また、以下の特殊なグラフにおいても、NP完全性は維持される:

一方で、4-連結平面グラフや2-連結平面グラフなどについては、常にハミルトン閉路が存在することが証明されており、線形時間で解を求めるアルゴリズムが存在する[10]

アルゴリズム

この問題に対する効率的な多項式時間アルゴリズムは見つかっていないが、いくつかの計算手法が提案されている。

  • 力まかせ探索: すべての可能性を総当りで検証する方法。頂点数nの時、O(n!)であり、非常に低速である。
  • 動的計画法: 頂点の集合 S と終点 v を状態として保持することで、 O(n2 2n) の時間計算量で解くことができる[11][12]
  • バックトラッキング: 探索木を構築し、ハミルトン路を形成できないことが判明した時点で枝刈りを行う。最大次数3のグラフに対しては O(1.251n) で解くことができる[13]
  • モンテカルロ法: Anders Björklund英語版によって提案された包除原理を利用したアプローチ。特定の行列式を計算することで、任意のn頂点グラフに対して O(1.657n) で、二部グラフに対してはO (1.415 n )で判定が可能である[14]
  • SATへの変換: NP完全性の性質を利用し、問題を3-SATなどの充足可能性問題に変換して、既存のSATソルバーで解くことができる。

応用例

脚注

関連項目

Related Articles

Wikiwand AI