-1

すべてのポイント間の距離を計算し、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

ポイントの数が増えるにつれて、少なくとも半分の作業を節約できます。繰り返しの注文を排除するためのいくつかの代替案を書きましたが、コードでそれを表現する方法がわかりません(ヘルプ)。

リクエストがあれば、ここで見つけたいくつかの代替案を投稿します。

誰かが疑似コードの形であなたのアイデアを投稿できる場合は、どうすれば繰り返しの注文をなくすことができますか. ありがとう!

4

1 に答える 1