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

多拉A梦dingdang 1年前 已收到2个回答 举报

灌水专用灌水 幼苗

共回答了21个问题采纳率:90.5% 举报

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

1年前

7

Alicejun 幼苗

共回答了1个问题 举报

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

1年前

0
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 0.026 s. - webmaster@yulucn.com