变元的赋值顺序及赋值优化算法、布尔可满足性验证算法制造技术

技术编号:28296084 阅读:29 留言:0更新日期:2021-04-30 16:20
本发明专利技术公开了一种变元的赋值顺序及赋值优化算法、布尔可满足性验证算法。其中分支启发的变元的赋值顺序优化算法,至少一个变元采用以下步骤确定赋值顺序:将当前待赋值的变元作为当前变元;搜索与当前变元同时出现在同一子句中的关联变元;累计所述关联变元与当前变元同时出现在同一子句中的次数;选择次数最少的关联变元作为继当前变元之后的待赋值的变元。本发明专利技术可以加快分支启发算法的计算时间。

【技术实现步骤摘要】
变元的赋值顺序及赋值优化算法、布尔可满足性验证算法
本专利技术涉及等价性验证工具中的布尔可满足性验证
,尤其涉及分支启发的变元的赋值顺序优化算法、分支启发的变元的赋值优化算法,以及采用了该赋值优化算法的布尔可满足性验证算法。
技术介绍
布尔可满足性验证算法通常包含三个主要部分:分支启发算法、演绎机制和BCP(即BCP传播)、以及冲突分析和学习。在布尔可满足性验证过程中,BCP传播占用大部分的时间,一个好的分支启发策略可以快速找到决策变元,减少冲突次数,加速BCP过程,因此,好的分支启发策略对提高整个布尔可满足性验证工具的运行效率意义重大。现有使用最多的是VSIDS分支启发策略,相比早期的分支启发(出现次数最多优先、最短字句出现频率最大优先、最短正子句优先、DLIS、DLCS),VSIDS分支启发策略可以更好的结合冲突分析过程,大大缩减BCP时间。以下为VSIDS算法的主要过程:1、每一个变元的正、负文字都分配一个计数器s,并且初始值为0;2、当学习子句加入到子句集时,该子句中所有的文字活性加1;3、所有文字的活性分数定期除以一个大于1的常数;4、每次分支决策时选择计数器分值最高未赋值的文字进行赋值,在有多个相等计数器的情况下,随机选择一个文字进行赋值。在搜索的初始阶段,由于冲突次数较少,VSIDS的活性分数是不准确的,因此通过活性所选择的分支决策具有一定的随机性。简单的说:如果把蕴含图根据连接关系分解为社区结构,我们不确定所选择的自由变元在社区内部还是联接各个社区结构之间的桥接变量。只有随着时间的推移,才能使VSIDS所选择的变元具备一定的质量水平,此时所习得的学习子句质量也更高。另一方面,初始变元的选择,直接影响整个搜索过程,选择不好的初始变元,在求解过程中虽然会产生大量冲突,但所习得的学习子句通常质量较低,会在子句库删减操作中删除。对于大多数求解器,都是采用随机赋值的方式选择初始变元,这就会使求解过程的开始阶段具备一定的局部性,即求解器此时主要关心初始变元所在的社区结构,也通常从最近的社区结构中挑选变元做分支决策,发生冲突并产生学习子句,然后才逐步扩散至桥接变量和其他社区结构。然而,桥接变量与其他社区结构的所产生的学习子句更能反应SAT问题实例的组织关系。所有造成了时间和空间的浪费。
技术实现思路
为了解决现有技术中随机选择变元进行赋值导致计算效率较低的技术问题,本专利技术提出一种变元的赋值顺序及赋值优化算法、布尔可满足性验证算法。其中分支启发的变元的赋值顺序优化算法,至少一个变元采用以下步骤确定赋值顺序:步骤1,将当前待赋值的变元作为当前变元;步骤2,搜索与当前变元同时出现在同一子句中的关联变元;步骤3,累计所述关联变元与当前变元同时出现在同一子句中的次数;步骤4,选择次数最少的关联变元作为继当前变元之后的待赋值的变元。进一步,所述步骤4执行完毕后返回步骤1,直至同一字句的所有的变元的赋值顺序确定。进一步,所述当前待赋值的变元为分支启发的第一个待赋值的变元或者为子句的第一个待赋值的变元。进一步,所述分支启发的第一个待赋值的变元通过对CNF文件每个变元的权重进行计算,选择所述权重最高的变元作为SAT求解器的第一个待赋值的变元。进一步,所述对CNF文件中每个变元的权重进行计算,包括:将CNF文件中的所有文字以子句为单位读入一个二维容器之中;对所述存放子句的二维容器进行遍历分别计算CNF文件中每个待赋值的变元的权重。进一步,计算每个待赋值的变元的权重具体包括:在遍历子句的过程中,当某个待赋值的变元出现在某个子句中,则根据公式计算其当前权重;直至所有子句遍历完成,得到所有待赋值的变元的权重。本专利技术提出的分支启发的变元的赋值优化算法,采用上述技术方案所述的变元的赋值顺序优化算法确定变元的赋值顺序,当任意一个变元的赋值顺序被确定时,包括如下赋值步骤:对待赋值的变元进行第一次赋值;计算赋值以后所述待赋值的变元在分支启发中发生n次冲突的第一时间;将第一次赋值的值进行取反并以取反后的值对待赋值的变元进行第二次赋值;计算赋值以后所述待赋值的变元在分支启发中发生n次冲突的第二时间;比较第一时间和第二时间,选择时间短的那次赋值的值对待赋值的变元进行赋值。进一步,所述待赋值的变元的第一次赋值的值为1。本专利技术提出的布尔可满足性验证算法,在对CNF文件进行布尔可满足性验证时,采用上述技术方案所述的分支启发的变元的赋值优化算法对各个变元进行赋值。本专利技术针对现有技术中VSIDS分支启发策略存在的不足,根据权重确定第一个待赋值的变元,并提出变元关联度的概念,即子句中同时出现两个变元的次数,并通过变元之间关联度的大小进行分支启发的决策。关联度越大的变元,赋值其中一个变元后,那么下一个变元的赋值就可以选取与这个变元相关度大的变元,就可以尽快的产生更多的冲突,从而产生学习子句,有益于后续的计算,即降低计算时间。将本专利技术的算法基于Glucose3.0进行测试,测试数据如表1所示,新提出的算法最多可以节省95%的处理时间,另外本专利技术在确定变元的赋值结果时,计算发生n次冲突的时间t1,再将该变元的赋值取反,计算发生n次冲突的时间t2,取时间短的赋值进行下一次分支启发赋值,或者取相同时间内发生冲突最多的变元赋值对当前待赋值的变元进行赋值,还可以采用相同的方式进行下一次分支启发赋值。通过本专利技术可以尽快找到符合变元的赋值,加快计算时间,具体测试时间的优化如表2所示,最好的例子中计算时间减少97%,平均时间减少50%以上。本专利技术涉及到的技术术语如下:·变元:在命题逻辑中,bool变元xi可以取真值0(false)或1(true);·文字:变元xi或它的否定如果Bool变元xi赋值为1,则文字xi满足,如果变元xi赋值为0,则文字满足。·子句:一些文字的析取,例如子句中文字的个数称为子句的大小。一个子句中如果有至少一个文字满足,则该子句满足。如果子句中多有文字都不满足,则该子句不满足。·CNF公式:一些子句的合取,例如·SAT问题:布尔可满足性问题BooleanSatisfiabilityProblem。即,判断能否找出一组赋值,使得给定的CNF公式中的所有子句满足。·自由变元:未被赋值的变元。在所有的最开始,所有的变元都是自由变元。·分支决策:在所有自由变元中选择某个变元并赋予某个值,称为分支决策。·单子句:只包含一个文字的子句。在SAT问题中,应该给其文字赋相应的值使得单子句满足。给单子句中的文字赋值后,会导致其他的文字被赋值,此过程即为单子句传播。·BCP传播:给单子句中的文字赋值后,会导致其他的文字被赋值,此过程即为单子句传播,也成为BCP传播。·产生冲突:单子句传播过程中,不同的单子句传播要求同一变元取相反的值,则出现冲突。·分支启发策略:更快的找到本文档来自技高网
...

