- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在编写 SAT 求解器,并开始实现 DPLL 算法。我了解该算法及其工作原理,我还实现了它的一个变体,但让我困扰的是接下来的事情。
function DPLL(Φ)
if Φ is a consistent set of literals
then return true;
if Φ contains an empty clause
then return false;
for every unit clause l in Φ
Φ ← unit-propagate(l, Φ);
for every literal l that occurs pure in Φ
Φ ← pure-literal-assign(l, Φ);
l ← choose-literal(Φ);
return DPLL(Φ ∧ l) or DPLL(Φ ∧ not(l));
Φ
是一组一致的文字是什么意思?我理解inconsistent implies false,意思是consistent implies not false。那么,如果当前赋值没有伪造问题,为什么我们可以返回 true
?
我实现 SAT 求解器的方式是,每当它遇到使所有子句都为真的赋值时,我返回该赋值并完成算法。但是由于对于给定的赋值,所有子句都必须为真才能解决问题,我不明白,如果赋值只是满足问题(我假设我在这里弄错了,但是因为如果 Φ
是一致的,那么这意味着它不是假的,但它仍然是不可判定的?)。
最佳答案
当仅包含文字和一个文字且其否定未出现在 Φ 中时,Φ 是一组一致的文字。 DPLL算法通过pure和unit规则,逐渐将子句列表转换为满足所有原始子句的文字列表。当这种情况发生时(Φ 是一组一致的文字)或当它用完要尝试的文字分配并且最顶层的 DPLL 调用返回 false 时,算法就会完成。
关于algorithm - DPLL 什么是一致的文字集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47079252/
我正在编写 SAT 求解器,并开始实现 DPLL 算法。我了解该算法及其工作原理,我还实现了它的一个变体,但让我困扰的是接下来的事情。 function DPLL(Φ) if Φ is a co
我们知道DPLL算法是回溯+单元传播+纯文字规则。 我有一个例子。有一个例子可以用 DPLL 解决以下可满足性问题。如果将“0”分配给变量先于将“1”分配给变量,则使用 Unit Clause (UC
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我有一个问题。我正在实现 DPLL 算法(我已经完成)。现在我正在通过标准函数 java api 计算运行时间。 System.currentTimeMillis(); 问题是我必须提供我的问题的测试
我正在用 C++ 实现一个 DPLL 算法,如 wikipedia 中所述。 : function DPLL(Φ) if Φ is a consistent set of literals
现在我正在写关于 SAT 解决问题的文章,但我卡在了一个点上。我希望你能帮助我。 我想描述一些解决 SAT 问题的方法。现在我有三种不同的方式: 暴力破解 随机(幼稚) DPLL(具有不同的启发式)
我在中找到了一个 sat 求解器 http://code.google.com/p/aima-java/ 我尝试了以下代码来使用 dpllsolver 求解表达式 输入是 (A B) AND (C
我正在尝试实现 DPLL C++ 中的算法,我想知道哪种数据结构最适合解决此类递归问题。现在我正在使用 vector ,但代码又长又难看。有什么建议吗? function DPLL(Φ) if
我是一名优秀的程序员,十分优秀!