计算机中的P问题、NP问题、NP-hard、NP-C问题以及“NP=P?“问题

参考谈谈计算机中的NP,NP-Hard,NP完全以及"NP=P?"问题_哔哩哔哩_bilibili

目录

一、计算机中的P问题、NP问题、NP-hard、NP-C问题

◼ 时间复杂度

◼ P问题

◼ NP问题

◼ NP-hard问题,NP-C问题

 二、计算机中的"NP=P?"问题


一、计算机中的P问题、NP问题、NP-hard、NP-C问题

◼ 时间复杂度

时间复杂度定义为随着问题规模的增大,算法执行时间增长的快慢。它可以用来表示一个算法运行的时间效率。

上图中,白色字部分的时间复杂度是多项式复杂度,黑色字部分的时间复杂度是非多项式复杂度,我们用经典计算机来实现这种算法时,花费时间会很多。

◼ P问题

通俗来说,p问题,就是可以在多项式时间内解决的问题。

算法要处理的数据是关于n的函数,比如有n个数据传过来,我们要进行排序,如果排序的算法的时间复杂度是n的多项式,那么就是一个p问题。

◼ NP问题

通俗来说,np问题,就是我们给你一个解,要验证这个是否该问题的一个解,在验证的过程中,如果我们能在n的多项式时间复杂度内验证这个解是该问题的一个解, 那么就是np问题。

比如说有一个party聚会,让你从上万人中找出所有好看的人,找出美女帅哥,那么肯定要一个一个去遍历判断,就很麻烦,很耗时间。但是如果反过来,我从上万人中找出一个人,让你判断这个人好看不好看,这就很容易了,你看一眼就知道这个人好看不好看。

很显然,p问题也是np问题。因为p问题可以在多项式时间内解决一个问题,那么肯定也可以在多项式的时间内验证一个解是否是该问题的解。

问题:那么,np问题是不是p问题?

在讲这个问题之前,我们先来了解什么是NP-hard问题和NP-C问题。

◼ NP-hard问题,NP-C问题

那也就是说,NP-C问题就是最复杂的问题。有了这个思路,那么我们假设如果NP-C问题能够在多项式时间内解决的话,那么所有的np问题就都能够在多项式时间内解决,也就是所有的np问题都是p问题,那么我们就可以证明p问题就是np问题。但是现在并没有证明这个结论。

有哪些问题是np完全问题呢?

比如说逻辑电路问题,本身就是一个np问题。Hamilton问题就是给一个地图,地图上有很多城市, 我们选择两个城市作为起点和终点,路过一次且仅一次,到达终点。

旅行商问题:送货员开着一辆货车,从A城市出发,经过所有的城市,最后回到A,找出一条最短路径。目前的想法是我把他经过所有的城市最后回到A的所有路线都枚举出来,其实就是一个组合数学的全排列问题。假设一共有20个城市,A不用参与排列,那么一共就是19!种可能,把所有的排列方法全都计算,找出最好的那条路线。

 19!是一个非常大的数据,对传统计算机来说非常耗时,不可接受。这就是一个np问题,而且是一个np完全问题。

 

 二、计算机中的"NP=P?"问题

NP-C问题就是最复杂的问题。有了这个思路,那么我们假设如果NP-C问题能够在多项式时间内解决的话,那么所有的np问题就都能够在多项式时间内解决,也就是所有的np问题都是p问题,那么我们就可以证明p问题就是np问题。但是现在并没有证明这个结论。

现在大多数觉得np问题不等于p问题,因为np问题中存在着np完全问题,就像我们上文提到的逻辑电路问题,旅行商问题和Hamilton问题,想把这些问题在多项式时间内解决是不太可能的。

我们把它们归纳为一个集合时,分两种情况:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水w

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值