【计算理论】计算理论总结 ( P 、NP 、NPC 总结 ) ★★
文章目錄
- 一、P 類
- 二、NP 類
- 三、NPC 類 ( NP 完全 )
- 四、P 、NP 、NPC 三者關系
一、P 類
P\rm PP 類 : ★
所有 能夠被 確定性 單個帶子圖靈機 , 在 多項式時間 內 , 能夠被 判定的計算問題 ( 語言類 ) ,
將這些問題放在一起 ( 廣義并集 ?\bigcup? ) , 組成一個整體 , 就稱為 P\rm PP
符號化表示 : P=?kTIME(nk)\rm P = \bigcup_k TIME( n^k )P=?k?TIME(nk)
P\rm PP 類 , 就是定義 有效算法 所組成的類 ,
有效算法 , 就是在 多項式時間 內 , 可以執行完畢 , 得到一個確定的結果的算法 ;
確定的結果就是 接受狀態 , 或 拒絕狀態 ;
P\rm PP 類有效算法示例 : ★
① PATH
② 貪心算法
③ 動態規劃算法
④ REGULAR
⑤ CFL
參考博客 : 【計算理論】計算復雜性 ( P 類 | 有效算法函數 | NP 直覺 | NP 簡介 | NP 類嚴格數學定義 )
二、NP 類
驗證機 : A\rm AA 語言 ( 計算問題 ) 的 驗證機 V\rm VV ; ★
<w,c>\rm <w,c><w,c> 含義 : 給定一個 輸入 w\rm ww , w\rm ww 是輸入字符串 , c\rm cc 是輸入 w\rm ww 被接受的情況下的輸入 , 即正確的輸入 ;
A\rm AA 語言 ( 計算問題 ) 的 驗證機 V\rm VV 條件 : 給定了正確的輸入 c\rm cc , 讓驗證機 V\rm VV 進行一步步驗證 , 如果 驗證機 V\rm VV 接受了輸入的字符串 c\rm cc , 稱 驗證機 V\rm VV 就是計算問題 A\rm AA 的驗證機 ;
符號化表示 : A={w:驗證機V接受<w,c>中正確的輸入c}\rm A = \{ w : 驗證機 V 接受 <w,c> 中正確的輸入 c \}A={w:驗證機V接受<w,c>中正確的輸入c}
驗證操作 : 已經有了正確答案 c\rm cc , 有一個有限的規則 , 將正確答案 c\rm cc 每一步 , 代入有限規則中進行驗證是否正確 ;
驗證時間 : 已經有了正確答案 c\rm cc , 有一個有限的規則 , 將正確答案 c\rm cc 每一步 , 代入有限規則中進行驗證是否正確 , 最后記錄整個驗證過程所花費的時間 ; 即 學習的過程 ;
NP\rm NPNP 計算問題要求 : 如果花費的時間 在 多項式時間 之內 , 就稱 該問題是 NP\rm NPNP 對應的計算問題 ;
多項式時間驗證機 : A\rm AA 語言 如果 可以在 多項式時間 內 可以 驗證 的話 , 就稱該語言 有一個 多項式時間驗證機 ; ★
NP\rm NPNP 類就是有 多項式時間驗證機 的 語言類 ( 計算問題集合 ) ; ★
1 . NP\rm NPNP 類算法舉例 : ★
① 蠻力窮舉算法 ;
2 . NP\rm NPNP 類包含 NPC\rm NPCNPC 類 ( NP\rm NPNP 完全 ) , NPC\rm NPCNPC 算法舉例 : ★
① 布爾可滿足性問題 SAT
② 3-SAT
③ 團問題 : 無向圖中是否包含 k\rm kk 團 , k\rm kk 個節點兩兩之間有邊相連 ;
④ 獨立集問題
⑤ 頂點覆蓋問題
⑥ 哈密頓路徑問題
⑦ 旅行商問題
⑧ 子集和問題
3 . NP\rm NPNP 類中 , 既不屬于 P\rm PP , 又不屬于 NPC\rm NPCNPC 的問題也是存在的 , 如 : ★
① 圖同構問題
參考博客 :
- 【計算理論】計算復雜性 ( P 類 | 有效算法函數 | NP 直覺 | NP 簡介 | NP 類嚴格數學定義 )
- 【計算理論】計算復雜性 ( NP 完全問題 - 布爾可滿足性問題 ★ | 布爾可滿足性問題是 NP 完全問題證明思路 ) ★
- 【計算理論】計算復雜性 ( 3-SAT 是 NP 完全問題 | 團問題是 NP 完全問題 | 團問題是 NP 完全問題證明思路 )
- 【計算理論】計算復雜性 ( NP 完全問題 | 頂點覆蓋問題 | 哈密頓路徑問題 | 旅行商問題 | 子集和問題 )
- 【計算理論】計算復雜性 ( NP 完全問題 | NP 難 問題 P = NP 的情況 | NP 難 問題 P ≠ NP 的情況 )
三、NPC 類 ( NP 完全 )
NPC 是 NP-Completeness ( NP 完全 ) 的簡稱 ;
NP 完全 定義 ★ :
如果 語言 B\rm BB 是 NP\rm NPNP 完全的 , 必須滿足如下兩個條件 :
① 是 NP\rm NPNP 問題 : 語言 B\rm BB 對應的計算問題必須在 NP\rm NPNP 中 , 換句話說就是可以找到一個多項式算法 , 可以驗證該計算問題 ;
② 是 NP\rm NPNP 最難問題 : 在 NP\rm NPNP 中的任何計算問題 A\rm AA , 都可以在 多項式時間規約 到 B\rm BB , 也就是說在 NP\rm NPNP 中的任何計算問題 , 其難易程度都不會超過 B\rm BB , B\rm BB 是 NP\rm NPNP 中最難的問題 ;
NP\rm NPNP 中其它所有的計算問題的難以長度都不會超過 B\rm BB , B\rm BB 問題是 NP\rm NPNP 中最難的問題 ;
NP 完全命題 ★ : 如果 B\rm BB 問題是 NP\rm NPNP 完全的 , 并且 B\rm BB 能在 多項式時間規約 到 C\rm CC , 記作 B≤C\rm B \leq CB≤C , 則 C\rm CC 也是 NP\rm NPNP 完全的 ;
該命題是很重要的命題 , 驗證一個命題是 NP\rm NPNP 完全的 , 需要滿足上面的兩個條件 , ① 是 NP\rm NPNP 問題 , ② 是 NP\rm NPNP 最難問題 ;
將計算問題與 NP\rm NPNP 中最難問題 B\rm BB 進行比較 , 是很難的 , 如果已經知道某個計算問題是 NP\rm NPNP 完全的 , 就不需要與 NP\rm NPNP 中所有問題進行比較 , 只與當前已知的 NP\rm NPNP 完全問題比較即可 ;
將 已知的 NP\rm NPNP 完全的 計算問題 B\rm BB , 與 要驗證的 C\rm CC 問題 , 進行規約 , 就知道 C\rm CC 問題是否是 NP\rm NPNP 完全的 ;
歷史已經找到了一個 NP\rm NPNP 完全問題 : 布爾可滿足性問題 ( Boolean Satisfiability Problem;SAT ) ;
NP\rm NPNP 類包含 NPC\rm NPCNPC 類 ( NP\rm NPNP 完全 ) , NPC\rm NPCNPC 算法舉例 : ★
① 布爾可滿足性問題 SAT
② 3-SAT
③ 團問題 : 無向圖中是否包含 k\rm kk 團 , k\rm kk 個節點兩兩之間有邊相連 ;
④ 獨立集問題
⑤ 頂點覆蓋問題
⑥ 哈密頓路徑問題
⑦ 旅行商問題
⑧ 子集和問題
參考博客 :
- 【計算理論】計算復雜性 ( P 類 | 有效算法函數 | NP 直覺 | NP 簡介 | NP 類嚴格數學定義 )
- 【計算理論】計算復雜性 ( 多項式時間規約 | NP 完全 ★ | 布爾可滿足性問題 ) ★
- 【計算理論】計算復雜性 ( NP 完全問題 - 布爾可滿足性問題 ★ | 布爾可滿足性問題是 NP 完全問題證明思路 ) ★
- 【計算理論】計算復雜性 ( 3-SAT 是 NP 完全問題 | 團問題是 NP 完全問題 | 團問題是 NP 完全問題證明思路 )
- 【計算理論】計算復雜性 ( NP 完全問題 | 頂點覆蓋問題 | 哈密頓路徑問題 | 旅行商問題 | 子集和問題 )
- 【計算理論】計算復雜性 ( NP 完全問題 | NP 難 問題 P = NP 的情況 | NP 難 問題 P ≠ NP 的情況 )
四、P 、NP 、NPC 三者關系
該觀點目前認為是正確的 , 同樣也沒有嚴格的證明 ;
P=?NP\rm P \not= NPP?=NP 情況分析 : 如果 P=?NP\rm P \not= NPP?=NP , 則有
P<NP\rm P < NPP<NP , ★
NP\rm NPNP 完全 <NP\rm <NP<NP ★
NP\rm NPNP 問題 中包含了三種計算問題 : ★
① P\rm PP 問題
② NP\rm NPNP 完全問題
③ 其它問題 , 既不屬于 P\rm PP 問題 , 又不屬于 NP\rm NPNP 完全問題 ;
圖同構問題 , 就屬于 其它問題 , 既不屬于 P\rm PP 問題 , 又不屬于 NP\rm NPNP 完全問題 ;
NP\rm NPNP 難 問題 , 包含了 NP\rm NPNP 完全問題 , 不包含 P\rm PP 問題 和 NP\rm NPNP 中的其它問題 ;
參考博客 : 【計算理論】計算復雜性 ( NP 完全問題 | NP 難 問題 P = NP 的情況 | NP 難 問題 P ≠ NP 的情況 )
總結
以上是生活随笔為你收集整理的【计算理论】计算理论总结 ( P 、NP 、NPC 总结 ) ★★的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【计算理论】计算复杂性 ( coNP 问
- 下一篇: 【计算理论】计算理论总结 ( 自动机设计