NP问题的证明

8.3证明NP完全问题
(1) Problem:
STINGY SAT is the following problem: given a set of clauses (each a disjunction of literals) and an integer k, find a satisfying assignment in which at most k variables are true, if such an assignment exists. Prove that STINGY SAT is NP-complete.
(2) Solution:
类似于SAT问题,显然对于给定的一组变量赋值,我们可以在多项式时间内证明是否为STINGY SAT问题的解,所以STINGY SAT问题是NP问题;
SAT问题是给定一个CNF,给出一组变量值使得所有字句为真,或者证明不存在满足的解。令k = n时,可以将SAT问题归约成STINGY SAT问题,由于SAT问题是NP完全问题,所以STINGY SAT问题也是NP完全问题。

8.10证明NP完全问题
(a)子图同构:令G是一个环,且环上的顶点数等于H上的顶点数。如果G是H的同构子图,则H中存在Rudrata回路,Rudrata回路问题是子图同构问题的一个特例,所以子图同构问题也是一个NP完全问题;
(b)最长路径:假设G=(V, E),g=|V|-1,则G中存在Rudrata路径,Rudrata路径问题是最长路径问题的一个特例,所以最长路径问题也是一个NP完全问题;
(c)最大SAT:与8.3的问题相似,令g等于CNF中字句的个数时,则SAT问题可归约成最大SAT问题,所以最大SAT问题也是一个NP完全问题;
(d)稠密子图:令b=a(a-1)/2,则此时图G中的a个顶点两两相连,最大团问题是此问题的一个特例,所以稠密子图问题是一个NP完全问题;
(e)稀疏子图:令b=0,则此时图G中的a个顶点两两互不相连,最大独立集是此问题的一个特例,所以稀疏子图问题是一个NP完全问题;
(f)集覆盖:集合覆盖是指从B={b1, b2, b3, …, bn}中找出一组集合使得其并集等于集合A,而顶点覆盖是指从V中找出一组顶点V’使得G中的每条边至少有1个顶点在V’中,最小顶点覆盖可以看成是集合覆盖的一个特例,所以集合覆盖也是一个NP完全问题;
(g)可靠网络:TSP问题是此问题的一个特例,所以可靠网络问题是一个NP完全问题。

8.14证明NP完全问题
(1)Problem:
Prove that the following problem is NP-complete: given an undirected graph G = (V, E) and an integer k, return a clique of size k as weill as an independent set of size k, provided both exist.
(2)Solution:
独立集问题和团集问题是等价的,假设要求图G中存在大小为k的团集,可以向原图G中增加k个互相独立的顶点,则这k个顶点构成了新图G大小为k的独立集,同时也不影响原图的团,团集问题可归约成此问题,因此该问题是NP完全问题。

8.15证明NP完全问题
(1)Problem:
Show that the following problem is NP-complete.
MAXIMUM COMMON SUBGRAPH
Input: Two graphs G1=(V1,E1) and G2=(V2,E2);a budget b.
Output: Two set of nodes V1’⊆V1 and V2’⊆V2 whose deletion leaves at least b nodes in each graph, and makes the two graphs identical.
(2)Solution:
假设G1=(V, E), G2=(V, Ø),当存在至少b个顶点的最大公共子图时,即存在至少b个顶点的独立集。
a. 如果有图大小为b的最大公共子图,且这b个顶点不属于独立集,则至少有2个顶点有边相连,G1和G2的子图中这两个顶点就是相连的,而因为假设条件中G2是不存在边的,出现矛盾,因此这b个顶点属于独立集;
b. 如果有b个顶点属于独立集,我们取这b个顶点构成G1和G2的子图,所以G1中这b个顶点之间不存在边,G2又是没有边的图,所以这两个子图就是相同的,也就是存在大小为b的公共子图。
因此,独立集问题是这个问题的一个特例,这个问题就是NP完全问题。

你可能感兴趣的:(算法概论)