🏷️ 知识点:Prim算法

共 3 道相关题目

2012 年第 8 题 数据结构 选择题

下列关于最小生成树的叙述中,正确的是()。

Ⅰ.最小生成树的代价唯一

Ⅱ.所有权值最小的边一定会出现在所有的最小生成树中

Ⅲ.使用普里姆(Prim)算法从不同顶点开始得到的最小生成树一定相同

Ⅳ.使用普里姆算法和克鲁斯卡尔(Kruskal)算法得到的最小生成树总不相同

最小生成树

A. 仅Ⅰ

B. 仅Ⅱ

C. 仅Ⅰ、Ⅲ

D. 仅Ⅱ、Ⅳ

[tag_link]

正确答案:A

对于 Ⅰ, 最小生成树 的树形可能不唯一,但所有最小生成树的总代价都等于全局最小值,因此代价唯一,Ⅰ正确。

对于Ⅱ,若若干条并列最小边本身构成一个环,生成树必须从环中至少舍弃一条边,所以并非每条最小权边都会出现在所有 MST 中,Ⅱ错误。

对于Ⅲ,取 3 个顶点组成三角形,3 条边权值都相同。从不同顶点开始或采用不同的并列边选择顺序,Prim 可得到不同的 MST,Ⅲ错误。

对于Ⅳ,当 MST 唯一时,Prim 与 Kruskal 必须得到同一棵树,因此“总不相同”错误。故仅Ⅰ正确,选 A。


课后题 年第 40 题 数据结构 选择题

用 Prim 算法和 Kruskal 算法构造图的最小生成树,所得到的最小生成树(  )。

A. 相同 B. 不相同 C. 可能相同,可能不同 D. 无法比较

[tag_link]

正确答案:C

结论

选 C。

推导

两种算法都遵循 MST 的贪心性质。若 MST 唯一,二者必得到同一棵树;若存在等权边导致多个 MST,选边顺序可能不同,结果也可能不同。

易错点

“都是最小生成树”不等于“边集合必相同”;应区分最小代价相同与树形唯一。


课后题 年第 43 题 数据结构 选择题

用 Prim 算法求一个带权连通图的最小生成树,在算法执行的某个时刻,已选取的顶点集合 U={1,2,3},已选取的边集合 TE={(1,2),(2,3)},要选取下一条权值最小的边,应当从(  )组中选取。

A. {(1,4),(3,4),(3,5),(2,5)} B. {(3,4),(3,5),(4,5),(1,4)} C. {(1,2),(2,3),(3,5)} D. {(4,5),(1,3),(3,5)}

[tag_link]

正确答案:A

结论

选 A。

推导

Prim 的候选边必须横跨割 (U, V−U),即一端在 {1,2,3}、另一端在未加入顶点集合。只有 A 中的边全部满足该条件;然后从 A 的候选边中选权值最小者。

易错点

已选边 TE 不能再次作为候选;连接 U 内两个顶点的边会形成内部边,不属于 Prim 当前割边集合。