私は複数の情報源から、そしてそれが2^N時間で実行されるアルゴリズムの理解から読みました。私の質問は、TSPがこの実行時間を達成する原因は何ですか?擬似コードが見つからないようですので、調べてみましょう。
12777 次
1 に答える
3
あなたが意味するアルゴリズムはおそらく包除原理です:
次の状態空間を使用して最短経路を見つけますA*
。
- 状態は、都市のセットを「訪問済み」セット、「未訪問」セット、および「現在」ノードに分割することによって定義されます。
- 有効な遷移とは、1つのノードを「現在」から「訪問済み」に移動し、もう1つを「未訪問」から「現在」のセットに移動する遷移です。そのコストは、古い「現在」から新しい「現在」までの距離に等しくなります。
- 開始状態は次のとおりです。「訪問済み」の都市はなく、「現在」の任意の都市です。
- 最終状態は次のとおりです。「未訪問」の都市はなく、「現在」の都市はありません。
包含-除外の時間計算量は、州の数によって与えられます。「現在の」都市が1つだけあり(係数n
)、他のすべての都市は訪問済みまたは未訪問(係数2^n
)です。
'A *'アルゴリズムは、最大で1回だけ各状態に入ります。状態ごとに、最大で「n」個の他のノードを探索し、それらを優先キューにプッシュします。優先キューは、その操作を実行するのに最大で「O(n)」時間かかります。
したがって、実行時間はO(2^n * n * n * O(n))
=O(2^n * poly(n))
です。さらなる洞察は、それO(2^n * poly(n))
がに等しいことを示していO(2^n)
ます。
于 2012-11-15T19:48:15.760 に答える