zoukankan      html  css  js  c++  java
  • 最小 & 次小生成树浅谈

    约定:以下用 MST 表示最小生成树,SeMST 表示次小生成树。


    一、MST

    MST 有两种较常用的算法,分别是 Kruskal 算法和 Prim 算法。由于一些原因,这里只介绍 Kruskal 算法。
    Kruskal 算法是一个贪心算法。它的根本是,要求生成树边权和最小,就尝试让每一条边都最小。
    它的核心思路是:先把边按边权升序排序。然后从小到大枚举边。定义一个边集,判断将当前边加入该集合后是否会出现一个环。如果是,就不加入。否则就将这条边加入 MST 和边集中。如果到了某个时刻 MST 的边数到达了 ((n-1)), 则退出枚举。
    排序的复杂度为 (O(mlog m)), 之后的枚举中,需要循环 (O(m)) 次,在循环中需要维护一个集合。可以发现,这个集合可以使用并查集实现,单次查找或插入的复杂度为 (O(alpha(n))=O(1)).
    综上,Kruskal 算法的时间复杂度为排序的 (O(mlog m)).


    二、SeMST
    咕了啊,这里发个链接吧,讲得特别好!我就是看这个题解才看懂的!
    https://www.acwing.com/solution/content/2884/

  • 相关阅读:
    第二次作业
    第一次作业
    新博客用户·
    李秋红130705010066
    李秋红130705010066
    李秋红130705010066
    李秋红130705010066
    李秋红130705010066
    第五次作业
    第四次作业
  • 原文地址:https://www.cnblogs.com/Xray-luogu/p/14161544.html
Copyright © 2011-2022 走看看