【技术保护点】
1.一种分支启发的变元的赋值顺序优化算法,其特征在于,至少一个变元采用以下步骤确定赋值顺序:/n步骤1,将当前待赋值的变元作为当前变元;/n步骤2,搜索与当前变元同时出现在同一子句中的关联变元;/n步骤3,累计所述关联变元与当前变元同时出现在同一子句中的次数;/n步骤4,选择次数最少的关联变元作为继当前变元之后的待赋值的变元。/n

【技术特征摘要】
1.一种分支启发的变元的赋值顺序优化算法,其特征在于,至少一个变元采用以下步骤确定赋值顺序:
步骤1,将当前待赋值的变元作为当前变元;
步骤2,搜索与当前变元同时出现在同一子句中的关联变元;
步骤3,累计所述关联变元与当前变元同时出现在同一子句中的次数;
步骤4,选择次数最少的关联变元作为继当前变元之后的待赋值的变元。


2.如权利要求1所述的分支启发的变元的赋值顺序优化算法,其特征在于,所述步骤4执行完毕后返回步骤1,直至同一字句的所有的变元的赋值顺序确定。


3.如权利要求2所述的分支启发的变元的赋值顺序优化算法,其特征在于,所述当前待赋值的变元为分支启发的第一个待赋值的变元或者为子句的第一个待赋值的变元。


4.如权利要求3所述的分支启发的变元的赋值顺序优化算法,其特征在于,所述分支启发的第一个待赋值的变元通过对CNF文件每个变元的权重进行计算,选择所述权重最高的变元作为SAT求解器的第一个待赋值的变元。


5.如权利要求4所述的分支启发的变元的赋值顺序优化算法,其特征在于,所述对CNF文件中每个变元的权重进行计算,包括:
将CNF文件中的所有文字以子句为单位读入一个二维容器之中;
对所述存放子句的二维容器进行遍历分别计...

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

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

1