阻塞集相关技术全解析
1. 阻塞集求解与随机局部搜索求解器
在解决阻塞集问题时,有一种简单算法,其在一定程度上类似于局部搜索SAT求解器,通过“翻转”某些变量的赋值来轻松找到阻塞集的解。这引发了一个问题:最先进的随机局部搜索(SLS)SAT求解器在处理阻塞集时表现如何?
为了探究这个问题,我们进行了实验,使用了几种知名的SLS求解器,并加入了我们自己专门设计的局部搜索求解器,该求解器总是翻转阻塞文字。实验结果表明,标准的局部搜索求解器在解决阻塞集问题时面临困难。然而,当仅翻转阻塞文字时,问题很容易得到解决。这意味着解决阻塞集的关键在于确定子句中的阻塞文字,而处理子句的顺序相对不那么重要。
求解器 | 表现 |
---|---|
标准局部搜索求解器 | 解决阻塞集问题困难 |
专门设计的局部搜索求解器(总是翻转阻塞文字) | 轻松解决阻塞集问题 |
2. 阻塞子句分解
阻塞子句分解(BCD)是将CNF公式F的子句集拆分为两个集合的过程,使得其中至少一个集合是阻塞集。如果两个集合都是阻塞集,则这种分解称为对称分解。通常,我们希望以一种方式分解公式,使得其中一个阻塞集较大(包含许多子句),而另一个较小。我们用两个集合的大小差异来衡量分解的质量,将较大的阻塞集记为L,较小的记为R。
对称BCD可以用以下公式定义: