买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
申请/专利权人:中国科学院软件研究所
摘要:本发明公开了一种布尔可满足性问题求解器及求解方法。本发明包括变量信息存储模块、监督子句索引存储模块、子句文字存储模块、单元传播过程逻辑模块、冲突分析过程逻辑模块和分支决策过程逻辑模块;每个变量对应一个条目,包含变量当前赋值、决策水平、赋值原因子句编号、冲突分析中的访问标记以及一个数组,用于记录变量当前所选择的通过决策或传播被赋值的文字;监督子句索引存储模块存储监督文字条目,每一监督文字条目包含一个文字以及被该文字所监督的所有子句的信息;监督文字条目中包含被监督子句的首尾索引项地址列表、子句信息列表;子句文字存储模块存储CNF问题中的全部子句中包含的文字;单元传播过程逻辑模块用于执行单元传播。
主权项:1.一种布尔可满足性问题求解器,其特征在于,包括变量信息存储模块、监督子句索引存储模块、子句文字存储模块、单元传播过程逻辑模块、冲突分析过程逻辑模块和分支决策过程逻辑模块;所述变量信息存储模块,用于存储变量信息;每个变量对应一个条目,包含变量当前赋值、决策水平、赋值原因子句编号、冲突分析中的访问标记lc以及一个数组trail;所述数组trail用于记录变量当前所选择的通过决策或传播被赋值的文字;所述变量的条目总数VAR_NUM由输入的CNF问题决定;所述监督子句索引存储模块,用于存储监督文字条目,每一监督文字条目包含一个文字以及被该文字所监督的所有子句的信息;所述监督文字条目中包含被监督子句的首尾索引项地址列表watchLitDex和被监督的子句信息列表satzDex;所述子句文字存储模块,用于存储CNF问题中的全部子句中包含的文字;所述单元传播过程逻辑模块,用于执行步骤a~c进行单元传播;a在所述数组trail中选取一个未被传播的文字p;b若当前所测试的子句信息条目ent为空,则将ent赋值为文字p对应的监督文字条目中的第一个子句信息satzDex[watchLitDex[p].head],否则将ent赋值为当前ent所保存的子句信息的下一个子句信息satzDex[ent.next],然后执行b1~b5:b1如果则交换litMem[ent.ptr]与litMem[ent.ptr+1]的位置;其中,litMem[ent.ptr]为子句文字存储模块litMem中当前子句信息条目ent.ptr所指向子句的文字,litMem[ent.ptr+1]为子句文字存储模块litMem中当前子句信息条目ent.ptr所指向子句的文字的下一个文字;b2如果litMem[ent.ptr]=True,即当前的文字p为真,则选择被当前文字p所监督的子句信息列表satzDex中的下一个子句进行测试;b3如果存在i,满足ent.ptr+2≤ient.ptr+ent.len且litMem[i]值不为假,则交换litMem[ent.ptr+1]与litMem[i]、维护被监督的子句信息列表satzDex,选择被当前文字p所监督的子句信息列表satzDex中的下一个子句进行测试;ent.len为子句信息条目中所记录的子句长度;b4如果文字litMem[ent.ptr]未赋值,则发现了单位子句并对其进行赋值,并将对应变量varlitMem[ent.ptr]的决策水平更新为当前决策水平δcurr,并将其加入trail;b5如果litMem[ent.ptr]已赋值且值为假,则发现了冲突,进入所述冲突分析过程逻辑模块;c如果没有可选取进行单元传播的文字,则进入所述分支决策过程逻辑模块;所述冲突分析过程逻辑模块,用于寻找最近一次通过单元传播所赋值的变量FirstUIP并对其赋予一个相反值;然后利用litMem中从litLen到litPtr的文字构成学习子句并将其加入到该相反值对应的子句信息列表satzDex中;然后确定回溯水平δl,清空所有决策水平高于δl的变量信息;将litLen更新为当前的litPtr,完成添加学习子句工作;所述分支决策过程逻辑模块,用于检测CNF问题中的所有变量是否均已赋值,如果均已赋值则证明找到满足解;否则选取未赋值变量中变量状态独立衰减和VSIDS最小的一个变量进行赋值,更新当前决策水平δcurr自加1并进行下一轮搜索;以及将所有变量的变量状态独立衰减和VSIDS均除以2。
全文数据:
权利要求:
百度查询: 中国科学院软件研究所 一种布尔可满足性问题求解器及求解方法
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。