【发布时间】:2014-01-23 18:18:19
【问题描述】:
我已经使用分析器 gprof(统计 here 包括调用图)分析了我的问题,它们位于(伪非线性)整数实数片段中,并试图将时间分为两类:
I)SAT求解部分(包括[纯]布尔传播和[纯]布尔冲突子句检测、回跳、任何其他命题操作)
II)理论解决部分(包括理论一致性检查、理论冲突子句的生成和理论传播)。
bounded_search() 内smt_context.cpp 中的第 3280-3346 行是否构成顶层 DPLL(X) 循环?
我相信在 SAT 求解器函数中总结时间更容易(因为它们更少)
然后剩下的可以被认为是理论求解者的时间。我想弄清楚我应该考虑哪些功能属于上述 I 类?它们是smt::context::decide()、smt::context::bcp() 在smt::context::propagate() 内吗?还有其他人吗?
smt::context: resolve_conflict() 似乎与对理论求解器的调用混合在一起?
smt::context::propagate() 除了bcp() 功能之外似乎主要是理论传播(II 类),这对吗?另外,smt::context::final_check() 似乎纯粹属于 II 类。
非常感谢任何提示。谢谢。
【问题讨论】: