Tarjan算法如何为2-SAT工作
-
28-09-2020 - |
题
tarjan的2-sat算法基于真相:
如果且仅当没有属于与其否定相同的强度连接的组件的变量时,才能满足2-CNF公式。
但我找不到向左方向的任何原因。这种变量的不安全如何保证CNF的满足感?
我试图遵循算法的步骤,我在这里暂时了:在反向拓扑顺序中的每个组件,如果其变量尚未具有真实性分配,请将组件中的所有文字设置为true。这也会导致互补组件中的所有文字设置为false。
是否可能会有错误地分配变量?当我们继续从后面分配真实时,我们在中间分配错误,但是将要分配给下一个变量。在这种情况下,可行性断裂。
当然这种情况永远不会发生,因为算法是正确的,很多人都很好地使用该算法。但是这么多帖子将其作为琐碎的东西说。
-
我认为可以与图形的偏差对称条件相关的原因,因为(x - >〜x - > y - >〜y)永远不会有真正的作业。
没有正确的解决方案
其他提示
2-cnf公式,如果且才有才能且才有没有属于与其否定相同的变量的变量。
但我找不到向左方向的任何原因。这种变量的不安全如何保证CNF的满足感?
对某些不可挑例的2星级实例识别可变分配。这意味着一定或多个条款必须保持不满意的任何作业。您更改一个或多个变量的设置以满足这些条款,但这是不可避免的,因为实例不可或缺,因此不可避免地离开了一些新子句或条款。满足实例的更改失败意味着其他其他变量的值必须更改。您再次又一次地重复该过程,将其他变量更改为含义需求,但从未成功满足所有条款。最终,因为变量的数量是有限的,失败意味着您更改您已经访问过的变量的值......这是您 $ x $ < / span>到 $ \ bar {x} $ 返回 $ x $ 。没有循环暗示,您最终将到达蕴涵链的末尾并具有令人满意的作业。不达到链条末端的唯一方法是链条在变量和否定之间是圆形的。
不隶属于 cs.stackexchange