np - SAT 是 NP 完全的,那么为什么我们不让 k-SAT 对于任意 k 值来说是 NP 完全的

标签 np np-complete sat

k-SAT 是 SAT 的一个特例。由于 SAT 是 NP 完全的,我不明白为什么我们没有 k-SAT 对于任何 k 值都是 NP 完全的。在类里面,我的教授使用 SAT 的多项式约简来证明 3-SAT 是 NP 完全的。我不明白为什么要证明这一点,特殊情况不应该遵循一般情况的规则吗?

最佳答案

嗯,对于 1-或 2-SAT,您的说法显然不正确。

1-SAT 问题(即,最多只有一个文字!)显然与子句和变量的数量呈线性关系,因为每个子句中的极性会告诉您如何选择变量。

2-SAT 比较棘手,但你可以在多项式时间内解决它:https://www.geeksforgeeks.org/2-satisfiability-2-sat-problem/

对于任何k> 3,k-SAT显然是NP完全的;因为任何这些算法都可以用来解决 3-SAT,正如你的教授似乎已经讨论过的那样。

因此,这里的根本困惑在于,虽然 k-SAT 是一般 SAT 问题的一个实例,但这并不意味着所有 k-SAT 问题都同样困难。从某种意义上说,3-SAT 是 NP 完全的 SAT 的“最简单”实例,因此为减少其他问题奠定了良好的基础。希望有帮助!

关于np - SAT 是 NP 完全的,那么为什么我们不让 k-SAT 对于任意 k 值来说是 NP 完全的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61335677/

相关文章:

algorithm - 子集和的 NP 完全归约

np-complete - 这是NP问题吗?

logic - 解决命题逻辑/ bool 表达式的工具(SAT Solver?)

algorithm - bool 可满足性的类调度 [多项式时间缩减] 第 2 部分

performance - 我需要解决NP难题。有希望吗?

algorithm - NP 硬最长路径无环修改

algorithm - 顶点覆盖的近似算法

python - python 3 中的 np.genfromtxt 错误

c# - 从大小为 n 的列表中查找哪些数字与另一个数字相加的算法

python - CNF 真值表