也許這就是「通過手動迭代每種可能性並存儲最短路徑」原始海報的含義,但我想我想明確看起來是什麼樣的基準解決方案。
假設您已經有了一個兩點最短路徑算法 - 這對於各種圖形都有經典的解決方案。假設所有的距離都是非負的,並且d(A→B→C)= d(A→B)+ d(B→C)。
的要領是,該路徑始於S端變爲通過中間城市「ABCD」的一個和爲E結束:
例如SabcdE,SacbdE等...
只有4箇中間城市,列舉了所有24個排列組合。對於每個置換使用最短的兩點算法來計算從頭到尾的路徑及其總距離。
然後給出起點和終點,有12個可能性附加到abcd之一,併爲每個內部的兩種可能性。你已經計算出了這些距離,所以你添加了從S到頭部和尾部的距離。選擇最小值。所以一旦你預先計算了一組固定的內部城市的中間距離,你需要爲任何一對開始和結束點做12個兩點最短路徑問題。
隨着越來越多的中等城市數量的增加,我不清楚,除非你對圖結構施加更大的限制(這是否在物理歐幾里德空間?三角不等式中),它可能會更好。
我想的例子:假設城市之間的所有中間距離都是O(1)。沒有對圖表的限制,那麼從S到任何中間城市的距離可能是1000,除了一個是1.尾部相同。所以你可以強迫第一個城市被視爲任何東西。現在,往下走一層,以第一個城市爲「起點」。應用相同的參數:通過操縱圖形中的距離,可以使最佳路徑進入以下任意城市。
因此,似乎複雜性不能沒有額外的假設幫助。
這是一個定向或雙向圖嗎?我不知道。 –
這裏的一些答案(TSP,Floyd-Warshall,廣度優先,分支和界限)源於對這個問題的非常不一致和矛盾的解釋,所以我傾向於認爲這裏的問題不是很好地表達。 – Juliet
讓我簡單地重述一下:一個例子是我正在度假,而我住在一個城市。我想看到從我的任何四個城市開始,我想盡可能走最短的路程。我不能一次訪問同一個城市。 –