當前位置:
首頁 > 最新 > 複雜問題的簡單指南

複雜問題的簡單指南

原標題:複雜問題的簡單指南


原創: Kevin


編譯:仔仔


授權轉自:原理


計算機能夠做什麼?又有哪些問題計算機幾乎不可能解決?這些問題構成了計算複雜度的核心。這裡,我們呈現了一張關於計算複雜度的地圖:


各種「複雜性類」(complexity class)將問題排序為層級結構:一個類可能包含另一個類的所有問題,以及其他需要額外計算資源的問題。


一個問題從本質上來說能有多難?這是計算機科學家的基本任務,他們希望將問題歸類到所謂的複雜性類(complexity class)中。複雜性類包含所需計算資源少於一定數量的所有計算問題,這種計算資源通常指時間或內存。


以一個非常大的數字123456789001為例,一個問題可能會是:這個數字是質數、也就是只能被1和它自己整除嗎?計算機科學家可以用快速演算法(fast algorithm)解決這個問題,這種演算法不會因為數字變得任意大而陷入停頓。對於123456789001這個例子,答案是它並不是質數。


然後我們可能會問:這個數字的質因數是什麼?對於這個問題,並不存在第一個問題中的快速演算法——除非使用量子計算機。因此,計算機科學家認為這兩個問題屬於不同的複雜性類。


存在許多不同的複雜性類,儘管大多數情況下,研究者還不能證明一個類完全區別於其他類。證明這些分類間的區別是該領域最困難和最重要的開放性問題之一,這就是為什麼五月底Ran Raz和Avishay Tal這兩位計算機科學家的證明結果被認為是如此重要。他們解決了科學家們自1993年就開始尋求答案的問題,證明了存在一些只有量子計算機能夠解決、而無論現在或未來的經典計算機都永遠不可能解決的問題,也就表明了量子計算機和經典計算機的兩個複雜性類確實不同。(進一步閱讀《誤解帶來的樂觀與恐慌》)


複雜性類之間的差異可以是微妙的,也可以是明顯的,如何正確分類是一個挑戰。因此,我們將介紹以下10個基本的複雜性類作為一個入門,希望你看完後再也不會混淆BPP和BQP了。


P


代表:多項式時間(Polynomial time)


簡單介紹:經典(非量子)計算機能夠輕易解決的所有問題。

詳細介紹:P類的演算法必須在多項式時間 t=n^c 內停止並輸出正確的結果,其中n是輸入的長度,c是常數。


典型問題:

  • 一個數是質數嗎?
  • 兩點之間的最短路徑是什麼?

NP


代表:非確定性多項式時間(Nondeterministic Polynomial time)


簡單介紹:只要給出一個解,經典計算機就能夠快速驗證給出的解是否正確的所有問題。


詳細介紹:如果給定「是」的答案,可在多項式時間內確定這個答案是正確的,這就是一個NP問題。如果輸入是一個字元串X,需要判斷答案是否為「是」,那麼這個簡短的證明將是另一個字元串Y,然後,在多項式時間內,Y被用來驗證答案是否為「是」。(Y有時被稱為「短時見證」(short witness),NP類的所有問題都有「短時見證」,這些「短時見證」使得問題能夠迅速被解決。)


典型問題:

  • 分團問題(Clique problem)

想像一個有邊和節點的圖形,例如Facebook的社交網路圖,其中節點是個人,如果兩個人建立好友關係,兩個節點就被一條邊連接。小團體(Clique)是整個圖形的一個子集,其中每一個人都是其他人的朋友,也就是其中任意兩個節點彼此連接。有人或許會問:存在20個人的小團體嗎?50個人呢?100個人呢?尋找這樣的小團體是圖論領域的一個「NP完全」(NP-complete)問題,NP完全意味著這是NP類問題中最複雜的一種。然而,如果給出了一個潛在的答案,比如說50個節點可以或不可以形成一個小團體,那麼問題就迎刃而解了。



6個節點的網路圖中大小為3的小團體。來源 | Wikepedia

  • 最短路徑問題(Travelling salesman problem)

考慮一系列城市,其中每一對城市之間的距離是已知的,有沒有一種方法能夠以最短的距離穿越所有的城市呢?例如,一個旅行推銷員能夠穿越美國各個州的首府,而將行程控制在11000英里內嗎?(進一步閱讀:《一位旅行家》)



最短路徑問題。來源 | Wikepedia


NP-Complete


代表:NP 完全


簡單介紹:在多項式時間內,所有NP類問題都能夠被規約到的問題的集合。


詳細介紹:在多項式時間內,如果所有NP類問題都能被轉化為另一個NP問題,那麼這個轉化後的NP類問題就稱為NP完全問題。NP完全問題滿足兩個條件:1. 本身是NP類問題。2. 所有NP類問題都能規約到該問題。


典型問題:

  • 給一個整數集合,證明是否存在一個非空子集,使得該集合內的數字和為0。

NP-Hard


代表:NP困難

簡單介紹:在多項式時間內,能夠被規約到該問題的所有問題。


詳細介紹:在多項式時間內,如果所有問題都能被轉化為另一個問題,那麼這個轉化後的問題就稱為NP困難問題。它滿足NP完全問題的第二個條件,但不一定要滿足第一條,即NP困難問題未必能在多項式時間內驗證。


