私は初心者(計算複雑性理論の初心者)で、質問があります。
「巡回セールスマン問題」があるとしましょう。ダイクストラのアルゴリズムの次のアプリケーションはそれを解決しますか?
開始点から、2点間の最短距離を計算します。ポイントに行きます。ソースポイントを削除します。次に、現在のポイントから次の最短距離ポイントを計算します...
次の利用可能な最短距離ポイントを移動しながら、すべてのステップでグラフを小さくします。すべてのポイントを訪問するまで。
これは巡回セールスマンの問題を解決しますか。
私は初心者(計算複雑性理論の初心者)で、質問があります。
「巡回セールスマン問題」があるとしましょう。ダイクストラのアルゴリズムの次のアプリケーションはそれを解決しますか?
開始点から、2点間の最短距離を計算します。ポイントに行きます。ソースポイントを削除します。次に、現在のポイントから次の最短距離ポイントを計算します...
次の利用可能な最短距離ポイントを移動しながら、すべてのステップでグラフを小さくします。すべてのポイントを訪問するまで。
これは巡回セールスマンの問題を解決しますか。
回答:
他の返信ですでに判明しているように、あなたの提案は巡回セールスマン問題を効果的に解決しません、ヒューリスティック検索の分野で知られている最良の方法を示してください(私はこの人工知能の分野に多少関連するダイクストラのアルゴリズムを見ています。
最良のアプローチ(私は承知しています)は、深さ優先分岐限定発見的探索アルゴリズムを実行することから成ります。発見的発見は最小スパニングツリー(MST)のコストです。MSTは、PrimのアルゴリズムまたはKruskalのアルゴリズムのいずれかを使用して多項式時間で計算できるため、妥当な時間内に解を返すことが期待できます。これら2つのアルゴリズムの素晴らしい議論については、The Algorithm Design Manualをご覧になることを強くお勧めします。
実際問題として、このアプローチが提案されたので、この問題の最適な境界を導き出す分野ではあまり進歩が見られなかったので、組み合わせ検索の分野でのホットな質問と考えています。
お役に立てれば、
この場合、ダイクストラのアルゴリズムの適用がまったく不要であることに気づかなかった人は誰もいません。この欲張りなアルゴリズムを実装するには、アプリオリと呼ばれる最も近いノードを選択するだけです。Dijkstraのアルゴリズムはパスの検出に使用されますが、毎回1ステップしか実行していません。これは明らかにTSPの最適な解決策を見つけられませんが、多くの非常に優れたアプローチもそれを見つけません。TSPのすべての最適なソリューションファインダーは、非常に計算が要求されます。
答えはノーです。それはTSP問題を解決する良い方法ではありません。良い反例は、次のようにすべてのポイントが線上にある場合です。
--5 ------------------ 3 ----- 1--0 --- 2 ---------- 4
Dijsktraのアルゴリズムを使用すると、ポイント0から始まる貧弱なセールスマンが最初に1に、次に2に、次に3 ectになります。これは最適ではありません。
お役に立てば幸いです。Steven S. Skiena著の「The Algorithm Design」と呼ばれる優れた本の最初の章をご覧ください。この例について詳しく説明しています。
TSP問題は、2つのポイント間の最短経路を見つけることではなく、最適なすべてのポイント間のルートを作成することです。最適なルートがある場合、Dijsktraを使用して、ルート内の各ポイント間の最短パスを見つけることができます。