SAT问题求解讲解Word格式.docx
- 文档编号:19530926
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:14
- 大小:333.96KB
SAT问题求解讲解Word格式.docx
《SAT问题求解讲解Word格式.docx》由会员分享,可在线阅读,更多相关《SAT问题求解讲解Word格式.docx(14页珍藏版)》请在冰豆网上搜索。
^>
a•t>
c—>
d•b
—>
c
(c—>
ci••b—>
c)
(疋+a•b)(—(a•Z?
)+c)化简钱化艮卩为*
(c+F+c)
同理英它组合电路门转化为CNF如下:
与门
a—b——
—c
(c+a)(c+bXc+a+b)
或门
(c+aXc+b)(c+a+b)
与非门
□
0—c
(c+a)(c+b)(c+a+b)
非门
a
{>
b
(a+b)(a+b)
或非门
.:
=o-
(c+aXc+b\c+a+b)
同或门
1c
(芒Y+b)(E+a+6)(c+W+bRc+a令b)
异或门
㈡
1
z>
(c+ff+bXc+a+b)<
f-Fr+bX?
+a+b)
选择器
w
X
u
I
f
(x+|+?
Xx*^+fX*+w+?
X*+^+0
一般的组合电路如下图:
cH
其对应的CNF如下:
(a'
+b'
+c'
)(a+b+c'
)(a+b'
+c)(a'
+b+c)(a+d)(b'
+d)(a,+b+d'
)(a'
+e)(b+
e)(a+b,+ez)(d4-fz)(e+fz)(dz+e5f)(c,+f+gz)(c+fz+Q)(c+f+g)(cz+fz+g)(g)
2.SAT问题泄义
可满足问题的一些基本定义,表示如下:
泄义2.1文字(literal):
对于变量集合X={xl,x2,x3xn},文字li是变量xi或者否迄xi。
定义2.2子句(clause):
子句Ci是文?
li的析取,CV=加.
上义2.3.合取范式(conjunctivenormalform,CNF):
CNFF是子句的合取,
F=ClcC2cC3....cC.
定义2.4赋值(assignment):
v:
X—>
{0,u,l},对于变呈:
集合{x2,x2,x3,x4,...,xn}:
⑴完全赋值(completeassignment):
v(x)€{0,1},对于所有的xGX;
(2)部分赋值(partialassignment):
v(x)e{0,u,l},其中u是自由变量,英取值范用为:
0<
u<
l,对于所有的xeX;
(3)对于给泄的一个CNFF,SAT(F)=1,如果存在一组赋值v,使v(F)=l,类似的,对于所有的x完全赋值v,v(F)=0,此时SAT(F)=O.
SAT问题一般描述为:
对于N个布尔变量X={xl,x2,x3xn},找到变量的一组赋值,满足在CNF中的每个子句都至少有一个文字取真,并且这组赋值能使所有的子句都能取真。
若找到这样一组賦值,则称该SAT问题是可满足的(SAT),如果没有任何一组变量赋值,使得SAT可满足,则称该SAT问题是不可满足的(UNSAT).
例如CNFFl:
xlc(—xl3-x23x3)c(-x23-x3),贝UFl找到一组賦值
xl=l,x2=0,x3=l使得Fl=l,那么该SAT问题是可满足的,而CNFF2:
xlc(-xlo-x2)cx2,
F2就找不到一组赋值,使得F2=l,所以该SAT问题是不可满足的。
SAT求解器可以通过接收一个CNF描述文件调用完备算法或者不完备算法来求得这个CNF描述文件的可满足和不可满足。
在其中任何的命题公式都可以转化为CNF描述文件。
CNF描述文件的格式,如下:
Pcnf23//CNF描述文件的语法,"
pcnf"
是关键字;
”2”代表变量的个数,"
3"
代表子句的个数;
10//T和是文字,表示变量和变量的否左,即文字;
-1-20〃每一行代表一个子句,并以"
0〃作为子句结朿表示。
20
任何的一个命题公式也都可以通过变形,转化为CNF描述文件,例如r={_AtB,BtA,-C,-A},可以表示为CNF描述文件为:
Pcnf34
120
-230
-30
-10
我们要想验证R是否是可满足的,只需要把R转化为CNF描述文件,然后调用SAT求解器求解即可,若求解器得到的是可满足的,则说明R问题为真,否则为假。
3•可满足问题解决器及主要的算法
求解SAT问题主要有两类算法:
分别是算法和算法,英中算法被公认为主流算法。
DPLL(Davis-Putnam-Logemann-Loveland)算法,是一种完备的、以回溯为基础的算法,用于解决在合取范式(CNF)中命题逻辑的布尔可满足性问斬也就是解决CNF-SAT问题。
该算法的实质是使用深度优先搜索的分支限界(DepthFirstSearchBranch,简称DFSBranch)算法。
算法伪代码程序如下:
status©
preprocess();
if(status!
=UNKNOWN)returnstatus;
while(l){
decidejiext^branchO;
while(true){
status=deduceO;
if(status=CONFLICT){
blevel»
analyze_conflict();
if(blevel=0)
returnUNSATISFIABLE;
elsebacktiackG)Fcvel);
elseif(status=SAT1SFIABLE>
returnSATISF1ABLE;
elsebreak.;
)
}
DPLL算法将给定的CNF的解空间(变量可能取值的空间)组织为一个如下图所示的一个二叉树形结构,树中的每个节点代表一个变量,节点的两个分支分别对应变量“真”
(1),“假”(0)两种可能的取值,从根节点搜索这棵树,如果树被遍历完了,仍没有发现使CNF为真的变量赋值,则CNF是无解的(不可满足的),否则,至少有一组变量赋值使C\F为真(即问题是可满足的)。
例如:
={X},Xl<
JX2<
JX3,X[<
JX6,Xl<
JX4,X4<
JX5.X5.X}<
JX5,X[<
JX2<
JXlyX6}
该二叉搜索树的变量选择判定是根据计算步骤如下:
首先分别计算该CNF中每个子句中都含哪些变量,例如xl,则其权重为1
禹:
在该子句中xl的权重为1^,x2=^x3=1/3
2“皿的权重为1/2,x6=l^
舛9"
“=1/2公4=1/2
X,Xs:
xl=1/2,xS=l/2.
X]<
jx23*:
xi=s,x2=lAx6=S
然后求xl的正负文字的总权重之和,然后按从大到小进行排序,生成下而所示的二叉搜索树:
XI的总权重:
X3+1/2+1/2+1/2+1/3=1^
依此类推的求总权重:
然后排序画二叉搜索树,为什么这样做,主要是因为:
我们都知道,子句越短,其影响因子就会越大,对冲突学习的影响也就越大,所以这样可以更快的发现冲突,减小冲突的回溯层数,然后回溯的时候可以快速的剪枝掉这些冲突的,从而减小搜索空间,减少不必要的遍历搜索的过程,下而我会讲到如何寻找冲突的矛盾变虽:
,井生成冲突子句,然后剪枝,加快求解的速度。
图34二叉搜索树示意图
F={瓦aubquc},如果我让在上面的二叉搜索树上,先预处理把使F不满足的都剪掉,然后再利用DPLL算法进行可满足性求解,就减少了很多无解的空间了。
把a=0分支剪掉
A=1并且b=l的也剪掉
A=1并且c=l的剪掉
图3M二叉搜索树示意图
在搜索树中的每一个节点,进行如下操作:
1)变量决策:
选择一个变量并给它賦值0或1;
2)逻辑约朿推导(BooleanConstraintPropagation,简称BCP):
根据布尔逻辑约朿更新受賦值变量影响的子句:
3)冲突分析与回溯(ConflictAnalysisandBacktracking):
分析由于本次賦值导致矛盾的子句,并根据情况恢复本次赋值前的状态:
实际上,大部分基于DPLL算法都是对上面提到的三个方而进行改进和提高,以加快问题的解决。
下面分别介绍这三个方而的研究情况。
1)变量决策。
变量分支决策一般基于启发式策略,由解决器根据问题的实际情况来选择,对于不同的类别的CNF,需要采用具有针对性的启发式方法,总的来说,选择的变量分支在二叉树中所处的层次越高,被减除的搜索空间就越多,越有助于问题的解决。
2)BCP过程。
假设变量X被选中进行赋值测试,且首先给x赋值1(真),那么所有包含文字X的子句都将得到满足,从而可以将这些子句从原来的CNF移除,这有可能导致岀现新的一元子句,由于一元子句必须得到满足,因此X的赋值将推导出新的变量赋值。
这个过程不断重复,直至:
a.找到使CNF得到满足的解;
b.当前没有一元子句岀现;
c.发现2个互为矛盾的一元子句。
其中的一个发生。
3)冲突分析与回溯。
当发生冲突时,必须进行回溯至最近导致冲突发生的根源状态,取消相应的操作,然后选择另一个分支。
例如,在上面的例子中,如果最近的赋值X=1导致冲
突,则因x“产生的操作都将被撤销以恢复到赋值前的状态,然后选择X=0赋值进行测试;
如果X=0仍然导致冲突,则继续从选择X分支处回溯。
这种最简单的回溯方式称为同步回溯,效率不高,如果在BCP过程中加入矛盾分析,有可能发现与赋值甚至变量选择无关的原CNF固有的逻借关系或者逻辑赋值,显然,在回溯时,这些固有的逻辑关系和赋值是不需要撤销的,这种回溯方式称为非同步回溯,通常采用对唯一蕴含点(UniqueImplicationPoint,简称UIP是指所有形成冲突的本次推理都经过的肖点,如图下图所示:
Figure2.Atypicalimplicationgraph
VI8(5)
ConflictingVariable
此外,在BCP过程中如果能尽快找到失败性的文字(FailedLiteral,简称FL,指那些使某个子句不满足的文字的赋值),那么FL的反相位赋值必然是强制文字(ForceLiteral),这意味侄儿在对该文字而言,赋值时不需要分支决策。
由于失败性文字检查(FailedLiteralDetection,简称FLD)需要对每个未赋值的变量进行,花费代价过大,所以一般我们只选择二元子句中出现最多的变量进行检查,这样可能导致大量的一元子句的产生,容易产生矛盾,可以加快问题的分析和解决。
冲突分析和学习机制:
不同的cut代表不同的学习模式:
Cutl=vl/+v3/+v5+vl7+vl9/(可以作为冲突子句加入到子句库中)
Cut2=v2+v4/+v8/+vl7+vl9/(可以作为冲突子句加入到子句库中)
Cut3=(vlT+v6+vl.3+v4〃+v8'
+vl7+vl.9)
再者如已存在子句库中的子句(vl6,+vl2+v2j,我们可以用先辈子句文字替换掉该子句中的相应文字将V诃和E2替换成先辈文字即(Q+\/6+vH+WL3)可以让学习机制更有效,但是也有例外的情况下,就是该上而的蕴含图要是个树结构,则学习到的这些子句本来就是原子句,将起不到作用,还白回溯寻找先辈文字,浪费时间,所以有的学者想到了一种叫做随机重启的方法,其做法就是周期的取消所有赋值,然后将搜索过程恢复到最初的原始状态。
我们会考虑重启不会破坏求解过程吗?
義实不会因为被搜索过的解空间得到的信息已经被学习子句记录下来了。
4.基于优化冲突集提高下界的MAXSAT完备算法
最大可满足性问题(MaximumSatisfiabilityProblem,MAXSAT)是SAT问题的一个重要扩展,其目标是找到一组真值指派使得合取范式中满足的子句数最多。
SAT问题可以看做是MAXSAT问题的一个特例,若MAXSAT问题求得的最优解与合取范式所含的子句数相等,则表示所有子句满足,那么SAT问题的解就为“是”,否则为“否”。
MAXSAT问题在现实生活中有着广泛的应用,因为很多实际问题求解更多时候需要一个最优解而不仅仅是"
是”或者是“否”的判断,如对于组合拍卖问题,每个买家会挑选若干个商品并给出自己的价格,在每件商品不能同时卖给两个以上买家的约束条件下,相比是否能满足所有买家的需求,拍卖这更关心如何获得最大收益。
一般的SAT算法一旦找到一个当前赋值下不满足的子句,即回溯,但对于MAX3SAT问题,仅当不可满足子句数大于等于当前最少不可满足子句数时才回溯。
MAXSAT问题可分为4类:
(1)不加权MAXSAT,每个子句权重为2.
(2)加权MAXSAT,每个子句可有不同的权重。
(3)偏MAXSAT,合取范式中必须彼满足的子句称为硬子句,不一泄被满足的子句称为软子句,偏硬子句条件下,使得满足的软子句数最多。
(4)加权偏MAXSAT,在偏MAXSAT基础上,软子句可有不同的权重。
目前,MAXSAT完备算法主要分为两类,一类是基于SAT不可满足的内核(Unsatfiablilitycores),利用SAT问题求解技术,如冲突子句学习,非时间序列回溯来寻找不可满足的内核,如subsat,Qmaxsat,Wbol.6等,另一类是基于深度优先的分支限界方法,在当前分支点,若不可满足子句数的下界大于等于当前不可满足子句数的上界,则可以提前剪枝。
如lncwmaxsatz,Akmaxsat等,前一类算法在工业算例和构造算例上有很大的优势。
该文作者在Li等人提出的Maxsatz的基础上,通过使用推理规则优先,单子句排序以及进一步失败文字检测3个优化冲突集的策略,提岀了改进的算法Maxsatz20139
5.Maxsatz算法框架
本节给岀该算法的基本概念和英算法框架
有些基本概念在前而已经介绍了,我在此就介绍一些还没介绍的,首先我要介绍的是MAXSAT问题。
MAXSAT问题定义:
给左命题变元集合V和子句集C,寻找一组关于V的真值指派使得C中满足子句数最多。
单子句传播,单子句满足唯一可能性是单子句中的文字为真。
单子句传播(UnitPropagation,UP)是指令某个单子句满足,简化合取范式F的过程,具体操作如下:
过程1,单子句传播.
Input:
单子句ci
Output:
空子句或化简之后的F
1.令单子句ci中的文字I为真;
2.检查其余子句,对形如212..5含有文字L的子句,移除整个子句,因为该子句已经满足;
3.对形如含有i的子句,删除文字1,简化子句为g.・5,特别地,当子句只含有一个文字1,该子句简化为空子句;
4.若有空子句产生或无新的单子句产生,单子句传播结束,否则,对步骤3产生的新的单子句重复以上步骤。
5.冲突集。
对任意一组V上的真值指派,若子句集C至少有一个子句不可满足,则称C为冲
突集,记为0,如两个冲突集的交为空,则称它们是相互独立的。
6.极小冲突集。
若从冲突集0中移除任意一个子句后,苴余的子句均可满足,则称0为极小冲突集。
7.寻找冲突集的方法:
通常利用单子句传播来寻找冲突集。
例:
L设
子句xl的单子句传播过程是:
龙义9合取范式的等价性,MAXSAT问题中,F1与F2两个合取范式是等价的当且仅当F1与F2对每一组真值指派都有相等的不可满足子句数。
泄义10失败文字,若令文字L为真,进行单子句传播,可推导出一个空子句,则称L为失败文字。
MAXSAT完备算法求解目标由求解最多满足子句数可等价转换为求解最少不满足子句数,对于一个长度为K的子句来说,有2的k次方种真值指派,仅当子句中所有文字都为假时,该子句不满足,而对于其余的2的K次方4种真值指派,该子句都满足,在未得到变元完整的真值指派情况下,算法利用检测冲突集方法可计算出合取范式中至少有多少子句不可满足。
因为此求解最少不满足子句数比求解最多满足子句数要方便好求非常多。
算法中的上界(UP)是在当前最优的一组完整真值指派下,合取范式F的不满足子句数,其初始值为F的所有子句数。
下界(LP)是在当前分支点,F不可满足子句的一个下界,其初始值为0。
算法1・Maxsatz.
输入:
合取公式F和初始上界UB
输出:
F的最小不满足子句数及对应的真值指派
1.if(F=0oi•只包含空子句〉
return空子句数:
2.LB=在当前部分眞值指派下的空子句数+
下界的保守估计;
3.\i(LB>
UB)
returnL73;
4.选择分支变元文;
5.if(Maxsatz(j:
=0)VUB)
UB=Maxsatz(jr=O);
6.if(Maxsatz(jn=1)<
CLJB)
UB=Maxsatz(才=1)?
7.retiirnUB.
下界的保守估讣:
对下界进行估计时,算法需要保证CNF的等价性,在MAXSATz算法中,下界值得估计工作主要包含两个部分,UP检测和失败文字检测两个方法
1)UP检测是依次对合取范式F中的单子句进行单子句传播,以便找到由该单子句传播导致的冲突集。
这部分主要运用了以下6个规则。
利用下而这六条规则进行进一步推理产生空子句,从而得到冲突集和极小冲突集。
规则1,设F]—{JtiV、z*2V…Vg?
乏1V&
2V…Vg}uFS那么F2=&
2V…}UF与F】等价问.
当子句长度为2时,{申V乂2,乏】V吐}等价于{/},产生了一个单子句.规则1可以简化CNF范式,产生寻找冲突集的单子句.
规则2.设F]={心,壬l},那么F?
={□}与Fi等价[叫
规则2表示无论、门赋值为真还是假,Fi都会产生一个空子句.
规则3.设F{={心,丘]\/壬29工2}UF,9那么F2=9mVH2}UF与F]等价皈・
规则4.设F]=V.r2,才?
\/工3…耳-】V
9云}UF"
9那么F?
={□9才]\!
亍2山2VE…忑-】VxJUFf与F】等价孔
规则3、规则4表示的是链式结构的冲突集,它需要耗费多个二元子句和两个单子句.
规则5.设F]=&
]9壬]\/工2,壬1V/39壬2\/乏3}UF,那么F2={n^1V^V^,^V^2V^3}LlF/与F]等价叫
规则6*设F]={工],丘]V才29亍2V©
…亍十-3V工&
—2,壬4TV心―1,丘—2Vg,壬衣_1V}UF,那么F?
={□9文1\/丘29乂2\/丘3••♦才—3Vi\,_2・q»
_2Vi7—】V乏占k-ZV业tVhHUF与F|等价⑼・
2)单子句排序:
效率高的分支限界算法要求有好的分支变元选择策略和有效的冲突集检测方法,本文采用的是将变元的正负文字在一元子句集,二元子句集和三元子句集中出现次数之和作为该变元的分数,即:
3)进一步失败文字检测:
进一步失败文字检测是在变元xi为真或为假,
不能都产生空子句时,继续向前一步检测的方法.其原理下图所示.
=1
CNF
进一步失败文字检测原理
如图表示在进行失败文字检测时,令xi=l进行up可以产生空子句,xi=0进行up未产生空子句,失败文字检测寻找冲突集不成功.Maxsatz2013在由xi=0赋值简化后的CNF冲,继续检测变元xj,若xj=O和xj=l进行up均产生了空子句,则从xi出发到3个空子句路径上出现的子句,构成的集合是一个冲突集,下界加1.进一步失败文字因搜索空间大,所以计算成本高且找到的冲突集规模大.但实验显示进一步失败文字检测仍有助于提髙算法下界,缩短运行时间.该函数表述如下:
过程,FurtherfailedliteraldetectionCmrLBX
1.if(变元啦厂未赋值且IE小于UB){
2.if(var=value有冲突){
3.if(wr=1—value有冲突){
4.remove冲突集3LB++;
continue;
5.else{
6.foreveryvardo{
7.if(var=1有冲究&
'
=0有冲突〉break;
&
remove冲突集3LI3++;
lb}
12<
returnLB.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SAT 问题 求解 讲解