我正在使用SAT对问题进行建模并尝试使用cryptominisat来解决它。如果没有约束,我想给我的变量一个默认值。
我查看了手册,set_default_polarity
似乎就是答案。我尝试了但它没有按照我的预期工作。我真的没有在这里得到polarity
这个词。一些谷歌搜索没有帮助我,因为我不熟悉逻辑。
所以,我的问题是:
您能否解释一下polarity
是什么,或者将我指向某些介绍级资源?
在cryptominisat(或通常是SAT求解器)中是否有接口来设置逻辑变量的默认值?这种功能的术语是什么?
感谢。
答案 0 :(得分:0)
h
(请注意额外的.....
--polar arg (=auto) {true,false,rnd,auto} Selects polarity
mode. 'true' -> selects only positive
polarity when branching. 'false' ->
selects only negative polarity when
brancing. 'auto' -> selects last
polarity used (also called 'caching')
.....
!)提供以下扩展帮助:
--polar=false
我使用cryptominisat
让false/0
首先搜索带有solverconf.h
变量的解决方案,因为我的示例中有大多数解决方案变量。
在来源中,这对应于enum class PolarityMode {
polarmode_pos
, polarmode_neg
, polarmode_rnd
, polarmode_automatic
};
:
SolverConf
相应的PolarityMode polarity_mode
变量为main.cpp
在if (vm.count("polar")) {
string mode = vm["polar"].as<string>();
if (mode == "true") conf.polarity_mode = polarmode_pos;
else if (mode == "false") conf.polarity_mode = polarmode_neg;
else if (mode == "rnd") conf.polarity_mode = polarmode_rnd;
else if (mode == "auto") conf.polarity_mode = polarmode_automatic;
else throw WrongParam(mode, "unknown polarity-mode");
}
中显示了如何在程序中设置此配置属性:
phase
其他SAT解算器使用sign
或sat.phase=always_false
等字词。
Microsoft Z3可以通过命令行false phase
进行参数化,首先尝试StackOverflow
。查看related question。实际上,这是我在2012年--sign-def=neg
的第一个问题。
Clasp正在使用命令行语法false polarity
首先获取"Houston is a good city."
"I went to San Diego."
...
。