ハミルトン路問題は、複雑性理論とグラフ理論の分野で議論されているトピックです。これは、有向グラフまたは無向グラフGに、グラフ内のすべての頂点をちょうど 1 回ずつ訪れるハミルトン路が存在するかどうかを判定する問題です。この問題では、経路の開始点と終了点を指定することができ、その場合は開始頂点sと終了頂点tを特定する必要があります。[ 1 ]
ハミルトン閉路問題はハミルトン経路問題と似ていますが、与えられたグラフにハミルトン閉路が含まれているかどうかを問う点が異なります。この問題では、閉路の開始点を指定することもできます。ハミルトン閉路問題は、 2つの都市が隣接している場合はその間の距離を1、そうでない場合は2に設定し、移動した総距離がnに等しいことを確認することで得られる巡回セールスマン問題の特殊なケースです。そうであれば、その経路はハミルトン閉路です。
ハミルトン経路問題とハミルトン閉路問題は、マイケル・ゲイリーとデビッド・S・ジョンソンの著書『コンピュータと難解性:NP完全性理論への手引き』およびリチャード・カープの21のNP完全問題のリストに示されているように、NP完全問題のクラスに属します。[ 2 ] [ 3 ]
ハミルトン経路とハミルトン閉路を見つける問題は、以下のように関連付けることができます。
グラフにハミルトン路が存在するかどうかを判断するには、入力グラフ G 内の考えられるすべての経路をチェックする必要があります。与えられたn頂点のグラフでは、ハミルトン路になり得る頂点の異なるシーケンスがn ! 通りあります(完全グラフでは、実際にハミルトン路になります)。そのため、考えられるすべてのシーケンスをテストする総当たり探索アルゴリズムは非常に遅くなります。
有向グラフ上のハミルトン閉路を見つけるための初期の正確なアルゴリズムは、マルテロの列挙アルゴリズムでした。[ 3 ]フランク・ルービンによる探索手順[ 5 ]は、グラフのエッジを、パスに必ず含まれるエッジ、パスに含まれないエッジ、および未決定のエッジの3つのクラスに分けます。探索が進むにつれて、一連の決定ルールが未決定のエッジを分類し、探索を停止するか続行するかを決定します。パスに含まれないエッジは削除できるため、探索は継続的に小さくなります。このアルゴリズムはまた、グラフを個別に解決できるコンポーネントに分割し、探索サイズを大幅に削減します。実際には、このアルゴリズムは今でも最速です。
また、ベルマン、ヘルド、カープによる動的計画法アルゴリズムを用いて、この問題を O( n 2 2 n ) の時間で解くことができます。この方法では、頂点の集合SとS内の各頂点vについて、 S内の頂点をすべて網羅し、 vで終わるパスが存在するかどうかを判定します。Sとvの任意の選択について、( S , v ) のパスが存在するのは、 vに隣接頂点wが存在し、 ( S − v , w )のパスが存在する場合のみです。このパスは、動的計画法で既に計算された情報から調べることができます。[ 6 ] [ 7 ]
アンドレアス・ビョルクルンドは、包含排除原理を用いて、ハミルトン閉路の数を数える問題を、より単純な閉路被覆の数を数える問題に還元する代替アプローチを提供しました。この問題は、特定の行列式を計算することで解決できます。この方法を用いて、彼は任意のn頂点グラフにおけるハミルトン閉路問題をモンテカルロアルゴリズムによってO(1.657 n ) の時間で解決する方法を示しました。二部グラフの場合、このアルゴリズムはさらに時間O (1.415 n )に改善できます。[ 8 ]
最大次数が3のグラフの場合、慎重なバックトラッキング探索により、ハミルトン閉路(存在する場合)をO(1.251 n )の時間で見つけることができます。[ 9 ]
ハミルトン経路はSATソルバーを用いて求めることができます。ハミルトン経路はNP完全問題であり、3-SAT問題にマッピング還元することができます。したがって、ハミルトン経路問題の解を求めることは、3-SAT問題の解を求めることと同等です。
ハミルトン経路問題とハミルトンサイクル問題を従来のコンピュータで解くのは困難であるため、非従来型の計算モデルでも研究されてきた。例えば、レナード・アドレマンは、ハミルトン経路問題はDNAコンピュータで解ける可能性があることを示した。化学反応に内在する並列性を利用することで、この問題はグラフの頂点の数に比例する数の化学反応ステップで解ける可能性があるが、反応には階乗数のDNA分子が必要となる。[ 10 ]
ハミルトニアン問題に対する光学的解決策も提案されている。[ 11 ]このアイデアは、光ケーブルとビームスプリッターで構成されたグラフのような構造を作り、そこに光を通して問題の解決策を構築するというものである。このアプローチの弱点は、ノードの数に対して指数関数的に増加するエネルギー量が必要となることである。
ハミルトン閉路またはハミルトンパスを見つける問題はFNPに属します。これに対応する判定問題は、ハミルトン閉路またはハミルトンパスが存在するかどうかを判定することです。有向グラフと無向グラフのハミルトン閉路問題は、カープが挙げた21のNP完全問題のうちの2つです。これらの問題は、次のような特殊なグラフに対してもNP完全のままです。
しかし、特定の種類のグラフについては、この問題は多項式時間で解くことができる。
これらの条件をすべて合わせると、3連結3正則二部平面グラフが常にハミルトン閉路を含むかどうかは未解決のままであり、その場合、これらのグラフに限定された問題はNP完全ではない可能性がある。バーネットの予想を参照のこと。
すべての頂点の次数が奇数であるグラフでは、握手補題に関連する議論により、任意の固定エッジを通るハミルトン閉路の数は常に偶数であることが示され、1 つのハミルトン閉路が与えられれば、2 つ目の閉路も存在しなければならない。[ 20 ]しかし、この 2 つ目の閉路を見つけることは、計算上容易な作業ではないようだ。Papadimitriouは、このような問題をカプセル化するために複雑性クラスPPAを定義した。[ 21 ]

