P问题、NP问题和NPC问题

时间复杂度的表示意义:程序解决问题需要的时间随问题规模增大的增长率。

时间复杂度

时间复杂度并不表示一个程序解决问题需要花多少时间,而是当问题规模扩大后,程序需要的时间长度增长得有多快。

时间复杂度被分为两种级别,后者的复杂度无论如何都大于前者:

  • O(1),O(log n),O(na)等,我们把它叫做多项式级的复杂度,因为它的规模n出现在底数的位置。
  • O(an)和O(n!)型复杂度,是非多项式级的,其复杂度计算机往往不能承受。

P类问题

如果一个问题可以找到一个能在多项式的时间里解决它的算法,这问题就属于P问题。

NP问题

NP问题不是非P类问题。
NP问题是指可以在多项式的时间里验证一个解的问题,或者在多项式的时间里猜出一个解的问题。
在此类问题中,找一个解很困难,但验证一个解很容易。
Hamilton问题是NP问题,因为验证一条路是否经过每个顶点非常容易。

当然也有不是NP问题的问题,猜到了解但是无法在多项式的时间里验证。如试问一个图中是否不存在Hamiton回路。

之所以定义NP问题,是因为通常只有NP问题才能找到多项式的算法,不可能指望一个连多项式地验证一个解都不行的问题存在一个解决它的多项式问题。

显然所有的P问题都是NP问题:能多项式地解决一个问题,必然能多项式地验证一个问题的解。

约化

一个问题A可以约化为问题B的含义是:可以用问题B的解法解决问题A,也就是说问题A可以变成问题B。
问题A可以约化为问题B的重要直观意义是:B的时间复杂度必须高于或等于A的时间复杂度,问题A不能B问题B难。

NPC问题

  1. 是一个NP问题。
  2. 所有NP问题都可以约化到它。

证明一个问题是NPC问题

  1. 首先证明它是NP问题。
  2. 其中一个已知的NPC问题能约化到它。

Hamilton回路成了NPC问题,TSP问题也成了NPC问题。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

饼干饼干圆又圆

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

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

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

打赏作者

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

抵扣说明:

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

余额充值