圖論理論計算機科學中,最長路徑問題是指在給定的圖中找出長度最長的簡單路徑。一條不具有任何重複頂點的路徑被稱為簡單路徑。無權圖中路徑的長度就是邊的數量,而有權圖中路徑長度是邊權重之和。不同的是,與此相反的最短路徑問題(不含負權環)可以在多項式時間內解決。而最長路徑問題是NP困難的,這意味著除非P = NP,否則對應於任意的圖,沒有辦法在多項式時間內解決該問題。更強的結果表明這個問題也難以近似地得出答案。但是,有一個線性時間的方法可以用於有向無環圖,這對於發現調度問題中的關鍵路徑有重要的作用。

NP-困難性

可以從哈密頓路徑問題規約到未加權最長路徑問題,這顯示出後者屬於NP-困難類別:若且唯若圖G的最長路徑的長度是n−1時(n是圖中頂點的數量),圖G有哈密頓路徑。 由於哈密頓路徑問題是NP完全的,此規約表明最長路徑問題的決定版本也是NP完全的。在該決定問題中,輸入是圖G和數k;如果G中存在至少一條由k條或更多條邊的路徑,則輸出為「是」,否則為「否」。[1]

如果可以在多項式時間內解決最長路徑問題,則可以通過找到最長路徑,然後將其長度與數k進行比較來將其用於解決該決定問題。因此,最長的路徑問題是NP難的。問題「在給定圖中是否存在具有至少k條邊的簡單路徑」是NP完全的。[2]

在具有非負邊權的加權完全圖中,加權最長路徑問題與旅行推銷員問題相同,因為最長路徑總是包括所有頂點。[3]

無環圖

在加權圖G中兩個給定頂點st之間的最長路徑,與通過將G中每個權重改變為其相反數所導出的圖-G中的最短路徑相同。因此,如果在-G中找到最短路徑,則在G中也可以找到最長路徑。[4]

對於大多數圖而言,此變換並無用途,因為它在-G中產生了負環。但是如果G有向無環圖(DAG),則不會有負環,並且通過對-G中的最短路徑應用線性時間算法,可以在線性時間里找到G的最長路徑,因-G也是有向無環圖。[5]

對於給定DAG中的每個頂點v,可以通過以下步驟獲得以v結尾的最長路徑的長度:

  1. 找到給定DAG的拓撲排序
  2. 對於DAG的每個頂點v,在拓撲排序中,通過檢查連入的鄰接點,並將這一個鄰接點記錄的最大長度加1來計算以v結尾的最長路徑的長度。如果v沒有連入的鄰接點,則將以v結尾的最長路徑的長度設置為零。在所有情況下,記錄下這個數,以便算法的後續步驟訪問它。

完成此操作後,可以從記錄值最大的頂點v開始,然後向後找記錄值最大的連入鄰接點,最後反轉這條路徑就是結果。這和在-G上運行最短路算法等價。

關鍵路徑

關鍵路徑方法是進行工程項目計劃時常用的一種估算項目所需時間的方法。使用時,需要構造有向無環圖,其中頂點表示項目里程碑,邊表示達到某一個里程碑之後,要通向另一個里程碑所必須的活動;通過估計完成相應活動將花費的時間,算出每條邊的邊權。在這樣的圖中,從第一個里程碑到最後一個里程碑的最長路徑是關鍵路徑,它描述了完成項目的總時間。[5]

有向無環圖的最長路徑也可以用於分層圖繪製英語layered graph drawing:將有向無環圖G的每個頂點v分到層數是以v結尾的最長路徑長度的層,這種層分配使G的層數最小。[6]

圖的特例

迪傑斯特拉在20世紀60年代提出了一種用於在樹中找到最長路徑的線性時間算法,而該算法的正式證明於2002年出版。[7]此外,最長路徑可以在加權樹上,塊圖英語Block graph上,仙人掌圖英語Cactus graph上,[8]二分置換圖英語Permutation graph上,[9]托勒密圖英語Ptolemaic graph[10]以多項式時間計算。

對於區間圖英語Interval graph,已知 時間的算法,其使用動態規劃方法。[11]這種動態規劃方法已被用於獲得Circular-arc 圖英語Circular-arc graph[12]和可比性補圖(即可比性圖英語Comparability graph補圖,也包含置換圖英語Permutation graph[13]的多項式時間算法,兩者具有相同的運行時間 。後一種算法基於可比性補圖的詞典深度優先搜索(LDFS)頂點排序的特殊屬性。[14]對於共同可比性圖,還已知有較高運行時間 的另一種多項式時間算法,其基於由輸入的可比性補圖的補圖定義的偏序關係哈斯圖[15]

此外,最長路徑問題可以在樹寬有界或團寬有界的任何圖上在多項式時間內解決,例如距離-遺傳圖英語Distance-hereditary graph。最後,在哈密頓路徑問題是NP難的所有圖上顯然最長路徑問題也是NP難的,例如在分割圖英語Split graph圓圖英語Circle graph平面圖上。

參數化複雜性

當通過路徑長度參數化時,最長路徑問題是固定參數易處理的。例如,可以通過執行以下步驟的算法,以輸入圖大小的線性時間求解最長路徑問題(但對於路徑長度呈指數時間):

  1. 對圖進行深度優先搜索。設是得到的深度優先搜索樹英語Trémaux tree的深度。
  2. 使用深度優先搜索樹的根到葉路徑的順序,按照搜索遍歷的順序,構建圖的路徑分解英語Pathwidth,路徑寬度為
  3. 動態規劃應用於此路徑分解以找到最長的路徑 ,時間是,其中是圖中頂點的數量。

由於輸出路徑的長度至少與一樣大,因此運行時間也受 的限制,其中是最長路徑的長度。[16]

參見

參考文獻

外部連結

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.