算法設計——P和NP問題的前世今生

什麼是P和NP問題

在這裏插入圖片描述

背景

20世界科學家在研究如何用巨大的復古電腦解決世界上所有的問題時,第一版被使用的程式通常都會特別慢,隨着時間的推移,人們會想出巧妙方法來使它變得更快,可是對於另一些問題,沒有人能想出更快的程式。
在這裏插入圖片描述
爲了解決這些事情,他們以問題的解決速度來做問題的分類,像乘法問題,有非常快的程式可解,但像下一盤完美的棋,就沒有那麼快的程式可解了。
但介於這兩者間的問題,他們不知道是否存在快速的解法,此時有了P和NP問題
在這裏插入圖片描述

  • P問題:存在多項式時間算法的問題。 所有可以用相當快速度解決的問題,如乘法問題。
  • np問題:能在多項式時間內驗證得出一個正確解的問題。,比如數獨我不能很快時間內給出正確答案,但是給了正確答案後我能很快的去驗證是否正確。 在這裏插入圖片描述

著名的NP問題——TSP問題

-旅行家推銷問題(TSPTSP)。即有一個推銷員,要到nn個城市推銷商品,他要找出一個包含所有nn個城市的環路,這個環路路徑小於aa。我們知道這個問題如果單純的用枚舉法來列舉的話會有(n1)!(n-1)! 種,已經不是多項式時間的算法了,(注:階乘算法比多項式的複雜)。那怎麼辦呢?我們可以用猜的,假設我人品好,猜幾次就猜中了一條小於長度aa的路徑,我畫畫畫畫,好的,我得到了一條路徑小於aa的環路,問題解決了,皆大歡喜。可是,我不可能每次都猜的那麼準,也許我要猜完所有種呢?所以我們說,這是一個NPNP類問題。也就是,我們能在多項式的時間內驗證並得出問題的正確解,可是我們卻不知道該問題是否存在一個多項式時間的算法,每次都能解決他(注意,這裏是不知道,不是不存在)。

NP類問題=P類問題?

所以這就引出了這類討論的一個千年問題:是否 NP類問題=P類問題?即,是否所有能在多項式時間內驗證得出正確解的問題,都是具有多項式時間算法的問題呢?太讓人震驚了,要是解決了這個問題,那豈不是所有的NP問題都可以通過計算機來解決?

約化

所謂問題約化就是,可以用問題B的算法來解決A ,我們就說問題A可以約化成問題B。舉個例子,一元一次方程的求解,跟二元一次方程的求解,我們知道,只要能求解二元一次方程,那就可以用二元一次方程的解法來求解一元一次方程,只需要將一元一次方程加上y,並附加一個方程y=0就可以將一元一次方程變形爲一個二元一次方程,然後用二元一次方程的解法來求解這個方程。注意,這裏二元一次方程的解法會比一元一次的複雜。所以我們說,只需要找到解二元一次方程的規則性解法,那就能用這個規則性解法來求解一元一次方程。

爲了證明這個千古難題,科學家想出了很多辦法。其中之一就是問題的約化。從這裏也可以看出,約化是具有傳遞性的,如A約化到B,B約化到C,A就可以約化到C,同時不斷約化下去,我們會發現一個很驚人的特性,就是他一定會存在一個最大的問題,而我們只需要解決了這個問題,那其下的所有問題也就解決啦!這就是我們所說的NPC問題的概念!!!

NPC問題

定義

存在這樣一個NP問題,所有的NP問題都可以約化成它。換句話說,只要解決了這個問題,那麼所有的NP問題都解決了。需滿足以下兩個條件:

  • 是一個NP問題;
  • 所有的NP問題都可以約化到它。

證明思路

先證明它至少是一個NP問題,再證明其中一個已知的NPC問題能約化到它。

NPC意義

引到NP問題裏就是,對於同一類的所有的NP類問題,若他們都可以在多項式時間內約化成最難的一個NP類問題,(我們直觀的認爲,被約化成的問題應具有比前一個問題更復雜的時間複雜度)當我們針對這個 時間複雜度最高的超級NP問題 要是能找到他的多項式時間算法的話,那就等於變向的證明了其下的所有問題都是存在多項式算法的,即NP=P!!!!

NP難問題(NP-hard問題)

滿足NPC問題定義的第二條但不一定要滿足第一條(就是說,NP-Hard問題要比 NPC問題的範圍廣,NP-Hard問題沒有限定屬於NP),即所有的NP問題都能約化到它,但是他不一定是一個NP問題。

NP-Hard問題同樣難以找到多項式的算法,但它不列入我們的研究範圍,因爲它不一定是NP問題。**即使NPC問題發現了多項式級的算法,NP-Hard問題有可能仍然無法得到多項式級的算法。**事實上,由於NP-Hard放寬了限定條件,它將有可能比所有的NPC問題的時間複雜度更高從而更難以解決。

以上四個問題他們之間的關係可以用下圖來表示:
在這裏插入圖片描述

解決N=NP問題的意義

在這裏插入圖片描述
只要問題不會指數級增長,我們要等的就是電腦變強來解決這些問題

圖中魔方只是問題越來越複雜的泛化,不代表魔方解決是pp問題

np問題即非確定性多項式時間,用數學術語可以解釋爲如果你有無限多部電腦,可以在同一時間內檢查所有可能答案,就可以在多項式時間內找到正確解答
在這裏插入圖片描述在這裏插入圖片描述
所有的np問題的解決最終歸結爲用簡單的多項式時間轉換,即“NP-complete”問題,類似研究蛋白質的摺疊以解決癌症問題,許多金融難題許多領域的重大難題都可以歸結爲“NP-complete”,一旦解決“NP-complete”,各個領域將迎來改變。

展望

計算機算法的問題很多,多項式層疊,指數層疊,最外圍的甚至是沒有任何一臺電腦在任意時間和空間可解出來的問題,這裏我們不僅看到計算的特性還有時間和空間本身的特性,這一團亂七八糟的算法複雜度分類甚至會影響物理學,生物學和我們所瞭解的一切基本!
在這裏插入圖片描述

參考資料

世界七大數學難題之一: P與NP複雜度問題 | 熟肉
P問題、NP問題、NP完全問題和NP難問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章