对于一些受限制的逻辑公式类别,可满足性问题可以在多项式时间甚至线性时间内高效地解决。其中之一是Horn公式类别,它只由至多一个正文字的Horn子句构成。我听说可以使用图形以线性时间解决Horn SAT问题,但找不到这种解决方案的任何实现。现在我非常想知道是否可能,并且如果可能,算法会是什么样子?
如果您熟悉Davis–Putnam–Logemann–Loveland,那么Horn子句是一类可以使用一轮单元传播解决的公式,无需回溯。在图形术语中,我们可以将变量放在一侧,子句放在另一侧,边表示变量在子句中出现为否定文字。我们还有一个由单个正文字组成的子句工作队列。只要工作队列不为空,就弹出任何元素,找到对应变量的节点并删除它及其邻居。对于现在度数为零的每个子句顶点,会发生以下两种情况之一。如果该子句具有正文字,则将其添加到工作队列中。否则,我们已经证明了该公式是不可满足的。如果我们在没有找到这样的子句的情况下到达工作队列的末尾,则该公式是可满足的,并且一种满足的赋值方式是将所有进入工作队列的变量设置为true,将其他变量设置为false。