§5. 8 小结

45
1 §5. 8 小小

Upload: abdul-england

Post on 15-Mar-2016

114 views

Category:

Documents


6 download

DESCRIPTION

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

TRANSCRIPT

Page 1: §5. 8   小结

1

§5. 8 小结

Page 2: §5. 8   小结

2

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

Page 3: §5. 8   小结

3

1. 限制法• 最简单又最常用的方法。为证明问题

Π 是 NP 完全问题。• 选定一已知 NP 完全问题 Π′ ,• 只要证明 Π′ 是 Π 的特例即可,• 即只要对 Π 的实例的叙述作限制就得到了问题 Π′ 的实例的叙述。• 就得到了 Π′ ∝ Π

Page 4: §5. 8   小结

4

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

Page 5: §5. 8   小结

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

Page 6: §5. 8   小结

6

• 图论知识告诉我们无向图是有向图的特例• 对有向图作下述限制,有向图就变成无向图:• 有向图 D = (V , A) 任两个节点 u ,

v 之间,• 如果有有向弧存在,• 则两条相反方向的弧同时存在,• 即 (u , v) ∈ A, 且 (v , u) ∈A

Page 7: §5. 8   小结

7

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

Page 8: §5. 8   小结

8

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

Page 9: §5. 8   小结

9

• 顶点覆盖问题 (VC) 是打中集合问题HS 的特殊情况,

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

Page 10: §5. 8   小结

10

• 显然 VC 问题实例有解的充分必要条件为 HS 问题实例有解。• 构成的蒐集 C = E, C 中元素 c 为

E 之元素 , 即为 G 之边 .• 要求 E 的边的两端必有一端在打中集合 J 中 .• 因此 , 构成的 HS 的实例和源像 V

C 问题实例一模一样 .

Page 11: §5. 8   小结

11

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

Page 12: §5. 8   小结

12

• 一个图称为完全图是指图的任意两个节点之间都有边存在。• CL 问题实例为图 G = (V , E) 及正整数

J. • 由此构造 SI 问题的实例• G1 = (V , E) 、 G2 = (V2 , E2), 即 G1与 G 相同;• | V2 | = J ,即 G2 为有 J 个节点的完全图• 容易证明 CL 问题实例及由此构造的 S1问题的实例必然• 同时有解或者同时无解。

Page 13: §5. 8   小结

13

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

Page 14: §5. 8   小结

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 完全问题 .

Page 15: §5. 8   小结

15

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

Page 16: §5. 8   小结

16

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

Page 17: §5. 8   小结

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

Page 18: §5. 8   小结

18

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

C′ 的一个元素 ci 中。

Page 19: §5. 8   小结

19

• 用局部替换法证明 PT 是 NP 完全问题,• 确定 X3C 问题的基本单元为 X 的子集

ci

• 即 C 中的元素。将• ci = {xi , yi , zi}• 转化为子图• Gi = (Vi , Ei) , | Vi | = 12 , | Ei |= 18

Page 20: §5. 8   小结

20

xi yi zi

ai3 ai9

ai3

ai1 ai2 ai4 ai5 ai7 ai8

Page 21: §5. 8   小结

21

• 在三角形分割问题 (PT) 的像实例定义为• G = (V , E)• 其中• V = X U U {ail, ai2, ai3, ai4, ai5, ai6}• i

• E = U Ei• i

• 上述将 X3C 问题的实例转化为 PT问题实例的映射是多项式转换

Page 22: §5. 8   小结

22

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

Page 23: §5. 8   小结

23

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

Page 24: §5. 8   小结

24

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

•① ci 属于 C′ ② ci 不属于 C′

Page 25: §5. 8   小结

25•情况① , 按红线分割 , 该子图被分割了xi yi zi

ai3 ai9

ai3

ai1 ai2 ai4 ai5 ai7 ai8

Page 26: §5. 8   小结

26

• 情况② , 按红线划分

• xi,yi,zi 没有被分割 , 但是它们必定属于某 ci

• 所以必定在其它元中被分割了xi yi zi

ai3 ai9

ai3

ai1 ai2 ai4 ai5 ai7 ai8

Page 27: §5. 8   小结

27

• 可以看到 , 图 G 确实被三角形分割了• 三角形分割是指,将 V 划分成 q个互不相交的子集,• 按红线分成子集 vi

• 每个子集 vi 含三个节点• 并且这三个结点之间有三条边• 充分性证毕

Page 28: §5. 8   小结

28

• 现在证明必要性 .•设 PT问题的像实例• G 能作三角形分割•即能将图的所有结点分成子集 vi

• 每个子集 vi 含三个节点• 并且这三个结点之间有三条边• 现考虑结点 ai3

Page 29: §5. 8   小结

29

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

Page 30: §5. 8   小结

30

xi yi zi

ai3 ai9

ai3

ai1 ai2 ai4 ai5 ai7 ai8

Page 31: §5. 8   小结

31

• 只有与 ai3 有边连接的结点才有可能和 ai3

• 在同一个子集中 vi• 所以考虑以上两情况•① ai3 和 ai6 在同一子集中•那么在同一个子集中的第三结点必然是 ai9

•因为只有 ai9 和 ai3 、 ai6 都有边相连接• ai3 、 ai6 、 ai9 组成 vi

Page 32: §5. 8   小结

32

• 与此同时 xi 必定和 ai1 、 ai2 组成子集vi

• 同理• yi 必定和 ai4 、 ai5 组成子集 vi

• zi 必定和 ai7 、 ai8 组成子集 vi

• 情况和前面的分割相同 (P25)

Page 33: §5. 8   小结

33

•② ai3 和 ail 在同一子集中 ,•那么在同一个子集中的第三结点必然是 ai2

• ai1 、 ai2 、 ai3 组成子集 vi

• 同理• ai4 、 ai5 、 ai6 组成子集 vi•

ai7 、 ai8 、 ai9 组成子集 vi• 情况和前面的划分相同 (P26)• 而 xi , yi , zi 没有在这个元参与分割• 但是必定在其它元参与分割

Page 34: §5. 8   小结

34

• 构造 X3C 实例的解如下• 考虑前述情况①的元 , • 由这些元的三个结点

xi , yi , zi

• 组成 ci = {xi , yi , zi}• 情况①的诸 ci 构成的集合就是 C′

Page 35: §5. 8   小结

35

• 显然 , 诸 ci 是 C 的元素 . 且只含三个元素• 所以C′ ⊂ C• 下面证明 X 的每一个元素出现并只出现在

C′ 的一个元素 ci 中• 设 x 为 X 的任意一个元素• 按照转换 , x 必定属于某些元 ( 可能多个 )• 并必定在分割中属于某三角形• 它只能属于情况①的分割 (P25)

• 因此 , x 属于前页构造的 ci = {xi , yi , zi}

Page 36: §5. 8   小结

36

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

Page 37: §5. 8   小结

37

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

Page 38: §5. 8   小结

38

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

Page 39: §5. 8   小结

39

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

Page 40: §5. 8   小结

40

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

Page 41: §5. 8   小结

41

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

Page 42: §5. 8   小结

42

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

Page 43: §5. 8   小结

43

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

Page 44: §5. 8   小结

44

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

Page 45: §5. 8   小结

45

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