NP 完全性理论 - 算法学习前的引论 or 算法学习后的展望

本文参考自:https://blog.csdn.net/liusiqian0209/article/details/49837447

这就是一个对问题解决算法进行讨论的根本理论,主要关注所有问题是否都存在能够在多项式时间内解决的算法的问题。

一、基本概念:

1. P 问题:利用多项式时间能解决的问题。

2. NP 问题:利用多项式时间能够验证问题的一个解是否正确的问题。

3. 归约:对问题进行一般性质的归纳,可以对问题要求的结果进行一定逻辑上的转换。

               若归约后的问题能在多项式时间内解决,则原问题也可以。

注:

多项式时间就是指算法时间复杂度能由多项式表示

显然有 P⊆ NP,即能在多多项式时间内解决的问题一定能在多项式时间内验证

P问题称为多项式问题,NP问题称为非确定性多项式问题

二、NP 完全问题:

NPC 问题(NP 完全问题):所有 NP 问题都可以归约到的问题。解决了该问题,就解决了所有的 NP 问题。

NPC 问题示例:

  • 可满足性问题:对于N个布尔类型的变量,它们之间采用“与”,“或”,“非”这样的逻辑运算符连接,那么这些变量能否找到一组合适的取值,使得最终的运算结果为真。
  • 团问题:对于任意两个人,要么是好友,要么不是好友。那么能否找到一个人数为50个人的团体,使得他们两两之间彼此都是好友?
  • 哈密顿回路
  • 旅行商问题
  • 最大割问题

三、 P=NP 与 P ≠ NP:

P 是否等于 NP 是目前还没得出结论的一个问题。

简单来说,由于 P⊆ NP ,我们只需考虑 NP 是否 ⊆ P,即能用多项式时间验证的问题是否一定有多项式时间内解决的方法

要确定上述问题,需要用(二)中提到的方法对所有 NP 问题进行归约,得到 NPC 问题,并对其进行证明。

1. P = NP:

要证明 P=NP ,只需给出任意一个 NPC 问题的多项式复杂度的解决方案即可。

2. P ≠ NP:

需要证明所有 NPC 问题都不存在多项式时间的解决方案。

展望:

        现在的很多设计都是基于P≠NP之上的,那么假如某一天证明了P=NP。我们的生活将发生巨大的改变:在生物学方面,我们能够很快地完成基因测序工作;对于一个机器学习系统,能够很快的得到令人满意的特征选择;如果从犯罪现场提取到罪犯的DNA,我们能在第一时间确定他是谁。不过,这也同样会带来问题:比如当前信息在网络传输中使用MD5来校验,以检查是否在中途被篡改,不过在P=NP之后,这种校验方式就不再可靠了。同样,对于RSA加密算法,也可以很快地计算出密钥。
       人们在证明P≠NP的道路上已经走过了数十年,目前仍没有得到一个有说服力的答案。如果要证明不存在有效的算法解决那些 NP 完全问题,不仅要指明现有的算法无法解决,还要论证未来发明的算法也无法解决,那么如何证明一个还没有出现的东西就必将失败呢?
       也许终有一天,有一位旷世奇才找到了打开宝箱的钥匙。不过在那之前,所有的科学家们还需要在这条荆棘路上摸索很长一段时间。

补充:NP 难问题

NP 难问题:无法通过多项式时间验证的问题或通过 NPC 问题归约到的问题

NP 完全性理论 - 算法学习前的引论 or 算法学习后的展望_第1张图片

对于 NP 难问题,即使 P=NP, 也不一定存在有效的解决方案。 

NP 难问题示例:

  • 围棋问题:在一个围棋棋盘上摆出一个残局=,现在问如果执黑棋的选手每一步都选择在最优的位置下子,那么他是否一定能赢?这个问题没有人能在多项式时间内猜到一个必胜的下子位置并且证明它是对的,因为你的决策与对方的下子位置有关。而你的决策又会对对方下一步的下子位置产生影响,因此如此走下去,需要大量的时间和巨大的存储空间进行推导。
  • 机器学习中的特征选择问题:当发现你的学习系统存在过拟合时,你可能会考虑要减少特征的数量。如果当前的输入特征数为n,那么需要从这些特征中选择一个子集。对于其中每一个特征,我们都可以选择留下它或者抛弃,那么一共会产生2ⁿ种方案。对于其中任意一种方案,通过训练样本,然后进行交叉验证得到一个效果的衡量,但我们很难通过这个衡量来验证这个方案是不是全局最优的,即一般性误差(generalization error)最小。因此普遍认为选取全局最优的特征子集是一个NP难问题。

解决 NP 难问题:

  • 对原问题进行一定的条件约定
  • 退而求其次:如上面提到的机器学习中的特征选择问题,通常采取的做法是使用前向搜索这样的启发式算法:每次从所有未选择的特征中选择一个使评价结果最佳的特征,加入到备选子集中,直到加入任何特征时评价结果无法更好,或者达到了限定的特征数。这样做不能保证达到全局最优,不过却使得实现起来变得可能。

你可能感兴趣的:(算法,算法,NP,完全性理论,np问题)