[密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第5篇]复杂性类NP是什么意思?
這是52個(gè)密碼學(xué)知識(shí)點(diǎn)的第五篇。我們繼續(xù)關(guān)于NP的復(fù)雜性理論部分。
上周,Ryan給我們介紹了P類復(fù)雜問題的定義:
-
P 就是一類能被確定的圖靈機(jī)在有限時(shí)間內(nèi)判定的語言。
這周我們介紹另一個(gè)復(fù)雜類: -
NP就是一類能被非確定的圖靈機(jī)在有限時(shí)間內(nèi)判定的語言。
什么是非確定的圖靈機(jī)(NDTM)
NDTM就是一種轉(zhuǎn)換函數(shù)有多個(gè)返回值的圖靈機(jī)。(實(shí)際上這不是一個(gè)轉(zhuǎn)換函數(shù),我們可以叫它一個(gè)轉(zhuǎn)換關(guān)系)因此NDTM對(duì)輸入看起來就像一顆樹。在每個(gè)分支節(jié)點(diǎn)上都提供了多個(gè)可能的值(子節(jié)點(diǎn)).NDTM接收這個(gè)輸入當(dāng)且僅當(dāng)樹中至少有一個(gè)分支的輸入處于接收狀態(tài)。這個(gè)定義從語言關(guān)系到?jīng)Q策到計(jì)算問題的方法和上周定義P的時(shí)候一樣。
一些NP問題的例子
我們以一個(gè)簡(jiǎn)單的例子開始:路徑查找。給一個(gè)有向圖(n個(gè)節(jié)點(diǎn)) 是否有從點(diǎn)A到點(diǎn)B的路徑。我們?cè)趺丛贜P類中得到答案?好的,存在一個(gè)NDTM能解決它,十分簡(jiǎn)單,只要嘗試所有的路線,只要有一個(gè)分支那么就有一個(gè)交叉點(diǎn),如果一個(gè)分支到達(dá)了B那么該分支將終止于accept狀態(tài)。任意一條分支在遍歷n步之后自動(dòng)結(jié)束并處于拒絕狀態(tài)。(因?yàn)槿魏温窂阶疃喟琻-1條邊,所以將檢測(cè)到任何有效的路徑,因此這臺(tái)機(jī)器將正確的決定是否存在這樣的一個(gè)路徑)。
一個(gè)NP問題的重要的例子就是可滿足行問題:
- SAT問題:給n個(gè)變量一個(gè)表達(dá)式(與或非表達(dá)式),是否有一個(gè)變量的賦值能使得表達(dá)式為True?
例如,在表達(dá)式(A∨B)∧(A∨?B)是可滿足的。因?yàn)橛幸粋€(gè)合法的賦值A(chǔ)=B=True。注意:在標(biāo)準(zhǔn)形式中,這是個(gè)決定性問題,即我們只需要知道存不存在,不需要找到。
所以有很多NP問題.NP問題的價(jià)值在哪
首先,我們知道P?NP 因?yàn)镈TM是一種NDTM(顯而易見)。因此實(shí)際上我們的問題就是我們能不能找到一件我們能用NP做的問題但是我們沒辦法用P完成?這就是P=?NP問題,這是一個(gè)開放問題。當(dāng)然我們也發(fā)現(xiàn)了NP中已知但是P中未知的問題,也許在未來的研究中這些問題能被P解決。
很多有趣的密碼系統(tǒng)(特別是在公鑰中)都是基于計(jì)算問題是"困難"的假設(shè)而是安全的,這意味著至少與NP中的任何問題一樣困難。也就是說,很多方案都是基于我們認(rèn)為難的問題,如果你能創(chuàng)建一個(gè)算法來解決這些問題,你也可以用這個(gè)算法解決其他當(dāng)前認(rèn)為是難的問題。
Cook-Levin定理提供了一個(gè)有趣的證明思路。沒有NP問題是比SAT難的(已經(jīng)有證明了SAT是最難的NP問題(,即NP完全問題)。這就是說如果我們有一個(gè)oracle(就是一個(gè)問詢,一個(gè)有輸入輸出的算法)能解決SAT問題,通過問這個(gè)oracle幾個(gè)被構(gòu)造的問題,也可以解決任何其它NP問題。這讓SAT成為了第一個(gè)NP完全問題的例子。因此為了證明問題X至少和解決NP問題一樣難(NP難問題),如果我們能解決X問題,那么我們就能解決SAT問題。
原文地址:http://bristolcrypto.blogspot.com/2014/11/52-things-number-5-what-is-meant-by.html
轉(zhuǎn)載地址:https://www.cnblogs.com/zhuowangy2k/p/11518651.html
總結(jié)
以上是生活随笔為你收集整理的[密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第5篇]复杂性类NP是什么意思?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 会议记录模板
- 下一篇: 分布式消息队列 Kafka