原帖见:https://www.cnblogs.com/zhangzhangtabszj/p/14327369.html
感谢博主QzZq!
以下为原网页粘贴复制版-无修改-备查
LingeLing | |
SPLATZ |
2016年比赛用例; 1、简化LingeLing 2、块状句分解 |
CaDiCaL2017 |
2017年新提出,思想与SPLATZ相同; 对SAT例子效果不好,循环交织了inprocessing和CDCL,效果得到改善。 |
inprocessing |
这是一种全新得求解方法,主要分为: 1、probing(探索) 2、subsumption(归并) 3、variable elimination(变量消除) |
probing |
探测期间,只有二元蕴含图得根被探测到,并且二元子句是通过超二进制解析学习的, 将二元蕴含图分解为强关联模块后,使用这一方法去消除相等的文字。 在探测之前,由于超二进制解析学习会产生许多子句,故需要删除重复的子句。 |
subsumption | 在有规律的间隔中删除学习子句, |
variable elimination |
等同于SATELITE所提出的 |
CaDiCaL2018 |
vivification变为两个阶段:采用Maple_LCM的方法 1、对原始子句化简 2、对学习子句和原始子句化简
采用混合重启策略,原本使用的是指数序列。
保存相位?初始相位?
由于大例子中会出现子句过多,内存紧张导致的运行时间下降的问题,子句删除策略 |
CaDiCal2019 |
1、采用VMTF作为不稳定求解阶段的分支启发方式,采用VSIDS作为稳定的分支启发方式 2、局部搜索的移植 3、相位保存:保存分配给一个变量的最后一个值,如果被选择作为决策,则分配这个值。 4、按时间顺序回溯(18年冠军Maple_LCM_Dist_ChronoBt采用的) |
CaDiCaL2020 |
1、LBD小于等于2的子句长期保存; LBD小于等于6,大于2的保存一个消除期,之后不管使不使用都删除 2、采用foreach |
Kissat2020 |
1、为了使用更好的数据结构,Kissat采用C语言构造CaDiCaL,减少内存的使用,以及区分双元和长子句; 2、在变量消除程序之外,不存在归并; 3、模式切换不应该完全基于冲突,因为每秒的冲突率在频繁重启和不重启的情况下有很大差异(以及在稳定模式下使用目标相位); 4、将计算机缓存的数量定义为重启的阈值条件; |