首页 | 主题 | 图库 | 问答 | 文摘 | 原创 | 百科

历史 | 地理 | 人物 | 艺术 | 体育 | 科学 | 音乐 | 电影 | 信息技术 | 世界遗产

 开放、中立,源自维基百科

个人工具


用搜狗搜索相关网站  Google Search

NP完全

维库,知识与思想的自由文库

(重定向自NP-完全)
跳转到: 导航, 搜索

本頁提供了一個關於NP完備(NP-complete,簡稱NPC)問題的技術描述,較為簡易的介紹請看P/NP問題

計算複雜度理論的世界中,NPC問題是NP(非決定性多項式時間)中最難的決定性問題。因此NP完備問題應該是最不可能被化簡為P(多項式時間可決定)的決定性問題的集合。許多人推測P與NPC沒有交集。理由是因若任何NPC問題得到多項式時間的解法,那此解法就可應用在所有NP問題上。更詳細的定義容下敘述。

一個NPC問題的例子是子集合加總問題,題目為

給予一個有限數量的整數集合,找出任何一個此集合的非空子集且此子集內整數和為零。
意即:I是一個包括若干整數的集合,找出任一I′I且∑ I′ = 0

這個問題的答案非常容易驗證,但沒有任何一個夠快的方法可以在合理的時間內(意即多項式時間)找到答案。只能一個個將它的子集取出來一一測試,它的時間複雜度是Ο(2n),n是此集合的元素數量。

目录

[编辑] NPC的正式定義

假設P ≠ NP的複雜度類的圖解。若P = NP則三類別相同。
假設PNP的複雜度類的圖解。若P = NP則三類別相同。

一個決定性問題C若是為NPC,則代表它對NP是完備的,這表示:

  1. 它是一個NP問題,且
  2. 它是一個NP-困難問題,意即其他屬於NP的問題可變換reducible)成它。

可變換在此意指對每個問題L,總有一個多項式時間多對一變換,即一個決定性的演算法可以將實例lL 轉化成實例cC,並讓c 回答Yes当且仅当此答案對l 也是Yes。為了證明某個NP問題A實際上是NPC問題,證明者必須找出一個已知的NPC問題可以變換成A

本定義的得到一個結論,就是若上述的C有一個多項式時間可解的演算法,則我們可以將所有的NP問題降到P之中。

這個定義是史提芬•古克[1]所提出。雖然NPC這個詞並沒有出現在這篇論文上任何地方。在這個資訊科學會議上,資訊科學家激動地討論NPC問題是否可以在一個確定型圖靈機上以多項式時間求解。John Hopcroft總結與會眾人的共識,認為由於沒有人能對某一命題提出駁倒對方的證明,此問題不會於現在解決。此命題就是知名的

P和NP相等嗎?

尚未有人能提出證明,說明NPC問題是否能在多項式時間中解決,使得此問題成為著名的数学中未解决的问题劍橋大學的「克雷數學研究所」(Clay Mathematics Institute, 簡稱CMI)提供了一百萬美金獎金給任何可以證明P=NP或P≠NP的人。

一開始很難相信NPC問題是實際存在的,但著名的古克-李芬定理說明了一切(由Leonid Levin與Cook獨立證出SAT問題是NPC問題,簡化過但依舊艱深的證明在此)。

1972年Richard Karp證明有好幾個問題也是NPC(請見Karp的21個NP完全問題),因此除了SAT問題外,的確存在著一整類NPC問題。從古克開始,數千個問題藉由從其他NPC問題變換而證實也是NPC問題,其中很多問題被蒐集在GareyJohnson1979年出版的書之中[2]

一個滿足條件2但不滿足條件1的問題被稱為NP-hard。正式地說,一個NP-hard問題至少跟NPC問題一樣難,也許更難!例如在某些任意大的棋盤遊戲走出必勝的下法,就是一個NP-hard的問題,這個問題甚至比那些NPC問題還難!

[编辑] 範例問題

另一個有趣的例是圖同構(isomorphism)問題,即以圖論方法決定兩個圖是否為同構。兩圖同構的直覺條件是若其中一圖可以經由移動頂點使它與另一個圖重合,則為同構。 思考下列兩問題:

  • 圖同構:圖G1是否與圖G2同構?
  • 子圖同構:圖G1是否與圖G2任一子圖同構?

子圖同構問題是NPC,而圖同構問題一般認為不是P也不是NPC問題,雖然它明顯是一個NP問題。這是一個典型被認為很難卻還不是NPC問題的例子。

想要證明一個問題是NPC,最簡單的方法是先證明它屬於NP,然後將它變換成某個已知是NPC的問題。因此在學習變換技巧前,先熟悉各種不同類型的NPC問題是很有用的。下表列出了一些以決定性命題表示的著名NPC問題:

變換流程圖。
變換流程圖。

更多NPC問題的例子,請見NP-complete問題列表英文版)。

右邊是一些NPC問題及證明其為NPC問題的變換流程圖。在流程圖中,箭頭代表的是從何問題變換成另一問題的過程,要注意的是這張圖並不代表這些問題的數學關係,事實上任兩個本質為NPC的問題都可以以多項式時間變換,這圖僅指示可以讓研究者較為簡單地變換問題的順序。

通常一個P與NPC問題的敘述看起來只有一些不同的地方,例如3SAT問題(SAT問題的限制版本)仍然是NPC問題,但更限制的2SAT問題則是個P問題(準確的說,是NL-complete問題),而條件較為寬鬆的MAX 2SAT問題卻又成了NPC問題。決定一個圖是否能被兩色塗滿是P問題,但三色圖是NPC問題,即使我們將它限制在平面圖上。決定一個圖有無迴圈或它是兩分圖很容易(在log空間等級),但是發現一個最大二分圖或最大迴圈子圖則是NPC。以一固定百分比來求郊遊打包問題的最佳解可以在多項式時間解決,但是求最佳解是NPC。

