1 / 45

§5. 8 小结

§5. 8 小结. 证明一个问题是 NP 完全问题的方法变化多端, 这是因为要证明的问题本身相互间的差异很大 启示 : 如何着手开始证明过程。 在下面的叙述中我们略去问题 Π 属于 NP 的证明. 1. 限制法. 最简单又最常用的方法。为证明问题 Π 是 NP 完全问题。 选定一已知 NP 完全问题 Π ′ , 只要证明 Π ′ 是 Π 的特例即可, 即只要对 Π 的实例的叙述作限制就得到了问题 Π ′ 的实例的叙述。 就得到了 Π ′ ∝ Π. Π ′ 是 Π 的特例, 则 Π ′ 的实例就是 Π 的实例

Download Presentation

§5. 8 小结

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. §5. 8 小结

  2. 证明一个问题是NP完全问题的方法变化多端, • 这是因为要证明的问题本身相互间的差异很大 • 启示: 如何着手开始证明过程。 • 在下面的叙述中我们略去问题Π属于NP的证明

  3. 1. 限制法 • 最简单又最常用的方法。为证明问题Π是NP完全问题。 • 选定一已知NP完全问题Π′, • 只要证明Π′是Π的特例即可, • 即只要对Π的实例的叙述作限制就得到了问题Π′的实例的叙述。 • 就得到了Π′ ∝ Π

  4. Π′是Π的特例, • 则Π′的实例就是Π的实例 • 很容易构成从Π′到Π的多项式转换。

  5. 例 有向哈密尔顿回路问题(简称DHC) • 实例:有向图D=(V,A),其中V是节点集合, • A是有向弧、即有序对(u,v)的集合(u,v∈V). • 问:图D是否有一条有向哈密尔顿回路 • v1,v2,…vn,(n = IVl) • 即 • (vi,vi+1) ∈ A (i=1,2,…,n – 1) • (vn,v1) ∈ A

  6. 图论知识告诉我们无向图是有向图的特例 • 对有向图作下述限制,有向图就变成无向图: • 有向图D=(V,A)任两个节点u,v之间, • 如果有有向弧存在, • 则两条相反方向的弧同时存在, • 即(u,v) ∈ A, 且(v,u) ∈A

  7. 不难证明HC∝DHC. • 由HC问题的实例图G=(V,E)构造DHC问题的实例D=(V,A), • 即G和D有相同的节点集合; • (u,v) ∈ A, (v,u) ∈ A当且仅当(u,V) ∈ E. • 显然G有哈密尔顿回路的充分必要条件为D有有向哈密尔顿回路。

  8. 例 打中集合问题(HS) • 实例:集合S及其子集的蒐集C, • 正整数K • 问:是否有元素个数不大于K的子集 • S′⊂S (|S′|≤K), • 使蒐集C中每一个c ∈ C至少有一个元素属于S′. • 注意: c是S的子集

  9. 顶点覆盖问题(VC)是打中集合问题HS的特殊情况,顶点覆盖问题(VC)是打中集合问题HS的特殊情况, • 只要令C中每一个子集c只含两个元素(|c|=2)即可。 • 由VC实例图G=(V,E)及正整数K, • 构造HS实例如下: • 令S=V, 蒐集C =E, 同样的正整数K. • VC问题实例有K覆盖的充分必要条件为HS问题实例有K打中集合。

  10. 显然VC问题实例有解的充分必要条件为HS问题实例有解。显然VC问题实例有解的充分必要条件为HS问题实例有解。 • 构成的蒐集C = E, C中元素c为E之元素, 即为G之边. • 要求E的边的两端必有一端在打中集合J中. • 因此, 构成的HS的实例和源像VC问题实例一模一样.

  11. 例 子图同构问题(简称SI,见本章第2节) • 集团问题CL是SI问题的特殊情况, • 只要令SI实例中的图G2为完全图即可。 • 不难证明 • CL∝ S1

  12. 一个图称为完全图是指图的任意两个节点之间都有边存在。一个图称为完全图是指图的任意两个节点之间都有边存在。 • CL问题实例为图G=(V,E)及正整数J. • 由此构造SI问题的实例 • G1=(V,E)、 G2=(V2,E2), 即G1与G相同; • | V2 |=J,即G2为有J个节点的完全图 • 容易证明CL问题实例及由此构造的S1问题的实例必然 • 同时有解或者同时无解。

  13. 例 有界支撑树问题(简称BST) • 实例:图G=(V,E) • 正整数K≤|V| - 1 • 问:G是否含有支撑树,且树中每一个节点的度数小于或等于K, • 如令K=2,则BST问题变成所谓的 • 哈密尔顿路径问题(简称HP)

  14. 实例:图G=(V,E) • 问:G是否有一条哈密尔顿路径,即一个包含所有节点的序列 • vi,vi+1,…vn,(n= IVl) • (vi,vi+1) ∈ E (i=1,2,… ,n - 1) • 易证HP问题是NP完全问题。 • 现在只要证明 • HP ∝ BST • 就证明了BST问题是NP完全问题.

  15. 2.局部替换法 • 这种证明方法中的多项式转换不象限制法那样简单。 • 局部替换法先选定一已知的NP完全问题Π′, • 在Π′的实例中确定一些组成部分(称为基本单元), • 然后将这些基本单元用统一的方法进行转化, • 这样就得到了待证问题Π的实例。

  16. 证明三可满足问题时使用的就是局部替换法, • 在SAT问题实例中确定的基本单元是 “项”, • 再将SAT实例中的每一项转化成项集合 • 这些新的项都只含三个因子。其间的转化是统一的。 • 要指出的是转化是局部的, • 即一个项的转化不受其它项的影响, • 也不影响其它项的转化。

  17. 例 三角形分割问题(PT) • 实例:图G=(V,E), • |V|=3q (q为正整数) • 问:是否能将G作三角形分割? • 三角形分割是指,将V划分成q个互不相交的子集,每个子集vi含三个节点即 • vi= {al,a2, a3} • 且 (al,a2) ∈ E,(a2, a3) ∈ E,(a3,al) ∈ E

  18. 选择三覆盖问题为已知的NP完全问题(其证明略)。 • 三覆盖问题(简称X3C) • 实例:有限集合X, • 且IXI=3q (q为正整数); • 集合C={c}, • 其中c是含三个元素的X的子集 • 问:是否存在C的子集C′, C′⊂ C, • 且使X的每一个元素出现并只出现在C′的一个元素ci中。

  19. 用局部替换法证明PT是NP完全问题, • 确定X3C问题的基本单元为X的子集ci • 即C中的元素。将 • ci={xi,yi,zi} • 转化为子图 • Gi=(Vi,Ei),| Vi |=12, | Ei |=18

  20. ai3 ai9 ai3 ai1 ai2 ai4 ai5ai7ai8 xi yi zi

  21. 在三角形分割问题(PT)的像实例定义为 • G=(V,E) • 其中 • V=X UU {ail, ai2, ai3, ai4, ai5, ai6} • i • E= UEi • i • 上述将X3C问题的实例转化为PT问题实例的映射是多项式转换

  22. 这个转换把X3C实例的的元 • ci={xi,yi,zi} • 转换为一个含有12个结点、18条边的子图. • 转换一个元所需时间为一常数. • 整个转换需要时间为p的多项式 • p = |C| • 现在证明X3C ∝ PT

  23. X3C的实例存在C的子集C′, • C′⊂ C, • 且使X的每一个元素出现并只出现在C′的一个元素ci中 • 的充分必要条件为 • 该实例在PT问题的像实例 • G能作三角形分割

  24. 设X3C的实例存在C的子集C′, C′⊂ C, • 且使X的每一个元素出现并只出现在C′的一个元素ci中 • 现将G作三角形分割如下 • 分两种情况 • ci={xi,yi,zi} • ① ci属于C′ ② ci不属于C′

  25. ai3 ai9 ai3 • 情况①, 按红线分割,该子图被分割了 ai1 ai2 ai4 ai5ai7ai8 xi yi zi

  26. ai3 ai9 ai3 • 情况②, 按红线划分 • xi,yi,zi没有被分割, 但是它们必定属于某ci • 所以必定在其它元中被分割了 ai1 ai2 ai4 ai5ai7ai8 xi yi zi

  27. 可以看到, 图G确实被三角形分割了 • 三角形分割是指,将V划分成q个互不相交的子集, • 按红线分成子集vi • 每个子集vi含三个节点 • 并且这三个结点之间有三条边 • 充分性证毕

  28. 现在证明必要性. • 设PT问题的像实例 • G能作三角形分割 • 即能将图的所有结点分成子集vi • 每个子集vi含三个节点 • 并且这三个结点之间有三条边 • 现考虑结点ai3

  29. ai3必定在某子集vi中 • ① ai3和ai6在同一子集中 • ② ai3和ail在同一子集中

  30. ai3 ai9 ai3 ai1 ai2 ai4 ai5ai7ai8 xi yi zi

  31. 只有与ai3有边连接的结点才有可能和ai3 • 在同一个子集中vi • 所以考虑以上两情况 • ① ai3和ai6在同一子集中 • 那么在同一个子集中的第三结点必然是ai9 • 因为只有ai9和ai3、ai6都有边相连接 • ai3、ai6、ai9组成vi

  32. 与此同时xi必定和ai1、ai2组成子集vi • 同理 • yi必定和ai4、ai5组成子集vi • zi必定和ai7、ai8组成子集vi • 情况和前面的分割相同(P25)

  33. ② ai3和ail在同一子集中, • 那么在同一个子集中的第三结点必然是ai2 • ai1、ai2 、ai3组成子集vi • 同理 • ai4、ai5 、ai6组成子集vi • ai7、ai8 、ai9组成子集vi • 情况和前面的划分相同(P26) • 而xi,yi,zi没有在这个元参与分割 • 但是必定在其它元参与分割

  34. 构造X3C实例的解如下 • 考虑前述情况①的元, • 由这些元的三个结点 xi,yi,zi • 组成ci={xi,yi,zi} • 情况①的诸ci构成的集合就是C′

  35. 显然, 诸ci是C的元素. 且只含三个元素 • 所以C′⊂ C • 下面证明X的每一个元素出现并只出现在C′的一个元素ci中 • 设x为X的任意一个元素 • 按照转换, x必定属于某些元(可能多个) • 并必定在分割中属于某三角形 • 它只能属于情况①的分割(P25) • 因此, x属于前页构造的ci={xi,yi,zi}

  36. 但是它属于情况①的分割(P25) • 只此一次, 因为三角形分割的定义 • 诸vi是互不相交的 • 所以x只出现在C′的一个元素ci中 • 证毕

  37. 例 串行流程问题(SWI) • 实例:T={t}为任务集合 • 三个映射 • r: T→ Z (Z为非负整数集合) • d:T→ Z+ (Z+为正整数集合) • l :T→ Z+ • r(t)表示任务t最早可以开始的时间, • d(t)表示任务最迟必须完成的时间, • l(t)表示任务t完成所需之时间。

  38. 问:是否存在时间表,即映射 • σ: T→ Z • 表示任务t安排在σ(t)时开始。

  39. 且要求每个任务t∈T及t′≠t, 满足三条件 • σ(t) ≥r(t) • σ(t)+l(t)≤d(t) • σ(t′)+l(t′) ≤σ(t) • 或σ(t)+l(t) ≤σ(t′) • 其中第三个条件是指任意两个不同任务的工作不重叠。

  40. 3. 合成法 • 合成法比前两种方法复杂。 • 顶点覆盖问题及 • 哈密尔顿回路问题的 • 证明使用的就是合成法。

  41. 合成法的思路是这样的 • 由已知的NP问题Π′的实例的几种成份 • 构造待证问题Π的实例的成份,再将这些成份拼装成Π的一个实例, • 拼装过程中还要加一些结构 • 才能将那些孤立无关的成份组成一个实例

  42. 在局部替换法中 • 将Π′实例的基本单元统一转化,无须拼装 • 而在合成法中成份的构造不是统一的 • 且还需要拼装才能得到问题Π的实例

  43. 顶点覆盖问题的证明中曾给出映射 • f:3SAT→VC • 映射f将3SAT实例中的成份逻辑变量ui∈U • 转化为一条边, • 将另一个成份Ci ∈ F转化为 • 一个三角形, • 然后再连接边和三角形, • 从而得到VC的实例。

  44. 哈密尔顿回路问题的证明使用了映射 • t:VC → HC • 映射t将VC问题实例的每条边构造成元(有十二个节点、十四条边), • 由此再对VC实例的每个节点构造链, • 对正整数K构造K个节点, • 映射t最后将这K个节点与n条链连接 • (设VC实例有n个节点), • 从而构造起Hc问题的实例。

  45. 由于NP完全问题至今还没有高效的算法, • 因此一部分计算机科学家将精力用于 • 寻找NP完全问题的近似解算法

More Related