- 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路教学课件
* 例题分析 当k=3, b=2时,一个合法的环为: 0 0 0 1 0 1 1 1 数学问题?? 没有好的办法 暴力搜索?? 复杂度为O(b^(b^k)),无法接受 * 例题分析 对于一个k-1位b进制数i,如果我们把i的最高位去掉,在最低位补上一位后,能得到数j,就连一条边(i,j) 我们得到一个节点数为bk-1的有向图,每个节点的入度和出度都为b 这个图存在欧拉回路,从欧拉回路即可构造出原序列! 复杂度仅为O(E)即O(b*(b^k)) * 中国邮路问题 边上有权值,从任意一点开始,经过每条边至少一次并回到起点,求最短的距离 若存在欧拉回路,所有边之和即为结果 若不存在…… * 中国邮路问题 奇数度的点有偶数个,故我们可以将其两两配对,即可得出必须多走的距离。 权值为两点间最短路 如果是有向图,二分图带权匹配 如果是无向图,一般图带权匹配…… * Hamilton路 定义:经过图中每个点恰好一次的路 经典NP完全问题,尚未发现多项式算法 @@ 常见解决方案 状态压缩DP (点数较少的情况, 如N=15) 利用问题特殊性 (对某些特殊的图有多项式算法) * Hamilton路的DP解法 对于点数较少的情况,可以用状态压缩的DP来做。比如用opt[mask][k]表示已经访问过mask表示的结点集合,并且最后位于点k的最优解。那么状态转移方程为: opt[mask][k] = min(opt[mask-{k}][i] + cost[i][k]) 其中i是所有与k相邻的点,mask-{k}指从mask除去k * 例题分析 Task Sequences (Guangzhou 03) POJ1776 / TOJ1151 题目大意: Tom要用一台机器完成一系列的任务,给定一些i→j条件,表示机器在做完i以后可以继续做j,而不用重新启动。一个任务只能被做一次。求要完成所有任务所需的最少的重启次数,以及完成任务的顺序。(任务数=1000) 数据保证对任意两个不相同的任务i,j,都有i→j或者j→i,或两者兼有。 * 例题分析 Sample Input 3 0 1 1 1 0 1 0 0 0 Sample Output 1 3 2 1 3 1 3 2 * 例题分析 竞赛图:特殊的有向图,对于任意点对(i,j)都有边(i,j)或边(j,i) 实际上,竞赛图的Hamilton路一定存在,并且可以在多项式时间内构造出来。 因此,最少的重启次数一定是1。 * 竞赛图的Hamilton路 构造方法: 假设我们已经找到了一条路V1→V2→…→Vn 我们可以把每个新点p都加进这条路里面去,从而最终得到一条Hamilton路。 (1)若图中有边(p,V1),得到p→V1→V2→…→Vn (2)若图中有边(Vn,p),得到V1→V2→…→Vn→p (3)否则,图中必有边(V1,p)和(p,Vn)。我们一定能找到某个中间点Vi,使得图中存在边(Vi,p)和(p,Vi+1),于是可以得到新路V1→V2→…→Vi→p→Vi+1→…→Vn 故原题可在多项式时间内求解 * More… Ore性质 对于所有不相邻的顶点对,有 deg(x)+deg(y)=n 满足Ore性质的图一定有Hamilton回路,且能在多项式时间内构造出这样一条回路 旅行售货商问题(TSP) * 图算法(2) ——拓扑排序,2-SAT,欧拉/Hamilton路 * 拓扑排序 有向无环图(Directed Acyclic Graph, DAG) 图的结点存在一个拓扑序,即满足下面条件的序列:(序列不一定唯一) 如果图中有边(u,v),则u必定排在v的前面 * 拓扑排序 典型例子: 课程安排(一些课是另一些课的先修课程) 书本摞放(一本书可能压住下面的某几本书) 未知数排序(给定一些未知数间的不等式,求满足这些不等式的一个排序序列) DP的状态转移关系实际上就是构建在一个DAG上的 * 拓扑排序 算法 (1) 计算每个点的入度,入度为0的点加入队列Q (2) 从Q中取出一个点p,输出 (3) 所有与p相邻的点的入度减1。如果新得到了入度为0的点,则加入队列Q。 (4) 转步骤(2), 直到所有点都输出完毕 如果在执行过程中发现找不到入度为0的点, 说明图中存在环 * 拓扑排序 2 1 3 4 8 7 5 6 拓扑序:1 3 2 4 5 6 7 8 (不唯一) 如何求出字典序最小的拓扑序列? * 例题分析 POJ 3687 给定一DAG,要求拓扑序,使得满足: (1)编号为1的点排得越靠前越好 (2)在满足(1)的所有序列中,2越靠前越好 (3)…3越靠前越好 … * 例题分析 仍按字典序可以么? 1应该尽可能的早……在1最早的前提下2尽可能早…………
原创力文档


文档评论(0)