2-SAT
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
每轮推导都不与之前轮次的推导矛盾 无后效性无需回溯 时间上界:O(EV) 这是一个很松的上界
15
判断解是否存在
解不存在的充分条件:
◦ 若所构出的有向图中 ◦ 存在一对配对结点u与u’有互达路径,即 ◦ uu’ 且 uu’
等价充分条件:
◦ 存在u/u’在同一强联通分量内
是不是必要条件呢?
16
DAG情况
首先考虑有向无环图DAG (Directed Acyclic Graph)
◦ DAG的拓扑性质 ◦ 可证明生成的DAG仍保持与原图相似的“
对称性”
贪心构造
◦ 不断取当前DAG中出度为0的结点i直接加 入解集,并删除i’及i’的所有前驱结点
◦ 对转置图的拓扑排序 ◦ 证明思路:
不会因为取了该结点而导致其他结点出现矛盾 #
则利用上述构造方式 #
18
小结
2-SAT:一个“集成度”很高的算法 矛盾构图:逻辑推导的意味 逻辑推导的“无后效性”
◦ 每轮确定的解集,不影响之后的决策
对称性 有向无环图贪心构造 强联通分量缩点 O(E) 化为DAG同样的构造方式 O(E)
19
实现(跳过)
只提“转置图的拓扑排序”(或称逆向拓扑
◦ 在[Si, Si+Di), [Ti-Di, Ti)中任取一个区间 ◦ 使得选出的区间互不相交
算法思路
◦ 枚举 O(2n) (每场婚礼的仪式举行的时间有两种) ◦ 区间上的问题很特殊!
动规?? 贪心?? 没思路……
5
构图思路
算法思路
◦ 图论? ◦ 联想最大独立集问题的构图 ◦ 把仪式举行的时间区间看作图的结点 ◦ 在相互冲突的两个结点间连一条无向边
◦ 允许 |w1| = |w2| 因此本题可能无解
任务:求出这些城市的一个子集,能够满足 每个游客至少一个请求。
23
例2 Excursion (BOI’01)
考虑每个游客的请求 拆成“配对结点”,但……
◦ 题目要求满足每个游客至少一个请求 ◦ 而不是恰好每个游客的满足一个请求
不能套用2-SAT模型 换一个思考顺序
旅游团的n个游客一起游览一些城市 总共有m座城市可供选择(标号1..m)
◦ ( 1<=n<=20 000, 1<=m<=8 000 )
每个游客各给出两个请求w 每个请求的形式为一个整数w
◦ 当w>0时,表示旅游路线必须去城市|w| ◦ 当w<0时,表示旅游路线必须不去城市|w|
记游客的两个要求是w1,w2
20
2??
3-SAT or more…
◦ one-in-three SAT:
一个对象有三个状态,取其一 在一些约束条件下
上面的构图方式不再适用
◦ 原因是2-SAT是两个状态中取一个
已证明是NP-hard问题
◦ 可以用随机算法求解
一个扩展:等价布尔表达式问题
21
习题课……
22
例2 Excursion (BOI’01)
地图上有m座城市 在每座城市做标记
◦ 一个边长相同的正方形 ◦ 可以标在“上方”和“下方” ◦ 城市落在底边中点上
求正方形的最大边长,使得标记都不相 交
◦ 数据保证有解且为有限的数
26
例3 Map Labeler (POJ2296)
固定正方形的边长len 一座城市两种状态 标记相交(矛盾)2-SAT构图
◦ http://en.wikipedia.org/wiki/Boolean_satisfiability_problem
2-SAT: (SAT的特殊情况之一)
◦ exclusive-or 2-SAT (XOR-2-SAT) ◦ 构造法技巧性 ◦ 猜想证明
3
Priest John's Busiest Day (POJ3683)
小镇在一天之内要举办N场婚礼 给定每场婚礼的起止时间Si, Ti 每场婚礼需要举行一次仪式 仪式可以在婚礼的前Di分钟, 也可以在婚礼的后Di分钟举行
仪式需要一个牧师主持 但小镇只有一个牧师 同一时间内只能举办一对新人的仪式 求一个合理方案 (也可能不存在合理方案)
4
算法讨论
粗略模型
设最优解为ans
◦ len<=ans,存在一组方案 ◦ len>ans,不存在方案
二分答案:最优性问题判定性问题
27
例4 Ikki‘s Story IV - Panda’s Trick (POJ3207)
n个结点依次排列在圆上 一共有m条连边(u1,v1),…,(um,vm) 连边必须完全在圆内或完全在圆外 问是否存在一个方案使得连边不相交
2-SAT问题
唐浩
tanghaoth90@163.com 2010.5.20
1
SAT
名气不大?
SAT——Satisfiability 可满足性问题
具有很广的应用价值 计算机和人工智能领域内的重要问题 第一个被证明为NP完全的问题
2
SAT? 2-SAT?
SAT问题:
◦ 布尔表达式组 能否取TRUE? ◦ 具体定义与介绍:
13
图的特性:对称性
对称性:
◦ i j 则 i’ j’
对称传递性:
◦ ijk ◦ 则 i’ j’ k’
路径的对称性:
◦ uv ◦ 则 u’ v’
14
利用对称性证明“推导法”
假设与之前轮次的推导相矛盾 本轮:由u导出p在解集 之前某轮:由v导出p’在解集
u p v’ u’ p’ v 说明u是已盖点!
构造性地 , 连有向边 i j’ ; j i’
ab 表示选了a就必须选b
11
来自百度文库
新的构图
从结点2出发,可以走出一条路径 2 4’ 3’ 1’ 1’, 2, 3’, 4’恰好就是一个可行方案
12
算法猜想——“推导法”
“推导”:将一个结点加入解集,可以沿着有 向边推出一些结点也必须加入解集
6
构图思路
对于婚礼i,仪式方案有两种 分别记为结点i,i’ 例:可能的冲突结点对
(1,3’) (2,4) (3,4’) 二分图?[easy]
7
构图思路 几个概念
称上下相对的两个点为“配对结点” 称一个结点“对面”的结点为该结点的“反
面” 一个结点与它的“反面”不相容 虚线边两端的结点也不相容 求结点数为N的结点集,使结点集内所有结
轻易建立2-SAT模型 但这题非常特殊,可以直接贪心构造
◦ 留给大家思考
28
总结
“一个对象,两种状态” 可以化为2-SAT 问题特殊性 建立图论模型
研究问题: 1. 套用通用模型 2. 建立更高效、更方便的专用模型
◦ 突破定势思维 ◦ 应充分挖掘问题的个性
29
谢谢!
30
我们不再从原问题出发 以批判的目光审视上面的构图方式
10
新的构图
下面给出一个显然而有用的结论 假如结点i与结点j矛盾
注1:这里的结点编号i可能对应实际图中的i或i’ 注2:而i’就代表它的“反面”
那么
◦ 选了 i 就必须选 j’ (读作:j的反面,非j) ◦ 选了 j 就必须选 i’
17
有环图
同一强联通分量的点统一考虑
◦ 要么同时选,要么同时不选
缩点:
◦ 将有环图中每个强联通分量缩成点
◦ “大点”连边 “大点”内的“小点”连 边
注意不要考虑自环
回到DAG问题
◦ 构无造解解的存方在式u与/uD’在A同G相一同强联通分量 ◦ 无解存在u/u’在内同一强联通分量内
◦ 证明: (反证) 不存在u/u’同一强联通分量,
每一轮任取一个未盖点,由它作“推导”
◦ 1. 如果没有矛盾,则加入解集的结点不再取出, 从而避免回溯(时间效率提高!) (正确性?)
◦ 2. 如果产生矛盾,则取出这一轮加入解集的结点 ,取该结点的反面作“推导”,仍然矛盾则宣布 无解
◦ 未盖点:该结点与它的反面未被加入解集 ◦ 产生矛盾:一对配对结点都加入解集
排序)
不需要直接拓扑排序
◦ 在求强联通分量时已经求出序的关系
考虑Korasaju算法(正逆向DFS)
◦ 第二遍DFS依次生成的强联通分量的顺序 恰恰就是某个逆向拓扑排序的逆序
◦ 考虑一对“配对结点”在逆序拓扑排序中 位置:靠前的点必然加入解集
◦ 所以对于“配对结点”:在生成的强联通 分量的顺序靠后的点必然加入解集
24
例2 Excursion (BOI’01)
考虑每座城市w
◦ 每个城市有去与不去两种状态 ◦ 拆成两个点w(去)和-w(不去) ◦ 对于每个游客的请求w1,w2 ◦ 则-w1与-w2不能同时加入解集
选了-w1就不能选-w2 加边-w1w2 选了-w2就不能选-w1 加边-w2w1 #
25
例3 Map Labeler (POJ2296)
8
构图思路
只要将所有“配对结点”间连一条边 转化为“最大独立集”问题!NP问题!!! 又回归枚举算法……囧 注:上图其实就是枚举算法的约束隐式图的
显式形式,即枚举方案是根据这个无向图判 断可行性的
9
构图思路
有时候,我们离真理只有一步之遥 为什么上述算法如此低效? 因为我们只用了过于通用的模型 没用利用该问题的特殊性
15
判断解是否存在
解不存在的充分条件:
◦ 若所构出的有向图中 ◦ 存在一对配对结点u与u’有互达路径,即 ◦ uu’ 且 uu’
等价充分条件:
◦ 存在u/u’在同一强联通分量内
是不是必要条件呢?
16
DAG情况
首先考虑有向无环图DAG (Directed Acyclic Graph)
◦ DAG的拓扑性质 ◦ 可证明生成的DAG仍保持与原图相似的“
对称性”
贪心构造
◦ 不断取当前DAG中出度为0的结点i直接加 入解集,并删除i’及i’的所有前驱结点
◦ 对转置图的拓扑排序 ◦ 证明思路:
不会因为取了该结点而导致其他结点出现矛盾 #
则利用上述构造方式 #
18
小结
2-SAT:一个“集成度”很高的算法 矛盾构图:逻辑推导的意味 逻辑推导的“无后效性”
◦ 每轮确定的解集,不影响之后的决策
对称性 有向无环图贪心构造 强联通分量缩点 O(E) 化为DAG同样的构造方式 O(E)
19
实现(跳过)
只提“转置图的拓扑排序”(或称逆向拓扑
◦ 在[Si, Si+Di), [Ti-Di, Ti)中任取一个区间 ◦ 使得选出的区间互不相交
算法思路
◦ 枚举 O(2n) (每场婚礼的仪式举行的时间有两种) ◦ 区间上的问题很特殊!
动规?? 贪心?? 没思路……
5
构图思路
算法思路
◦ 图论? ◦ 联想最大独立集问题的构图 ◦ 把仪式举行的时间区间看作图的结点 ◦ 在相互冲突的两个结点间连一条无向边
◦ 允许 |w1| = |w2| 因此本题可能无解
任务:求出这些城市的一个子集,能够满足 每个游客至少一个请求。
23
例2 Excursion (BOI’01)
考虑每个游客的请求 拆成“配对结点”,但……
◦ 题目要求满足每个游客至少一个请求 ◦ 而不是恰好每个游客的满足一个请求
不能套用2-SAT模型 换一个思考顺序
旅游团的n个游客一起游览一些城市 总共有m座城市可供选择(标号1..m)
◦ ( 1<=n<=20 000, 1<=m<=8 000 )
每个游客各给出两个请求w 每个请求的形式为一个整数w
◦ 当w>0时,表示旅游路线必须去城市|w| ◦ 当w<0时,表示旅游路线必须不去城市|w|
记游客的两个要求是w1,w2
20
2??
3-SAT or more…
◦ one-in-three SAT:
一个对象有三个状态,取其一 在一些约束条件下
上面的构图方式不再适用
◦ 原因是2-SAT是两个状态中取一个
已证明是NP-hard问题
◦ 可以用随机算法求解
一个扩展:等价布尔表达式问题
21
习题课……
22
例2 Excursion (BOI’01)
地图上有m座城市 在每座城市做标记
◦ 一个边长相同的正方形 ◦ 可以标在“上方”和“下方” ◦ 城市落在底边中点上
求正方形的最大边长,使得标记都不相 交
◦ 数据保证有解且为有限的数
26
例3 Map Labeler (POJ2296)
固定正方形的边长len 一座城市两种状态 标记相交(矛盾)2-SAT构图
◦ http://en.wikipedia.org/wiki/Boolean_satisfiability_problem
2-SAT: (SAT的特殊情况之一)
◦ exclusive-or 2-SAT (XOR-2-SAT) ◦ 构造法技巧性 ◦ 猜想证明
3
Priest John's Busiest Day (POJ3683)
小镇在一天之内要举办N场婚礼 给定每场婚礼的起止时间Si, Ti 每场婚礼需要举行一次仪式 仪式可以在婚礼的前Di分钟, 也可以在婚礼的后Di分钟举行
仪式需要一个牧师主持 但小镇只有一个牧师 同一时间内只能举办一对新人的仪式 求一个合理方案 (也可能不存在合理方案)
4
算法讨论
粗略模型
设最优解为ans
◦ len<=ans,存在一组方案 ◦ len>ans,不存在方案
二分答案:最优性问题判定性问题
27
例4 Ikki‘s Story IV - Panda’s Trick (POJ3207)
n个结点依次排列在圆上 一共有m条连边(u1,v1),…,(um,vm) 连边必须完全在圆内或完全在圆外 问是否存在一个方案使得连边不相交
2-SAT问题
唐浩
tanghaoth90@163.com 2010.5.20
1
SAT
名气不大?
SAT——Satisfiability 可满足性问题
具有很广的应用价值 计算机和人工智能领域内的重要问题 第一个被证明为NP完全的问题
2
SAT? 2-SAT?
SAT问题:
◦ 布尔表达式组 能否取TRUE? ◦ 具体定义与介绍:
13
图的特性:对称性
对称性:
◦ i j 则 i’ j’
对称传递性:
◦ ijk ◦ 则 i’ j’ k’
路径的对称性:
◦ uv ◦ 则 u’ v’
14
利用对称性证明“推导法”
假设与之前轮次的推导相矛盾 本轮:由u导出p在解集 之前某轮:由v导出p’在解集
u p v’ u’ p’ v 说明u是已盖点!
构造性地 , 连有向边 i j’ ; j i’
ab 表示选了a就必须选b
11
来自百度文库
新的构图
从结点2出发,可以走出一条路径 2 4’ 3’ 1’ 1’, 2, 3’, 4’恰好就是一个可行方案
12
算法猜想——“推导法”
“推导”:将一个结点加入解集,可以沿着有 向边推出一些结点也必须加入解集
6
构图思路
对于婚礼i,仪式方案有两种 分别记为结点i,i’ 例:可能的冲突结点对
(1,3’) (2,4) (3,4’) 二分图?[easy]
7
构图思路 几个概念
称上下相对的两个点为“配对结点” 称一个结点“对面”的结点为该结点的“反
面” 一个结点与它的“反面”不相容 虚线边两端的结点也不相容 求结点数为N的结点集,使结点集内所有结
轻易建立2-SAT模型 但这题非常特殊,可以直接贪心构造
◦ 留给大家思考
28
总结
“一个对象,两种状态” 可以化为2-SAT 问题特殊性 建立图论模型
研究问题: 1. 套用通用模型 2. 建立更高效、更方便的专用模型
◦ 突破定势思维 ◦ 应充分挖掘问题的个性
29
谢谢!
30
我们不再从原问题出发 以批判的目光审视上面的构图方式
10
新的构图
下面给出一个显然而有用的结论 假如结点i与结点j矛盾
注1:这里的结点编号i可能对应实际图中的i或i’ 注2:而i’就代表它的“反面”
那么
◦ 选了 i 就必须选 j’ (读作:j的反面,非j) ◦ 选了 j 就必须选 i’
17
有环图
同一强联通分量的点统一考虑
◦ 要么同时选,要么同时不选
缩点:
◦ 将有环图中每个强联通分量缩成点
◦ “大点”连边 “大点”内的“小点”连 边
注意不要考虑自环
回到DAG问题
◦ 构无造解解的存方在式u与/uD’在A同G相一同强联通分量 ◦ 无解存在u/u’在内同一强联通分量内
◦ 证明: (反证) 不存在u/u’同一强联通分量,
每一轮任取一个未盖点,由它作“推导”
◦ 1. 如果没有矛盾,则加入解集的结点不再取出, 从而避免回溯(时间效率提高!) (正确性?)
◦ 2. 如果产生矛盾,则取出这一轮加入解集的结点 ,取该结点的反面作“推导”,仍然矛盾则宣布 无解
◦ 未盖点:该结点与它的反面未被加入解集 ◦ 产生矛盾:一对配对结点都加入解集
排序)
不需要直接拓扑排序
◦ 在求强联通分量时已经求出序的关系
考虑Korasaju算法(正逆向DFS)
◦ 第二遍DFS依次生成的强联通分量的顺序 恰恰就是某个逆向拓扑排序的逆序
◦ 考虑一对“配对结点”在逆序拓扑排序中 位置:靠前的点必然加入解集
◦ 所以对于“配对结点”:在生成的强联通 分量的顺序靠后的点必然加入解集
24
例2 Excursion (BOI’01)
考虑每座城市w
◦ 每个城市有去与不去两种状态 ◦ 拆成两个点w(去)和-w(不去) ◦ 对于每个游客的请求w1,w2 ◦ 则-w1与-w2不能同时加入解集
选了-w1就不能选-w2 加边-w1w2 选了-w2就不能选-w1 加边-w2w1 #
25
例3 Map Labeler (POJ2296)
8
构图思路
只要将所有“配对结点”间连一条边 转化为“最大独立集”问题!NP问题!!! 又回归枚举算法……囧 注:上图其实就是枚举算法的约束隐式图的
显式形式,即枚举方案是根据这个无向图判 断可行性的
9
构图思路
有时候,我们离真理只有一步之遥 为什么上述算法如此低效? 因为我们只用了过于通用的模型 没用利用该问题的特殊性