Loading AI tools
在图中寻找最长简单路径的问题 来自维基百科,自由的百科全书
在圖論和理論計算機科學中,最長路徑問題是指在給定的圖中找出長度最長的簡單路徑。一條不具有任何重複頂點的路徑被稱為簡單路徑。無權圖中路徑的長度就是邊的數量,而有權圖中路徑長度是邊權重之和。不同的是,與此相反的最短路徑問題(不含負權環)可以在多項式時間內解決。而最長路徑問題是NP困難的,這意味著除非P = NP,否則對應於任意的圖,沒有辦法在多項式時間內解決該問題。更強的結果表明這個問題也難以近似地得出答案。但是,有一個線性時間的方法可以用於有向無環圖,這對於發現調度問題中的關鍵路徑有重要的作用。
可以從哈密頓路徑問題規約到未加權最長路徑問題,這顯示出後者屬於NP-困難類別:若且唯若圖G的最長路徑的長度是n−1時(n是圖中頂點的數量),圖G有哈密頓路徑。 由於哈密頓路徑問題是NP完全的,此規約表明最長路徑問題的決定版本也是NP完全的。在該決定問題中,輸入是圖G和數k;如果G中存在至少一條由k條或更多條邊的路徑,則輸出為「是」,否則為「否」。[1]
如果可以在多項式時間內解決最長路徑問題,則可以通過找到最長路徑,然後將其長度與數k進行比較來將其用於解決該決定問題。因此,最長的路徑問題是NP難的。問題「在給定圖中是否存在具有至少k條邊的簡單路徑」是NP完全的。[2]
在加權圖G中兩個給定頂點s和t之間的最長路徑,與通過將G中每個權重改變為其相反數所導出的圖-G中的最短路徑相同。因此,如果在-G中找到最短路徑,則在G中也可以找到最長路徑。[4]
對於大多數圖而言,此變換並無用途,因為它在-G中產生了負環。但是如果G是有向無環圖(DAG),則不會有負環,並且通過對-G中的最短路徑應用線性時間算法,可以在線性時間里找到G的最長路徑,因-G也是有向無環圖。[5]
對於給定DAG中的每個頂點v,可以通過以下步驟獲得以v結尾的最長路徑的長度:
完成此操作後,可以從記錄值最大的頂點v開始,然後向後找記錄值最大的連入鄰接點,最後反轉這條路徑就是結果。這和在-G上運行最短路算法等價。
關鍵路徑方法是進行工程項目計劃時常用的一種估算項目所需時間的方法。使用時,需要構造有向無環圖,其中頂點表示項目里程碑,邊表示達到某一個里程碑之後,要通向另一個里程碑所必須的活動;通過估計完成相應活動將花費的時間,算出每條邊的邊權。在這樣的圖中,從第一個里程碑到最後一個里程碑的最長路徑是關鍵路徑,它描述了完成項目的總時間。[5]
有向無環圖的最長路徑也可以用於分層圖繪製:將有向無環圖G的每個頂點v分到層數是以v結尾的最長路徑長度的層,這種層分配使G的層數最小。[6]
迪傑斯特拉在20世紀60年代提出了一種用於在樹中找到最長路徑的線性時間算法,而該算法的正式證明於2002年出版。[7]此外,最長路徑可以在加權樹上,塊圖上,仙人掌圖上,[8]二分置換圖上,[9]和托勒密圖上[10]以多項式時間計算。
對於區間圖,已知 時間的算法,其使用動態規劃方法。[11]這種動態規劃方法已被用於獲得Circular-arc 圖[12]和可比性補圖(即可比性圖的補圖,也包含置換圖)[13]的多項式時間算法,兩者具有相同的運行時間 。後一種算法基於可比性補圖的詞典深度優先搜索(LDFS)頂點排序的特殊屬性。[14]對於共同可比性圖,還已知有較高運行時間 的另一種多項式時間算法,其基於由輸入的可比性補圖的補圖定義的偏序關係的哈斯圖。[15]
此外,最長路徑問題可以在樹寬有界或團寬有界的任何圖上在多項式時間內解決,例如距離-遺傳圖。最後,在哈密頓路徑問題是NP難的所有圖上顯然最長路徑問題也是NP難的,例如在分割圖,圓圖和平面圖上。
當通過路徑長度參數化時,最長路徑問題是固定參數易處理的。例如,可以通過執行以下步驟的算法,以輸入圖大小的線性時間求解最長路徑問題(但對於路徑長度呈指數時間):
由於輸出路徑的長度至少與一樣大,因此運行時間也受 的限制,其中是最長路徑的長度。[16]
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.