前提・実現したいこと
ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
C言語
1int i0 = 0; 2bool fImproved = true; 3while (fImproved) { 4 fImproved = false; 5 for (int i = i0; i < i0+n; i++) { 6 for (int j = i+2; j < i+n-1; j++) { 7 if (Dist[Tour[i%n]][Tour[j%n]] + Dist[Tour[(i+1)%n]][Tour[(j+1])/%n]] 8 < Dist[Tour[i%n]][Tour[(i+1)%n]] + Dist[Tour[j%n]][Tour[(j+1)%n]]) { 9 // 部分経路を逆順に並び替える 10 for (k = 0; k < (j-i)/2; k++) { 11 int temp = Tour[(i+1+k)%n]; 12 Tour[(i+1+k)%n] = Tour[(j-k)%n]; 13 Tour[(j-k)%n] = temp; 14 } 15 i0 = (i+1)%n; 16 fImproved = true; // 改善した 17 break; 18 } 19 } 20 if (fImproved) break; // 改善した 21 // ここで経路長をプリント 22 } 23} 24
試したこと
自分なりにネットを参考にしてプログラムを書いてみましたが,ネットに載っているプログラムの意味が良くわからなくてなかなか実装にたどり着けません.
i,j,kについてそれぞれ何を表しているのか具体的に説明していただけると助かります.
参考文献はhttp://home.a00.itscom.net/hatada/np/tsp/tsp_2opt01a.htmlです.
特にjとkをプログラム内に組み込む意味が分かりません.
2-opt法のアルゴリズムは理解しているつもりですが,プログラムに起こすことができないのでどうかよろしくお願いします.
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/03 12:18