吝啬SAT问题
来源:互联网 发布:普宁淘宝培训学校在哪 编辑:程序博客网 时间:2024/06/03 16:08
问题描述:
吝啬SAT问题是这样的:给定一组子句(每个子句都是其中文字的析取)和整数k,求一个最多有k个变量为true的满足赋值——如果该赋值存在。证明吝啬问题是NP-完全问题。
为了帮助理解这个问题,我们写解释下什么是SAT问题
假设我们有这样一组子句:
(a⋃b⋃c)⋂(a⋃b¯)⋂(b⋃c¯)(a¯⋂c)⋂(a¯⋃b¯⋃c¯) 我们需要做的就是找到a,b,c的取值(true or false)使得该表达式的结果是true,假设a,b,c都是true的话,那么整个表达式的取值就是false,不难发现,这个表达式不存在一个合适的abc的取值使得整个式子为true,对于这个问题而言,我们需要搜索所有取值组合才能确定是否能确定是否存在一个组合可以使得该式子为true,如果不存在我们就返回不存在,如果存在我们就返回这个组合,用穷举搜索的方法复杂度是
O(2n) ,如果我们能找到一个简单的算法能够使得该算法的复杂度降到多项式时间的话,那么我们就认为该问题是p问题,但我们暂且认为该问题是个np问题,因为np问题至今无法把其复杂度降下来,其变种倒是有多项式的解法。那么什么是吝啬SAT问题呢?吝啬SAT问题其实就是SAT问题的一个变种,就比如仍然是上一个问题,现在多了一个变量,这个变量就是k,我们需要确定的是我们不能多于k个true个变量。
- 证明:
首先我们要证明吝啬SAT问题是np-完全问题,我们首先要证明吝啬SAT问题是np问题,然后如果能把SAT问题规约到吝啬SAT问题,那么我们就能证明这个问题,首先,吝啬SAT问题肯定是np问题 ,因为吝啬SAT问题是SAT问题的一个变种,而且任何一个解都可以在多项式的时间内求解。现在来证明SAT问题可以规约到吝啬SAT问题,如果我们把吝啬SAT问题中的k设置为输入的数目,那么SAT问题就可以规约到吝啬SAT问题,所以吝啬SAT问题是np-完全问题。
- 吝啬SAT问题
- 吝啬SAT问题
- 8.3吝啬SAT问题
- 8.3 吝啬SAT问题
- 吝啬SAT是NP-完全问题
- 吝啬SAT是NP-完全问题
- 证明吝啬SAT问题为NP完全问题。
- 课本8.3证明 吝啬SAT问题是NP完全问题
- 证明题-算法概论8.3吝啬SAT问题证明
- 证明题-算法概论8.3证明吝啬SAT问题
- 习题8.3--证明吝啬SAT是NP-完全问题
- 8.3 证明吝啬SAT是NP-完全问题。
- 吝啬SAT是NP-complete
- 【算法概论习题解答】8.3证明吝啬SAT问题是NP-完全问题
- 《算法概论》习题8.3 吝啬SAT
- SAT问题
- 【2-SAT】2sat问题小结
- 2-SAT问题
- Jquery 事件篇
- Digital Count数位统计
- php 面试题整理
- 简单的存储过程案例
- 睡眠不足大脑将被吃掉
- 吝啬SAT问题
- 画个向量图
- 网络安全重点总结
- 无名对象
- BZOJ 2140 稳定婚姻 (Tarjan)
- POJ3694(tarjan缩点+并查集+LCA)
- HDU 3974 Assign the task(dfs序 + 线段树区间赋值,单点查询)
- so file红色 No such file or directory
- Java基础应用之循环控制(使用while与自增运算符循环遍历数组)