基于不一致子句集与抽象解释的约束编程研究
1. 不一致子句集在Max - SAT求解中的应用
在Max - SAT问题求解中,不一致子句集的处理对求解效率有着重要影响。
1.1 子句集存储策略分析
在处理不一致子句集时,不同的存储策略会带来不同的效果。对于包含较多单位子句的不一致子集,由于单位子句在分支后可能用于检测更多不一致子集,所以不应存储包含超过两个单位子句的不一致子集。例如,开发的maxsatz9/14icss(yes)对单位子句数量无限制,在每个实例上的结果最差。而maxsatz14icss(5)和maxsatz14icss(yes)都基于maxsatz14,maxsatz14是目前已知的Max - 2 - SAT和Max - 3 - SAT最快的求解器。
在2 - SAT公式中,当子句与变量的比例(#clauses/#vars)较高时,如在图2(a)中,当decideStorage谓词选择存储子句数量较少的子集(maxsatz14icss(5)曲线)时,平均时间比无限制存储(maxsatz14icss(yes)曲线)快两倍多。并且,此时maxsatz14icss(yes)的搜索树大小几乎是maxsatz14icss(5)的三倍。需要注意的是,maxsatz14icss(yes)比不存储不一致子集的maxsatz14慢,而maxsatz14icss(5)比maxsatz14快。
对于3 - SAT公式,找到不一致子句集较难,且不一致子句集中的子句参与更小子集的可能性较低。从图2(b)可以看出,存储所有检测到的不一致子句集更好,maxsatz14icss(yes)是最佳选择,但maxsatz14icss(5)与maxsatz14
Max-SAT求解与约束编程的创新研究
超级会员免费看
订阅专栏 解锁全文

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



