瓶颈生成树的浅谈

定义

​ 见百度百科,下面是我自己的理解,就是所有的生成树中最大边权最小的那一棵树,为啥叫瓶颈生成树呢?瓶颈就是关键的限制,在生成树的要求边权最小,关键取决于边权最大的那条边。


定理

​ 最小生成树是瓶颈生成树的充分非必要条件。

即:最小生成树一定是瓶颈生成树,但瓶颈生成树不一定是最小生成树。

这个定理于是就给我们了一种求解瓶颈生成树的思路:利用求最小生成树的算法来求。

这里结合 k r u s k a l kruskal kruskal算法会更容易理解。

因为 k r u s k a l kruskal kruskal是通过并查集+对边排序,当边数 = n − 1 =n-1 =n1时即为最小生成树,此时最第 n − 1 n-1 n1条边就是瓶颈生成树的最大边权,满足最大边权最小。

这个定理证明,可以用反证法,见百度百科。


扩展

​ 有瓶颈生成树,也就有最小瓶颈路:给定起点 s s s,终点 t t t,求所有路径中最大边权最小的一条路径。

每当我们看到最大值最小的时候,我们就自然想到二分,事实上这个问题是可以用二分解决的,当然用定理也可以解决。

法1(定理):
利用 k r u s k a l kruskal kruskal对边排序,当 s , t s,t s,t连通时的边就是答案。

法2(二分):

可以二分答案,然后判断 s , t s,t s,t是否连通即可,判断连通用 b f s bfs bfs或者 d f s dfs dfs都可。

法3(最短路):
将最短路改一下,维护最大边权的最小值。

我的一个习题代码

传送门

习题2瓶颈生成树

传送门