10第十章 NP完全问题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1)对于判定问题A,若ANP且NP中的 任何一个问题可在多项式时间内归约为A, 则称A为NP完全问题(NP-Complete或NPC). 可以表示为ANPC.
(2)对于判定问题A,若NP中的任何一个 问题可在多项式时间归约为判定问题A,则 称A为NP困难问题(NP-hard 或NPH) .可以 表示为ANPH.
可满足性问题被证明是NP完全的第一个 问题。作为第一个NP完全问题,还不存在 可归约到其他的NP完全问题。因此要证明 NP类中的所有问题都可以在多项式时间内 归约到它。 定理 10.2 SATISFIABILITY问题是NP完全 的。
(Cook定理,1971)SATNPC.
计算复杂性理论的奠基性工作之一:第一 个被证明的NPC问题!是证明许多其他NPC 问题的出发点 前面已经证明SATNP,所以尚需证明: 任何一个NP问题可以多项式归约为SAT 基本思想: 若ANP,则A存在非多项式时间算法 (猜测解、验证解)。 对猜测解、验证解的过程进行分析,构造 一个SAT问题!
定义 10.3 判定问题类NP由这样的判定问题组 成:对于它们存在着多项式时间内运行的不确定 性算法。
例10.4 着色问题 容易用两种方法(不确定算法, 确定性算法)证明这个问题属于NP类。
两个重要的类P和NP之间,有下面的不同点: •P是一个判定问题类,这些问题可以用一个确 定性算法在多项式时间内判定或解出; •NP是一个判定问题类,这些问题可以用一个确 定性算法在多项式时间内检查或验证它们的解。
Biblioteka Baidu非常有趣的是,它们中的许多是普通的自 然问题,就是说它们来自于现实世界的实 际应用问题。此外,现存的求解这些问题 的算法的运行时间,对于中等大小的输入 也要用几百或几千年来测度。
在研究NP完全性理论时,我们很容易重述一 个问题使它的解只有两个结论:yes或no。在 这种情况下,称问题为判定问题。与此相对 照,最优化问题是关心某个量的最大化或最 小化的问题。 下面通过几个例子,来说明如何把一个问题 阐述为判定问题和最优化问题。
设A是问题Π的一个不确定性算法,我们 说A接受问题Π的实例I,当且仅当对于输入 I存在一个导致yes的回答的猜测。换句话说, A接受I当且仅当可能在算法的某次执行上它 的验证阶段将回答yes。要强调的是,如果 算法回答no,那么这并不意味着A不接受它 的输入,因为算法可能猜测了一个不正确解。
至于一个(不确定性)算法的运行时间,它仅 仅是两个运行时间的和:一个是猜测阶段 的时间;另一个是验证阶段的时间。因此 它是O(ni)+ O(nj)= O(nk),k是某个非负整数。
2可满足问题:给出一个合取范式(CNF)形 式的布尔表达式f,这里每个字句恰好由两 个文字组成,问f是可满足的吗?
如果对于任意问题c,Π的补也在c中,我 们说问题类Π∈c在补运算下是封闭的。例如, 2着色问题的补可以陈述如下:给出一个图G, 它是2不可着色的吗?我们称这个问题为NOT2-COLOR问题。
还有很多计算模型,此处略。
量子计算模型是什么样子呢? 本章的讲解是初步入门,不讨论建立在相应计算模型上的 算法讨论。
10.1 引 言 前面所有的算法的运行时间可以用低次 多项式表示。现在有这样一类问题,这些问 题至今还没有找到有效的算法,而且在将来 也不大可能发现它们的有效算法。
设Π是任意问题,如果对问题Π存在 一个算法,它的时间复杂性是O(nk),其中n 是输入大小,k是非负整数,我们说存在求 解问题Π的多项式时间算法。
如果我们有一个求解判定问题的有效算 法,那么很容易把它变成求解与它相对应的 最优化问题的算法。 因此,在NP完全问题的研究中,甚至在 一般意义上的计算复杂性或可计算性的研究 中,把注意力限制在判定问题上会比较容易 一些。
例如: 有一个求解图着色判定问题的算法A,则 可以用二分搜索并且把算法A作为子程序来 找出图G的色数。很清楚,1≤χ(G)≤n,这 里n是G中顶点数,因此仅用O(logn)次调用 算法A就可以找到G的色数。 因为我们处理的是多项式时间的算法, 因此logn因子是不重要的。
(b) 验证阶段 在这个阶段,一个确定性算法 验证两件事。首先,它检查产生的解串y是 否有合适的形式,如果不是,则算法停下并 回答no;另一方面,如果y是合适形式,那 么算法继续检查它是否是问题实例x的解, 如果它确实是实例x的解,那么它停下并且 回答yes,否则它停下并回答no。我们也要 求这个阶段在多项式步数内完成,即在O(nj) 时间内,这里j是一个非负整数。
例10.2 给出一个无向图G=(V,E),用k种颜 色对G着色是这样的问题;对于V中的每一个 顶点用k种颜色中的一种对它着色,使图中 没有两个相邻顶点有相同的颜色。 判定问题:COLORING 输入:一个无向图G=(V,E)和一个正整数k≥1 输出:G可以k着色吗?即G最多可以用k种颜 色着色吗?
但是现实世界中许多有趣的问题并不 属于这个范畴,求解这些问题所需要的时 间量要用指数和超指数函数来测度。在计 算机科学界已达成这样的共识,认为存在 多项式时间算法的问题是易求解的,而不 大可能存在多项式时间算法的问题是难解 的。
本章将研究难解问题的一个子类,通常 称为NP完全问题类。这类问题含有许许多 多问题,其中还包含了数百个著名的问题, 它们有一个共同的特性,即如果它们中的 一个是多项式可解的,那么所有其他的问 题也是多项式可解的。
定义10.4 设Π和 是两个判定问题。如果 存在一个确定性算法A,它的行为如下,当 给A展示问题Π的一个实例I,算法A可以把 它变换为问题 的实例 ,使得当且仅当 对 回答yes时,对I回答yes,而且,这个 变换必须在多项式时间内完成。那么我们说 Π多项式时间归约到 ,用符号 play 表示。
10.3 NP类(Nondeterministic Polynomial) NP类由这样的问题Π组成,对于这些问题 存在一个确定性算法A,该算法在对Π的一个 实例展示一个断言解时,它能在多项式时间 内验证解的正确性。即如果断言解导致答案 是yes,就存在一种方法可以在多项式时间内 验证这个解。
为了较形式地定义这个类,必须首先定义不 确定性算法的概念。对于输入x,一个不确 定性算法由下列两个阶段组成。 (a) 猜测阶段 在这个阶段产生一个任意字 符串y,它可能对应于输入实例的一个解, 也可以不对应解。事实上,它甚至可能不 是所求解的合适形式,它可能在不确定性 算法的不同次运行中不同。它仅仅要求在 多项式步数内产生这个串,即在O(ni)时间 内,这里n=|x|, i是非负整数。对于许多问 题,这一阶段可以在线性时间内完成。
例10.1 设S是一个实数序列,ELEMENT UNIQUENESS问题为,是否S中的所有的 数都是不同的。
判定问题:ELEMENT UNIQUENESS 输入:一个整数序列S。 输出:在S中存在两个相等的元素吗? 最优问题:ELEMENT COUNT 输入:一个整数序列S。 输出:一个在S中频度最高的元素。 这个问题可以用显而易见的方法在最优的 时间O(nlogn)解决,这意味着它是易解的。
下面列出一些P类的判定问题。 • 排序问题:给出一个n个整数的表,它们是 否按非降序排列? • 不相交集问题:给出两个整数集合,它们 的交集是否为空?
2着色问题:给出一个无向图G,它是否是 2可着色的?即它的顶点是否可仅用两种颜 色着色,使两个邻接顶点不会分配相同的 颜色?注意,当且仅当G是二分图,即当且 仅当它不包含奇数长的回路时,它是2可着 色的。
这样的问题在解决时,对于下一步的 动作,它们也不知道确切的应该怎么办, 只能“尝试”很多种方案才能够得出一个 答案,这显然是很费时的,这种问题为 NP问题。
这种可以在多项式时间内验证一个解 是否正确的问题称为NP问题。 显然,所有的P类问题都是属于NP问题 的,但是现在的问题是,P是否等于NP? 这个问题至今还未解决。
10.2 P类(Polynomial多项式)
定义10.1 设A是求解问题Π的一个算法,如 果在展示问题Π的一个实例时,在整个执行 过程中每一步都只有一种选择,则称A是确 定性算法。因此如果对于同样的输入,实例 一遍又一遍地执行,它的输出从不改变。 定义10.2 判定问题的P类由这样的判定问题 组成,它们的yes/no解可以用确定性算法在 运行多项式步数内,例如在O(nk)步内得到, 其中k是某个非负整数,n是输入大小。
10.4.1 可满足性问题(SAT问题) 给出布尔公式f,如果它是子句的合取, 我们说它是合取范式(CNF)。一个子句是文字 的析取,这里文字是一个布尔变元或它的否 定。一个这种公式的例子是,参考教材178 一个公式称为是可满足的,如果对它的 变元存在一个真值的指派使它为真。例如, 上面的公式是可满足的,因为在x1和x3都臵为 真的任意指派下它为真。 判定问题:SATISFIABILITY 输入:一个合取范式的布尔公式f。 问题:f是可满足的吗?
这个问题是难解的,如果k被限于3, 问题就是非常著名的3着色问题,甚至在图 是平面的情况下也是难解的。
这个问题的一个最优化形式是,对一个图 着色,使图中没有两个邻接的顶点有相同的 颜色,所需要的最少颜色数是多少?这个数 记为χ(G),称为G的色数。
最优化问题:CHROMATIC NUMBER 输入:一个无向图G=(V,E)。 输出:G的着色数。
下面证明它是属于P类的。 由于2着色问题在P中,存在一个确定性 算法A,当展示一个2可着色图时,它停机 并回答yes,在展示一个图不是2可着色图 时,它停机并回答no。通过在算法A中简单 的交换yes和no,能够得出问题NOT-2COLOR的一个确定性算法。这样有如下定 理。
定理 10.1 P类问题在补运算下是封闭的
• P类问题就是所有复杂度为多项式时间的 问题的集合。 • 有些问题很难找到多项式时间的算法 (或许根本不存在),比如找出无向图中的 哈密顿回路问题,但是我们发现如果给了我 们该问题的一个答案,我们可以在多项式时 间内判断这个答案是否正确。比如说对于哈 密顿回路问题,给一个任意的回路,我们很 容易判断他是否是哈米尔顿回路(只要看是 不是所有的顶点都在回路中就可以了)。
10.4 NP完全问题(NP Complete) NPC(NP Complete)问题,可以这么认为, 这种问题只有把解域里面的所有可能都穷举 了之后才能得出答案,这样的问题是NP里面 最难 的问题,这种问题就是NPC问题。
术语“NP完全”表示NP中判定问题的一个 子类,它们在下述意义上是最难的,即如 果它们中的一个被证明用多项式时间确定 性算法可解,那么NP中的所有问题用多项 式时间确定性算法可解,即NP=P。为了证 明一个问题是NP完全的,我们需要以下定 义。
第十章 NP完全问题
10. 1 10. 2 10. 3 10. 4 10. 5 10. 6 10. 7 引言 P类 NP类 NP完全问题 co-NP类 NPI类 四种类之间的关系
计算模型:
任何一种算法都应该建立在一种计算模型的基础上的; 图灵机:存储器和计算是分离的;(状态的变化处理) 图灵机计算模型:一条纸带模型,被分成多个单元,工作 带头进行读写头或者左移一个单元、或者右移一个单元、 或者停留在当前的单元上,其动作由它的有限状态控制器 决定。
NPC和NP-hard两者的区别是: 验证一个问 题A是否为NP-hard无须判断A是否属于NP. 根据定义可知NPCNPH. 当已知一个问题属于NPC或NPH时,如果再 遇到一个新问题: (1)若已知问题多项式归约为新问题,则 新问题属于NPH; (2)若还可以验证新问题属于NP,则新问 题属于NPC.
定义10.5 一个判定问题Π称为是NP困难的, play 如果对于NP中的每一个问题 , 。
定义10.6 一个判定问题Π称为是NP完全的, 如果下列两个条件同时成立:
(1)Π在NP问题中; (2)对于NP中的每一个问题 , play 。
NP完全问题类(NPC) – 定义 定义