《算法概论》习题解答 8.10

来源:互联网 发布:手机用usb使用电脑网络 编辑:程序博客网 时间:2024/06/05 14:29

8.10 证明以下问题是某些NP完全问题的一般化,以此证明该问题也是NP完全的。
证明思路是将问题中的某些条件特殊化,并证明特例与某些NP完全问题相同。

(a)判断一个无向图G是否为另一个无向图H的子图。
A:令图G是一个环,而且G和H的顶点数相同。那么如果G是H的子图,H中必然存在Rudrata回路。因此求解这个问题相当于求解图H的Rudrata回路,因此问题(a)是NP完全的。

(b)找出一个图G中长度为g的简单路径。
A:令g=结点数-1,那么问题就变成找出图G的Rudrata路径,因此问题(b)是Rudrata路径的一般化,也是NP完全的。

(c)找出一个真赋值,使其满足给定的CNF其中至少g个子句。
A:令g=CNF的子句数,那么问题就变成SAT问题,因此问题(c)是SAT问题的一般化,也是NP完全的。

(d)给定整数值a、b,找出G的一个子图,使其恰好a个结点且至少有b条边。
A:令b=a*(a-1)/2,那么问题就变成找出G中结点数为a的团,因此问题(d)是NP完全的。

(e)给定整数值a、b,找出G的一个子图,使其恰好a个结点且至多有b条边。
A:令b=0,那么问题就变成找出G中结点数为a的独立集,因此问题(e)是NP完全的。

(f)集合覆盖问题。
A:令集合U为图G的所有边组成的集合,令集合S为n个集合的集合,这n个集合分别是以图G每个结点所出发的所有边组成的集合,显然它们都是U的子集。那么对于U和S的集合覆盖问题就相当于找出图G的最小顶点覆盖问题,因此问题(f)是NP完全的。

(g)给定两个矩阵,依次为距离矩阵和连接需求矩阵,以及预算b,找出一个图G,使得其中所有边的总代价不超过b,并且在任意两个不同的结点i和j之间,存在rij条结点互不相交的路径。
A:对于距离矩阵,如果两个结点有边相连,设距离为1,否则为2;对于连接矩阵,设为2;最后设b为结点个数,那么求解这个问题相当于求解图G的TSP问题,因此问题(g)是NP完全的。