2012年noi冬令营唐文斌讲稿.ppt

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2012年noi冬令营唐文斌讲稿

双连通图的固定中心生成树 寻找Path Case 1: 若存在一条未访问的返祖边(v,w) Path=vw Case 2: 若存在一条未访问的树边(v,w) 令Path=vww1w2…wk,其中wk=Low(w)代表点。 Case 3: 若存在一条未访问的返祖边(w,v) 令Path=vww1w2…wk,其中wk为一个已访问的点。 找到Path后将Path上所有节点和边标记为已访问。 Most Vital Edge on Spanning Tree 删除一条边可能导致图的最小生成树变大 Most Vital Edge: 删掉哪条边使得图的最小生成树变大得最多 基于可并堆合并 黑板? Most Vital Edge on Spanning Tree 生成树的计数 给定无权图,求生成树的个数 扩展: 给定带权图,求最小生成树的个数 生成树计数 无权图的生成树计数 行列式:列出图G的Kirchhoff矩阵C:若i=j,则Cij=-degree(vi);若i≠j,则Cij为vi与vj之间的边的个数。 然后去掉C的任意第r行第r列得到的新矩阵Cr,Cr的行列式的绝对值即为生成树的个数。 生成树计数 带权图的最小生成树计数 性质:在求最小生成树的过程中,若我们只用边权小于x的边,我们得到的是森林。由于选择的边不同,会得到不同的森林,但是森林的连通性是相同的。 然后我们将森林中的每棵树缩成一个点,然后对于权值为x的边,若这条边连接了两棵树,则将对应点相连。设得到的图为Gx。 将图Gx每个连通块分开处理,用无权图的生成树计数方法求出方案数。然后相乘即可。 Thank you! 最小修改边权 给定一个带权图和图中的一棵生成树 可以修改边权 目标: 使得给定的生成树是该图的MST 要求修改边权的总量最小 可以增加 可以减少 By TANG Wenbin 图论专题之 生成树 清华大学 唐文斌 tangwb06@ 定义: 生成树 无向图G=(V,E) G的一个生成树T是G的一个子图(树) 包含G的所有节点: V’ = V 包含G的部分E’∈E 性质: 包含所有点, 无环 生成树: 最大的无环边集 生成树: 最小的连接所有点的边集 包含所有的桥(割边) 更多定义… 树的直径: 树的直径定义为树上最远两点的距离 树的中心 在树上选择一个点, 离其他所有点最远点距离最小 Q: 可能有多少个? 性质: 一定是直径路径的中心点 最小生成树(MST) 最小生成树(Minimal Spanning Tree) 带权无向图 生成树的权定义为所有树边的权值之和 最小树形图(Minimum Arborescence) 带权有向图 从某一个节点出发, 可以到达所有节点 生成森林 原图不连通, 每一个连通块的生成树集合 Prim Prim算法: 与Dijkstra相近 选任一点为根 找不在树上且离树最近的点加入生成树 时间复杂度O(mlogn) //优先队列优化 Kruskal Kruskal算法: 一开始所有的点为独立连通块 按边权从小到大检查每一条边 如果这条边连接了两个不同的连通块(即不形成环) 则将这条边加入, 并将两个连通块合并 使用并查集进行连通块判定 O(mlogm + mα(m)) Bor?vkas algorithm Bor?vkas algorithm 类似Kruskal的多路增广版 一开始所有点为独立连通块 每一次: 每一个连通块寻找一条往外连接的最小权值边 将所有的这些边都加入 边权两两不同时可以保证不形成环 若边权有相同: (边权, 点标号)一起判最小 合并次数: 最坏情况logn次 时间复杂度: 最坏O( (m+n) logn ), 随机图 O(n+m) 最小瓶颈生成树 (Minimum Bottleneck Spanning Tree) 一个无向图中权重最大的边最小 算法一: Kruskal的最后一条边就是瓶颈 定理: 任意 MST 一定是 MBST. Why? 所以任何MST的算法均可. 注意MBST并不一定是MST 存在更好算法? 最小瓶颈生成树 (Minimum Bottleneck Spanning Tree) 线性算法 类似 快排分治 查找第k小数 按照边权的集合,选择当前的瓶颈值V 寻找所有权值不超过V的边,构成子图 若子图连通, V是答案的上界, 继续在权值较小的部分寻找 若子图不连通, 按当前连通性进行缩点, 在权值较大部分寻找 时间复杂度: T(m) = O(m) + T(m/2) 时间复杂度O(n+m) 扩展: 最小瓶颈路径查询 Q个query 每次查询a, b两个点 输出a ~ b点之间的最小瓶颈路径的瓶颈值 算法:

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档