一种布尔可满足性验证方法及系统技术方案

技术编号:27686441 阅读:42 留言:0更新日期:2021-03-17 04:00
本发明专利技术公开了一种布尔可满足性验证方法及系统,所述方法包括:对CNF实例中每个变元的权重进行计算,选择所述权重最高的变元作为SAT求解器的第一个分支变元。采用本发明专利技术的技术方案,可提高SAT求解器的解算速度,较少解算时间。

【技术实现步骤摘要】
一种布尔可满足性验证方法及系统
本专利技术涉及电子设计自动化(ElectronicDesignAutomation,EDA)领域,尤其涉及一种布尔可满足性验证方法及系统。
技术介绍
在芯片逻辑设计领域,布尔可满足性问题(SAT问题)是指给出一个以合取范式格式表达的命题逻辑公式,推理判断是否存在一组或多组赋值使得这个合取范式表示的公式可满足。在可满足的情况下,算法会给出一组使得问题满足的解。SAT问题中,给定一组有限变元集合X={x1,x2,…,xn},xn可以被赋值为真(1)或假(0),合取范式CNF(conjecturednormalformula)公式由多个子句合取而成。子句中任意文字被赋值为真,则子句为真,或被满足;子句中所有文字同时赋值为假,则称指定赋值使得子句为假,或指定赋值使得子句不被满足,公式为可满足当且仅当所有子句同时被满足。SAT问题是指寻找X上所有变元的一组赋值X′:X→{0,1},使得为真。如果存在这样的赋值,则是可满足的;如果不存在这样的赋值,则是不可满足的。在过去的几十年里,解决SAT问题的算法,也称为SAT求解器,取得了巨大的进步。十多年前认为无法求解的问题,现在可以用先进的SAT求解器在几秒钟内得以解决。现代SAT求解器可以集成更为先进的求解技术,通过这些技术开发的软件求解器甚至能够解决多大数百万个变元的难的SAT问题。自2002年至2020年,大批高效的SAT求解器和先进的算法被不断提出。分支启发式策略是一种常见的布尔求解策略。目前的分支启发式策略主要分为两大类,第一类是没有与冲突分析过程相结合的启发式算法,如JW(Jeroslow-Wang)算法、DLIS(DynamicLargerIndependentSum)算法等;第二类是与冲突分析过程相结合的启发式算法,如VSIDS(VariableStateIndependentDecayingSum)算法、CHB(ConflictHistory-basedBranchingHeuristic)算法、LRB(LearningRateBranching)算法等。鉴于第一类分支启发式算法计算代价大,我们在此不做过多的介绍。对于第二类与冲突分析过程相结合的启发式算法,VISIDS及其优化策略依然是使用最广泛,竞争力更强的分支启发式策略。在此类策略中,会对每个变元进行其活性的计算,每次冲突发生后,分支启发策略会对参与到此次冲突的变元活性进行累加。当需要选取新的分支变元时,将会对活性最高的变元进行赋值并继续进行推导。每次增加的活性会随着冲突发生的次数而衰减,衰减的原因是因为在搜索的最初始阶段,冲突次数太少,VSIDS中的活性分数并不准确,选择的分支变元具有一定的随机性,故而在在解算的初始阶段,给蕴含冲突的变元赋予更高的活性,使变元在冲突分析过程中活性增加的更快。另一种与冲突分析过程相结合的分支启发式算法LRB,学习率分支,是对CHU,基于冲突历史的分支启发式的改进。他们是基于ERWA(exponentialrecencyweightedaverage),指数近因加权平均的算法。变元x的分数LRB(x)初始化为0。当变元x被取消赋值时,LRB启发式用以下方式更新变元x的分数LRB(x):LRB(x)=(1-a)*LRB(x)+a*nbConflicts/age,其中假设p是变元x从复制到回溯取消赋值的时间间隔,在p时间段内的冲突次数记为age,在p时间内变元x参与的冲突次数记为nbConflicts,参数a是一个介于(0,1)的实数,初始化为0.4,每次冲突减少10^(-6)直到0.06。在搜索最开始时发生的冲突会给变元提供更高的LRB分数。LRB启发式策略的意图是,如果最近一个变元在被赋值期间参与到更多次的冲突中,则其应尽早地被分支,因为其再次蕴含冲突的可能性很大。如果一个变元在其被赋值期间,参与了这期间产生的所有冲突,则其LRB分数应该趋近于1,其应该被作为下次的分支变元进行赋值。另外还有一种基于蕴含图中所有变元到发生冲突位置的最长距离打分的Distance启发式。此启发式在解算的初始阶段对每个变元的Distance分数初始化为0。在搜索过程中,每次产生冲突,Distance启发式就会构建一个完整的冲突蕴含图,从蕴含冲突子句的所有决策文字开始,完整蕴含图中所有的变元都根据其到冲突的最长距离打分,而不仅仅考虑变元出现的次数。完整蕴含图中的所有变元都参与了对冲突子句的推导,都对给构成冲突做出了贡献。我们的目的是从当前得到的冲突中,评估蕴含图中所包含的变元对未来冲突的贡献能力。为了加强距离冲突点最近的变元的重要性,距离冲突发生点越近的变元,其Distance分数增加越多。综合观察现阶段较好的SAT求解器,多是采用以上几种分支启发式策略。此几种分支启发式策略在开始时通常会进行随机选择选取第一个分支变元,此种选择方法具有很强的不确定性,而分支变元选择的优劣则直接影响了冲突的产生次数,更多的冲突和推导进而影响SAT求解器的解算速度,我们倾向于从一个确定的变元来开始分支启发策略,来避免之后出现的更多冲突,加快解算速度。
技术实现思路
本专利技术的目的是针对现有技术的SAT求解器随机选取第一个分支变元导致解算速度慢的技术问题,本专利技术提出一种布尔可满足性验证方法及系统。本专利技术实施例中,提供了一种布尔可满足性验证方法,其包括:对CNF实例中每个变元的权重进行计算,选择所述权重最高的变元作为SAT求解器的第一个分支变元。本专利技术实施例中,对CNF实例中每个变元的权重进行计算,包括:步骤S1:将CNF实例中的所有文字以子句为单位读入一个二维容器之中;步骤S2:分别计算CNF实例中每个变元的权重。本专利技术实施例中,计算CNF实例中每个变元的权重,包括:对存放CNF子句的二维容器进行遍历,若某变元出现在某个子句中,则计算其当前权重:Weight=1/当前子句文字数,若此变元在后面的某个子句中再次出现,则对其权重进行累加:Weight=Weight+1/当前子句文字数,直到所有子句遍历完成,得到一个存放所有变元最终权重的列表。本专利技术实施例中,选择所述权重最高的变元作为第一个分支变元,包括:步骤S3:找到所述列表中拥有最高权重的变元;步骤S4:将权重最高的变元的活性初始化为一个大于0的值,将其它变元的活性初始化为0。本专利技术实施例中,所述SAT求解器采用分支启发式策略对CNF实例进行求解。本专利技术实施例中,还提供了一种布尔可满足性验证系统,其对CNF实例进行布尔可满足性验证时,采用上述的布尔可满足性验证方法。与现有技术相比较,采用本专利技术的布尔可满足性验证方法及系统,对CNF实例中每个变元的权重进行计算,选择所述权重最高的变元作为SAT求解器的第一个分支变元,权重更高的变元或蕴含更多的冲突,将其作为第一个分支变元可以避免许多后续解算过程中的冲突从而加快解算速度,避免了现有技术中对于第一个分支变元进行随机选本文档来自技高网
...

【技术保护点】
1.一种布尔可满足性验证方法,其特征在于,包括:对CNF实例中每个变元的权重进行计算,选择所述权重最高的变元作为SAT求解器的第一个分支变元。/n

【技术特征摘要】
1.一种布尔可满足性验证方法,其特征在于,包括:对CNF实例中每个变元的权重进行计算,选择所述权重最高的变元作为SAT求解器的第一个分支变元。


2.如权利要求1所述的布尔可满足性验证方法,其特征在于,对CNF实例中每个变元的权重进行计算,包括:
步骤S1:将CNF实例中的所有文字以子句为单位读入一个二维容器之中;
步骤S2:分别计算CNF实例中每个变元的权重。


3.如权利要求2所述的布尔可满足性验证方法,其特征在于,计算CNF实例中每个变元的权重,包括:
对存放CNF子句的二维容器进行遍历,
若某变元出现在某个子句中,则计算其当前权重:
Weight=1/当前子句文字数,
若此变元在后面的某个子句中再次出现,则对...

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

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

1