GSAT不完整性的例子

时间:2014-02-27 05:15:08

标签: algorithm greedy satisfiability

GSAT(贪婪可满足性)算法可用于找到CNF中编码的搜索问题的解决方案。我知道由于GSAT贪婪,它是不完整的(这意味着可能存在解决方案可能存在的情况,但GSAT无法找到它)。从下面的链接中,我了解到,当翻转变量贪婪地陷入我们的循环中时会发生这种情况,例如I→I'→I''→I。

http://www.dis.uniroma1.it/~liberato/ar/incomplete/incomplete.html

我一直在努力想出一个可以显示这一点的实际实例,但却无法(并且无法在其他地方找到示例)。任何帮助将非常感激。谢谢:))

P.S。我不是在讨论“硬”k-SAT问题,其中变量与子句的比率接近4.3。我只是在寻找一个简单的例子,可能涉及所需的变量和/或子句数量最少。

2 个答案:

答案 0 :(得分:0)

用n个变量取一个小的不可满足的公式并运行GSAT for gt; 2 ^ n步。由于只有2 ^ n种不同的组合可供尝试,因此GSAT必须重复 - 它不会因为公式不满意而停止。

一个小的不可满足的公式是(AVBVC)^(~AVBVC)^(AV~BVC)^(~AV~BVC)^(AVBV~C)^(~AVBV~C)^(AV~BV~C) ^(~AV~BV~C) - 3变量项的所有8种组合。

在Knuth vol 4A 7.1.1节式32 P 56 Knuth给出了他称之为8个不同变量的有趣的8子句公式。

答案 1 :(得分:0)

公式怎么样:

{x_1, x_2, -x_3}, {-x_1, x_2, -x_3}, {-x_2, -x_3}, {-x_2, -x_3}, {x_2, x_3}, {x_2, x_3}

通过赋值(0,1,0)满足该公式。但是,如果从初始赋值(0,0,1)开始,则获得分数(1,2,2),因此将翻转x_1。然后一个人进入作业(1,0,1)再次导致得分(1,2,2)并且你被卡住了。然后只有重新启动另一个初始分配将帮助你离开。

当然,由于两个双重条款,这有点构造,但我确信可以很容易地扩展它以实现没有重复条款的公式。