[编辑] 折衷的解法

目前為止,所有已知解NPC問題的演算法需要依照資料數量而定的超多項式(superpolynomial)時間,目前也不知道是否有任何更快的演算法存在。因此要在輸入資料量大的時候解決一個NPC問題,通常我們使用下列的手段來解:

  • 近似演算法: 這類演算法可以快速發現離最佳解在一定差距內的次佳解。
  • 亂數演算法: 此類演算法可提供一亂數產生的輸入資料,讓本質上解答分佈均勻的受測程式可以有良好的求解效率。對於解答分佈不均勻的程式,則可以降低亂數程度以改變輸入資料。
  • 特例: 此演算法可以在題目呈獻某些特殊情況時快速得解。參數化複雜度Parameterized complexity)可視為廣義的此類演算法。
  • 啟發式演算法: 這種演算法在許多時候可以產生理性解答(即運用評比或線索找出解),但無法保證它效率的良莠與解答的好壞程度。

一個啟發式演算法的例子是用在圖著色問題以O(n log n)的貪婪演算法找次佳解,用在某些編譯器的暫存器配置階段上,此技術又叫圖著色全域暫存器配置graph-coloring global register allocation)。每頂點視為一變數,每邊代表兩變數同時使用的情況,顏色則代表配置給每一變數的暫存器編號。由於大多數的RISC機器擁有大量通用暫存器,因此啟發式演算法很適合用來解這類題目。

[编辑] 其他變換法

依照上述NPC的定義,所謂的變換其實是多項式時間多對一變換的簡稱。

另一種化約法稱為多項式時間圖靈變換polynomial-time Turing reduction)。若我們提供一個副函式(subroutine)可以在多項式時間解出"Y",可寫出呼叫此副函式的程式並在多項式時間解出問題"X",代表我們可以將"X"多項式時間圖靈變換成"Y"。相較起來,不同處在於多對一變換只能呼叫上述副函式一次,且副函式的回傳值必須就是整個變換程式回傳的值。

如果有人使用圖靈變換而非多對一變換來解析NPC,此問題的解答集合不一定會小於NPC。孰大孰小其實是個開放問題。如果兩個概念相同,則可導出NP=反NPco-NP)。此結論成立的道理在於NPC與反NPC的定義以圖靈變換來看是相等的,且圖靈變換定義的NPC包含多對一變換定義的NPC,反NPC也是相同情況。所以若是兩種變換定義的NPC一樣大的話,反NPC也會比照辦理(在兩者的定義之下)。例如SAT的反問題也會是NPC(在兩者的定義之下)。因此推得NP = 反NP(證明在反NP條目中)。雖然NP是否等於反NP是個開放問題,但一般認為這似乎不大可能,也因此那兩類的NPC定義也不大可能相等。

另一種很常用於NPC證明的變換手法是對數空間多對一變換logarithmic-space many-one reduction),它是一種可以在對數量級空間運用的多對一變換法。由於每道可以在對數空間完成的運算也可以在多項式時間做完,因此能使用對數空間多對一變換的場合也可以使用多項式時間多對一變換。本方法較多項式時間多對一變換優雅,它也可以讓我們對演算法複雜度細分出更多分類,例如P完備複雜度。而NPC的定義是否會因為使用不同變換手法而產生差異,仍是一個未知的問題。

[编辑] 參閱

[编辑] 參考資料

  1. ^ S. A. Cook (1971). The complexity of theorem proving procedures, Proceedings, Third Annual ACM Symposium on the Theory of Computing. New York: ACM, 151-158. 
  1. ^ Garey, M.; D. Johnson (1979). Computers and Intractability; A Guide to the Theory of NP-Completeness. ISBN 0-7167-1045-5. 

(此書是發展此理論及集多種問題的經典。)

  1. Paul E. Dunne. An Annotated List of Selected NP-complete Problems. The University of Liverpool, Dept of Computer Science, COMP202. 
  1. Pierluigi Crescenzi; Viggo Kann, Magnús Halldórsson, Marek Karpinski, and Gerhard Woeginger. A compendium of NP optimization problems. Stockholm: KTH NADA. 
  1. Computational Complexity of Games and Puzzles
  2. Tetris is Hard, Even to Approximate
  3. Minesweeper is NP-complete!
  4. Thomas H. Cormen; Charles E. Leiserson, Ronald L. Rivest and Clifford Stein (2001). "NP-Completeness", Introduction to Algorithms, Second Edition, MIT Press and McGraw-Hill, 966-1021. ISBN 0-262-03293-7. 
  1. Michael Sipser (1997). "NP-completeness, Additional NP-complete Problems", Introduction to the Theory of Computation. PWS Publishing, 248-271. ISBN 0-534-94728-X. 
  1. Christos Papadimitriou (1993). "NP-complete problems", Computational Complexity, 1st edition, Addison Wesley, 181-218. ISBN 0-201-53082-1. 


一般的 複雜度類 (more)
P • NP • 反NP • NP完全 • 反NP完全 • NP難 • UP • #P • #P-C • L • NL • NC • P完全 • PSPACE • PSPACE完全 • EXPTIME • EXPSPACE • PR • RE • 反RE • RE完全 • 反RE完全 • R • BQP • BPP • RP • ZPP • PCP • IP • PH
其它语言
AD Links