当使用 MiniSat 作为 C++ 库时,每个新变量都可以创建为决策变量或非决策变量。
我对此的粗略理解是,当求解器决定在分支过程中接下来使用哪个变量时,不考虑非决策变量。但是,在我的项目中,当非决策变量位于蕴涵左侧而不是等价关系时,我遇到了麻烦,因为求解器返回 SAT,即使公式实际上是 UNSAT。
进一步的实验表明,这只发生在非决策变量位于超过 2 个变量的公式中时(我猜 2 变量公式路径是求解器中的一种特殊情况,因此它的行为不同)。
当使用 MiniSat 作为 C++ 库时,每个新变量都可以创建为决策变量或非决策变量。
我对此的粗略理解是,当求解器决定在分支过程中接下来使用哪个变量时,不考虑非决策变量。但是,在我的项目中,当非决策变量位于蕴涵左侧而不是等价关系时,我遇到了麻烦,因为求解器返回 SAT,即使公式实际上是 UNSAT。
进一步的实验表明,这只发生在非决策变量位于超过 2 个变量的公式中时(我猜 2 变量公式路径是求解器中的一种特殊情况,因此它的行为不同)。