- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
图算法——拓扑排序,SAT,欧拉Hamilton路
图算法(2) ——拓扑排序,2-SAT,欧拉/Hamilton路 何亮 roba269@ 2009-02 拓扑排序 有向无环图(Directed Acyclic Graph, DAG) 图的结点存在一个拓扑序,即满足下面条件的序列:(序列不一定唯一) 如果图中有边(u,v),则u必定排在v的前面 拓扑排序 典型例子: 课程安排(一些课是另一些课的先修课程) 书本摞放(一本书可能压住下面的某几本书) 未知数排序(给定一些未知数间的不等式,求满足这些不等式的一个排序序列) DP的状态转移关系实际上就是构建在一个DAG上的 拓扑排序 算法 (1) 计算每个点的入度,入度为0的点加入队列Q (2) 从Q中取出一个点p,输出 (3) 所有与p相邻的点的入度减1。如果新得到了入度为0的点,则加入队列Q。 (4) 转步骤(2), 直到所有点都输出完毕 如果在执行过程中发现找不到入度为0的点, 说明图中存在环 拓扑排序 例题分析 POJ 3687 给定一DAG,要求拓扑序,使得满足: (1)编号为1的点排得越靠前越好 (2)在满足(1)的所有序列中,2越靠前越好 (3)…3越靠前越好 … 例题分析 仍按字典序可以么? 1应该尽可能的早……在1最早的前提下2尽可能早………… SAT 可满足性问题(Satisfiability Problem) 给定一布尔表达式,求一个使其为真的解 一般的SAT问题是NPC的 k-SAT问题 析取范式:(A or B) and (A or not C) and… 如果每个子式包含的变量数不超过k,则称为k-SAT问题 2-SAT 2-SAT有多项式算法 把每个变量当作两个点:A和not A 对于子式(A or B),添加两条边 (not A ? B) (not B ? A) 边的含义:设存在边(u,v),则如果选择了u,必须要同时选择v 2-SAT 对原图求强连通分量,可知:每个强连通分量中的所有点必定同时被选择 But…点A和点not A只能选一个 如果某点x和点not x属于同一SCC,必无解 反之? 2-SAT 解的构造: (1)将原图缩点后得到DAG: G (2)把G图的边反向,得到G’,对G’拓扑排序 (3)选择拓扑序最靠前的未染色点p (4)将p染红色,将与p矛盾的点p’及p’的所有后代染蓝色 (5)重复第(3)(4)步直至所有点被染色,红色点即为要选择的点 2-SAT 例题分析 Perfect election (TOJ 3122) i和j至少有一个被选 (i OR j) i和j至少有一个不被选 (~i OR ~j) i被选或j不被选 (i OR ~j) i不被选或j被选 (~i OR j) Get Luffy Out (POJ 2723) 例题分析 Building Roads (POJ 2749) FJ有N个牛棚和两个中转站,现在要从每个牛棚修一条路连接到两个中转站之一,并且满足给出的限制条件,限制条件形式是(i和j必须连到同一个中转站)或者(i和j不能连到同一个中转站) 例题分析 两个牛棚之间的距离定义为 如果两牛棚连到同一个中转站,则距离为两条路之和 如果两牛棚连到不同中转站,则距离为两条路之和再加上两中转站间的距离 要求在满足限制条件下,任意两牛棚距离的最大值最小。 例题分析 把每个点看作一个变量,取0和1分别表示连到两个中转站 1)i和j不连到同一个中转站,增加 (Xi OR Xj)和(~Xi OR ~Xj)。 2)i和j必须连到同一个中转站,增加(Xi OR ~Xj)和(~Xi OR Xj)。 例题分析 设现在二分的答案是S。那么检查每一对牛栏i和j(假设D1i,D1j表示i和j到第一个中转站的距离,D2i,D2j表示i和j到第二个中转站的距离,DD表示两个中转站之间的距离)。如果 3)D1i?+?D1j?S,就增加和取范式(~Xi OR ~Xj) 4)D2i?+?D2j?S,就增加和取范式(Xi OR Xj) 5)D1i?+?D2j + DD?S,增加和取范式(~Xi OR Xj) 6)D2i?+?D1j + DD?S,增加和取范式(Xi OR ~Xj) 检验此SAT问题是否有解,即可验证S是否可以 Horn-SAT 每个子句里最多有一个positive literal 存在多项式的构造算法: 如果每个子句都包含大于1个变量,则所有变量取负即为解 否则,存在包含1个变量的子句,则这些变量的值可唯一确定,代入原式化简即可 TOJ 2730 Horn Clauses 欧拉路(Euler Tour) 定义:经过图中每条边恰好一次的路 如果起点和终点相同,叫做欧拉回路 无向图存在欧拉路的条件 如果图连通,且所有的点都是偶数度,则有欧拉回路。 如果图连通,且恰有两
文档评论(0)