首页 > 其他分享 >Kurskal重构树

Kurskal重构树

时间:2023-09-19 17:46:17浏览次数:44  
标签:重构 结点 Kurskal 边权 路径 最小 瓶颈 两点

Kurskal重构树

学习博客(推荐)

瓶颈

我们定义图上\(u \longrightarrow v\)路径的瓶颈为,这条路径上边权的最大值。

我们希望求出,一幅图上任意两点之间的最小瓶颈路

由于,若两点之间存在至少一条路径,那么这两点间的最小瓶颈路至多只有一条。

最小瓶颈路

无向图\(G\)中\(x\) 到\(y\)的最小瓶颈路是这样一条简单路径,满足这条路径上的最大边权在所有\(x\)到\(y\)的简单路径中是最小的。

关键点:两个点之间所有简单路径上的最大边权的最小值。

Kruskal算法:

  1. 将所有边按照边权大小升序排序。
  2. 按上述升序遍历所有边,边的两点若存在至少一点不在最小生成树上,那么我们将该边加入最小生成树中。否则继续。
  3. 当加入树中的边数达到点数\(-1\)时,即可退出遍历,最小生成树构造成功。

思考一下上述实现过程,我们不难发现,加入边时我们用的操作是并查集的合并操作,即合并两个连通块。

此时,我们加入的这条边是按照上述算法找到的,那么按照\(kruskal\)的实现,我们能发现,此时的边权\(w_i\)一定大于等于之前的所有边,同时一定小于等于之后的所有边(按升序遍历的顺序)。

之前的边没有使得\(x和y\)连通,也就是说,\(w_i\)就是使\(x,y\)两点连通的最小瓶颈。

由此,我们能通过\(Kruskal\)从原图中找到\(n -1\)条边,这些边就是两两点之间的最小瓶颈路。

重构树

如果在合并两点的时候,我们建立一个新结点作为两点共同的父节点(像二叉树一样,该父节点的权值为边权),这样子合并,我们最终会得到一颗叶子结点全为真结点\((n个来自原图得到点)\),非叶子结\((有n-1条边所以有非叶子结点的数量也是n-1)\)就是边权点的二叉树。

重构树的性质:

我们定义\(f(x,y)\)表示\(x,y\)两点最小瓶颈路的瓶颈,\(w(x)\)表示结点\(x\)的权值,当然,叶子结点不是边转化而来,没有权值。

  1. \(f(x,y) = w(lca(x,y))\)。

\(lca(x,y)\)往下,二者之间没有路径。\(lca(x,y)\)往上,边权只会更大。

因为,先合并的连通块二者之间的边权肯定更小\((kruskal就是升序遍历)\)。

例题:

2021icpc上海站Life is a Game
2023牛客暑期多校6 A Tree

标签:重构,结点,Kurskal,边权,路径,最小,瓶颈,两点
From: https://www.cnblogs.com/value0/p/17715286.html

相关文章

  • “源启2.0”:从自上而下的解构,到自下而上的重构
    从垂直打穿、到应用重构,中电金信赋能行业数字化转型之路既“向下走”、也“向上看”。“向上”先理解和吃透客户的企业战略,进而自上而下地将企业战略拆解为业务架构,“向下”再将业务架构拆解为应用架构和数据架构,并进一步对齐技术架构。而在此过程中,上至“应用重构”,下至“数字基础......
  • “源启2.0”:从自上而下的解构,到自下而上的重构
    从垂直打穿、到应用重构,中电金信赋能行业数字化转型之路既“向下走”、也“向上看”。“向上”先理解和吃透客户的企业战略,进而自上而下地将企业战略拆解为业务架构,“向下”再将业务架构拆解为应用架构和数据架构,并进一步对齐技术架构。而在此过程中,上至“应用重构”,下至“数字基......
  • 【配电网重构】基于遗传实现配电网重构附matlab实现
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • Kruskal重构树 学习笔记
    Kruskal重构树最大生成树将部分内容倒置即可回顾:Kruskal基本信息求解最小生成树时间复杂度:\(O(m\logm)\)更适合稀疏图算法思想按照边权从小到大排序依次枚举每一条边,如果这一条边两侧不连通,则加入这条边代码点击查看代码#include<bits/stdc++.h>#define......
  • 如何提升代码质量,重构并非“万能药”
    随着编程技术的不断进步,编程语言变得越来越高级,功能封装也越来越完善。各种技术都在帮助程序员提高编写代码的效率。通过层层封装,程序员似乎不需要了解技术细节,只需逐行翻译需求内容即可。许多程序员不了解如何组织代码、提升运行效率以及底层基于的原理是什么,但是他们编写的代码......
  • 数据库重构之路,以 OrientDB 到 NebulaGraph 为例
    “本文由社区用户@阿七从第一视角讲述其团队重构图数据库的过程,首发于阿七公众号「浅谈架构」”原文出处:https://mp.weixin.qq.com/s/WIJNq-nuuAGtMjYo5rPLyg一、写在前面读过我公众号文章的同学都知道,我做过很多次重构,可以说是“重构钉子户”,但是这次,重构图数据库OrientDB......
  • 重构:在新底座之上让应用重生
    应用重构正在开启一条云原生时代的新赛道。数字化发展到今天,企业面临的挑战不仅来自技术层面,更来自认知层面。新架构、新应用正在重新定义数字生产力,重塑商业模式与市场核心竞争力。对金融行业来说,也是如此,一场关于“应用重构”的蜕变与新生正在悄然发生。 是时候应用重构了......
  • xmind文件数据解析重构成mindmap可识别数据
    【需求背景】测试平台开发中,需要引入前端mindmap模块,进行在线xmind实时解析并前端展示【卡点难点】选取什么库进行xmind解析如何转换成mindmap可以识别的数据【xmind解析】直接选用官方xmind-sdk-python,发现已经2018后停止维护了,解析最新版本报无法识别错误,弃用直接去......
  • 重构第一个示例
    《重构改善既有代码的设计》马丁富勒 第一章戏剧演出团原始代码invoices.json[{"customer":"BigCo","performances":[{"playId":"hamlet","audience":55},{"......
  • TX-Mini项目-指标监控服务重构-总结
    项目概述本项目的背景是,当前企业内部使用的指标监控服务的方案的成本很高,无法符合用户的需求,于是需要调研并对比测试市面上比较热门的几款开源的监控方案(选择了通用的OpenTelemetry协议:Signoz,otel-collector,jaeger;uptrace不能商用),去重构原有服务,实现降本增效:减少监控服务本身的接......