最小生成树专题
要补一下 kruskal重构树 boruvka 严格/非严格次小生成树
无向图中选择若干条边构成一颗树,使得无向图联通,现在要求一颗边权和最小的树,叫做最小生成树
kruskal
\(O(mlogm)\) 并查集思想
贪心
边权从小到大排序,然后从小开始合并节点,已经在一个并查集的点不要合并,然后等到所有点都在一个并查集即联通块数量为\(1\)时停止,记录选择的边
\(m\)为边数
\(n\)为点数
prim
贪心(\(lowcost\)数组记录节点\(i\)与已经选定的点中直接边的距离最小值,\(closest\)数组记录此时这个直接边连接的已经选定的点的编号
初始化选定一个任意点,然后更新\(lowcost\) \(closest\)
\(n\)次循环,每一次找到所有未选定点的\(lowcost\)的最小值(多个时选择任何一个),将这个点选定,然后遍历这个点连的边,更新\(lowcost\) \(closest\))
朴素\(O(n^2)\)
优先队列\(mlogm\)
手写二叉堆\(mlogn\)
fib堆\(O(nlogn + m)\)
dijkstra复杂度同理