根據wiki將需要(N-1)!計算與N個城市的遊覽。我發現了一個更好的方法來做到這一點,但我無法用數學來計算我改進了多少。我可以告訴你,在我的家用電腦上,我能夠在不到1個小時內解決20個城市的地圖。 20! = 2.43290200e + 18。這是我做的:旅行商TSP:蠻力算法改進
當使用brout算法搜索N個城市的路線時(讓我們給他們一個名字:City(1),City(2),City(3)... City(N)) (1),城市(2),城市(3),城市(4)...城市(N)以及之後的一段時間,這個城市(1),城市(3) ),城市(2),城市(4)...城市(N)。我聲稱第二次計算是不必要的。如果我只計算City(4)... City(N)的最短路線,我可以用它來進行第二次計算,並確定哪條路線更好。
使用這個技巧,我可以通過下列方法減少我爲K城市做的計算次數:(N - k)這是可以讓誰成爲第一個城市的選項數量,乘以(N - K - 1)!這是我必須選擇其餘城市的選項的數量,並且減去第一次,我需要執行完整的計算。所以它會是(N - K)!你需要將所有K的總和從k = 3到k = N - 2加起來。
這就是我去的地方(這不是很遠)......我希望你能夠幫我計算一下。
我覺得這是一個已知的伎倆,以提高茶匙,以便它可以處理1名或2個以上的城市進行比較的爲O(n^2 * 2^n)算法。介意在這裏發佈你的代碼? – noooooooob
@noooooooob也發佈它[這裏](http://cs.stackexchange.com/questions/16076/traveling-salesman-heldkarp-algorithm-big-improvement) –