Skip to content

2015年 408 数据结构 第 6 题

数据结构2015年选择题2分

题目

求下面带权图的最小(代价)生成树时,可能是克鲁斯卡(Kruskal)算法第 2 次选中但不是普里姆(Prim)算法(从 V4 开始)第 2 次选中的边是()。

10858118V1V2V3V4

错因

A

(V1, V3) 权值 = 8。Kruskal 第 2 步可能选它(确实是权 8 的三条候选之一),Prim 从 V4 出发第 2 步也可能选它(V4 加入 V1 后,V1 通向 V3 的边权 = 8,是新一轮最小的)。两者都可能选 → 不满足"Kruskal 可能、Prim 不可能"。

B

(V1, V4) 权值 = 5,是全图最小的边。两个算法的第 1 步都会选它:Kruskal 排序后第一条就是 5;Prim 从 V4 起的第一条出边最小也是 5。所以这条边被算的是"第 1 次选中",根本不在第 2 次的候选里——已被排除。

D

(V3, V4) 权值 = 8。Kruskal 第 2 步可能选它(权 8 候选之一)。Prim 从 V4 起,第 1 步选了 V1,{V1, V4} 的横切边里 V3-V4 = 8 是最小并列之一,第 2 步也可能选它。两者都可能 → 同样不符。

总解析

先列出所有边、按权升序

(V1, V4)5
(V1, V3)8
(V2, V3)8
(V3, V4)8
(V1, V2)10
(V2, V4)11

Kruskal 算法(按边权从小到大,跳过成环的):

  • 第 1 步:选最小边 (V1, V4),权 5。
  • 第 2 步:候选是三条权 = 8 的边 — (V1,V3)、(V2,V3)、(V3,V4)。三条都不会成环(当前森林里 V2、V3 还都是孤立的)。任意一条都可能被选中

Kruskal 第 2 步候选 = {(V1,V3), (V2,V3), (V3,V4)}

Prim 算法(从 V4 起)

每一步从"已包含点集 S 到剩余点集"的横切边里选最小的。

  • 初始 S = {V4}。

  • 第 1 步:S→V̄ 的边有 (V1,V4)=5、(V3,V4)=8、(V2,V4)=11。最小 = (V1,V4)=5,选中。 S = {V1, V4}。

  • 第 2 步:S→V̄ 的边里,V̄ = {V2, V3}:

    • (V1, V2) = 10
    • (V1, V3) = 8
    • (V3, V4) = 8
    • (V2, V4) = 11

    最小是 8,候选 = (V1,V3) 和 (V3,V4)。任选其一

Prim 第 2 步候选 = {(V1,V3), (V3,V4)}

比较两个候选集

Kruskal 第 2 可能选Prim 从 V4 起第 2 可能选
(V1, V3)
(V2, V3)(V2、V3 都不在 S 中,不是横切边)
(V3, V4)

唯一只在 Kruskal 候选里的是 (V2, V3)

关键差异:Kruskal 看全局排序、只关心是否成环,所以"两个孤立点之间的最短边" (V2, V3) 也能被选;Prim 必须从已知集 S 向外扩,(V2,V3) 两端都不在 S = {V1, V4} 里,根本不在视野中。这是 Kruskal 与 Prim 在 MST 题里最常考的分野。

最终答案是 C(V2, V3)

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数