算法概论 | NP完全问题
来源:互联网 发布:桌面的数据都没了 编辑:程序博客网 时间:2024/06/11 07:18
8.3
Problem
STINGY SAT:给定一组子句和整数k,求最多有k个变量为true的满足赋值(如果存在)。
Solution
首先,给定一个解S,可以直接带入STINGY SAT检验其是否满足,复杂度为多项式时间,所以是NP的。
然后,STINGY SAT问题与SAT相比,增加了约束最多k个变量为true,所以可以将SAT归约到STINGY SAT。假设SAT有n个变量,即令k=n,这一过程是多项式(常数)时间的,而且很容易可以看出当STINGY SAT可满足时SAT也有可满足的解,反之亦然。
8.10
Problem a
子图同构:给定两个无向图G和H,判断G是否为H的一个子图,如果是则返回V(G)到V(H)的相关映射。
Solution
给定一组映射,我们可以判断出G是否是H的一个子图,所以问题是NP的。
判断是否为子图主要看点和边,所以可以将Rudrata回路归约到子图同构来证明它是NPC。设有图H和环G,H和G顶点数相等,该问题到子图同构只需要多项式的时间完成。如果G是H的子图,那么H一定存在Rudrata回路,并按照以某个起点开始的映射返回即可。如果G不是H的子图,则H一定不存在Rudrata回路,假设其存在,则可以推出G是H的子图,得到矛盾。
Problem b
最长路径:给定图G和整数g,求G中一条长为g的简单路径。
Solution
设图中顶点数为V,令g = |V| - 1,转化为Rudrata回路问题,所以最长路径是Rudrata回路的推广,也是NPC。
Problem c
最大SAT:给定一个CNF公式和整数g,求满足其中至少g个子句的真赋值。
Solution
设CNF中共有n个子句,添加约束g = n,就转化为SAT问题,所以最大SAT是SAT的推广,也是NPC。
Problem d
稠密子图:给定一个图和两个整数a和b,求G中的a个顶点,使得它们之间最少有b条边。
Solution
SAT问题边和点的数目没有明显约束,所以考虑最大团问题。令b=(a-1)a/2,即每两个点之间都有一条边,就转化为了求最大团问题,所以稠密子图是NPC。
Problem e
稀疏子图: 给定一个图和两个整数a和b,求G中的a个顶点,使得它们之间最多有b条边。
Solution
与d不同的是,我们要找到一个边数有上界的NPC问题,并且是稀疏子图的特例。令b=0,则转换为求图G的独立集,所以也是NPC的。
Problem f
集合覆盖:经典SCP描述包含一个集合U以及U内元素构成的若干各小类集合S,目标是找到S 的一个子集,该子集满足所含元素包含了所有的元素且使小类集合个数最少。
Solution
从定义上来看,集合覆盖和最小顶点覆盖十分相似。设有一个图G,其边数和集合U中的元素数目相等,令小类集合Si的元素为顶点i相邻的边,S集合为图G中的边集,则集合覆盖就转化为了最小顶点覆盖,所以是NPC问题。
Problem g
可靠网络:给定两个n*n矩阵,一个距离矩阵dij,一个连接需求矩阵rij以及预算b.要求一个图G=({1,2,…,n},E)使得:(1) 其中所有边的总代价不超过b;(2) 在任意两个不同顶点i和j之间,存在rij条顶点互不相交的路径。
Solution
根据提示可以想到8.3节中的TSP问题,α取值为1。dij为1时代表两个城市之间有边,为2时没有边。预算b即为城市的数目,而第二个条件说明任意两点都在一个圈上,这样就转化为了求解TSP问题,作为其推广,可靠网络也是NPC问题。
- 算法概论 | NP完全问题
- 算法概论 第八章NP-完全问题 8.8题
- 算法概论习题:8.14NP-完全问题的证明
- 算法概论习题 8.22 NP-完全问题证明
- 算法概论第八章 NP完全问题 习题证明
- 《算法概论》第八章NP完全问题部分习题解
- NP完全问题的证明-算法概论课后习题8.15
- 【算法概论习题解答】8.3证明吝啬SAT问题是NP-完全问题
- 【算法概论习题解答】8.8证明精确的4SAT是NP-完全问题
- 《算法概论》第八章NP完全问题——8.16习题解
- 《算法概论》第八章NP完全问题——8.19习题解
- 算法概论习题8.8——证明精确的4SAT是NP-完全问题
- 算法概论:第八章NP-完全问题——课后题8.16
- 算法概论习题8.8 证明精确的4SAT问题是NP完全问题
- 证明NP问题(算法概论8.8)
- 算法:NP问题,NP完全问题(NPC),NPhard问题
- 算法---->NP-难度和NP-完全的问题
- 算法导论里的NP完全问题
- 解决 Error:No suitable device found: no device found
- 高通 MSM8K bootloader 之一: SBL1
- 数据分析与数据挖掘在常规工作中的应用——日期处理
- 解压cpio文件
- 欢迎使用CSDN-markdown编辑器
- 算法概论 | NP完全问题
- Fragment嵌套Fragment的时候内部的不要用getFragmentManager
- Android系统典型bootloader分析
- Maven使用总结(二):Maven依赖配置
- 观察babel如何把let转化为var实现块级作用域
- POJ 3723 Conscription(构造+最小生成树Kruskal)
- DFS初探
- 查看Android应用包名的全部方法
- javascript 基础 图片库的动态速度与元素生成 2017年1月15日