すべてのポイント間の距離を計算し、BRUTE Force メソッドを使用して最短距離を決定する巡回セールスマン プログラムを作成しています。これは宿題ではありません:)
私のアプローチは、 std next_permutation 関数を使用して、最初にすべての可能なポイント配置を生成することです。
std next_permutation 関数を使用すると、出力順序が生成されます。
(3点あるとします)
123
132
213
231
312
321
(4点の場合も同様)
1234
1243
...
4312
4321
ただし、123 の距離は 321 と同じであるなど、繰り返しが原因でプログラムが遅くなります (計算を 2 回実行していませんが、各距離を構造体に保存しました)。繰り返しを削除した後、3 点の例に戻りましょう。出力は次のようになります。
123
132
213
ポイントの数が増えるにつれて、少なくとも半分の作業を節約できます。繰り返しの注文を排除するためのいくつかの代替案を書きましたが、コードでそれを表現する方法がわかりません(ヘルプ)。
リクエストがあれば、ここで見つけたいくつかの代替案を投稿します。
誰かが疑似コードの形であなたのアイデアを投稿できる場合は、どうすれば繰り返しの注文をなくすことができますか. ありがとう!