普利姆算法(prim)求最小生成树(MST)过程详解

生活中最小生成树的应用十分广泛,比如:要连通n个城市需要n-1条边线路,那么怎么样建设才能使工程造价最小呢?可以把线路的造价看成权值求这几个城市的连通图的最小生成树。求最小造价的过程也就转化成求最小生成树的过程,则最小生成树表示使其造价最小的生成树。
那么怎么样用普利姆算法(prim算法)求最小生成树(MST)?
此以图例方式详述prim算法求最小生成树过程,希望对大家有帮助!

一、最小生成树相关基础知识

  • 01

    最小生成树相关概念: 带权图:边赋以权值的图称为网或带权图,带权图的生成树也是带权的,生成树T各边的权值总和称为该树的权。 最小生成树(MST):权值最小的生成树。 生成树和最小生成树的应用:要连通n个城市需要n-1条边线路。可以把边上的权值解释为线路的造价。则最小生成树表示使其造价最小的生成树。

  • 02

    最小生成树的性质: MST性质:假设G=(V,E)是一个连通网,U是顶点V的一个非空子集。若(u,v)是一条具有最小权值的边,其中u∈U,v∈V-U,则必存在一棵包含边(u,v)的最小生成树。 构造网的最小生成树必须解决下面两个问题: (1)尽可能选取权值小的边,但不能构成回路; (2)选取n-1条恰当的边以连通n个顶点;

    二、普利姆算法(prim算法)基本思想

    • 01

      prim算法基本思想: 假设G=(V,E)是连通的,TE是G上最小生成树中边的集合。算法从U={u0}(u0∈V)、TE={}开始。重复执行下列操作: 在所有u∈U,v∈V-U的边(u,v)∈E中找一条权值最小的边(u0,v0)并入集合TE中,同时v0并入U,直到V=U为止。 此时,TE中必有n-1条边,T=(V,TE)为G的最小生成树。 Prim算法的核心:始终保持TE中的边集构成一棵生成树。 看了上面一大段文字是否感觉有点晕?为了便于大家更好的理解,接下来进行算法过程的分步图解!

    三、普利姆求最小生成树算法过程图解

    • 01

      第一步:随意选取起点 图中有9个顶点v1-v9,集合表示为:V={v1,....,V9},每条边的边权值都在图上;在进行prim算法时,我们先随意选择一个顶点作为起始点(起始点的选取不会影响最小生成树结果),在此我们一般选择v1作为起始点,现在我们设U集合为当前所找到最小生成树里面的顶点,TE集合为所找到的边。 状态如下:U={v1}; TE={};

    • 02

      第二步:在前一步的基础上寻找最小权值 查找一个顶点在U={v1}集合中,另一个顶点在V-U集合中的最小权值,如下图,在红线相交的线上找最小值。 通过图中我们可以看到边v1-v8的权值最小为2,那么将v8加入到U集合,(v1,v8)加入到TE。 状态如下:U={v1,v8}; TE={(v1,v8)};

    • 03

      第三步:继续寻找最小权值 查找一个顶点在U={v1,v8}集合中,另一个顶点在V-U集合中的最小权值,如下图,在红线相交的线上找最小值。 通过图中我们可以看到边v8-v9的权值最小为4,那么将v9加入到U集合,(v8,v9)加入到TE。 状态如下:U={v1,v8,v9}; TE={(v1,v8),(v8,v9)};

    • 04

      第四步:在前一步的基础上,继续寻找最小权值 查找一个顶点在U={v1,v8,v9}集合中,另一个顶点在V-U集合中的最小权值,如下图,在红线相交的线上找最小值。 通过图中我们可以看到边v9-v2的权值最小为1,那么将v2加入到U集合,(v9,v2)加入到TE。 状态如下:U={v1,v8,v9,v2}; TE={(v1,v8),(v8,v9),(v9,v2)};

    • 05

      第五步:继续在前一步的基础上,寻找最小权值 查找一个顶点在U={v1,v8,v9,v2}集合中,另一个顶点在V-U集合中的最小权值,如下图,在红线相交的线上找最小值。 通过图中我们可以看到边v2-v3的权值最小为3,那么将v3加入到U集合,(v2,v3)加入到TE。 状态如下:U={v1,v8,v9,v2,v3}; TE={(v1,v8),(v8,v9),(v9,v2),(v2,v3)};

    • 06

      第五~九步:继续在前一步的基础上,寻找最小权值 如此循环一下直到找到所有顶点为止。到这大家应该对普利姆算法求解最小生成树的过程有所知晓,但需注意以下三点: (1)每次都选取权值最小的边,但不能构成回路,构成环路的边则舍弃。如图中的(v1,v9),(v1,v2)等构成回路舍弃 (2)遇到权值相等,又均不构成回路的边,随意选择哪一条,均不影响生成树结果。如图中的(v3,v4),(v6,v5)权值均为9,选择哪一条在先均不影响最小生成树的生成结果。 (3)选取n-1条恰当的边以连通n个顶点。 完整的算法步骤如图所示:

      四、小结

      • 01

        (1)最小生成树(MST)是指权值最小的生成树。 (2)prim算法是求最小生成树的算法之一,其他算法还有kruskal算法 (3)其时间复杂度为O(n^2),与边得数目无关。prim算法适合稠密图。

      (0)

      相关推荐

      • 算法的五个基本特性详解

        算法有5个基本特性,那么每个特性有什么特点呢? 操作方法 01 1.算法的五个基本特性分别是:输入.输出.有穷性.确定性和可行性. 输入/输出:算法具有零个或多个输入,算法至少具有一个或多个输出. 0 ...

      • 冒险岛保罗普利托怎么出

        冒险岛Take V攻略,冒险岛Take V是游戏中最新的活动,这个活动一共有四个阶段,每个阶段的玩法都不一样,下面就为大家带来了冒险岛Take V活动流程攻略图文详解,一起来看看吧! 操作方法 01 ...

      • 普利策奖得主Jay Dickman教你领悟光线

        可用光就是您可以利用的任何光线!-W. Eugene Smith Edward Hopper的绘画作品<夜鹰>就像该流派中其他所有美国绘画作品那样表现了现实主义者的活动.大学生们将这幅作品 ...

      • 普利策奖得主Jay Dickman教你拍摄照片

        摄影记录了人类脸上丰富的表情,记录了人类世世代代所生活的美丽世界,还记录了人类创造的财富和遭受的困扰.它是明确说明很多问题的主要力量. -Edward Steichen 14-35mm镜头,1/60秒 ...

      • 2016支付宝账单怎么算影响力 支付宝账单影响力算法详解

        2016支付宝账单影响力怎么算? 在支付宝首页你就可以发现2016支付宝账单的界面,点击进去 然后就能帮你计算出你2016年的支付宝账单详情和排名 支付宝账单影响力分数算法介绍: 饮食消费最高单笔.总 ...

      • 威尔克姆E2.0T怎么安装 威尔克姆E2.0T安装教程图文详解

        威尔克姆E2.0T怎么安装?威尔克姆是国际使用最广泛的绣花软件,E2.0T版本是在2013年是时候推出的版本,收到广大绣花制版师的欢迎,本文就给大家介绍一下软件的安装方法,本方法适用于xp win7 ...

      • 饥荒哈姆雷特 遗迹废墟洞窟 详解

        遗迹废墟洞窟对于第一次接触饥荒哈姆雷特的人可能有些陌生.它和以前版本饥荒的地下洞穴有相识的地方,但也有不同.下面给大家详细介绍一下. 遗迹废墟洞窟的种类 01 普通遗迹废墟洞窟.如下图,入口的门框上面 ...

      • 惠普电脑用U盘重装win7系统完整教程详解

        惠普电脑是目前市场上比较大的一个电脑品牌之一,有着一定量的用户.为了让各位友友们能更好的使用惠普电脑,在此和大家分享如何轻松用U盘给惠普电脑重装win7系统. 一.制作启动U盘 01 在能正常使用的电 ...

      • 饥荒哈姆雷特 猪人商店详解

        猪人交易是饥荒哈姆雷特的一大特色,在猪人商店进行交易也是游戏内获取食物以及各种稀有材料(比如齿轮)和工具的主要途径. 出生岛上的猪人商店 01 饥荒哈姆雷特开局所在的岛上的猪镇里面有5个商店.一般这个 ...