- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
水管局长 分析一下本题时间复杂度瓶颈所在: 边数过多; 完成询问的复杂度过高; 我们将在后文逐个把这些问题解决 引入最小生成森林 引理一: 任意询问可以在G的最小生成森林中找到最优解 证明: 记Φ(P)表示路径P中不在T中的边数 若Φ(P) = 0,则P在T上; 若Φ(P) 0,则存在一条边(u, v)∈P – T 引入最小生成森林 引理一: 任意询问可以在G的最小生成森林中找到最优解 证明(续): 考察这条边(u, v): 引入最小生成森林 引理一: 任意询问可以在G的最小生成森林中找到最优解 证明(续): 考察这条边(u, v): 根据最小生成森林的性质,存在一 条只有树边构成的路径P0连接u、v 两点,并且P0的花费不大于(u, v)的 花费 引入最小生成森林 引理一: 任意询问可以在G的最小生成森林中找到最优解 证明(续): 考察这条边(u, v): 根据最小生成森林的性质,存在一 条只有树边构成的路径P0连接u、v 两点,并且P0的花费不大于(u, v)的 花费 将P中(u, v)替换为路径P0,P的总花 费不增且Φ(P) 减小 引入最小生成森林 引理一: 任意询问可以在G的最小生成森林中找到最优解 证明(续): 由于Φ(P) ≥ 0,所以可以在有限次替换后将P变成一条T中的路径 这就证明了该引理 引入最小生成森林 引理一: 任意询问可以在G的最小生成森林中找到最优解 根据引理,我们只需要保存所有树边即可,这样边数下降到O(N)级别,第一个问题被解决。 完成询问 我们来考虑第二个问题 注意到最小生成森林中任意两点之间的路径是唯一的。我们可以采用DFS找出该路径中的关键边,时间消耗为O(N) 考虑到N = 1000、Q = 105,这样的时间复杂度仍然不能很好解决本题 深入思考 询问树上两点之间路径上的最大边,这种问题可以使用动态树等工具实现,但是都过于复杂。 为了找出一个简单、实用的算法,我们需要仔细的研究最小生成森林的性质 Kruskal算法是建立最小生成森林中为我们所熟知的算法,以下我们将模拟一次Kruskal算法的执行 1 2 3 4 5 6 1 5 2 6 7 3 4 1 0 我们使用Kruskal算法生成上图的最小生成森林,将所有边按照权值从小到大加入 1 2 3 4 5 6 1 5 2 6 7 3 4 1 0 加入边(1, 2)为树边 注意到Query(1, 2)的关键边为(1, 2) 1 2 3 4 5 6 1 5 2 6 7 3 4 1 0 加入边(1, 3)为树边 注意到Query(1|2, 3)的关键边为(1, 3) 1 2 3 4 5 6 1 5 2 6 7 3 4 1 0 加入边(4, 6)为树边 注意到Query(4, 6)的关键边为(4, 6) 1 2 3 4 5 6 1 5 2 6 7 3 4 1 0 加入边(5, 6)为树边 注意到Query(4|6, 5)的关键边为(5, 6) 1 2 3 4 5 6 1 5 2 6 7 3 4 1 0 加入边(2, 3) 注意到已存在路径(2, 1) – (1, 3),所以(2, 3)非树边 1 2 3 4 5 6 1 5 2 6 7 3 4 1 0 加入边(3, 4)为树边 注意到Query(1|2|3,4|5|6)的关键边为(3, 4) 1 2 3 4 5 6 1 5 2 6 7 3 4 1 0 此时,我们已经的到了最小生成森林T 更重要的是,我们也已经得到了所有询问的回答! 重要引理的发现 对Kruskal过程仔细思考,我们得出关键: 引理二: 任意两点u、v间最短路径的关键边,为执行Kruskal算法中第一次将此两点连通的树边! Kruskal生成顺序森林 如何适当的应用引理二呢?所有的树边和结点需要被有机的结合起来,这里我们使用Kruskal生成顺序森林(简称顺序森林) 仍然考虑下图: Kruskal生成顺序森林 顺序森林的每个叶结点对应原图的一个结点,如下图所示,叶结点Vi对应原图的结点i Kruskal生成顺序森林 顺序森林的每个叶结点对应原图的一个结点,如下图所示,叶结点Vi对应原图的结点i V 1 V 2 V 3 V 4 V 5 V 6 Kruskal生成顺序森林 树边Ei被加入时,该边所连接的两个连通块在顺序森林中必然是两棵树 V 1 V 2 V 3 V 4 V 5 V 6 Kruskal生成顺序森林 建立顺序森林结点与Ei相对应,其左右孩子分别为两个连通块对应树的根结点 V 1 V 2 V 3 V 4 V 5 V 6 Kruskal生成顺序森林 我们模拟将所有的树边依次加入: V 1 V 2 V 3 V 4 V 5 V 6 Kruskal生成顺序森林 添加
您可能关注的文档
最近下载
- GB55023-2022施工脚手架通用规范(GB 55023-2022).doc VIP
- 心搏骤停和心肺脑复苏(共121张PPT).pptx VIP
- 四川成都环境投资集团有限公司招聘笔试题库2025.pdf
- 人教版四年级数学《上册全册》全套精品教学课件小学优秀课堂课件.pptx VIP
- 2025年新版人教版四年级上册英语 四上Unit 2 My friends单元整体教学设计(1).pdf VIP
- 建设工程项目管理操作手册.doc VIP
- 高中数学必修一常见题型归类.pdf VIP
- 七年级上册可爱的四川教案.pdf VIP
- 《商务礼仪与沟通》课程标准.docx VIP
- 北京现代汽车4S店建设项目可行性研究报告.pdf VIP
文档评论(0)