1. 程式人生 > >TSP問題之回溯法 cpp實現

TSP問題之回溯法 cpp實現

回溯法很簡單,但是時間太長了,我在程式中使用了tsplib的ulysses16,十六個城市

目前找到的最優解為

best current: 59.9963
0 14 12 10 8 9 13 4 5 6 11 15 1 2 3 7

比給出的參考標準要好不少

但是比標準資料更好的情況幾乎不可能發生

也許是我求距離錯了,因為這個case中有負的座標值,看看再說吧

standard path:
0 13 12 11 6 5 14 4 10 8 9 15 2 1 3 7
length of standard path:
 79.6844

找到這個解後一個多小時內沒有更優解

我實在沒有耐心執行下去了

於是想儲存執行引數,在下次執行時載入引數繼續執行

在寫了之後,卻發現行不通,程式使用了遞迴呼叫,要儲存引數,就要儲存所有深度的引數,而我只儲存了最後一層

要真正實現這個功能,就得用較大篇幅寫儲存引數了

我沒去寫

如果哪位仁兄完整運行了本程式,勞駕把最優解貼上來

程式中居然使用了ms級的計時器,這也太無聊了

不如直接看一下表,以小時為單位得了

完整的程式在這兒下載

程式寫的比較亂

歡迎批評、建議和討論