Prim算法和Kruscal算法都是无向连通网的最小生成树的算法,Prim算法从一个顶点开始,每次从剩余的顶点中加入一个顶点,该顶点与当前的生成树中的顶点的连边权重最小,直到得到一颗最小生成树;Kruscal算法从权重最小的边开始,每次从不在当前的生成树顶点中选择权重最小的边加入,直到得到一颗最小生成树,这两个算法都采用了 (请作答此空) 设计策略,且 ( ) 。

题目
Prim算法和Kruscal算法都是无向连通网的最小生成树的算法,Prim算法从一个顶点开始,每次从剩余的顶点中加入一个顶点,该顶点与当前的生成树中的顶点的连边权重最小,直到得到一颗最小生成树;Kruscal算法从权重最小的边开始,每次从不在当前的生成树顶点中选择权重最小的边加入,直到得到一颗最小生成树,这两个算法都采用了 (请作答此空) 设计策略,且 ( ) 。

A.分治
B.贪心
C.动态规划
D.回溯
参考答案和解析
答案:B
解析:
Prim算法从扩展顶点开始,每次总是"贪心的"选择与当前顶点集合中距离最短的顶点,而Kruscal 算法从扩展边开始,每次总是"贪心的"选择剩余的边中最小权重的边,因此两个算法都是基于贪心策略进行的。
Prim 算法的时间复杂度为O(n2),其中n 为图的顶点数,该算法的计算时间与图中的边数无关,因此该算法适合于求边稠密的图的最小生成树;Kruscal 算法的时间复杂度为O(mlgm) ,其中m 为图的边数,该算法的计算时间与图中的顶点数无关,因此该算法适合于求边稀疏的图的最小生成树。当图稠密时,用 Prim 算法效率更高。但若事先没有关于图的拓扑特征信息时,无法判断两者的优劣。由于一个图的最小生成树可能有多棵, 因此不能保证用这两种算法得到的是同一棵最小生成树。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

下面哪些使用的不是贪心算法()

A.单源最短路径中的Dijkstra算法

B.最小生成树的Prim算法

C.最小生成树的Kruskal算法

D.计算每对顶点最短路径的Floyd-Warshall算法


正确答案:D

第2题:

图的生成树是不唯一的,一个连通图的生成树是一个最小连通子图,n个顶点的生成树有n-1条边,最小代价生成树是唯一的。( )

此题为判断题(对,错)。


正确答案:正确

第3题:

Prim算法求最小生成树的时间为(),对()图比较有利。


参考答案:O(n2)、稠密

第4题:

B.Kruskal算法:(贪心)

按权值递增顺序删去图中的边,若不形成回路则将此边加入最小生成树。

function find(v:integer):integer; {返回顶点v所在的集合}

var i:integer;


正确答案:

 

B.Kruskal算法:(贪心)

按权值递增顺序删去图中的边,若不形成回路则将此边加入最小生成树。
function find(v:integer):integer; {返回顶点v所在的集合}
var i:integer;

第5题:

对(),用Prim算法求最小生成树较为合适,而Kruskal算法适于构造()图的最小生成树。

A.完全图

B.连通图

C.稀疏图

D.稠密图


参考答案:D,C

第6题:

下面()算法适合构造一个稠密图G的最小生成树。

A.Prim算法

B、Kruskal算法

C.Floyd算法

D、Dijkstra算法


参考答案:A
解释:Prim算法适合构造一个稠密图G的最小生成树,Kruskal算法适合构造一个稀疏图G的最小生成树。

第7题:

如果求一个连通图中以某个顶点为根的高度最小的生成树,应采用()

A、深度优先搜索算法

B、广度优先搜索算法

C、求最小生成树的prim算法

D、拓扑排序算法


参考答案:B

第8题:

●对于n个顶点e条边的无向连通图,利用Prim算法生成最小生成树的时间复杂度为 (24) ,利用Kruskal算法生成最小生成树的时间复杂度为 (25) 。

(24) A.O((n+1)2 )

B.O(n2 )

C.O(n2-1)

D.(n2+1)

(25) A.O(log2e)

B.O(log2e-1)

C.O(elog2e)

D.以上都不对


正确答案:B,C
【解析】此题是考查数据结构图的应用。

第9题:

对于含n个顶点、e条边的无向连通图,利用Prim算法构造最小生成树的时间复杂度(),用Kruskal算法构造最小生成树的时间复杂度为()。

A.O(n)

B.O(n²)

C.O(e)

D.O(eloge)

F.O(e²)


参考答案:B,D

第10题:

Prim算法和Kruscal算法都是无向连通网的最小生成树的算法,Prim算法从一 个顶点开始,每次从剩余的顶点加入一个顶点,该顶点与当前生成树中的顶占的连边权重 最小,直到得到最小生成树开始,Kruscal算法从权重最小的边开始,每次从不在当前的生成树顶点之间的边中选择权重最小的边加入,直到得到一颗最小生成树,这两个算法都采用了( )设计策略,且( )。

A.分治 B.贪心 C.动态规划 D.回溯 A.若网较稠密,则Prim算法更好 B.两个算法得到的最小生成树是一样的 C.Prim算法比Kruscal算法效率更高 D.Kruscal算法比Prim算法效率更高


正确答案:B,A

更多相关问题