浅谈 2-SAT 问题

物理
浅谈 2-SAT 问题

用户头像
LBX 更新于2025-8-6 15:02:00

作为一个经常水坛的人,也来发发学术帖

引子

n-SAT 问题,中文为“可存在性问题”

定义是:

给出若干逻辑表达式,要证明有解(一般情况下会让你给出一组解)

(逻辑表达式由 与 或 非 这三种符号和若干逻辑变量组成)

(逻辑变量,值为0或1)


在 n-SAT 问题中

每个逻辑表达式都含有n个逻辑变量,且最终值都为1,且运算符皆为“或”

2-SAT 问题就是 n-SAT 问题的一个子命题(n取2)

求解

我们需要挨个对表达式进行处理

先画一个图,设逻辑变量总数为 k,则该图共有 2k 个节点,分别为a=0,a=1,b=0……(a,b等皆为逻辑变量的变量名)

很简单的思路:若一个变量的取值为0(在进行“非”运算后),则另一变量取值定为1


对于a∨b,按照刚刚的思路

在前文所述的图中,我们连从a=0到b=1和从b=0到a=1共两条有向边

从x到y的有向边 代表 由x可推导得到y


按照如上步骤处理完表达式,我们会得到一个有向图

寻找该图中所有闭环,若有环同时包括了 x=0 和 x=1 这两个点,则无解,反之有解(x为任意题中的逻辑变量)

若从 x=0 经过若干条边能够抵达 x=1,则x的值必定1,反之同理

在确定某一变量的取值后,应沿我们之前作下的有向边,确定一部分变量的取值


若最终仍无法确定取值,则说明其可取任意值

延伸


P问题,代表该问题可在 多项式时间复杂度 范围内解决

NP问题,代表该问题可在 多项式时间复杂度 范围内验证答案的正确性

NPC问题,代表所有的NP问题可归结于该问题

世界上第一个被证明的NPC问题就是 n-SAT问题 (n>3)


收起
3
0
共0条回复
时间正序
回复是交流的起点,交流让学竞赛不孤单