原帖见: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、将计算机缓存的数量定义为重启的阈值条件;

   
posted on 2023-05-06 11:19  海阔凭鱼跃越  阅读(85)  评论(0编辑  收藏  举报