P、NP、NPC、NP-hard 问题及组合最优化问题的认识和理解

P、NP、NPC和NP-hard 问题

算法的时间复杂度

时间复杂度是指在 问题的规模扩大之后,程序求解所需要的时间增长的有多快

示例:
如果无论数据有多大,时间总是那么多,则称常数级复杂度,O(1)
若数据规模变多大,程序花费的时间变多长,即 O(n);若数据变大2倍,时间变长4倍,即 O(n^2);这些属于多项式时间复杂度,如找最大值,冒泡排序…
形如 O(a^n), O(n!) 等时间复杂度属于指数型时间复杂度,需要的时间太多计算机往往不能承受。

会不会所有的问题都可以找到复杂度为多项式级的算法呢?

并不是。有些问题只能找到指数型时间复杂度的算法,比如Hamilton回路问题;也有找不出正确算法的问题,如Halting问题,称为 不可解问题。

问题的分类:
  • P类问题:可以找到一个多项式时间复杂度的算法去解决的问题;
  • NP类问题:可以在多项式时间复杂度的算法去验证结果正确性的问题;比如随便拿一个结果,可在多项式时间内验证该结果是否正确,但是想要求解该结果的时间复杂度就不知道了。P类问题一定是NP类问题,但是NP类问题不一定能找到多项式时间复杂度的算法来解决(要是找到了就是P问题了)。所以人们关心的是:是否所有的NP问题都是P问题,即是否有 P=NP(信息学的巅峰问题)

目前为止这个问题还“啃不动”。但是,一个总的趋势是人们普遍认为,P=NP不成立,也就是说,多数人相信,存在至少一个不可能有多项式级复杂度的算法的NP问题。人们如此坚信P≠NP是有原因的,就是在研究NP问题的过程中找出了一类非常特殊的NP问题叫做NP-完全问题,也即所谓的 NPC问题。

  • 其他:找不到在多项式时间复杂度的算法去验证结果的问题(不讨论)
“约化”的概念
  • 问题A可以约化为问题B:可以采用解决问题B的方法解决问题A;或者说,问题A可以转化为问题B。(如:一元二次方程的解法可以用来解一元一次方程,只要令二次项系数a=0即可)
  • 问题A可以约化为问题B 的直观意义:B的时间复杂度高于或者等于A的时间复杂度。也就是说,问题A不比问题B难。
  • 约化具有传递性:如果问题A可约化为问题B,问题B可约化为问题C,则问题A一定可约化为问题C。
  • 约化的标准概念:如果能找到这样一个变化法则(要求该变化法则为至多多项式时间复杂度),对任意一个程序A的输入,都能按这个法则变换成程序B的输入,使两程序的输出相同,那么我们说,问题A可约化为问题B。
NP问题和NP-完全问题(NPC问题)

一个问题约化为另一个问题,时间复杂度增加了,问题的应用范围也增大了。通过对某些问题的不断约化,我们能够不断寻找复杂度更高,但应用范围更广的算法来代替复杂度虽然低,但只能用于很小的一类问题的算法。

如果从某一个NP问题开始不断向上约化,不断找到能“通吃”若干小NP问题的一个稍复杂的大NP问题,那么最后是否有可能找到一个时间复杂度最高,并且能“通吃”所有的 NP问题的这样一个超级NP问题?

  • NPC问题:存在这样一个NP问题,所有的NP问题都可以约化成它。这种问题不只一个,它有很多个,它是一类问题。这一类问题就是NPC 问题。

  • NPC问题的定义:同时满足下面两个条件的问题就是NPC问题:首先,它得是一个NP问题;然后,所有的NP问题都可以约化到它。

NPC问题的证明:先证明它至少是一个NP问题,再证明其中一个已知的NPC问题能约化到它(由约化的传递性,则NPC问题定义的第二条也得以满足)

NP-hard问题:

NP-hard问题满足NPC问题定义的第二条而不满足第一条。NP-hard问题的范围比NP问题要广。

NP-hard问题同样难以找到多项式时间复杂度的算法,但它也不一定是NP问题(只是所有的NP问题都可以约化到它)。

组合最优化问题

组合最优化问题(combinatorial optimizationproblem)是一类在离散状态下求极值的问题。把某种离散对象按某个确定的约束条件进行安排,当已知合乎这种约束条件的特定安排存在时,寻求这种特定安排在某个优化准则下的极大解或极小解的间题。

组合最优化的理论基础含线性规划、非线性规划、整数规划、动态规划、拟阵论和网络分析等。组合最优化技术提供了一个快速寻求极大解或极小解的方法。

组合最优化问题的数学模型:

  m i n f ( x ) \ min f(x)  minf(x)
s . t . g ( x ) ≥ 0 s.t. g(x) \geq 0 s.t.g(x)0
  x ∈ D \ x \in D  xD

其中, f ( x ) f(x) f(x)为目标函数, g ( x ) g(x) g(x)为约束函数, x x x为决策变量, D D D表示有限个点组成的集合。

一个组合最优化问题可以用三个参数 ( D , F , f ) (D,F,f) (D,F,f)来表示,其中 D D D表示决策变量的定义域, F F F表示可行解区域,

F中的任意一个元素为该问题的可行解, f f f表示目标函数,满足使 f ( x ) f(x) f(x) 值取到最小值的可行解区域中的 x ∗ x^{*} x称为该问题的最优解。

组合最优化的特点

多数问题属于所谓的NP完全问题,即对该问题基本上不存在一种算法,使得当所有的具体问题的变量和约束条件的数目两者之和甚大时,可以在容许时间(即所谓的多项式时间)之内给出所要的解。

由于这类问题在生产实际中经常出现,不能予以忽视,于是出现了两类解决问题的途径:一类是所谓的直观算法,另一类是近似算法。随着组合最优化研究的进展,一些数学分支,如组合数学、拟阵和广义拟阵以及图论等,也相应地得到新的发展。

  • 7
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
P、NPNPC、NP-hard和多项式归约是计算复杂度理论中的重要概念。 P问题指的是可以在多项式时间内解决的问题,也就是说,存在一个多项式时间的算法可以在合理的时间内解决该问题NP问题指的是可以在多项式时间内验证解的正确性的问题。也就是说,如果已经给出了一个解,我们可以在多项式时间内验证它是否是正确的。但是,目前并没有已知的多项式时间算法可以解决所有的NP问题NPC问题指的是NP问题中最难的一类问题,即NP完全问题。如果一个问题NP完全问题,那么它是NP问题的一种,并且所有的NP问题都可以归约到该问题。也就是说,如果我们能够在多项式时间内解决一个NPC问题,那么我们也可以在多项式时间内解决所有的NP问题NP-hard问题指的是至少和NPC问题一样难的问题,但不一定是NP问题。也就是说,NP-hard问题可能是更加困难的问题,但是它们至少和NPC问题一样难。 多项式归约是指将一个问题转化为另一个问题,使得解决原问题的算法可以用来解决目标问题。如果一个问题可以在多项式时间内归约为另一个问题,那么我们称它是多项式归约的。 P=NP和P≠NP是计算复杂度理论中的两个重要假设。P=NP的意思是,所有的NP问题都可以在多项式时间内解决。P≠NP的意思是,存在一些NP问题是不能在多项式时间内解决的。目前,这两个假设没有被证明或者证伪,它们仍然是计算复杂度理论中的重要问题

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值