当前位置: 首页 > news >正文

最小瓶颈生成树

作业是鸽子更新的动力。

\(\text{MBST}\)\(\text{Minimum Bottleneck Spanning Tree}\))指的是求一颗生成树,其中最大的边权最小(所以也叫 \(\text{min-max spanning tree}\))。和最小树形图一样,也有有向图版本(\(\text{MBSA}\))。

MST

考虑到我们求解最小生成树的过程,不难发现 \(\text{MST}\) 就是一个 \(\text{MBST}\)

假设有一颗 \(\text{MST}\) \(T\)不是 \(\text{MBST}\)。也就是存在一颗生成树 \(T^\prime\),其中所有边权都小于 \(T\) 中最大边权 \(w(e)\),那么考虑在 \(T^\prime\) 却不在 \(T\) 中的边 \(e^\prime\),要么其不与一条包含 \(e\)\(T\) 上路径成环,此时 \(T^\prime\) 也必须选中 \(e\);要么与一条包含 \(e\)\(T\) 上路径成环,此时删去 \(e\),加入 \(e^\prime\) 可以得到比 \(T\) 更小的生成树。综上,可知不存在这样的 \(T^\prime\)。也就是 \(\text{MST}\) 都是 \(\text{MBST}\)

虽然有线性最小生成树的求法,但是对于 \(\text{MBST}\),我们有更简单的求法。

无向图

考虑图 \(G=\langle V,E\rangle,w:E\mapsto\mathbb{R}\)。我们考虑一个分治的做法,二分边集为 \(E_{l},E_{r}\),满足 \(\forall l\in E_l,r\in E_r,w(l)\le w(r)\)\(E_l\cup E_r=E,||E_l|-|E_r||\le1\)

随后,我们对于 \(G_l=\langle V,E_l\rangle\) 递归地做,终止条件是边集为空或只有 \(1\) 条边(那么就连边)。如果 \(G_l\) 中已经求出一颗 \(\text{MBST}\),那么我们就不需要考虑 \(E_r\) 中的边了。

否则,\(G_l\) 求解后,\(G\) 会被分成若干连通块 \(c_1,c_2,c_3\ldots c_k\),把每个连通块缩点得到 \(C=\{c_1,c_2,c_3\ldots c_k\}\),然后保留连通块间属于 \(E_r\) 的边,使得 \(\forall e=(u,v)\in E_r\land u\in c_i\land v\in c_j,e^\prime=(c_i,c_j)\in E^\prime,w^\prime(e^\prime)=w(e)\)。然后在新图 \(G^\prime=\langle C,E^\prime\rangle,w^\prime:E^\prime\mapsto\mathbb{R}\) 上递归即可。

看上去这是一个 \(T(|E|)=2T(\frac{|E|}{2})+O(|E|)\Rightarrow T(|E|)=O(|E|\log |E|)\) 的做法,但是可以注意到有一个剪枝。

对于 \(G_l\),我们跑一个 \(O(|V|+|E|)\)\(\text{dfs}\) 就可以判断其是否连通,如果连通就一定可以找到一个生成树没有 \(E_r\) 中的边,那么加入 \(E_r\) 中的边就没有必要;否则瓶颈一定由 \(E_r\) 中的边提供,此时我们只需要计算 \(G^\prime\) 的答案即可。于是 \(T(|E|)=T(\frac{|E|}{2})+O(|V|+|E|)\Rightarrow T(|E|)=O(|V|\log|E|+|E|)\)

而在 \(\text{dfs}\) 前,若 \(|V|-|E|>1\) 就一定不可能连通,无需 \(\text{dfs}\),于是可以约束到 \(|V|=O(|E|)\),那么此时 \(T(|E|)=T(\frac{|E|}{2})+O(|E|)\Rightarrow T(|E|)=O(|E|)\)

有向图

\(\text{MST}\) 不同,此时我们就不需要关注路径之间的重叠关系了,直接运行最短路的 \(\text{Dijkstra}\) 算法即可,将松弛的 \(d(v)=\min\{d(v),d(p)+w(p,v)\}\) 修改为 \(d(v)=\min\{d(v),\min\{d(p),w(p,v)\}\}\) 即可。运用 \(\text{Fib}\) 堆优化,依然可以做到 \(O(|V|\log|V|+|E|)\),而答案就是所有点的 \(d\) 值中的最大值。

http://www.jsqmd.com/news/24755/

相关文章:

  • 小程序语音通话让智能设备会“说话”
  • 易基因: NG (IF29):颠覆认知!深圳仙湖植物园刘阳团队WGBS及超级泛基因组分析揭示苔藓植物基因家族比维管植物更丰富|项目文章
  • 2025年口碑好的工业制冷供应厂家推荐
  • 2025 年 150 吨地磅,180 吨地磅,200 吨地磅厂家最新推荐,产能、专利、环保三维数据透视!
  • MySql8.0公共表表达式『CTE』
  • 2025 年进口地磅,出口地磅,100 吨地磅,120 吨地磅厂家最新推荐,产能、专利、环保三维数据透视!
  • 精通CTS与低功耗时钟设计
  • GISDataMgr(数据管理工具)
  • 202510月年口碑好的板式家具品牌前十榜单推荐
  • 2025年板式家具品牌行业趋势与top5排名解析
  • 2025年10月口碑好的板式家具厂家前十名推荐
  • 学习笔记510—怎么去除”想要访问你的钥匙串中的密钥“Adobe Licensing ”若要给予许可
  • 蓝狐家庭维修小程序系统:一站式家庭维修服务解决方案
  • 打造智慧体育场馆的“视觉中枢”:国标GB28181算法算力平台EasyGBS助力体育中心实现全域感知与智能升级
  • 完整教程:【强化学习】#8 DQN(深度Q学习)
  • 达梦删除数据文件后恢复
  • 贪心训练
  • 漫格搭子交友系统:一站式同城社交解决方案
  • 多功能名片小程序系统:助力企业与个人高效拓展人脉
  • ETL调度最佳实践:避免高峰期任务冲突与资源争抢 - 指南
  • 多线程基础-创建线程
  • dataframe 和 numpy 数组有什么不同?
  • 《植物大战僵尸:重植版》无障碍补丁 | An accessibility mod for Plants vs. Zombies™: Replanted
  • rac日常维护
  • 2025年上海直连全球云网络公司权威推荐榜单:AIGPU专用算力/GPU计费模式/GPU弹性算力源头厂家精选
  • 打开双wifi STA+AP并发 - M
  • drools脚本中 matches 的用法
  • 2025年重庆别墅装修公司权威推荐榜单:大宅设计/大平层设计/别墅设计源头厂家精选
  • IvorySQL 社区摆摊啦,GOTC 2025 开源集市等你来玩!
  • python 界面开发笔记