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


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

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

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

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

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

    这周我们介绍另一个复杂类:

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

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

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

    一些NP问题的例子

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

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

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

    例如,在表达式((Alor B )land(A lor eg B))是可满足的。因为有一个合法的赋值(A=B=True)。注意:在标准形式中,这是个决定性问题,即我们只需要知道存不存在,不需要找到。

    所以有很多NP问题.NP问题的价值在哪

    首先,我们知道(P subseteq NP) 因为DTM是一种NDTM(显而易见)。因此实际上我们的问题就是我们能不能找到一件我们能用NP做的问题但是我们没办法用P完成?这就是(P=NP)问题,这是一个开放问题。当然我们也发现了NP中已知但是P中未知的问题,也许在未来的研究中这些问题能被P解决。

    很多有趣的密码系统(特别是在公钥中)都是基于计算问题是"困难"的假设而是安全的,这意味着至少与NP中的任何问题一样困难。也就是说,很多方案都是基于我们认为难的问题,如果你能创建一个算法来解决这些问题,你也可以用这个算法解决其他当前认为是难的问题。

    Cook-Levin定理提供了一个有趣的证明思路。没有NP问题是比SAT难的(已经有证明了SAT是最难的NP问题(,即NP完全问题)。这就是说如果我们有一个oracle(就是一个问询,一个有输入输出的算法)能解决SAT问题,通过问这个oracle几个被构造的问题,也可以解决任何其它NP问题。这让SAT成为了第一个NP完全问题的例子。因此为了证明问题X至少和解决NP问题一样难(NP难问题),如果我们能解决X问题,那么我们就能解决SAT问题。

  • 相关阅读:
    Python 拼接字符串的6种方法总结:
    Python 基础
    蓝牙通信测试app之蓝牙通信(二)
    蓝牙通信测试app之蓝牙配对(一)
    对ZAxxx解压工具的简单逆向记录
    上传项目到GitHub---详细步骤
    面试复习
    JavaWeb基础一
    MySQL基础二---基础介绍
    JS——Date日期对象
  • 原文地址:https://www.cnblogs.com/zhuowangy2k/p/11518651.html
Copyright © 2020-2023  润新知