软约束引导的 SAT 求解器与简单算法组合的研究
SCSat:软约束引导的 SAT 求解器
SCSat 是一种软约束引导的 SAT 求解器,在处理布尔可满足性问题上有独特的方法。
惩罚分数计算
目标 SC 子句的惩罚分数基于其权重和冲突发生的决策级别计算,公式为: penalty(SC) += (weight(SC) ∗(1 + decisionLevel()))−1 。其中, weight(SC) 的值需在输入的 WCNF 文件中指定,且该权重值的使用方式与 MaxSAT 不同。从公平性角度看,这种公式形式有一定的归一化考虑,例如决策级别取 -1 次幂似乎比取 1 次幂更好,因为 SC 子句在搜索路径中使用的级别越深,在其他相似深度的搜索路径中使用的频率可能越高, decisionLevel()−1 可抵消这种趋势的影响。但从破对称角度看,这种归一化可能不必要甚至有害,目前尚无定论哪种更好。
软约束放松
在每次 SC 重启时,需要决定停用或移除多少比例的 SC 子句。这一比例对求解器性能影响很大,具体取值取决于用户,可通过命令行选项(如“-sc-rr=0.2”)指定。例如,在求解 R(5, 5, 42) 时,10% 的比例比 20% 好;而在求解 R(4, 8, 57) 时,40% 比 20% 好。当前默认的 20% 是一个比较不错的选择。
学习子句处理
目前,SCSat 在每次 SC 重启时会清除所有学习子句,同时取消上一次 SC 重启中积累的单位子句。这只是为了简化操作,未来版本应采用更复杂的处
超级会员免费看
订阅专栏 解锁全文

206

被折叠的 条评论
为什么被折叠?



