那傳說中的P、NP以及NPC問題


那傳說中的P、NP以及NPC問題

    (這里只是自己的一些總結)

     在講這幾個問題之前,有幾個東西是必須要說的,包括時間復雜度、空間復雜度、圖靈機什么的。那么我們就慢慢來一一說來。

       圖靈機:圖靈機其實就是一個計算模型,是由圖靈提出來的。圖靈機號稱可以模擬實際計算機的所有計算行為,計算能力還超過現有的計算機。但是還是有圖靈機無法做到的事情,就好像計算機並不能處理所有的事情一樣。

      定義:

       1)有一個無限長的帶子作為無限存儲。

       2)有一個讀寫頭,能在帶子上讀、寫和左右移動。

       3)有一套控制規則,根據當前機器所處的狀態以及當前讀寫頭所指的格子符號來確定下一步的動作,另機器進入一個新的狀態。

      4)一個狀態寄存器,用來保存圖靈機當前所處的狀態。

      工作方式:

      在圖靈機的計算過程中,當前狀態、當前帶內容和讀寫頭當前位置組合一起稱為圖靈機的格局。包括起始格局、接受格局、拒絕格局。

      圖靈機讀取紙袋上的內容,結合讀寫頭的當前狀態,根據一組控制規則決定下一步的動作。可以認為這是一台理想的,能夠處理所有的“人類計算”。

 

       我們可以想象,一個問題如果在理論上是可解的,但是計算它所需要的時間和空間的資源是我們無法承受的,那么這個問題對我們來說就是沒有用的。當然這里說明一個問題是否理論上可解,用到圖靈機什么的一籮筐東西,這里就不說明這些問題。

     時間復雜度: 對於一個算法的時間復雜度一般采用大O表示,這里大O我就具體說明了,就是說明一個算法的時間復雜度的函數O(t(n))。運行時間是多項式時間的算法隨着問題規模的不斷上升,時間變化不大,但是如果一個算法的時間是指數形式的話,就不可理喻了。典型的指數時間算法源於通過搜索解空間來求解問題,這稱為蠻力搜索。當然很多算法可以通過一些技巧避免蠻力搜索,但是還是有一些問題,我們是無能為力的,至今沒有找到在多項式時間求解該問題的算法。

     P類問題:

      簡單的認為,P問題就是可以在多項式時間被圖靈機判定的語言類。這里又涉及到圖靈機,那么我們可以簡單的認為,如果一個算法可以在多項式時間內求解,那么就可以認為它是P類問題。這樣你就會感覺好多算法都是P類問題,對!沒錯!如何證明一個問題是否是P類問題呢?只要它滿足以下兩個條(證明它在多項式時間內完成)

      1)運行步驟數要有多項式上屆時間

      2)每一步都要保證它可以由合理的確定模型在多項式時間內完成,其實就是每一步的求解過程也是多項式時間

      這樣步奏是多項式時間的,而每一步也是多項式時間,整合起來整個算法還是多項式時間的。

      想PATH問題就是屬於P

     PATH的一個多項式時間算法M運行如下:

     M="對於輸入<G,s,t>,G是包含結點s和t的有向圖:

          (1)在結點s上做標記。

          (2)重復下面步驟3,直到不再有結點被標記。

          (3)掃描G的所有邊,如果找到一條邊(a,b),a被標記而b沒有,那么標記b

          (4)若t被標記,則接受否則拒絕"

   分析上面算法,可以得到步奏1和4只執行1步,步驟3最多執行m次,所以用到的步驟數是m+1+1。每一步都可以在合理的多項式時間內完成,所有PATH是P類問題。

 NP類問題:

      這里NP並不是指Not P的意思!實際上P是屬於NP的,但是NP是否等於P我們目前還不懂。

     NP問題指的是,這個算法可以在多項式時間內可驗證,什么意思呢?我們知道對於P類問題,可以在多項式時間內求解出來,但是NP問題不行。可以這樣理解,NP雖然不能在多項式時間內被求解,但是如果給出這個問題的某個解,那么我們可以在多項式時間內驗證這個解是不是這個問題的解。聽起來好像有點那這有什么用的感覺?比如求漢密爾頓路徑問題(HAMPATH),我們只能在指數時間內求出這個解,但是這時候我們假設我們可以先隨機猜測出一條路徑序列出來,那么我們就可在多項式時間內驗證這個解是不是對的。常常也稱為非確定型多項式時間

 

簡單的的區分P和NP問題:

     對於P問題,我們可以有個算法能夠在多項式時間內求得解。但是對於NP問題,就不可以了,求解某個問題可能需要指數的時間。NP問題也可以認為,我們可以在多項式時間內驗證一個解,比如說我可以隨機猜測一個解,如果我可以在多項式時間內驗證說明這個解是不是問題的解,那么這個問題就是NP問題。

 

 NPC類問題:

     說到NP完全問題,那么就需要說到可規約這個問題。

     規約:當問題A規約到B問題時,B的有效解就可以用於求解問題A了。

    NPC指定是所有的NP問題都可以多項式時間規約到某一類問題,那么這某一類問題就是所謂的NPC問題。

 

 

 

 

    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM