zoukankan      html  css  js  c++  java
  • 最小生成树(普利姆算法、克鲁斯卡尔算法)(逻辑理解小结)

    最小生成树概述

    最小生成树其实是最小权重生成树的简称。即在一给定的无向图G = (V, E) 中,(u, v) 代表连接顶点 u 与顶点 v 的边(即),而 w(u, v) 代表此边的权重,若存在 T 为 E 的子集(即)且为无循环图,使得 T的 w(T) 最小,则此 T 为 G 的最小生成树

    最小生成树算法

    1     普利姆算法

    将图中各边按其权值由小到大的次序顺序选取,若选边后不形成回路,则保留作为一条边, 若形成回路则除去.依次选够(n-1)条边,即得最小生成树.(n为顶点数)

    2     克鲁斯卡尔算法

    从指定顶点开始将它加入集合中,然后将集合内的顶点与集合外的顶点所构成的所有边中选取权值最小的一条边作为生成树的边,并将集合外的那个顶点加入到集合中,表示该顶点已连通.再用集合内的顶点与集合外的顶点构成的边中找最小的边,并将相应的顶点加入集合中,如此下去直到全部顶点都加入到集合中,即得最小生成树.

    两种算法的时间复杂度分析

    普利姆算法适合稠密图,其时间复杂度为O(n^2),其时间复杂度与边的数目无关,而克鲁斯卡尔算法的时间复杂度为O(eloge)跟边的数目有关,适合稀疏图。(若图的顶点数为n,边数为e)。

  • 相关阅读:
    select_related与prefetch_related
    settings源码
    Django路由系统
    Django
    Django-下载安装-配置-创建Django项目-三板斧简单使用
    前端相关知识
    xadmin后台管理
    redis数据库
    ❥git❥-----协同开发,冲突解决 合并分支(项目中使用git)
    git的基本使用
  • 原文地址:https://www.cnblogs.com/Sherlock-J/p/12926081.html
Copyright © 2011-2022 走看看