zoukankan      html  css  js  c++  java
  • 算法分析与设计实验报告 Project1

    1. 问题
      我们定义无向连通图的最小生成树为边权和最小的生成树

    2. 解析
      求最小生成树通常有两种做法:
      1.Kruskal
      将边权从小到大加边,若加边以后成环则放弃加边,直到加到n – 1条边,结束。(n为点集大小)加得到的边集就构成了一颗最小生成树。
      2.Prime算法
      用集合A,B分别表示得到的点集和未得到的点集,初始时刻A为空,B为所有点。
      维护出A到B各个点的最小距离,每次将最小距离所在的边加入边集和对应的点加入A,移除B。重复上述步骤,直到B空,得到的边集就是要求的最小生成树。

    3. 设计

    4. Kruskal

    5. Prim

    6. 分析
      n表示点数,m表示边数

    7. Kruskal
      如果我们选用O(mlogm)的排序算法,并且使用并查集优化判环,那么复杂度显然是
      O(mlogm)。(α(m) < logm)

    8. Prim
      每次用点来更新,用类似于最短路的方法把新加入的点松弛,如果我们使用堆优化来快速找出最短的边集,复杂度应当是O((n+m)logn)。(logn来自每次找到dis最小的点)

    9. 源码
      https://github.com/MQFLLY/Algorithm-Class-codes/blob/main/project1

  • 相关阅读:
    设计模式
    WCF 4 安全性和 WIF 简介
    锁,性能调优
    javascript 异步
    javascript的回调函数
    HTML 5 简介
    CSS3 教程
    implementation of python string
    Extending Python with C or C++
    python,deep copy,shallow copy
  • 原文地址:https://www.cnblogs.com/hznumqf/p/14502313.html
Copyright © 2011-2022 走看看