P问题,NP问题,NP难,NP完全

文章介绍了P类问题,即能在多项式时间内解决的问题,以及NP类问题,这类问题的解可在多项式时间内验证。接着讨论了NP难问题和NP完全问题的概念,以及P与NP的关系。文中还提到了一些典型的NP完全问题,如哈密顿回路、旅行商问题,并通过例子解释了问题之间的转换关系,最后指出尽管未证明P与NP是否相等,但通常认为它们不相等。
摘要由CSDN通过智能技术生成

P类问题:所有在多项式时间内可解的问题

另外一类问题,是判定问题,而且在多项式时间内可验证。首先,什么是判定问题?判定问题即是yes or no 问题。给定实例集 D D D, 以及其中一个子集 Y Y Y,该子集内的实例解为yes,其余为no。例如在无向图上判断是否有哈密顿回路。实例集即为全体无向图,yes子集即为全体哈密顿图。

NP类问题:所有多项式时间可验证的判定问题。 即给定一个问题实例,给定任意猜想t,可以在多项式时间内判断t是否能证明该实例属于支持集。

NP难:所有的NP问题都可以多项式时间变换到该问题上,则该问题是NP难的。

什么是多项式时间变换?两个问题 < D 1 , Y 1 > , < D 2 , Y 2 > <D_1, Y_1>, <D_2, Y_2> <D1,Y1>,<D2,Y2>,如果问题1的一个实例 I 1 I_1 I1 是有解的,那么存在一个多项式可计算的变换 f f f, I 2 = f ( I 1 ) I_2 = f(I_1) I2=f(I1) 是问题2的一个有解的实例。

具体来说,为了研究第二个问题的复杂性,如果已知第一个问题的下界;那么由于第一个问题可以归约到第二个问题上,那就可以利用第二个问题的算法解决第一个问题,所以第二个问题复杂性不低于第一个问题。

NP完全:如果一个问题既是NP问题,又是NP难问题,则称为是NP完全问题。

所有的P问题都是NP问题,而P是否等于NP是没有解决的问题。如果存在NP难的问题是P问题,那么P=NP

问题可以转化成P问题,那么本身也是P问题。难解问题(P问题之外的问题)也只能转化成难解问题。

问题可以由一个NP难的问题转化过去,那么也是NP难问题。

问题是NP问题,可以由一个NP完全问题转化过去,那么也是NP完全问题。

一些简单例子
  • 哈密顿回路(HC,NP问题):给定无向图,是否存在哈密顿回路?
  • 旅行商问题(TSP,NP问题):给定n个城市及两两之间的有向距离 d ( i , j ) d(i, j) d(i,j)。寻找恰好经过每个城市一次且总距离最小的路径。这种组合优化问题,等价于给问题多一个参数,即是否存在不超过总和 V V V 的路径。
  • 0-1背包问题:也是NP问题

TSP问题可以由HC问题多项式时间转换过去。对于一个哈密顿图,让他所含的边对应的距离为1,补图的边对应的距离为2。所得到的TSP问题实例参数即为回路中的边数。

  • 最小生成树:是否有权不超过 B B B 的生成树。最大生成树:是否有权不小于 D D D 的生成树。

最小生成树可以由最大生成树转化得到: M M M 为全局边权的最大值。使 B = ( n − 1 ) M − D B = (n - 1)M - D B=(n1)MD,再将所有边权 e e e 改为 M − e M - e Me。那么原先的生成树就支持新的对应的问题实例有解。

尽管还没有证明P与NP的具体关系,但一般相信P与NP不相同。其中NP完全问题最有可能不是P问题。

NP-Complete
  • Cook-Levin定理:SAT问题(合取范式的成真问题)
  • 最大可满足性(Max-SAT):变元赋值使得给定的 m m m 个析取式中至少有 K K K 个为真。
  • 三元可满足性(3SAT):给定一个3元合取范式F,F的可满足性。
  • 顶点覆盖(VC):给定无向图以及 K K K,是否有顶点数不超过 K K K 的顶点覆盖
  • 团:给定无向图以及 J J J,是否有顶点数不小于 J J J 的团。
  • 独立性:给定无向图以及 J J J,是否有顶点数不小于 J J J 的独立集。
  • 有向HC问题,HC问题,TSP问题
  • 恰好覆盖:给定有穷集 A A A 以及子集的集合,是否存在若干子集恰好覆盖原集合
  • 子集和:给定正整数集与 T T T,是否存在子集和为 T T T
  • 装箱:给定n件物品的重量,能否用 K K K 个容量为 B B B 的箱子容纳
  • 双机调度:给定n项作业的时间,在两台相同机器上,能否在时间 D D D 内完成。
  • 整数线性规划: A x ≥ b , x ≥ 0 Ax\geq b, x\geq 0 Axb,x0 是否有解?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值