2012-12-07 59 views
0

我有一個矩陣NxN其中matrice[i][j]是在非方向圖中頂點if j之間的邊的代價。從完整圖計算最短路徑

我需要確定的是最短路徑,其中包含矩陣中的所有頂點 。

因此,對於輸入,如:

0 198 67 368 
198 0 131 432 
67 131 0 301 
368 432 301 0 

我需要嘗試更多鈔票的所有路徑,並在這種情況下:

0-->1-->2-->3-->0 

是正確至極給人長度998

我如何能實現這個?

+2

您正在描述旅行推銷員問題。這個問題到處都有很多資料。 – amit

+1

關閉選民:爲什麼不是一個真正的問題?它是否有意義?模糊?過於寬泛?修辭? (不!它處理一些非常具體的問題,並詢問它是如何完成的) – amit

回答

3

您正在描述被廣泛研究的Traveling Salesman Problem

雖然有很多方法來近似解決方案 - 確切的解決方案確實需要指數運行時間,而蠻力是解決它的一個選項(在O (n!)中)。

這個想法是產生所有可能的排列和評估每個 - 並找到最小值。例如
This question討論如何生成所有排列。相同的想法適用於您的問題。

可以進行一些可能的優化,例如branch & bound技術 - 或者使用智能DP解決方案。

+0

非常感謝我沒有意識到我之前的問題已改變爲旅行商問題....我瞭解它如何可以是一維數組的donone,但我不能找出它的矩陣 – ziker