一种布尔可满足性求解器中学习子句的删除方法及布尔可满足性求解器技术

技术编号:28471515 阅读:25 留言:0更新日期:2021-05-15 21:39
本发明专利技术公开了一种布尔可满足性求解器中学习子句的删除方法及布尔可满足性求解器,所述方法包括:在求解的过程中生成多个学习子句,并对每个学习子句的使用次数及LBD值进行记录;当触发学习子句删除条件时,根据学习子句的使用次数和LBD值对学习子句进行删减。采用本发明专利技术的技术方案,可提高学习子句的质量,提升求解器的运行效率。提升求解器的运行效率。提升求解器的运行效率。

【技术实现步骤摘要】
一种布尔可满足性求解器中学习子句的删除方法及布尔可满足性求解器


[0001]本专利技术涉及电子设计自动化(Electronic Design Automation,EDA)领域,尤其涉及一种布尔可满足性求解器中学习子句的删除方法及布尔可满足性求解器。

技术介绍

[0002]布尔可满足性问题是计算机科学领域的核心问题之一,其广泛应用于电子设计自动化、集成电路形式验证、模型验证等领域,一些工业领域的现实问题常常转化为可满足性问题进行求解。在可满足性问题中,问题的输入是一个合取范式(CNF),合取范式由子句构成,子句和子句之间以布尔运算“与”的形式连接,而构成子句的是文字,文字和文字之间以布尔运算“或”的形式连接,文字为变量本身或变量的“非”。布尔可满足性问题求解即为找到一组包含所有变量的解使得整个问题满足,如果找不到这样的解,则输出该问题不可满足。例如:对于这样一个合取范式:子句为和和变量为a、b、c,对应的文字即为c、当a=0、b=0、c=0时,该合取范式就是可满足的,相反地,如果找不到这样的解,则说明该合取范式不可满足。
[0003]作为直接影响可满足性问题求解时间的决定因素,求解器算法一直是该问题研究的重点。求解器算法按照框架主要分为三种:完备算法、不完备算法和混合算法,其中完备算法以现在主流的CDCL算法为主。近年来出现了一批以CDCL为算法框架的高效求解器,Glucose求解器就是其中最重要的代表之一,该求解器应用的LBD学习子句删除策略,大幅度提升了算法的求解性能。其中,Glucose求解器的主要求解过程分为六步,分别为预处理,分支启发,布尔约束传播,冲突分析及学习子句生成,学习子句删除和重启。Glucose求解器的简要工作流程大致如下:先对读入的CNF文件进行预处理,旨在化简冗余子句,之后会根据分支启发策略选择一个文字赋值,并使其满足,由于该文字的赋值可以推导出其他文字的赋值,继而导致更多文字的赋值,由此产生的循环赋值过程即为布尔约束传播。在传播过程中遇到冲突的子句会进行冲突分析,并生成学习子句,以此保证下次不会产生相同的冲突,同时返回导致冲突产生的赋值层,重新开始赋值。由于在求解的过程中,直到求解结束,每一次冲突都会产生新的学习子句,学习子句会大量的累积并占用系统空间,因此,学习子句积累到一定数目会被删除,用以释放空间,提高搜索效率。
[0004]Glucose求解器中的LBD(Literals Blocks Distance,文字块距离)策略可简要概括为一种评价学习子句质量的标准,该策略通过计算每个学习子句的LBD值,然后将学习子句的LBD值排序,进而将LBD大的学习子句删除。LBD值反映了在学习子句中所有文字所在的赋值层数。一个学习子句的LBD值越小意味着这个子句被赋值的难度越小,因此变量之间的约束就更加紧密,当再次遇到冲突时,就可以高效的避免重复的冲突发生。但在经实际的多组测试例子运行之后发现,经过LBD排序筛选得到的学习子句并非都能在冲突分析时被多次用到,详细数据如表一所示:
[0005][0006]表一
[0007]通过表一中的三个测试例子可以看出,被使用1次以下(包含1次)的学习子句保留率在40%以上,因此LBD策略保留的学习子句并不都是高效的学习子句。

技术实现思路

