首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
用普里姆(Prim)算法求具有 n 个顶点 e 条边的图的最
[填空题]
用普里姆(Prim)算法求具有 n 个顶点 e 条边的图的最小生成树的时间复杂度为
1
;用克鲁斯卡尔(Kruskal)算法的时间复杂度是
2
。
查看正确选项
添加笔记
求解答(1)
邀请回答
收藏(16)
分享
纠错
2个回答
添加回答
2
Rnanprince
首先以一个结点作为最小生成树的初始结点,然后以迭代的方式找出最小生成树中各结点权重最小的边,并加到最小生成树中。(加入之后如果产生回路了就要跳过这条边,选择下一个结点。)当所有的结点都加入到最小生成树中后,就找出了这个连通图的最小生成树。
首先,初始化部分所需时间为Ο(|V|+|E|)。其次,在|V|-1次循环过程中,一方面要遍历各个顶点的邻接边,一共需要Ο(|E|)的时间;另一方面在每次循环中查找轻边需要对所有顶点遍历一遍,每次循环需时Ο(|V|)。因此算法的时间复杂度T(n) =Ο(|V|+|E|) +Ο(|E|) + (|V|-1)Ο(|V|) =Ο(|V|^2+|E|) =Ο(|V|^2)。
边数较多可以用Prim,因为它是每次加一个顶点,对边数多的适用。
-------------------------------------------------------------
Kruskal算法在找最小生成树结点之前,需要对权重从小到大进行排序。将
排序
好的权重边依次加入到最小生成树中,(如果加入时产生回路就跳过这条边,加入下一条边)。当所有的结点都加入到最小生成树中后,就找到了这个连通图的最小生成树。
算法总的时间取决于排序步,即Ο(|E| log |E|)。
边数较少可以用Kruskal,因为
Kruskal算法
每次查找最短的边。
即n^2;eloge
发表于 2018-05-17 17:40:57
回复(0)
0
在笔试的懒羊羊很贪睡
发表于 2017-05-24 11:07:12
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
高级算法
上传者:
星辰大海的碎片
难度:
2条回答
16收藏
6934浏览
热门推荐
相关试题
执行以下程序,理论上输出的结果应最...
360集团
Python
算法工程师
2019
评论
(1)
来自
360公司-2019校招...
以下描述正确的是
Java
评论
(1)
以下对于随机森林算法描述错误的是:
机器学习
评论
(1)
生成数据集的随机子集
机器学习
评论
(1)
k近邻算法
机器学习
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题