算法第八章课后练习 8.10

算法第八章课后练习 8.10

题目

8.10 利用推广的方法证明NP-完全性。对以下每个问题,请通过证明它是本章某个NP-完全问题的推广,说明它是完全的。

(a) 子图同构:给定两个作为输入的无向图G和H,判断G是否为H的一个子图(即删除H中的某些顶点或边后,所得的新图最多只需再修改某些顶点的名称,即可与G相同),且如果是,返回由V(G)到V(H)的相关映射。

(b) 最长路径:给定图G和整数g,求G中一条长为g的简单路径。

(c) 最大SAT: 给定一CNF公式和整数g,求满足其中至少g个子句的真赋值。

(d) 稠密子图:给定一个图和两个整数a和b,求G中的a个顶点,使得它们之间最少有b条边。

(e) 稀疏子图:给定一个图和两个整数a和b,求G中的a个顶点,使得它们之间最多有b条边。

(f) 集和覆盖。(该问题衍生了两个著名的NP-完全问题。)

(g) 可靠网络:给定两个n*n矩阵,一个距离矩阵 dij, 一个连接需求矩阵 rij 以及预算b。我们要求一个图G=({1,2,3,……,n}, E)使得:(1)其中所有边的总代价不超过b;(2)在任意两个不同的顶点i和j之间,存在rij条顶点互不相交的路径。(提示:假设所有dij都为1或2,b=n,所有的rij=2. 想一下这会是哪个著名的NP-完全问题?)

解答

a. 令图G为一个环,环上的顶点数等于图H的顶点数。那么若G是H的同构子图,则说明H存在Rudrata回路。于是知Rudrata回路事实上是子图同构问题的一个特例。

b. 如果令g=|V|-1,得到的就是一条Rudrata路径。

c. 令g为子句的总数,即构成了SAT问题。

d. 令b=a(a-1)/2, 此时这个a个顶点两两相连,于是成了一个最大团问题。

e. 令b=0,即成了最大独立集问题。

f. 显然是最小顶点覆盖的一个推广。

g. Hint中所描述的特例即是一个TSP。

你可能感兴趣的:(leetcode,算法,NP-完全问题)