ハミルトン経路問題はNP問題であり、提案された解は多項式時間で検証可能であることを意味する。[ 1 ]
ハミルトンパスの検証アルゴリズムは、開始頂点sと終了頂点tを持つグラフGを入力として受け取ります。さらに、検証には証明書cと呼ばれる潜在的な解が必要です。ハミルトンパス問題の場合、cは頂点の列で構成され、最初の頂点は提案されたパスの開始点、最後の頂点は終了点となります。[ 22 ]アルゴリズムは、cがGにおける有効なハミルトンパスであるかどうかを判断し、有効な場合は受け入れます。
この判定を行うために、アルゴリズムはまず、G のすべての頂点が c にちょうど 1 回出現することを確認します。このチェックに合格した場合、次に、アルゴリズムは c の最初の頂点が s と等しく、最後の頂点が t と等しいことを確認します。最後に、c が有効なパスであることを検証するために、アルゴリズムは、c の頂点間のすべてのエッジが実際に G のエッジであることを確認する必要があります。これらのチェックのいずれかが失敗した場合、アルゴリズムは拒否します。そうでない場合は、受け入れます。[ 22 ] [ 23 ]
このアルゴリズムは、G の頂点が c に一度出現するかどうかを多項式時間でチェックできます。さらに、開始頂点と終了頂点、および頂点間のエッジをチェックするのに多項式時間が必要です。したがって、このアルゴリズムはハミルトン経路問題に対する多項式時間検証器です。[ 22 ]
オンチップネットワーク(NoC) は、オンチップコンポーネント間の通信として機能するコンピュータシステムやプロセッサで使用されます。 [ 24 ] NoC のパフォーマンスは、ネットワークを介してデータパケットを転送する方法によって決まります。[ 25 ]ハミルトンパス問題は、マルチキャストルーティングのパスベースの方法として実装できます。パスベースのマルチキャストアルゴリズムは、開始ノードから各終了ノードへのハミルトンパスが存在するかどうかを判断し、対応するパスを介してパケットを送信します。この戦略を利用することで、デッドロックやライブロックのないルーティングが保証され、NoC の効率が向上します。[ 26 ]
レンダリングエンジンは、コンピュータ グラフィックスで使用されるソフトウェアの一種で、入力データから画像やモデルを生成します。[ 27 ] 3 次元グラフィックス レンダリング では、エンジンへの一般的な入力はポリゴン メッシュです。オブジェクトのレンダリングにかかる時間は、入力の受信速度に依存し、入力が大きいほどレンダリング時間が長くなります。ただし、三角形メッシュの場合、レンダリング時間を最大 3 分の 1 に短縮できます。これは、「連続する三角形が面を共有するように三角形を順序付ける」ことによって行われます。[ 28 ]このようにすると、連続する各三角形の間で 1 つの頂点だけが変わります。この順序は、三角形メッシュの双対グラフにハミルトン パスが含まれている場合に存在します。
ウィキメディア・コモンズにあるハミルトン経路問題に関連するメディア