始点Aと終点Eが与えられた場合、すべての点(A、B、C、D、E)を通過し、最速である都市の最小交通ルートを決定するアルゴリズムが必要です。この問題をグラフで表すことができることはわかっていますが、この状況でどのアルゴリズムを使用するかわかりません。私はダイクストラアルゴリズムの使用を考えていましたが、これはグラフの2つの頂点間のパスのみを提供し、必ずしもすべての頂点を通過するわけではありません。
TSPの近似については多くの研究が行われてきました。 「巡回セールスマン概算」を調べる必要があります。これらは高速ですが、最適/正しいとは限りません。
これを多項式時間で正しく/最適に解決できれば、あなたは eternal CS hero。 になります。
繰り返し言及されているように、これはNP困難な問題です。問題が5つの頂点に限定されている場合、Eric Tresslerが前述したように、解決策への道をたどる力が最も確実です。私は自分の2セントを追加したいと思います。なぜなら、魅力的な問題を見つけるのが難しいからです...
アルゴリズムを扱いやすくしたい場合、このソリューションは機能しません。グラフの頂点の数が増えると、アルゴリズムが存続期間内の最短ルートを計算することが不可能になるポイントに到達するためです(またはグラフのどの頂点にどのように依存するかによる)。あなたが興味深いと思うかもしれない問題の変形のための近似アルゴリズムがあります...
2つの近似があります(つまり、このアルゴリズムが返す結果が実際の最適ルートの長さのMOSTの2倍であることを証明できるということです...したがって、実際には実際の最適ルートを返すことができます。メトリック巡回セールスマン問題の2倍の長さ、または入力に応じてその中間のアルゴリズム。これは、都市間の距離が三角形の不等式を満たしているため、正確に同じ問題ではない、巡回セールスマン問題の特殊なケースです。
行われた仮定は、単に三角形の不等式を強制しようとしていることです(たとえば、三角形ABCがある場合、AとCの間の最短経路は、A-B-CではなくA-Cです。メトリックTSPの多項式時間で機能するアルゴリズムは次のとおりです。
G-グラフG(V、E)。ここで、Vは頂点のセット、Eはエッジのセットです。 C-Cとして定義されたコスト関数:E-> N_o(メトリック部分...エッジを取るためのコスト)
ApproxMetricTSP(G, C):
-Build a minimum spanning tree T (use Kruskal's or Prim's algorithms for
this)
-Run Depth-First-Search on T and keep track of the order in which the
vertices are discovered
-Return the cycle induced by the discovery order of vertices as H, the
Hamiltonian cycle.
Tの構築には時間がかかりますO(V ^ 2)。
DFS部分はO(V)で実行できるため、アルゴリズムはO(V ^ 2)です。
詳細については、こちらをご覧ください link !