计算复杂性:从SAT问题到优化问题的探索
1. SAT与k - SAT问题
SAT(可满足性)问题是约束满足问题的一个典型代表。其输入是一个合取范式(CNF)的布尔公式Φ(x1, …, xn),问题是判断Φ是否可满足。对于给定变量赋值来评估布尔公式可以在多项式时间内完成,所以SAT属于NP问题。
k - SAT是SAT的一个特殊变体,输入是每个子句有k个文字的CNF布尔公式,同样判断其是否可满足。当k = 1和k = 2时,存在多项式算法,但一般的SAT和k > 2的k - SAT问题似乎是难以处理的。
2. 多项式约简与NP完全性
以往看似孤立的难处理问题,实际上通过多项式约简紧密相连。多项式约简可以将一个问题的计算复杂度与另一个问题的计算复杂度联系起来。
2.1 SAT与3 - SAT的约简
可以证明一般的SAT问题不会比3 - SAT问题更难,即SAT ≤ 3 - SAT。这意味着如果有人找到3 - SAT的多项式算法,那么SAT也会有多项式算法。证明过程是将一般的SAT公式Φ映射到3 - SAT公式Φ′,使得Φ可满足当且仅当Φ′可满足。具体映射按子句进行:
- 若子句C有三个文字,直接成为Φ′的子句。
- 若子句C文字少于三个,通过重复文字填充,如(l1 ∨ l2) → (l1 ∨ l2 ∨ l2),并复制到Φ′。
- 若子句C文字多于三个,C = l1 ∨ l2 ∨ … ∨ lp (p > 3),引入p - 3个新变量y1, y2, …, yp - 3,形成3 - SAT公式C′ = (l1 ∨ l2 ∨ y1) ∧ (¬y1 ∨ l3 ∨ y2) ∧ (¬y2
超级会员免费看
订阅专栏 解锁全文
20

被折叠的 条评论
为什么被折叠?



