8.3 STINGY SAT html
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 assignmentide
exists. Prove that STINGY SAT is NP-complete.spa
当咱们有多项式时间算法解决SAT问题时,咱们能够直接解决STINGY SAThtm
咱们取k为变量的个数,若是咱们找到了多项式时间的算法解决它,也就是解决了SAT问题。验证答案是显然快速的。blog
咱们成功将SAT归约到了STINGY SAT 证实了 STINGY SAT 是NP-Complete problemget
8.14 K-clique problem it
Prove that the following problem is NP-complete:given an undirected graph G=(V,E) and an integer k,io
return a clique of size k as well as an independent set of size k,provided both exist.变量
首先,团和独立集是两个相对的概念,寻找k个元素的团和寻找k个元素的独立集是等价命题,这里不展开说明了。
书中已经给出了由3-SAT归约到k-独立集的证实,这里简单叙述一下
对于任意一个有k个clause的3SAT表达式,咱们对于每一个clause构造一个三点三边呈现三角形的子图,(共有k个三角形)
对于每一个变量,两种相反的形式之间连一条边,若是可以找到k个元素的独立集,必然k个点分布在k个三角形,即选择了k个变量,使得表达式知足。验证知足性显然是快速的。
因而,当咱们有多项式时间算法解决k独立集问题时,咱们就必定有多项式时间算法解决3SAT问题,因此k独立集问题是NP-complete problem.
一样的,k独立集的等价命题 k-clique问题也是NP-complete的。
补充一道有趣的题目 ZOJ1492
该题给定咱们一个无向图,求最大团的点数是多少。图的规模小于等于50
这道题我找到了搜索的解法,可是我还没想到办法严格的分析这个dfs的复杂度,可是因为dfs不是记忆化的,因此我猜测它应该是指数复杂度的。
事实上要实现dfs的记忆化,就不得不用指数级的空间来储存数据,这也是没法接受的。
不过这道题的搜索剪枝技巧性仍是很强的,毕竟指数级的算法能解决50的规模,已经很不错了。