8.3 STINGY SAT

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.

当我们有多项式时间算法解决SAT问题时,我们可以直接解决STINGY SAT

我们取k为变量的个数,如果我们找到了多项式时间的算法解决它,也就是解决了SAT问题。验证答案是显然快速的。

我们成功将SAT归约到了STINGY SAT 证明了 STINGY SAT 是NP-Complete problem

8.14  K-clique 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 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的规模,已经很不错了。

《算法概论》第八章的一些课后题目 关于NP-Complete Problem的更多相关文章

  1. 算法笔记(c++)--桶排序题目

    算法笔记(c++)--桶排序 记得题目是排序,输入n个1-1000的数字然后去重然后排序. 桶排序没毛病 #include<iostream> using namespace std; i ...

  2. 为什么我要放弃javaScript数据结构与算法(第八章)—— 树

    之前介绍了一些顺序数据结构,介绍的第一个非顺序数据结构是散列表.本章才会学习另一种非顺序数据结构--树,它对于存储需要快速寻找的数据非常有用. 本章内容 树的相关术语 创建树数据结构 树的遍历 添加和 ...

  3. 滤波器算法(1)-卡尔曼滤波小车附带题目与MATLAB程序

    1 简介 由卡尔曼这个学者提出的最佳线性滤波器,单纯时域维度即可实现[无需进行频域变换] 2 思路 由上一时刻的最佳估计值XKE_P预测①当前时刻预测值Pxv 与 ②当前时刻的测量值Mxv 进行联立计 ...

  4. ML: 聚类算法-概论

    聚类分析是一种重要的人类行为,早在孩提时代,一个人就通过不断改进下意识中的聚类模式来学会如何区分猫狗.动物植物.目前在许多领域都得到了广泛的研究和成功的应用,如用于模式识别.数据分析.图像处理.市场研 ...

  5. 【算法】Matrix - Tree 矩阵树定理 & 题目总结

    最近集中学习了一下矩阵树定理,自己其实还是没有太明白原理(证明)类的东西,但想在这里总结一下应用中的一些细节,矩阵树定理的一些引申等等. 首先,矩阵树定理用于求解一个图上的生成树个数.实现方式是:\( ...

  6. 算法导论 第八章 线性时间排序(python)

    比较排序:各元素的次序依赖于它们之间的比较{插入排序O(n**2) 归并排序O(nlgn) 堆排序O(nlgn)快速排序O(n**2)平均O(nlgn)} 本章主要介绍几个线性时间排序:(运算排序非比 ...

  7. 排序算法 以及HKU的一些数据结构 相关题目 以及 K叉树,二叉树 排列

    冒泡排序.选择排序.快速排序.插入排序.希尔排序.归并排序.基数排序以及堆排序,桶排序 https://www.cnblogs.com/Glory-D/p/7884525.html https://b ...

  8. 原创题目 白银之春 Problem and Solution

    白银之春 Solution 比赛用题面.题解.标程和数据生成器都挂在 git@github.com:sun123zxy/spring.git 上. Problem 白银之春 (spring.cpp/. ...

  9. ACM题目————The partial sum problem

    描述 One day,Tom’s girlfriend give him an array A which contains N integers and asked him:Can you choo ...

随机推荐

  1. IntelliJ IDEA配置Tomcat/Jetty运行Web项目

    一.使用Maven的POM引入插件的形式: 这种方式只需在POM中引入Tomcat/Jetty的插件即可运行.参考:http://www.cnblogs.com/EasonJim/p/6687272. ...

  2. iOS 内存管理策略

    内存管理策略(memory Management Policy) NSObject protocol中定义的的方法和标准命名惯例一起提供了一个引用计数环境,内存管理的基本模式处于这个环境中.NSObj ...

  3. webstorm bable

    一.设置npm源 1.得到原本的镜像地址 npm get registry > https://registry.npmjs.org/ 设成淘宝的 npm config set registry ...

  4. sklearn 特征选择

    1.移除低方差的特征(Removing features with low variance) VarianceThreshold 是特征选择中的一项基本方法.它会移除所有方差不满足阈值的特征.默认设 ...

  5. Dynamics CRM 2015中的SSRS Report集成配置

    大家应该都知道.Dynamics CRM能集成SSRS Report,而且我也在之前的博文中讨论过怎样制作一个简单的SSRS Report并部署到Dynamics CRM中.今天我们来看看一些比較有用 ...

  6. 王立平--GUI与GUILayout的差别

    GUI.Button (new Rect(0,0,5,5,"哈哈"); GUILayout.Button ("heheh"); 1.以上代码都是现实一个butt ...

  7. IE8.0登录Oracle EBS后报Oracle error 1403错

    IE8.0登录Oracle EBS后报错,登录页面打开没有问题.只是输入username和password然后登录,遇到下面错误: <PRE>Oracle error 1403: java ...

  8. Computer form factor

    http://en.wikipedia.org/wiki/Motherboard_form_factor Computer form factor From Wikipedia, the free e ...

  9. HDU 5366:The mook jong 递推

    The mook jong  Accepts: 506  Submissions: 1281  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit ...

  10. Vim经常使用技巧总结2

    我的主力博客:半亩方塘 1. 在光标所在行查找字符在普通模式下用 f{char} 命令,光标会移动到该字符所在的位置.向下反复查找在普通模式下用 ;,向上回退查找用 , 2. 在光标所在行查找与替换在 ...