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

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 17:34:47

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

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中所有顶点都在同一连通分量上为止.

算法同样是解决最小生成树的问题。
其算法为:在这n个点中的相通的边进行排序,然后不断地将边添加到集合中(体现了贪心的算法特点),在并入集合之前,必须检查一下这两点是不是在一个集合当中,这就用到了并查集的知识。直到边的集合达到了n-1个。
与prim算法的不同:prim算法为单源不断寻找连接的最短边,向外扩展,即单树形成森林。而Kruskal算法则是不断寻找最短边...

全部展开

算法同样是解决最小生成树的问题。
其算法为:在这n个点中的相通的边进行排序,然后不断地将边添加到集合中(体现了贪心的算法特点),在并入集合之前,必须检查一下这两点是不是在一个集合当中,这就用到了并查集的知识。直到边的集合达到了n-1个。
与prim算法的不同:prim算法为单源不断寻找连接的最短边,向外扩展,即单树形成森林。而Kruskal算法则是不断寻找最短边然后不断将集合合并,即多树形成森林。
复杂度的不同:prim算法的复杂度是O(n^2),其中n为点的个数。Kruskal算法的复杂度是O(e*loge),其中e为边的个数。两者各有优劣,在不同的情况下选择不同的算法。
Prim算法用于求无向图的最小生成树
设图G =(V,E),其生成树的顶点集合为U。
①、把v0放入U。
②、在所有u∈U,v∈V-U的边(u,v)∈E中找一条最小权值的边,加入生成树。
③、把②找到的边的v加入U集合。如果U集合已有n个元素,则结束,否则继续执行②。
其算法的时间复杂度为O(n^2)
Prim算法实现:
(1)集合:设置一个数组set(i=0,1,..,n-1),初始值为 0,代表对应顶点不在集合中(注意:顶点号与下标号差1)
(2)图用邻接阵表示,路径不通用无穷大表示,在计算机中可用一个大整数代替。
{先选定一个点,然后从该点出发,与该点相连的点取权值最小者归入集合,然后再比较在集合中的两点与其它各点的边的权值最小者,再次进入集合,一直到将所有的点都归入集合为止。}

收起

Kruskal算法和Prim算法构造它的一棵最小代价生成树的过程 prim算法和kruskal 算法哪个好 prim算法构造出的最小生成树唯一吗?prim算法和kruskal算法构造出的最小生成树一样吗? KRUSKAL算法和PRIM算法KRUSKAL算法在做的时候是不是就是直接写出PRIM算法的最后一步?那做KRUSKAL的时候也要像PRIM算法一样一步步写出来么 13.用Prim算法和Kruskal算法构造图的最小生成树,所得到的最小生成树是否相同? 用prim算法和Kruskal算法求最小生成树,不要原代码要过程. 如图所示为一个无向带权图,请分别按照Prim算法和Kruskal算法求最小生成树 kruskal算法的Matlab程序 利用Prim(普里姆)算法 构造最小生成树 程序 请教无向无权图最小生成树算法:要求比Prim and Kruskal更快.图是undirected和unweighted.也可以认为是每个边的权重是一样的.感激不尽! 某无向网络邻接矩阵:画出这个无向网络,并从顶点1出发,用Prim算法构造它的最小代价生成树, 用普里姆(Prim)或克鲁斯卡尔(Kruskal)算法画出下列无向网的最小生成树求解答,有回必应 Prim算法适用于边数叫( )的图. 哪些常见算法属于贪婪算法?Dijkstra、Prim、 Kruskal Floyd- WaWarshall、KMP string match,这些都是贪婪算法吗?贪婪算法还有哪些? prim和kruscal算法得到的最小生成树是否一样prim 和 kruscal 的算法思想是什么了的.请再解释下. 根据Prim算法,求图示的最小代价生成树.设①为起点,要求画出构造过程. 用破圈法求最小生成树求最小生成树的破圈法的源程序代码以及流程图(不要Prim和Kruskal算法的)望编程高手赐教```紧急````破圈算法是1975年由我国数学家管梅谷教授提出来的. 基本思想:在 kruskal算法实现 c代码