P=NP?

P问题:在多项式时间内可以解决的问题,即解决这个问题的时间复杂度不大于O(n^k).
NP问题:在多项式时间内能够验证一个问题的解的问题,即验证这个问题的解的时间复杂度不大于O(n^k).
举个例子:你去参加一个party,为了避免尴尬,通常会先尝试找一个你认识的人,如果聚会一共邀请n个人,那么你最多需要辨识n个人,才能找到你认识的人(假如这个聚会中有一个人你是认识的).而如果party主人告诉你吧台边上坐着的那个人是你同事小丽.那么你只需要往吧台瞟一眼就可以了.
上面的例子可以转化成下面的查找问题.
1.在数组a[8]={0,1,2,3,4,5,6,7}中找到哪个元素的值是7(P问题).
这个问题可以用for循环来解,它的时间复杂度是O(n).
2.验证7是数组a[8]={0,1,2,3,4,5,6,7}中某个元素的值(NP问题).
这个问题同样可以用for循环来解,时间复杂度也是O(n).
问题1,2好像啊,给人一种P问题就是NP问题的感觉.那么,P问题等不等价与NP问题呢?
我们要回答这个问题只需要解决两个问题.
①:P问题是NP问题的子集.
②:NP问题是P问题的子集.
①成立.
证明:假设一个问题的解决函数是f(x),它的时间复杂度是O(n^k).
那么至少我们可以通过回代的方法确认解A是正确的解,而且该回代方法的时间复杂度总可以是O(n^k).常常我们如果知道一个问题的解决方法的话,证明某个解是否正确的操作的时间复杂度仅仅是O(1);
验证一个问题的某个解是否正确,往往比找到解容易百倍.比如对于方程问题,去解一个方程最可怕的方法就是带入法.而验证某个值是否是方程的解的最简单方法就是代入法.至此,我们可以说所有P问题都是NP问题.
但,是否所有NP问题都是P问题呢?
即便我们可以在多项式时间内验证解,但未必能找到多项式复杂度的解法.

备注:
[1].时间复杂度:在计算机科学中,时间复杂性,又称时间复杂度,算法的时间复杂度是一个函数,它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,亦即考察输入值大小趋近无穷时的情况,比如在10个人里找到小明,最多需要找10次,像这种问题时复杂度就是O(n),再比如解一个两位数密码的锁,最多需要解n*n次,像这种问题的时间复杂度就是O(n^2)。
[2].多项式时间:(英语:Polynomial time)在计算复杂度理论中,指的是一个问题的计算时间m(n)不大于问题大小n的多项式倍数。任何抽象机器都拥有一复杂度类,此类包括可于此机器以多项式时间求解的问题。以数学描述的话,则可说 ,m(n)=O(n^k),此k为一常量值(依问题而定)。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值