码迷,mamicode.com
首页 > 其他好文 > 详细

0阶段-第二题-生成树与LCA

时间:2021-07-01 16:51:09      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:常用   个人   加速   时间复杂度   最小生成树   www   内容   地址   范围   

缓缓加速
第二日,生成树与LCA

从上至下知识点对应为:
1-3、最小生成树(MST),prim或kruskal算法
4、求多颗最小生成树(或许这么称呼不太严谨),kruskal算法
5、最大瓶颈生成树(MBST),prim或kruskal算法
6、LCA,树上倍增
7、最大生成树+LCA,树上倍增+Kruskal重构树

一些新内容,整理一下:
1、prim与kruscal算法
prim算法一般不常用,个人认为没有什么明显的性质。不过可能在某些暴力方法中有些用途。
Kruscal:设有n个节点,kruscal算法开始时可看作有n棵最小生成树,每加一条边减少一颗最小生成树(因为一条边会把两颗树合并为一颗最小生成树),如果题意要求把原图划分为k个代价最小的连通子图,那么这一利用这一个性质。没有证明。
如果稠密图kruscal超时(eloge)。可以考虑朴素的prim(n2)

2、瓶颈生成树
最大瓶颈生成树为树上边权最小值最大的树,最小瓶颈树为书上边权最大值最小的生成树。 最小生成树一定是最小瓶颈树。 最大生成树一定是最大瓶颈树(猜测)。 反之不成立。

3、树上倍增
利用倍增思想。求LCA时,其中关键为fa[x][i],表示节点x的第2^i的祖先。这样通过预处理fa,可以把单次朴素查询LCA的O(n)复杂度,优化到O(logN),N时数据范围的上限。 相关利用倍增思想的还有ST表,两者很相似。

4、kruscal重构树与瓶颈路径
两点间(x,y):
最小瓶颈路径:连通x、y两点所有路径的最大边权的最小值。
最大瓶颈路径:连通x、y两点所有路径的最小边权的最大值。
kruscal重构树:利用kruscal算法合并的一颗与生成树不用的树,其中要把边拆点,点权值为所拆边权值,按照并查集合并的树形加边。
重构最小生成树,那么LCA(x,y)的点权值为最小瓶颈路径。
重构最大生成树,那么LCA(x,y)的点权值为最大瓶颈路径。
瓶颈路径可以用floyd,但是时间复杂度为O(n的立方),显然超时。

学习参考地址https://www.cnblogs.com/ww3113306/p/9746449.html

0阶段-第二题-生成树与LCA

标签:常用   个人   加速   时间复杂度   最小生成树   www   内容   地址   范围   

原文地址:https://www.cnblogs.com/Flowyuan-Foreverworld/p/14957059.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!