使用图形的 Horn SAT 算法

Horn SAT algorithm using graphs

对于一些受限制的class逻辑公式,可满足性问题可以在多项式时间甚至线性时间内高效求解。一个这样的 class 是 Horn 公式,它仅由 Horn 子句组成,最多有一个正文字。我听说可以使用图形在线性时间内解决 Horn SAT,但找不到此类解决方案的任何实现。现在我真的很感兴趣这是否可能,如果可能的话,算法会是什么样子?

如果您熟悉 Davis–Putnam–Logemann–Loveland, Horn clauses are a class of formulae that can be solved using one round of unit propagation,无需回溯。

在图方面,我们做了显而易见的事情,并建立了一个二分图,一侧是变量,另一侧是子句,边表示在子句中作为否定文字出现的变量。我们还有一个由单个正文字组成的子句工作队列。当工作队列不为空时,弹出任何元素,识别变量对应的节点,并删除它和它的邻居。对于现在度数为零的每个子句顶点,会发生以下两种情况之一。如果该子句具有正文字,则我们将其添加到工作队列中。否则,我们已经证明该公式不可满足。如果我们到达工作队列的末尾而没有找到这样的子句,那么这个公式是可满足的,一个令人满意的赋值是将所有进入工作队列的变量设置为真,所有其他变量设置为假。