第五个知识点 复杂性为NP类是什么意思

第五个知识点 复杂性为NP类是什么意思

原文地址:http://bristolcrypto.blogspot.com/2014/11/52-things-number-5-what-is-meant-by.htmlhtml

这是52个密码学知识点的第五篇。咱们继续关于NP的复杂性理论部分。算法

上周,Ryan给咱们介绍了P类复杂问题的定义:安全

  • P 就是一类能被肯定的图灵机在有限时间内断定的语言。

这周咱们介绍另外一个复杂类:oracle

  • NP就是一类能被非肯定的图灵机在有限时间内断定的语言。

什么是非肯定的图灵机(NDTM)

NDTM就是一种转换函数有多个返回值的图灵机。(实际上这不是一个转换函数,咱们能够叫它一个转换关系)所以NDTM对输入看起来就像一颗树。在每一个分支节点上都提供了多个可能的值(子节点).NDTM接收这个输入当且仅当树中至少有一个分支的输入处于接收状态。这个定义从语言关系到决策到计算问题的方法和上周定义P的时候同样。函数

一些NP问题的例子

咱们以一个简单的例子开始:路径查找。给一个有向图(n个节点) 是否有从点A到点B的路径。咱们怎么在NP类中获得答案?好的,存在一个NDTM能解决它,十分简单,只要尝试全部的路线,只要有一个分支那么就有一个交叉点,若是一个分支到达了B那么该分支将终止于accept状态。任意一条分支在遍历n步以后自动结束并处于拒绝状态。(由于任何路径最多包含n-1条边,因此将检测到任何有效的路径,所以这台机器将正确的决定是否存在这样的一个路径)。spa

一个NP问题的重要的例子就是可知足行问题:htm

  • SAT问题:给n个变量一个表达式(与或非表达式),是否有一个变量的赋值能使得表达式为True?

例如,在表达式\((A\lor B )\land(A \lor \neg B)\)是可知足的。由于有一个合法的赋值\(A=B=True\)。注意:在标准形式中,这是个决定性问题,即咱们只须要知道存不存在,不须要找到。blog

因此有不少NP问题.NP问题的价值在哪

首先,咱们知道\(P \subseteq NP\) 由于DTM是一种NDTM(显而易见)。所以实际上咱们的问题就是咱们能不能找到一件咱们能用NP作的问题可是咱们没办法用P完成?这就是\(P=NP\)问题,这是一个开放问题。固然咱们也发现了NP中已知可是P中未知的问题,也许在将来的研究中这些问题能被P解决。ip

不少有趣的密码系统(特别是在公钥中)都是基于计算问题是"困难"的假设而是安全的,这意味着至少与NP中的任何问题同样困难。也就是说,不少方案都是基于咱们认为难的问题,若是你能建立一个算法来解决这些问题,你也能够用这个算法解决其余当前认为是难的问题。get

Cook-Levin定理提供了一个有趣的证实思路。没有NP问题是比SAT难的(已经有证实了SAT是最难的NP问题(,即NP彻底问题)。这就是说若是咱们有一个oracle(就是一个问询,一个有输入输出的算法)能解决SAT问题,经过问这个oracle几个被构造的问题,也能够解决任何其它NP问题。这让SAT成为了第一个NP彻底问题的例子。所以为了证实问题X至少和解决NP问题同样难(NP难问题),若是咱们能解决X问题,那么咱们就能解决SAT问题。

相关文章
相关标签/搜索