TSP には基本的に 3 つのアプローチがあります。
- 強引な
- 経験則
- 概算
ブルート フォースの使用は、ノード数が少ない場合のオプションです。すべての(n-1)!
順列を生成し、それらの長さを計算するだけです。問題に合わせて変更する必要があるのは、静的ポイントが割り当てられた場所にないものを除外するために可能なラウンドトリップを生成するアルゴリズムだけです。
ヒューリスティック (シミュレートされたアニーリングなど) を使用すると、はるかに大きな問題の TSP を計算できますが、完全なラウンドトリップは保証されません。これらは多くの場合、既存のソリューションを使用して、そこからランダムに異なるソリューション (または複数のソリューション) を導き出します。問題に合わせて、静的点が割り当てられた位置にあるという要件に違反する場合は、派生したソリューションを破棄します。
3 番目のバリアントは、多項式時間で往復するアルゴリズムを使用します。たとえば、最小スパニング ツリーに沿って歩いたり、一方向に掃引したり、それらを貪欲にトラバースしたりします。これらは良いタイミングを提供しますが、結果として得られるラウンドトリップの品質とのトレードオフになります。特定のポイントが特定の位置にあることを必要とするソリューションにこれらを適応させる方法が明確にわかりません。それらは単純であるため、これらの追加要件に簡単に適応することはできません。