cspsat.dpll module
DPLLソルバーのモジュール.
以下のクラスからなる.
DPLLクラス: 命題変数のクラス
注釈
本プログラムは学習用の目的で作成されている. 実用上の問題への適用は想定していない.
- class cspsat.dpll.DPLL(verbose=0, interactive=False)[ソース]
ベースクラス:
object
DPLLソルバーのクラス.
- パラメータ:
verbose (int, optional) -- 正ならDPLLソルバーの情報を表示する (デフォルト値は0).
interactive (bool, optional) -- 真なら会話的に実行する (デフォルト値はFalse).
- toLit(v, negative=0)[ソース]
変数番号vに対するリテラル番号を返す.
- パラメータ:
v (int) -- 変数番号.
negative (int, optional) -- 1なら否定 (デフォールト値は0).
- 戻り値:
リテラル番号.
- value(lit)[ソース]
リテラルlitの現在の真理値を返す.真理値が割当てられていなければNoneを返す.
- パラメータ:
lit (int) -- リテラル.
- 戻り値:
litの真理値 (割当てられていなければNone).
- newVar(vname=None)[ソース]
新しい変数を追加する.
- パラメータ:
vname (str, optional) -- 変数名 (デフォールト値はNone).
- 戻り値:
新しい変数番号.
- enqueue(lit, reason=None)[ソース]
リテラルlitを伝播用キューに追加する.
リテラルlitの値がすでに1であればTrueを返し,伝播用キューには追加しない. リテラルlitの値がすでに0であればFalseを返し,伝播用キューには追加しない. リテラルlitの値が決まっていなければ伝播用キューには追加し,Trueを返す.
- パラメータ:
lit (int) -- リテラル.
reason (list, optional) -- 理由の節 (デフォールト値はNone).
- 戻り値:
衝突が生じなければTrue,衝突があればFalse.
- propagateClause(num, lit)[ソース]
num番目の節に対しリテラルlitの伝播処理を行う.
- パラメータ:
num (int) -- 節の番号.
lit (int) -- リテラル.
- 戻り値:
衝突が生じなければTrue,衝突があればFalse.
- search(num=1)[ソース]
モデルの探索を行い,見つかったモデルをyieldするジェネレータ関数.
- パラメータ:
num (int,optional) -- 探索するモデルの個数 (0なら全解を探索).
- 列挙:
モデル.
- solutions(clauses=None, num=1)[ソース]
与えられた節を追加し,モデルをyieldするジェネレータ関数.
- パラメータ:
clauses (list,optional) -- 追加する節のリスト.
num (int,optional) -- 探索するモデルの個数 (0なら全解を探索).
- 列挙:
モデル.
- solve(clauses=None, num=1, stat=False)[ソース]
与えられた節を追加し,モデルを表示する.
- パラメータ:
clauses (list,optional) -- 追加する節のリスト.
num (int,optional) -- 探索するモデルの個数 (0なら全解を探索).
stat (bool,optional) -- 真なら統計情報も表示する.
- info(l, msg)[ソース]
メッセージを表示する.
表示レベルが self.verbose より大きければ表示しない. self.interactive が真ならユーザ入力を待つ.
- パラメータ:
l (int) -- 表示レベル.
msg (str) -- メッセージ.
- var2repr(v, negative=0)[ソース]
変数の表記文字列を返す関数.
newVarで変数名が与えられていればそれを使用する.
- パラメータ:
v (int) -- 変数番号.
negative (int,optional) -- 1なら負リテラル.
- 戻り値:
変数の表記文字列.
- addDimacsClause(dimacsLits)[ソース]
DIMACS形式の節 (正負の変数番号のリスト)を追加する.
- パラメータ:
dimacsLits (list) -- DIMACS形式の節.
- toDimacsLit(vname)[ソース]
変数名がvnameの変数をDIMACS形式のリテラル (正負の変数番号)に変換する.
変数名が `~' から始まれば負リテラルとする.
- パラメータ:
vname (str) -- 変数名.
- 戻り値:
DIMACS形式のリテラル.
- toDimacsLits(clause)[ソース]
変数名のリストをDIMACS形式の節に変換する.
変数名が `~' から始まれば負リテラルとする.
- パラメータ:
clause (list) -- 変数名のリスト.
- 戻り値:
DIMACS形式の節.