软件设计师 · 高频练习

最小生成树题中 Prim 和 Kruskal 怎么判断?

中级 单选题 第 475 题 中等 软件设计师图算法最小生成树Prim算法Kruskal算法
题目

在一个连通带权无向图中,需要选出若干条边,使所有顶点都连通,且边权之和最小,同时不能形成回路。解决这类问题时,较常用的一组算法是()。

A Prim 算法和 Kruskal 算法
B Dijkstra 算法和 Floyd 算法
C 拓扑排序和关键路径法
D 哈夫曼编码和快速排序
题目类型:原创高频考点题 用途:用于帮助理解软件设计师相关考点和答案解析,不等同于官方真题。
书木兰刷题练习 适合懒人、小白的刷题通关平台
正确答案
A
答案解析

最小生成树处理的是连通带权无向图中“用最小总代价把所有顶点连起来”的问题。Prim 算法通常从一个顶点出发,逐步把距离当前树最近的顶点接进来;Kruskal 算法通常按边权从小到大选边,只要不形成回路就加入。两者思路不同,但目标都是构造最小生成树。这里题干强调所有顶点连通、边权和最小、不形成回路,正好对应 Prim 和 Kruskal。

选项分析

A

正确。Prim 和 Kruskal 都是构造最小生成树的典型算法。

B

错误。Dijkstra 和 Floyd 主要用于最短路径问题,关注路径距离,不是生成树总边权最小。

C

错误。拓扑排序处理有向无环图的先后依赖;关键路径法常用于项目活动网络,不是本题的图连通代价问题。

D

错误。哈夫曼编码处理最优编码,快速排序处理排序,和最小生成树不是同一类考点。

本题为什么容易错

很多同学会把“最短路径”和“最小生成树”混在一起。最短路径通常关心从一个点到另一个点怎么走最短;最小生成树关心所有点都连上以后,总边权是否最小。一个是路的问题,一个是网的问题,题干问法不同。

先看结论

简短答案

最小生成树题中 Prim 和 Kruskal 怎么判断,正确答案是 A(Prim 算法和 Kruskal 算法)。最小生成树处理的是连通带权无向图中“用最小总代价把所有顶点连起来”的问题。Prim 算法通常从一个顶点出发,逐步把距离当前树最近的顶点接进来;Kruskal 算法通常按边权从小到大选边,只要不形成回路就加入。两者思路不同,但目标都是构造最小生成树。这里题干强调所有顶点连通、边权和最小、不形成回路,正好对应 Prim 和 Kruskal。

解析

易混淆概念对比表

概念本题判断区别要点记忆提示
Prim 算法和 Kruskal 算法 本题正确答案 正确。Prim 和 Kruskal 都是构造最小生成树的典型算法。 看到题干核心场景时优先联想到它
Dijkstra 算法和 Floyd 算法 本题干扰项 错误。Dijkstra 和 Floyd 主要用于最短路径问题,关注路径距离,不是生成树总边权最小。 看到该词不要急着选,先判断是否真正解决题干问题
拓扑排序和关键路径法 本题干扰项 错误。拓扑排序处理有向无环图的先后依赖;关键路径法常用于项目活动网络,不是本题的图连通代价问题。 看到该词不要急着选,先判断是否真正解决题干问题
哈夫曼编码和快速排序 本题干扰项 错误。哈夫曼编码处理最优编码,快速排序处理排序,和最小生成树不是同一类考点。 看到该词不要急着选,先判断是否真正解决题干问题
本题易混淆选项怎么区分
  • Dijkstra 算法和 Floyd 算法:错误。Dijkstra 和 Floyd 主要用于最短路径问题,关注路径距离,不是生成树总边权最小。
  • 拓扑排序和关键路径法:错误。拓扑排序处理有向无环图的先后依赖;关键路径法常用于项目活动网络,不是本题的图连通代价问题。
  • 哈夫曼编码和快速排序:错误。哈夫曼编码处理最优编码,快速排序处理排序,和最小生成树不是同一类考点。
