NP完全性理论

1.引言

在计算机算法理论中,最深刻的问题之一是“从计算的观点来看,要解决的问题的内在复杂性如何?”它是“易”计算的还是“难”计算的?如果知道了一个问题的计算时间下界,就知道了对于该问题能设计出多有效的算法,从而可以较正确地评价对该问题提出的各种算法的效率,并进而确定对已有算法还有多少改进的余地。在许多情况下,要确定一个问题的内在计算复杂性是很困难的。已创造出的各种分析问题计算复杂性的方法和工具可以较准确地确定许多问题的计算复杂性。
问题的计算复杂性可以通过解决该问题所需计算量的多少来度量。如何区分一个问题是“易”还是“难”呢?

  • 一般,将可由多项式时间O(n^k)算法求解的问题看作易解的问题,将需要超多项式时间才能求解的问题看作难解的问题。

在这里插入图片描述

2.最优化问题和判定问题

有许多问题从表面上看似乎并不比排序或图的搜索等问题更困难,然而至今人们还没有找到解决这些问题的多项式时间算法,也没有人能够证明这些问题需要超多项式时间下界。也就是说,这类问题的计算复杂性至今未知。为了研究这类问题的计算复杂性,人们提出了非确定性图灵机计算模型,使得许多问题可以在多项式时间内求解。

  • 对每个最优化问题,都有一个与之对应的判定问题。
  • 最优化形式的旅行售货员问题可用图论语言形式描述如下

设G=(V,E)是一个带权图,图中各边的费用(权)为正数。图的一条周游路线是包括v中的每个顶点在内的一条回路。周游路线的费用是这条路线上所有边的费用之和。旅行售货员问题要在图G中找出费用最小的周游路线

  • 与之对应的判定形式的旅行售货员问题可描述如下:

对于给定的带权图G=(V,E)和一个正数d。判定形式的旅行售货员问题要求判定图G中是否存在总费用不超过d的周游路线

  • 在一般情况下,判定问题比相应的最优化问题多一个输入参数d。从直观上看,判定问题媭比相应的最优化问题容易求解。从一个最优化问题的多项式时间算法容易得到与之相应的判定问题的多项式时间算法。

  • 所有可以在多项式时间内求解的判定问题构成P类问题( Polynomial Problem,多项式问题)。
    在通常情况下,解一个问题要比验证问题的一个解困难得多,特别在有时间限制的条件下更是如此。

  • P类问题是确定性计算模型下的易解问题类,而NP类问题是非确定性计算模型下的易验证问题类

3.什么是NP类问题

为了说明什么是NP类问题(Non- deterministic Polynomial Problem,非确定性多项式问题),需要引入非确定性算法的概念。

  • 非确定性算法将问题求解分为猜测和验证两个阶段。
  • 算法的猜测阶段是非确定性的,给出问题解的一个猜测。
  • 算法的验证阶段是确定性的,验证猜测阶段给出的解的正确性。

NP类问题

设算法A是解一个判定问题Q的非确定性算法。如果算法A的验证阶段可以在多项式时间内完成,则称算法A是一个多项式时间非确定性算法,也称问题Q是非确定性多项式时间可解的。

  • 所有非确定性多项式时间可解的判定问题构成NP类问题

例如,对于判定形式的旅行售货员问题,容易在多项式时间内验证其解的正确性,因此旅行售货员问题属于NP类。从P类和NP类问题的定义容易看出,P∈NP。反之,大多数的计算机科学家认为,NP类中包含了不属于P类的问题,即P/=NP,但这个问题至今没有获得明确的解答

  • 也许使大多数计算机科学家相信P≠NP的最令人信服的理由是,存在一类NP完全问题,即NPC类问题。这类问题有一种令人惊奇的性质,即如果一个NP完全问题能在多项式时间内得到解决那么NP中的每个问题都可以在多项式时间内求解,即P=NP。尽管已进行多年研究,目前还没有一个NP完全问题有多项式时间算法。

NP完全问题(树)

1.Cook定理:

第一个NP完全问题:就是著名的Cook定理:布尔表达式的可满足性问题SAT是NP完全的。

  • Cook定理给出了第一个NP完全问题。这使得对于任何问题Q,只要能证明Q∈NP,而且可以在多项式时间内将SAT变换为问题Q,便有Q∈NPC。
  • 所以,人们很快证明了许多其他问题的NP完全性。这些NP完全问题都是直接或间接地以SAT的NP完全性为基础而得到证明的,由此逐渐生长出一棵以SAT为树根的NP完全问题树。其中,每个结点代表一个NP完全问题,该问题可在多项式时间内变换为它的任一儿子结点表示的问题。
  • 实际上,由树的连通性及多项式在复合变换下的封闭性可知,NP完全问题树中任一结点表示的问题可以在多项式时间内变换为它的任一后裔结点表示的问题。目前,这棵NP完全问题树上已有几千个结点,还在继续生长。下面介绍这棵NP完全树中的几个典型的NP完全问题。

2.合取范式的可满足性问题

CNF-SAT给定一个合取范式a,判定它是否可满足。如果一个布尔表达式是一些因子和之积,则称它为合取范式,简称CNF( Conjunctive Normal Form)。这里的因子是变量x或x。例如(x1+x2)(x2+x)(x+x2+x3)是一个合取范式,而x1x2+x3不是合取范式

3.三元合取范式的可满足性问题3-SAT

给定一个三元合取范式a,判定它是否可满足。

4.团问题 CLIQUE

给定一个无向图G=(V,E)和一个正整数k,判定图G是否包含一个k团,即是否存在V '∈V 和 |V '|=k,且对任意u,w∈V ‘,有(u,v)∈E

5.顶点覆盖问题 VERTEX- COVER

给定一个无向图G=(V,E)和一个正整数k,判定是否存在V '∈V 和 |V '|=k,使得对任意
(u,v)∈E有v∈V或v∈V ’,如果存在,就称V为图G的一个大小为k的顶点覆盖

6.子集和问题 SUBSET-SUM

给定整数集合S和一个整数t,判定是否存在S的一个子集S ’ ∈S,使得S中整数的和为t。例如,若S={1,4,16,64,256,1040,1041,1093,1284,1344},且t=3754,则子集S ’ ={1,16,64,2561040,1093,1284}是它的一个解。

7.哈密顿回路问题 HAM-CYCLE

给定无向图G=(V,E),判定其是否含有一条哈密顿回路。

哈密顿回路

8.旅行售货员问题TSP

给定一个无向完全图G=(V ,E)及定义在VxV上的一个费用函数c和一个整数k,判定G是否存在经过V中各顶点恰好一次的回路,使得该回路的费用不超过k

原创文章 236 获赞 430 访问量 7万+

猜你喜欢

转载自blog.csdn.net/weixin_44307065/article/details/106180581
今日推荐