典型問題:

  • 停機問題(詳見:《一個無法被證明的邏輯問題》)


左側是在假定P≠NP的前提下,P,NP,NP-Complete與NP-Hard四個複雜性類的關係,右側則是假定P=NP的前提下它們的關係。 | 來源 Wikipedia


PH


代表:多項式層級結構(Polynomial Hierarchy)


簡單介紹:PH是NP的外推,它包含NP類的所有問題,並在NP類問題的基礎上,添加了額外的複雜度。


詳細介紹:PH類包含一些交替使用比如「存在」、「每一個」、「所有」等「量詞」(quantifier)的問題,使NP類問題更加複雜。一個關於交替量詞問題的例子是:給定X,是否存在這樣的Y,使得對於每一個Z,都存在這樣的W,使得R成立?一個問題包含的量詞越多,它就越是複雜,在多項式層級結構中的排序也就越高。


典型問題:

  • 確定是否存在規模為50的小團體,但不存在規模為51的小團體。

BPP


代表:有限錯誤概率多項式時間(Bounded-error Probabilistic Polynomial time)


簡單介紹:在多項式時間內,可以通過包含隨機性元素的演算法快速解決,且通常輸出結果的錯誤概率小於1/3的問題。


詳細介紹:BPP與P唯一不同的是,BPP的演算法允許包含隨機決策的步驟。BPP的演算法只需要以接近1的概率給出正確答案即可。


典型問題:

  • 給定兩個不同的公式,每個公式產生一個包含很多變數的多項式,這兩個公式計算的是相同的多項式嗎?這個問題叫做多項式恆等檢驗問題。

研究人員想知道的是:BPP=P是否成立。如果這是真的,那就意味著每一個隨機性演算法都可以去隨機化。他們相信這是事實,因為對於每一個存在有效隨機性演算法的問題,都有一個有效的確定性演算法,但他們還不能證明這一點。


BQP


代表:有限錯誤量子多項式時間(Bounded-error Quantum Polynomial time)


簡單介紹:在多項式時間內,量子計算機能夠輕易解決的所有問題。


詳細介紹:在多項式時間內,量子計算機能夠輕易解決,且錯誤機率小於1/3的所有問題。

典型問題:

  • 確定一個整數的質因數。

計算機科學家已經證明:PSPACE包含BQP,且BQP包含P。關於BQP和NP這兩個類的關係,有一些問題屬於NP類,而不屬於BQP類,反之亦然,兩者互不包含。



計算複雜度地圖上一塊新區域:上文提到的五月底的研究,證明了存在屬於BQP,卻不屬於PH的問題。(註:P-經典計算機能夠快速解決的問題;NP-經典計算機就能夠驗證正確性的問題;NPC-NP完全問題;BQP-量子計算機能夠有效決的問題。)


QMA


代表:量子梅林亞瑟(Quantum Merlin Arthur)


簡單介紹:量子計算下的NP類問題。


詳細介紹:在量子計算下,如果給定 「是」的答案,在多項式時間內,能夠完成驗證,確定這個答案正確與否,這就是QMA類問題。QMA類問題相對於BQP類問題的關係,就相當於NP類問題相對於P類問題,也就是驗證與求解的複雜度的區別。


典型問題:

  • 局部哈密頓量問題。

PSPACE

代表:多項式空間(Polynomial Space)


簡單介紹:PSPACE包含了所有隻要用合理大小的內存(多項式量級的內存)就能解決的問題。


詳細介紹:在PSPACE中,我們不關心時間,只關心運行演算法所需的內存。


典型問題:

  • P、NP和PH類的所有問題都包含在PSPACE中。

計算機科學家已經證明,PSPACE包含PH,PH包含NP,NP包含P。然而,對於P是否等於NP,是否等於PH,是否等於PSPACE,計算機科學家始終一籌莫展。P=NP問題是克雷數學研究所發布的七道難題之一,可以進一步閱讀《一個價值百萬美金的問題》了解更多。


EXPTIME


代表:指數時間(EXPonential Time)


簡單介紹:在指數時間內,經典計算機能夠解決的所有問題。


詳細介紹:EXP包含之前所有的類——P、NP、PH、PSPACE、BQP和QMA等。研究人員已經證明,EXP不同於P,他們在EXP中發現了不屬於P的問題。


典型問題:

  • 國際象棋和跳棋之類的遊戲都屬於EXP。如果棋盤可以是任意大小的,那麼在給定的棋局形勢下,確定哪一個棋手具有優勢就是一個EXP問題。

計算機科學家想要證明PSPACE不包含EXP。他們認為EXP中有一些問題不包含在PSPACE中,因為有時候EXP類問題的解決需要大量的內存。計算機科學家知道如何區分EXP和P。


在計算複雜度的地圖上,科學家們已經證明與尚未證明的問題可以總結如下:



從中可見,問題的源頭主要在於那個價值百萬美金的問題:P=NP是否成立。P是否等價NP的問題,可以簡化為NP完全問題的證明,也就是證明,是否能用多項式級複雜度的演算法來解決任何一個NP完全問題。


編譯:仔仔


審校:孫鵬


參考鏈接:

https://www.quantamagazine.org/a-short-guide-to-hard-problems-20180716/

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 哲學園 的精彩文章:

卜天譯館(II)
斯坦福哲學百科全書詞條:意識(3)

TAG:哲學園 |