- addClause
void addClause(Clause clause)
- addConflictClause
void addConflictClause(Clause conflict)
- addEdge
void addEdge(Literal from, Literal to, Clause.ID clauseID)
Undocumented in source. Be warned that the author may not have intended to support it.
- addNode
void addNode(Literal lit, size_t dlevel)
Undocumented in source. Be warned that the author may not have intended to support it.
- analyzeConflict
analyzeConflictResult analyzeConflict()
- assignLiteral
void assignLiteral(T literals)
与えられたリテラルが真になるように変数への真偽値割り当てを行います。
- backtrack
void backtrack(size_t dlevel)
与えられたレベルまでバックトラックします。
具体的には、ソルバーの状態を与えられたレベルのときのソルバーの状態まで復元します。
- decideNextBranch
void decideNextBranch()
真偽値が未割り当ての変数を1つ選んで真を割り当てます。
- deduce
SolverStatus deduce()
単位伝播を繰り返します。
途中で矛盾が生じたら CONFLICT を返します。
矛盾なくすべての変数に真偽値を割り当てられたら SAT を返します。
それ以外の場合には OK を返します。
- generateGraph1
string generateGraph1(bool conflict)
implication graph の定義に即した形のグラフを表す DOT 言語のソースを返します。
- generateGraph2
string generateGraph2(bool conflict)
implication graph を元に、単位伝播で用いられた節も頂点にしたグラフの DOT 言語のソースを返します。
- initialize
void initialize(parseResult res)
読み込んだ CNF の情報を元にソルバーを初期化します。
- newClause
Clause newClause(T literals)
- newClause
Clause newClause(Set!T literals)
与えられたリテラルの集合に対応する新しい節を作成します。
- nextClauseID
Clause.ID nextClauseID()
Undocumented in source. Be warned that the author may not have intended to support it.
- removeClausesContaining
void removeClausesContaining(Literal lit)
- removeLiteralFromClauses
void removeLiteralFromClauses(Literal lit)
与えられたリテラルをそれぞれの節の中から削除します。
- reset
void reset()
ソルバーの状態を、真偽値割り当てがなされていない初期状態にリセットします。
初期化時以外で追加された制約はそのまま追加された状態を維持します。
- solve
CDCLSolverResult solve()
問題を与えて初期化したソルバーで実行すると、その問題を解いて結果を返します。
- toDOT
void toDOT(bool conflict)
implication graph の状態を DOT 言語で出力します。
ファイル名は 1.dot, 2.dot, … のように続きます。
CDCL を実装したソルバー