货车运输
借这一道题目来介绍一下最小瓶颈路和Kruscal重构树
首先本来这道题目我其实是没看出来是最大生成树的(因为不知道上面两个东西),然后我想的是二分,当然也可以做,但是复杂度多一个
对上面两个东西的介绍见OI-wiki
下面是一些解释
最小瓶颈路的性质的第一句话说“根据最小生成树定义”,其实这个根据定义是出不来的,我们需要证明,而且这个证明不是简单的反证法就可以证明成功的,要用比较复杂的反证
我们考虑某一对点
对这样的一条边,我们考虑Kruscal算法的过程,当遍历到这条边的时候,我们没有将这条边加入Kruscal,因为这条边的两个端点已经存在一条路径了,而且这条路径上的每一条边都是最终MST上的边且这些边的权值都更小,于是我们就可以将这条边替换为一条由全部在MST上的边组成的路径。也就是说,我们可以将我们找到的任意一条其他的非MST路径上不是MST中的边全部换成若干条MST上的边,而且最大边权会变小(或者至少不会变差),所以最后所有边都是MST上的边而且答案不会更劣;由于MST上
我们以上的证明过程也说明我们随便求一个MST就好了
另一种证明方法:假设从
然后这道题目只会用到最小瓶颈路
接下来介绍一下Kruscal重构树
定义中说“得到了一颗恰有
那么为什么
第一个等号见上文证明;第二个等号我们来考虑Kruscal的过程
对于
在添加这条边之前,
我们还可以发现,最终得到的Kruscal重构树,父亲的权值一定不会低于两个儿子的权值,也就是说深度越浅权值越大
其实最简单的理解方式就是在某一时刻,原图形成的若干个连通块对应着Kruscal重构森林中的某一颗树,于是所有性质都很显然了
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库