导航:首页 > 研究方法 > 最小生成树两个方法有什么区别

最小生成树两个方法有什么区别

发布时间:2022-02-27 18:44:23

‘壹’ 最短路和最小生成树有的区别是什么

终于见到个数据结构的问题.
最小生成树是从一节点到另一节点最少的边集.最短路是带权路径,权值最小.

‘贰’ 最小生成树和最短路的区别

不一定

比如5个点连了一圈边 5个边中有四个长度1,一个长度2

那么最小生成树是选4个长度为1的边

但是长度为2的边连接的两个点之间最短路是2,没必要绕一圈

‘叁’ 生成树的标准有哪些各有什么异同

一 区别

最小生成树能够保证整个拓扑图的所有路径之和最小,但不能保证任意两点之间是最短路径。

最短路径是从一点出发,到达目的地的路径最小。

二 实现方法

  1. 最小生成树

  2. 最小生成树有两种算法来得到:Prims算法和Kruskal算法。

  3. Kruskal算法:根据边的加权值以递增的方式,一次找出加权值最低的边来构建最小生成树,而且规定:每次添加的边不能造成生成树有回路,知道找到N-1个边为止。

  4. Prims算法:以每次加入一个的临界边来建立最小生成树,直到找到N-1个边为止。其规则为:以开始时生成树的集合(集合U)为起始的定点,然后找出与生成树集合邻接的边(集合V)中,加权值最小的边来建立生成树,为了确定新加入的边不会造成回路,所以每一个新加入的边,只允许有一个顶点在生成树集合中,重复执行此步骤,直到找到N-1个边为止。

  5. 2 最短路径

算法描述

(这里描述的是从节点1开始到各点的dijkstra算法,其中Wa->b表示a->b的边的权值,d(i)即为最短路径值)

1. 置集合S={2,3,n}, 数组d(1)=0, d(i)=W1->i(1,i之间存在边) or +无穷大(1.i之间不存在边)

2. 在S中,令d(j)=min{d(i),i属于S},令S=S-{j},若S为空集则算法结束,否则转3

3. 对全部i属于S,如果存在边j->i,那么置d(i)=min{d(i), d(j)+Wj->i},转2


Dijkstra算法思想为:设G=(V,E)是一个带权有向图,把图中顶点集合V分成两组,第一组为已求出最短路径的顶点集合(用S表示,初始时S中只有一个源点,以后每求得一条最短路径 , 就将 加入到集合S中,直到全部顶点都加入到S中,算法就结束了),第二组为其余未确定最短路径的顶点集合(用U表示),按最短路径长度的递增次序依次把第二组的顶点加入S中。在加入的过程中,总保持从源点v到S中各顶点的最短路径长度不大于从源点v到U中任何顶点的最短路径长度。此外,每个顶点对应一个距离,S中的顶点的距离就是从v到此顶点的最短路径长度,U中的顶点的距离,是从v到此顶点只包括S中的顶点为中间顶点的当前最短路径长度。

算法具体步骤

(1)初始时,S只包含源点,即S=,v的距离为0。U包含除v外的其他顶点,U中顶点u距离为边上的权(若v与u有边)或 ∞(若u不是v的出边邻接点)。

(2)从U中选取一个距离v最小的顶点k,把k,加入S中(该选定的距离就是v到k的最短路径长度)。

(3)以k为新考虑的中间点,修改U中各顶点的距离;若从源点v到顶点u(u U)的距离(经过顶点k)比原来距离(不经过顶点k)短,则修改顶点u的距离值,修改后的距离值为顶点k的距离加上边上的权。

(4)重复步骤(2)和(3)直到所有顶点都包含在S中。

复杂度分析

Dijkstra 算法的时间复杂度为O(n^2)空间复杂度取决于存储方式,邻接矩阵为O(n^2)

‘肆’ 最小生成树的两种算法

主要有两个:
1.普里姆(Prim)算法
特点:时间复杂度为O(n2).适合于求边稠密的最小生成树。
2.克鲁斯卡尔(Kruskal)算法
特点:时间复杂度为O(eloge)(e为网中边数),适合于求稀疏的网的最小生成树。

‘伍’ 最小生成树与最短路径的区别

最小生成树是用和最少的边集将一个图连成任意2点可达,并且这个边集的总长度最小。最短路径是一个图中2个点的最短距离。完全不是一个概念。

那也不一样啊,一点到其余各点的路径和最小,就是一点到其它点的最短路径和。差的太远了。

比如这样一个图(边权已标出)
******4
*****v--v
****5 \ / 3
*******v
****2 / \ 4
*****v v
最小生成树为
****v--v
******/
*****v
****/ \
***v v
总长为4+3+2+4=13

中间那个点到各点的最短路径为5+2+3+4=14
显然不一样啊,反例太多了,举了一种。

‘陆’ 最短路算法和最小生成树算法有什么区别

两个算法没有什么太多的联系,只能说是想法类似,都用了一定程度的贪心思维。
最短路是要求一点到另外的点的最短路径,只要最短的长度到达就好,除了出发点和终点外一概不管。如果不求一点到所有点的最短路,甚至可以不管所有点是否都联通。
最小生成树则要保证第一所有点都是联通的,不然就称不上是树了,而后保证树的边长度之和最小。

‘柒’ 最小生成树两种算法有何区别

主要有两个:
1.普里姆(Prim)算法

特点:时间复杂度为O(n2).适合于求边稠密的最小生成树。
2.克鲁斯卡尔(Kruskal)算法

特点:时间复杂度为O(eloge)(e为网中边数),适合于求稀疏的网的最小生成树。

‘捌’ 最小生成树和哈夫曼树有什么区别

最短路径和最小生成树是不同的概念.
最短路径是对于一个图的两个结点而言的.在一个图中,结点A通过某些结点和边可以走到结点B,那这些结点和边就组成一条A到B的路径,A到B的最短路径就是A到B的所有路径中边权值总和最小的那一条(或多条).
最小生成树是对于一个图本身而言的.对于一个有n个结点的无向连通图(边没有方向,任意两点之间都存在路径可以到达),必然可以去掉某些边,使得最终剩下n-1条边,并且n个结点仍然是连通的,这n个结点和n-1条边组成了原图的一个生成树,而最小生成树就是所有可能的生成树中n-1条边的权值总和最小的那一个(或多个).
最短路径常用算法有:floyd,dijkstra,SPFA,A*等
最小生成树常用算法有:prim,kruskal

阅读全文

与最小生成树两个方法有什么区别相关的资料

热点内容
没有灭火器如何正确的灭火方法 浏览:206
菜园豌豆种植方法 浏览:496
气喘民间用什么土方法好 浏览:136
长方形纸船方法步骤 浏览:840
数据分析方法思路 浏览:17
经纬度计算简单方法 浏览:67
医院常用止鼻血的方法 浏览:467
8个8相乘有什么巧算方法 浏览:640
减肥科学快速的方法 浏览:225
产后腰腹赘肉训练方法 浏览:768
公募基金调仓最佳方法 浏览:218
业务员口才训练方法 浏览:462
方法组合的例子有哪些 浏览:453
早期记事方法有哪些 浏览:433
原料药重金属检测方法 浏览:242
尼康相机的设置在哪里设置方法 浏览:470
无机化合物有哪些分类方法 浏览:523
乳香精油使用方法 浏览:321
有没有什么快速脱模的方法 浏览:849
滑菇的保存有哪些方法 浏览:455