![](/img/trans.png)
[英]How best to implement function pointers in a C++ dialect that does not support it?
[英]How to best implement DPLL in C++?
我正在嘗試用 C++ 實現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));
數組非常適合表示當前的賦值,因為它提供對任何命題的隨機訪問。 為了表示子句,可以使用 STL 的命題索引集。
要實現非常高效的 SAT 求解器,您將需要更多數據結構(用於存儲觀察到的文字和解釋)。 可以在http://poincare.matf.bg.ac.rs/~filip/phd/sat-tutorial.pdf 中找到對這些概念的非常易讀的介紹。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.