4

プロファイラー gprof を使用して (疑似非線形) 整数実数フラグメント (呼び出しグラフを含む統計) にある問題をプロファイリングし、2 つのクラスにかかった時間を分離しようとしました

I) SAT 解決部分 ([純粋に] ブール伝搬と [純粋に] ブール競合節の検出、バックジャンプ、その他の命題操作を含む)

II) 理論解決部分 (理論の一貫性チェック、理論の矛盾節の生成、理論の伝播を含む)。

smt_context.cpp の3280 ~ 3346行目bounded_search()はトップレベルの DPLL(X) ループを構成していますか?

SATソルバー関数の時間を合計する方が簡単だと思います(数が少ないため)。残りは理論ソルバーの時間と見なすことができます。上記のクラス I に該当すると見なすべき関数を見つけようとしています。彼らsmt::context::decide()は、smt::context::bcp()内にいますsmt::context::propagate()か?他のもの? smt::context: resolve_conflict()理論ソルバーへの呼び出しと混在しているようですか?

smt::context::propagate()機能以外はほとんど理論伝播(クラスII)のように見えるのは正しいbcp()ですか?また、smt::context::final_check()純粋にクラス II にあるようです。

どんなヒントでも大歓迎です。ありがとう。

4

1 に答える 1