[0008]本专利技术的目的是针对现有技术的布尔可满足性求解器中的学习子句删除策略保留的学习子句并不都是高效的学习子句的技术问题,本专利技术提出一种布尔可满足性求解器中学习子句的删除方法及布尔可满足性求解器。
[0009]本专利技术实施例中,提供了一种布尔可满足性求解器中学习子句的删除方法,其包括:
[0010]在求解的过程中生成多个学习子句,并对每个学习子句的使用次数及LBD值进行记录;
[0011]当触发学习子句删除条件时,根据学习子句的使用次数和LBD值对学习子句进行删减。
[0012]本专利技术实施例中,所述学习子句删除条件为学习子句的数量或者求解的时间达到设定的阈值。
[0013]本专利技术实施例中,根据学习子句的使用次数和LBD值对学习子句进行删减,包括:
[0014]根据学习子句的使用次数对学习子句进行排序,并根据预先设定的使用次数范围及LBD值范围对学习子句进行初步删减;
[0015]对初步删减后的学习子句再根据LBD值进行排序,并删除排序靠后的学习子句。
[0016]本专利技术实施例中,对每个学习子句的使用次数进行记录,包括:
[0017]在学习子句产生时,给保存学习子句信息的结构体中增加一个用于记录学习子句使用次数的标志位,该标志位的初始值为0;
[0018]在求解的过程中每一次遇到冲突时,对发生冲突的子句进行判断,看其是否为学习子句,如果是,则更新所述标志位。
[0019]本专利技术实施例中,根据LBD值对初步删减后的学习子句进行排序时,如果两个学习子句的LBD值相等,活跃值较大的学习子句排序靠前。
[0020]本专利技术实施例中,对学习子句进行初步删减时,删除使用次数小于1且LBD值大于3
的学习子句。
[0021]本专利技术实施例中,删除排序靠后的学习子句时,删除排序前一半中LBD大于2且为非原因子句的学习子句。
[0022]本专利技术实施例中,所述布尔可满足性求解器采用Glucose3.0求解器。
[0023]本专利技术实施例中,还提供了一种布尔可满足性求解器,其对学习子句进行删除时,采用上述的方法。
[0024]与现有技术相比较,采用本专利技术的布尔可满足性求解器中学习子句的删除方法及布尔可满足性求解器,先用基于冲突使用次数对学习子句进行粗略的删减,之后再根据LBD值进行排序,并删除排序靠后的学习子句,经过两次的删减之后能够有效的删除冗余的学习子句,有效提高了学习子句的质量,提升求解器的运行效率。
附图说明
[0025]图1是现有技术的求解器中学习子句使用次数与LBD值的关系统计图。
[0026]图2是本专利技术实施例的布尔可满足性求解器中学习子句的删除方法的流程图。
具体实施方式
[0027]在开始阐述本专利技术的技术方案之前,先介绍一下学习子句的使用次数的概念,学习子句的使用次数是指当一个学习子句被添加到合取范式的整个子句系统中之后,在接下来的布尔约束传播中,再次发生以该学习子句中的文字为冲突的传播时的次数。即,在布尔约束传播时发生的包含学习子句的冲突的次数。
[0028]接下来介绍一下本专利技术的技术方案中学习子句的使用次数和LBD值之间的关系。本专利申请专利技术人在经过在实际运行多组测试例子后,对学习子句的使用次数和学习子句的LBD值分别进行统计,得出一个大致的结论:当学习子句的使用次数较少时,其对应的LBD值往往也较大,随着学习子句的使用次数的增加,其LBD值则会逐渐变小,详细统计图如图1所示。考虑到使用LBD策略进行删除后的学习子句中有一部分在的使用次数很少,因此可以先根据学习子句的使用次数对其进行初步删减,再使用LBD策略删除,这样得到的学习子句集理论上为本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种布尔可满足性求解器中学习子句的删除方法,其特征在于,包括:在求解的过程中生成多个学习子句,并对每个学习子句的使用次数及LBD值进行记录;当触发学习子句删除条件时,根据学习子句的使用次数和LBD值对学习子句进行删减。2.如权利要求1所述的布尔可满足性求解器中学习子句的删除方法,其特征在于,所述学习子句删除条件为学习子句的数量或者求解的时间达到设定的阈值。3.如权利要求1所述的布尔可满足性求解器中学习子句的删除方法,其特征在于,根据学习子句的使用次数和LBD值对学习子句进行删减,包括:根据学习子句的使用次数对学习子句进行排序,并根据预先设定的使用次数范围及LBD值范围对学习子句进行初步删减;对初步删减后的学习子句再根据LBD值进行排序,并删除排序靠后的学习子句。4.如权利要求3所述的布尔可满足性求解器中学习子句的删除方法,其特征在于,对每个学习子句的使用次数进行记录,包括:在学习子句产生时,给保存学习子句信息的结构体中增加一个用于记录学习子句使用次数的标志位...

【专利技术属性】
技术研发人员:毕舜阳刘美华张岩黄国勇屈璋
申请(专利权)人:国微集团深圳有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1