关于P vs NP问题的探究

关于P vs NP问题的探究

一、引言

   今天我们来说一个计算机领域里的一个超级难题,P 是否等于 NP。早在 2000 年 5 月的时候,Clay Institute 将这个问题列为了数学里的七大千禧问题之一,如果有人能证明出 P = NP 或 P ≠ NP,就会获得该机构整整 100 万美元的奖金。并且一旦证明出 P = NP 将会改变现有人类所有的知识体系。本文将浅析对P vs NP问题。

二、P vs NP四大问题

   在分析P vs NP问题之前,我们更应该理解其中几大问题的定义与区别。

1、P问题

    P问题是指能够使用确定性图灵机在多项式时间内解决的所有决策问题。简单的来说,确定性图灵机在运行程序时,每次只能进行一次选择,不能同时运行。若进行到最后不能达到目的,就只能返回到这一步,再尝试其他的选择。

2、NP问题

NP是一组决策问题,对于这些问题实例来说,如果答案为“是”,那么表示该实例使用确定图灵机可在多项式时间内验证成功,其中 NP 表示不确定的多项式时间(non-deterministic polynomial time)。

3、NPC问题

  在计算复杂度理论中,满足以下情况的问题是NP-complete问题:

    1)该问题是NP问题;

    2)任意NP问题可以在多项式时间内规约为这个问题。

即任何NP问题都可以在多项式时间内按多项式的规模转化为对可满足性问题的求解,这个问题便是NPC问题。

4.NP-hard问题

    在计算复杂性理论中,NP-hard是“至少与NP中最难的问题一样难”。简单来说,即所有的NP问题都能约化到它,但是他不一定是一个NP问题。也正因为如此,NP难问题很少列入研究范围。由于NP-Hard放宽了限定条件,它将有可能比所有的NPC问题的时间复杂度更高从而更难以解决。


    由上述分析,我们可以得到上述四类问题的分类与区别:

三、对P vs NP的浅析

1、时间复杂度

    在真正开始讨论问题之前,我们首先要明白P vs NP中最重要的概念——时间复杂度。每个算法的执行都需要时间和空间,数据量越大,需要的时间越多。如果某个算法规模-时间曲线,是一条直线直线。虽然直线的斜率受到CPU速度、硬件架构等等各种因素影响,但是经过实验取样分析,这种线性关系总是保持恒定不变。于是我们说,这个算法时间复杂度是O(n)。对于其他时间-规模曲线,也会有同样的特征,于是我们就有了算法复杂度的分类。虽然计算机的算力不断提升,但是由于散热等问题的影响,增长趋势逐渐减缓,人们不得不考虑算法的复杂度,便有了P vs NP的问题。

2、P=NP和P≠NP

    随着加拿大人史蒂文-库克发现并证明了第一个NP完全问题(NPC),也就是可满足性问题。到如今,已经发现了四千多个NP问题。面对目前的这四千多个NP完全问题,你只要证明其中任何一个问题具有多项式时间算法,就意味着你证明了P=NP。反之,你只要证明这四千多个NP完全问题(普通NP问题也行)当中的任何一个是指数型问题,则意味着你证明了P≠NP。简而言之,就是找到一个问题,既能够在多项式的复杂度验证的问题也能够在多项式的复杂度解决它则相等,反正,则不等。

    1)P=NP问题

关于P=NP问题,主要的思路为:

首先,利用一个已知的NP完全问题,或者按照下述方法构造一个NP完全问题Q。

对于任何问题Q,只要能证明(1)Q ∈ NP;(2)SAT(表达式可满足性) SymboluB@ Q,则Q ∈ NPC。于是,COOK定理之后,证明一个问题Q的NP完全性由下述三步组成:

证明问题Q属于NP。

选择一个已知的NP完全问题Q'。

构造从Q'到Q的多项式变换函数f。

其次,给出该问题Q的多项式时间算法,并验证算法的正确性。

最后,分析算法的时间复杂性,保证其为多项式时间算法。

2)P≠NP问题

目前,研究此类问题的方法主要有:对角化和相对化方法、电路复杂性方法、逻辑方法、代数方法,在此就不一一展示。

3、NPC 问题

    NPC问题的提出,给出了一定的解决思路。幸运的是,人们发现逻辑电路问题正是这样一个优美的NPC问题。通过逻辑电路,能将NP问题转换成逻辑电路的输入和输出。从而得出另一种解决P vs NP的方法。

   

四、P vs NP问题的意义与影响

1、对运筹学的影响

    如果P=NP被证明,那运筹学中的很多难题都将被轻松解决。比如说整数规划问题、旅行商问题等等,整个运筹学会被提升到一个难以想象的高度。比如围棋有了终极解。

2、对密码学的影响

    密码学将是受到最大冲击的领域了。现代密码学,尤其是各种加密算法,核心都是归结到NP≠P上的。如果我们找到了多项式时间算法,密码的破解时间会被大大减少。例如常见的RSA算法,不可逆的地方在于两个大质数相乘的结果,如果只知道结果而不知道那两个素数,想把这两个素数找出来是非常难的,属于NP问题。 如果该问题被解决,RSA算法将不再可用,很长一段时间内密码学将不再安全,我们需要采取的加密方案必须将改为NP问题以外的问题,转而在量子计算机相关的量子加密算法等领域寻找新的方案。

3、对医学的影响

    如果P=NP被证明的话,对医学领域也将有重大影响。生物领域中可以轻松破解遗传密码来任意操纵基因序列,生物蛋白质的折叠问题也将解决。

五、结束语

    P vs NP问题到目前仍众说纷纭,方法各异。主要的问题就是P是否等于NP,目前学术界普遍认为,彻底解决P和NP的关系问题还有遥远的距离。而我相信在不久的将来这个问题终将解决,因为现在已经发现了四千多个NP完全问题,只要对其中任意一个找到了多项式时间算法,也就证明了NP等于P。而从历史上看,某个高难度的问题突然被人发现具有美妙的算法的事例是时有发生的。

六、参考文献

[1]杜立智,符海东,张鸿,黄远林.P与NP问题研究[J].计算机技术与发展,2013,23(01):37-42.

[2]王琪,姜新文,彭立宏.P vs. NP问题研究状态及其对密码学的意义[J].计算技术与自动化,2010,29(03):66-72.

[3] 计算理论初探(3)_pvsnp问题_ApeLi的博客-CSDN博客

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值