巡回セールスマン問題に適用されたダイスクトラのアルゴリズム


13

私は初心者(計算複雑性理論の初心者)で、質問があります。

「巡回セールスマン問題」があるとしましょう。ダイクストラのアルゴリズムの次のアプリケーションはそれを解決しますか?

開始点から、2点間の最短距離を計算します。ポイントに行きます。ソースポイントを削除します。次に、現在のポイントから次の最短距離ポイントを計算します...

次の利用可能な最短距離ポイントを移動しながら、すべてのステップでグラフを小さくします。すべてのポイントを訪問するまで。

これは巡回セールスマンの問題を解決しますか。


3
TSPはNP完全であり、ダイクストラのアルゴリズムには多項式ランタイムがあります。あなたが提案するのは、P = NPの次の自明な解決策でしょうか?質問なので、あなたのアプローチがうまくいく可能性は低いです。この種の推論は、ヒューリスティックな精神にすぎません!
ラファエル

回答:


24

ダイクストラのアルゴリズムは、開始頂点から各頂点への最短パスを含む最短パスツリーを返しますが、必ずしも他の頂点間の最短パスや、すべての頂点を訪れる最短ルートを含むわけではありません。

以下に、説明する貪欲なアルゴリズムが機能しない反例を示します。

反例

a[abcda]a[abdca]abcdda 出発都市に戻ります。


8

他の返信ですでに判明しているように、あなたの提案は巡回セールスマン問題を効果的に解決しません、ヒューリスティック検索の分野で知られている最良の方法を示してください(私はこの人工知能の分野に多少関連するダイクストラのアルゴリズムを見ています。

あなたはvvあなたは

最良のアプローチ(私は承知しています)は、深さ優先分岐限定発見的探索アルゴリズムを実行することから成ります。発見的発見は最小スパニングツリー(MST)のコストです。MSTは、PrimのアルゴリズムまたはKruskalのアルゴリズムいずれかを使用して多項式時間で計算できるため、妥当な時間内に解を返すことが期待できます。これら2つのアルゴリズムの素晴らしい議論については、The Algorithm Design Manualをご覧になることを強くお勧めします。

実際問題として、このアプローチが提案されたので、この問題の最適な境界を導き出す分野ではあまり進歩が見られなかったので、組み合わせ検索の分野でのホットな質問と考えています。

お役に立てれば、


2

この場合、ダイクストラのアルゴリズムの適用がまったく不要であることに気づかなかった人は誰もいません。この欲張りなアルゴリズムを実装するには、アプリオリと呼ばれる最も近いノードを選択するだけです。Dijkstraのアルゴリズムはパスの検出に使用されますが、毎回1ステップしか実行していません。これは明らかにTSPの最適な解決策を見つけられませんが、多くの非常に優れたアプローチもそれを見つけません。TSPのすべての最適なソリューションファインダーは、非常に計算が要求されます。


1

答えはノーです。それはTSP問題を解決する良い方法ではありません。良い反例は、次のようにすべてのポイントが線上にある場合です。

--5 ------------------ 3 ----- 1--0 --- 2 ---------- 4

Dijsktraのアルゴリズムを使用すると、ポイント0から始まる貧弱なセールスマンが最初に1に、次に2に、次に3 ectになります。これは最適ではありません。

お役に立てば幸いです。Steven S. Skiena著の「The Algorithm Design」と呼ばれる優れた本の最初の章をご覧ください。この例について詳しく説明しています。

TSP問題は、2つのポイント間の最短経路を見つけることではなく、最適なすべてのポイント間のルートを作成することです。最適なルートがある場合、Dijsktraを使用して、ルート内の各ポイント間の最短パスを見つけることができます。


2
ダイクストラは、単一ソースの最短パスアルゴリズムですが、セールスマンを0から開始させることも、ルートを返すこともありません。指定されたソース頂点から各頂点への最短パスを含む最短パスツリーを返します。
ジョー

従来、TSPの問題[ en.wikipedia.org/wiki/… ]は「都市とそのペアの距離のリストが与えられると、タスクは各都市を正確に1回訪問して元の都市に戻る最短ルートを見つけることです。 」技術的には、パス上のこれらの要件を満たすことはできません。開始都市に戻ったり、都市を繰り返したりすることはできません。
ジョー

ただし、パス上でこれらの制約のいずれかを緩和すると、問題は簡単になります。
ジョー

もちろん、ダイクストラはセールスマンを0から開始させません。しかし、元の質問で提案されたアルゴリズムは開始頂点を指定しませんでした。したがって、提案されたアルゴリズム、貧弱なセールスマンを0から開始させることができます。したがって、この答えは正しいです。
-JeffE
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.