SAT Encoding and CDCL Algorithm听课笔记

CDCL::归结式

如果x不出现在公式的别的地方,那么两者可以等价

CDCL::watched literals

通过监测文字来判断当前子句是否是单元子句

先选择两个未赋值的文字作为监测文字,若其中的监测文字被赋值后则去寻找其他未被赋值的文字作为监测文字,若最后的两个监测文字重合,即只剩下一个未被赋值的文字,则为单元子句(unit clause)

CDCL::clause learning

假设之前已经对c=0,f=0进行赋值,现在对a=0进行赋值

最后一个子句会出现冲突,这样我们可以得出一个新的学习子句

即a,c,f最少有一个为1,同时为0则会出现冲突

CDCL::implication graph(蕴含图)

在第5层,表示x2赋值为0

蕴含图的箭头表示对方是通过单元子句传播得到的值,所以蕴含图是不断生长的

当出现冲突时(红箭头指向)

就需要学习经验,也就是需要生成学习子句,可以进行如下图的分离割,将决策与冲突分离开

三条边只要不成立就不会出现右侧的冲突,而三条边对应的点为x4与x21,则我们可以学习到x4=1与x21=0不能同时成立,即学习子句:非x4或者x21

学习子句不唯一,因为可以有不同的分离割,不同的分离割对应不同的学习子句

那到底应该在哪个地方进行割,引出概念独一蕴含点

蕴含图的数据结构

对每个变量要维护三个信息,变量的值;变量的层级,变量被哪个子句单元传播过来的

CDCL::unique implication point(独一蕴含点)

UIP(独一蕴含点):在部分蕴含图中决策点走到冲突点所有路径都要经过的点

First UIP:离冲突结点最近的UIP、

目标就是通过蕴含图找到冲突点的First UIP然后分离割,进行学习子句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

deebcjrb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值