复习

知识点详解

Prim算法是软件设计师考试中需要结合场景理解的考点。围绕“最小生成树题中 Prim 和 Kruskal 怎么判断”这类题目,复习时要先看题干描述的是概念定义、适用场景、作用效果,还是与其他选项的区别。本题的题干关键词是“在一个连通带权无向图中,需要选出若干条边,使所有顶点都连通,且边权之和最小,同时不能形成回路。解决这类问题时,较常用的一组算法是()”,它指向的核心答案是 A(Prim 算法和 Kruskal 算法)。

备考速记

备考速记:题干如果强调“Kruskal算法”中的关键目标,就先联想到 Prim算法;如果选项里出现 Dijkstra 算法和 Floyd 算法、拓扑排序和关键路径法、哈夫曼编码和快速排序,不要只看名称熟悉,要判断它们是否真正对应题干场景。

Prim算法 在Kruskal算法场景中的作用

Prim算法在本题中的核心价值,是解决“在一个连通带权无向图中,需要选出若干条边,使所有顶点都连通,且边权之和最小,同时不能形成回路。解决这类问题时,较常用的一组算法是()”这个场景问题。复习时不要只背选项名称,还要理解它为什么适用于该场景,以及它能解决哪类安全、流程或管理问题。

拓展

同类题怎么考

  • 给出Kruskal算法场景,判断应该选择哪个概念、工具、协议或管理过程。
  • 考查Prim算法的作用,要求从四个相近选项中找出最符合题干目标的一项。
  • 把Prim算法和Dijkstra 算法和 Floyd 算法、拓扑排序和关键路径法、哈夫曼编码和快速排序放在一起考,重点看适用场景是否一致。
  • 题干通常会出现一个关键动作或目标,先定位关键词,再回到选项逐一排除。
Prim算法 在软件设计师软考中的考法

软考选择题通常不会只考概念定义,还会把Prim算法放到Kruskal算法场景中,要求判断它的作用、适用范围或与相近概念的区别。遇到这类题时,先抓住题干中的业务场景,再看哪个选项最能解决该场景下的核心问题。

解题思路

这题不要一看到“最小”就往最短路径上靠。老师讲图算法时一般会先问:题目要找的是一条路,还是一棵树?如果是从源点到其他点,常往 Dijkstra 想;如果是把所有点用最小代价连通起来,就往最小生成树想。题干还特别说不能形成回路,这个提示很明显。

考点定位

图算法题先看目标。最短路径问从某点到某点或到其他顶点的最短距离;最小生成树问把所有顶点连起来且总代价最小;拓扑排序问有向无环图中的先后依赖。

易错提醒

  • 看到“最小”就直接选 Dijkstra,忽略了题干要求连接所有顶点。
  • 忘记最小生成树不能形成回路,否则就不是树。
  • 把 Kruskal 的按边选择和 Prim 的按顶点扩展混成一个过程。

备考提示

  • 记一句话:最短路径找 Dijkstra,最小生成树找 Prim 或 Kruskal,依赖顺序找拓扑排序。
  • Prim 更像从一个点慢慢长出一棵树;Kruskal 更像把边按便宜程度排队,能接且不成环就接。
  • 软件设计师图算法复习时,建议把 Dijkstra、Floyd、Prim、Kruskal、拓扑排序放在一张表里对比。

你可能还想了解

  • 最小生成树题中 Prim 和 Kruskal 怎么判断?
  • Prim算法是什么?
  • Prim算法在软件设计师考试中怎么考?
  • 软件设计师Prim算法题怎么理解?
  • 最小生成树Prim和Kruskal区别怎么考?
  • 软件设计师最小生成树怎么考?

本文小结

本题核心考点是Prim算法在Kruskal算法场景中的判断和应用。遇到类似题目时,先看题干描述的目标,再判断哪个选项最符合场景;本题应选择 A(Prim 算法和 Kruskal 算法)。