算法合集之﹝分治算法在树的路径问题中的应用﹞.pptVIP

算法合集之﹝分治算法在树的路径问题中的应用﹞.ppt

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法合集之﹝分治算法在树的路径问题中的应用﹞算法合集之﹝分治算法在树的路径问题中的应用﹞算法合集之﹝分治算法在树的路径问题中的应用﹞

分治算法 在树的路径问题中的应用 长沙市雅礼中学 漆子超 树的路径问题 论文内容 一、树的分治算法 树的分治的两种常见形式: 基于点的分治 基于边的分治 二、树的路径剖分算法 三、树的分治算法的进一步探讨 如何改进基于边的分治的时间复杂度 归纳为基于链的分治 一、树的分治算法 树的分治算法是分治思想在树型结构上的体现。 两种常见的形式 基于点的分治 两种常见的形式 基于点的分治 1.选取一个点将无根树转为有根树 2.递归处理每一颗以根结点的儿子为根的子树 两种常见的形式 基于边的分治 两种常见的形式 基于边的分治 1.在树中选取一条边 2. 将原有的树分成两棵不相交的树,递归处理。 效率分析 可以证明在基于点的分治中,如果每次都选取树的重心,那么至多递归 O(LogN)次。 基于边的分治最坏情况下递归次数为O(N)。 【例一】树中点对统计 给定一棵N个结点的带权树。 定义dist(u,v)=u,v两点间的路径长度,路径的长度定义为路径上所有边的权和。 给定一个K,如果对于不同的两个结点a,b,如果满足dist(a,b)≤K,则称(a,b)为合法点对。 求合法点对个数。 N≤10000,K≤109 一条路径: 1.过根节点 2.在一颗子树内 树中点对统计 记D(i) 表示节点i到根节点路径的长度 Answer = 满足 D(i)+D(j)≤K 的(i,j)个数 i,j属 于不同的子树 O(NlogN) 树中点对统计 时间复杂度分析 每层的时间复杂度不超过O(NlogN) 最多递归O(logN)次 O(Nlog2N) 二、路径剖分算法 轻重边路径剖分 将树中的边分为两类:轻边和重边。 记Size(U)表示以U为根的子树的结点个数。 令V为U的儿子中Size(V)最大的一个,那么我们称边(U,V)为重边,其余边为轻边。 轻重边路径剖分 我们称某条路径为重路径,当且仅当它全部由重边组成。那么对于每个点到根的路径上都不超过O(logN)条轻边和O(logN)条重路径。 我们称某条路径为重路径,当且仅当它全部由重边组成。那么对于每个点到根的路径上都不超过O(logN)条轻边和O(logN)条重路径。 路径剖分算法常用来高效的维护点到根的路径 Spoj的Qtree,Astar2008的黑白树… 【例二】 Query On a Tree Ⅳ 给定一棵包含N个结点的树,每个节点要么是黑色,要么是白色。要求模拟两种操作: 1)改变某个结点的颜色。 2)询问最远的两个黑色结点之间的距离。 数据范围: N≤100000,边权绝对值不超过1000 此题出自2007年浙江省选,但此题中树的边权可能为负,无法使用括号序列。 另寻他法 路径剖分算法 这道题的算法似乎与路径剖分毫无关系,那么我们是否能用路径剖分算法解决此题呢? 路径剖分与树的分治的联系 一棵树及其剖分 路径剖分与树的分治的联系 路径剖分每次删除了一条链,所以路径剖分算法可以看做是基于链的分治 按照点到根结点路径上的轻边个数分层摆放。 递归树! Query On a Tree Ⅳ 将路径剖分理解成基于链的分治后,我们可以用类似基于点的分治的方法将路径分类。 1.与链有重合部分 2.与链没有重合部分 Query On a Tree Ⅳ … 我们的目标就是要求出满足与此链的重合部分在[1,N]的路径的最大长度。 我们可以用线段树解决这个问题。 Query On a Tree Ⅳ 记D(i)表示第i个结点至子树内某个黑色结点的路径中长度的最大值。Dist(i,j)表示链上的第i个点到第j个点的距离。 Query On a Tree Ⅳ 对于线段树中的一个区间[L,R],我们需要记录下面三个量: L R L R Query On a Tree Ⅳ L R L R L R 设区间[L,R]的结点编号为P,Lc,Rc分别表示P的左右两个儿子,区间[L,Mid]和[Mid+1,R]。我们可以得到如下转移: Query On a Tree Ⅳ L R L R L R 设区间[L,R]的结点编号为P,Lc,Rc分别表示P的左右两个儿子,区间[L,Mid]和[Mid+1,R]。我们可以得到如下转移: Query On a Tree Ⅳ Opt Opt L R Opt L R 设区间[L,R]的

文档评论(0)

junjun37473 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档