当前位置:首页 » 操作系统 » primkruskal算法

primkruskal算法

发布时间: 2022-04-14 13:16:10

① Kruskal算法和Prim算法构造它的一棵最小代价生成树的过程

Prim算法复杂度:O(n2), 与边无关,适合求边稠密的网的最小生成树。

算法思想:假设N={V,{E}}是连通网,TE是N上最小生成树中边的集合。算法从U={u0},TE ={}开始,重复执行下述操作:在所有u∈U,v∈V-U的边(u,v)∈E中找一条代价最小的边(u0,v0)并入集合TE,同时v0并入U,直至U=V为止。

Kruskal算法复杂度:O(eloge),相对于Prim而言,适合求边稀疏的网的最小生成树。

算法思想:最小生成树的初始状态为只有n个顶点而无边的非连通图T=(V,{}),图中每个顶点自成一个连通分量。在E中选择代价最小的边,若该边依附的顶点落在T中不同的连通分量上,则将此边加入到T中,否则舍去次边而选择下一条代价最小的边。直至T中所有顶点都在同一连通分量上为止。

② prim和kruscal算法得到的最小生成树是否一样

应该不一样。可以用一个图根据两算法试一下,若一样,再修改图,之后应该就可以了。
(网络或者查书本更加有效……)
构造G的最小生成树的Prim算法的基本思想是:首先置S={1},然后,只要S是V的真子集,就作如下的贪心选择:选取满足条件iS,jV-S,且c[i][j]最小的边,将顶点j添加到S中。
这个过程一直进行到S=V时为止。
Kruskal算法构造G的最小生成树:将所有的边按权从小到大排序。然后从第一条边开始,依边权递增的顺序查看每一条边,并按下述方法连接2个不同的连通分支:当查看到第k条边(v, w)时,如果端点v和w分别是当前2个不同的连通分支T1和T2中的顶点时,就用边(v, w)将T1和T2连接成一个连通分支,然后继续查看第k+1条边;如果端点v和w在当前的同一个连通分支中,就直接再查看第k+1条边。这个过程一直进行到只剩下一个连通分支时为止

③ prim算法和kruskal算法的区别

边数较少可以用Kruskal,因为Kruskal算法每次查找最短的边。 边数较多可以用Prim,因为它是每次加一个顶点,对边数多的适用。

④ 已知一个无向图如下图所示,要求分别用Prim和Kruskal算法生成最小树(假设以①为起点,试画出

p,树向外扩张,找最短外扩路径

k,增加一条不会造成回路的边(现在选中的边可以暂不相连)

按照prim是:(从起点到终点的边)

46,45,51,63,12,32

按照kruskal是:

46,15,45,63,12,32

克鲁斯卡尔算法思想先将边中的权值从小到大排序,每次找出候选边中权值最小的边,就将该边并入生成树中。重复此过程直到所有边都被检测完为止。

其中要注意的是克鲁斯卡尔算法需要用到并查集,以此来判断接下来要并入的边是否会和已并入的边构成回路。这两个图分别用普里姆和克鲁斯卡尔生成的最小生成树见图。

(4)primkruskal算法扩展阅读:

无向图G=<V,E>,其中:

1、V是非空集合,称为顶点集。

2、E是V中元素构成的无序二元组的集合,称为边集。

解释

直观来说,若一个图中每条边都是无方向的,则称为无向图。

无向边的表示

无向图中的边均是顶点的无序对,无序对通常用圆括号表示。

⑤ prim算法构造出的最小生成树唯一吗prim算法和kruskal算法构造出的最小生成树一样吗

不唯一,两种算法构造出的最小生成不一定相同。

⑥ 13.用Prim算法和Kruskal算法构造图的最小生成树,所得到的最小生成树是否相同

如果原来的图里面任何两条边长都不相同,那么最小生成树是唯一的,此时不管用什么方法算出来的都是一样的
但是如果图里有相等的边,那么最小生成树可能会不唯一,这样就无法保证不同的方法得到同一棵树(即使是同一个算法,只要图的编号方式改变也可能得到不同的最小生成树)

⑦ 图所示是一个无向带权图,请分别按Prim算法和Kruskal算法求最小生成树.

•普里姆(Prim)算法

基本思想

假设N=(V,E)是一个具有n个顶点的连通网,T=(U,TE)是所求的最小生成树,其中U是T的顶点集,TE是T的边集。

(1)初始U={u0}(u0∈V),TE=φ;

(2)在所有u∈U,v∈V-U的边中选一条代价最小的边(u0,v0)并入集合TE,同时将v0并入U;

(3)重复(2),直到U=V为止。

此时,TE中必含有n-1条边,则T=(V,{TE})为N的最小生成树。

注意:1.最小生成树不唯一。

2.该图从节点最小开始。

⑧ 如何用浅显的语言解释Kruskal算法和Prim算法

不严谨的说:将全集分为遍历集合未遍历集。两种算法都是遍历集慢慢扩大为全集的过程。
Kruskal:集合中元素是边,每次从未遍历集中找一个最短边,如果遍历集包含它后不会构成回路,就包含,重复过程直到所有点都连通。
Prim:集合中元素是点,每次从未遍历集中找一个距离遍历集距离最近的点,将其包含,重复过程直到包含所有点。
当然对于Kruskal,遍历集并没有扩展为全集,把全部边都包含了也没有意义了。

⑨ 用普里姆(Prim)或克鲁斯卡尔(Kruskal)算法,画出下列无向网的最小生成树

如图,这是Prim算法构造最小生成树的每一步,这里是以A点为初始点。


最小生成树用权重是60

⑩ 如图1所示,用prim算法和Kruskal算法构造最小生成树。

prim算法:假设初始节点为A,则扩展的点的顺序为:
加入边AC,扩展C节点
加入边AB,扩展B节点
加入边CD,扩展D节点
加入边BF,扩展F节点
加入边DE,扩展E节点

所以最小生成树含有的边为:AC、AB、CD、BF、DE

kruskal算法:
加入边AC
加入边DE
加入边AB
加入边BF
加入边CD

最小生成树与上面一样

热点内容
安卓脚本聊天软件 发布:2024-09-29 09:18:12 浏览:674
机身存储能拿出来吗 发布:2024-09-29 08:58:13 浏览:819
数码管动态显示程序c语言 发布:2024-09-29 07:34:57 浏览:901
苹果搬家到安卓怎么办 发布:2024-09-29 07:13:46 浏览:356
编程猫登录平台 发布:2024-09-29 07:03:27 浏览:312
xp无线密码怎么看 发布:2024-09-29 06:48:23 浏览:204
命理与数据库 发布:2024-09-29 06:39:19 浏览:450
华为电脑本机网站配置怎么打开 发布:2024-09-29 06:26:11 浏览:520
android屏幕截图源码 发布:2024-09-29 06:22:06 浏览:542
天籁速派哪个配置好 发布:2024-09-29 06:21:15 浏览:114