算法概论第8章习题 8.14

题目:

证明如下问题是NP-完全的:

给定一个无向图G=(V, E)和整数k,求G中一个规模为k的团以及一个规模为k 的独立集。假定他们都是存在的。

证明:

(1)团:顶点子集V’⊆V,每一对定点间都由E中的一条边连接,即团是G的完全子图。
对于一个给定图G = (V, E),团中顶点集V’,对任一对顶点u, v∈V’,检查边(u, v)是否属于E,就可以在多项式时间确定V’是不是团。
把3-SAT归约到团,设φ= C1∧C2∧…Ck是3-CNF形式中一个具有k个子句的布尔公式。每个子句Cr中恰有3个不同的文字l1r,l2r,l3r。构造一个图G使得当且仅当G中包含一个规模为k的团时,φ可满足。

构造图G:对φ中的每个子句Cr=l1r∨l2r∨l3r,我们把三个顶点v1r,v2r,v3r组成的三元组放入V中。如果下列两个条件同时满足,就用一条边连接顶点vir,vjs:
(1) vir,vjs处于不同的三元组中,即r≠s;
(2) 它们的相应文字是一致的,即lir 不是ljs 的非。

证明图G满足要求:
假定φ有一个可满足性赋值,那么每个字句Cr至少包含一个文字lir,将此文字赋值1,把每个这样的文字对应于一个顶点vir。从上述的每个子句中挑选出的一个赋值为真的文字就得到对应的k个顶点,记这k个顶点构成的集合为V’。V’中任意两点间都有边,这是因为根据构造G的第一个条件,V’中的每个顶点都选自不同的子句。所以V’构成G的一个规模为k的团。
反之,如果G中有规模为k的团V’ ,构造G的条件(1),V’中顶点对应的文字都不在同一个子句中,所以V’中顶点恰好包含了k个子句。把V’中顶点所对应的文字赋值为真,这是可以做到的,因为构造图G的条件(2),所有有边相连的两个顶点相应的文字是一致的,可以同时赋值为真。这样就找到了使φ满足的一组赋值条件,所以φ可满足。

综上,当且仅当G中包含一个规模为k的团时,φ可满足。即把3-SAT问题归约到了团问题。

(2)独立集:根据图论中的定理:图G中存在规模为k的团当且仅当G中存在规模为k的独立集。独立集问题也是NP完全问题。

猜你喜欢

转载自blog.csdn.net/qq_33454112/article/details/78916894