Skip to content

2014年 408 数据结构 第 7 题

数据结构2014年选择题2分

题目

对如下所示的有向图进行拓扑排序,得到的拓扑序列可能是()

314265

错因

A

2 排在 4 之前——但 4 → 2 这条边要求 4 必须先于 2 输出。该序列违反这条依赖。
末尾 5、6 的顺序也错:6 → 5 要求 6 先于 5。

B

2 排在 4 之前,违反 4 → 2,与 A 同病。末尾 6、5 顺序对了,但前面的依赖错破坏了整个序列。

C

5 排在 6 之前——但 6 → 5 要求 6 必须先于 5 输出。这个错误最容易在"看到 2、4、5、6 的局部时只关心 2 → 5 这条边"时发生,漏掉了同样指向 5 的另一条 6 → 5。

总解析

步骤一:从图读出邻接表 + 入度表

顶点出边目标入度(指向它的边数)
12, 41(来自 3)
252(来自 1、4)
31, 60 ← 起点
42, 61(来自 1)
52(来自 2、6)
652(来自 3、4)

步骤二:拓扑排序逐步删除入度 0 的点

入度 0 的点(候选)选择移除其出边后剩余入度
131: 0, 6: 1(少了来自 3 的边)
212: 1, 4: 0, 6: 1
342: 0, 6: 0(少了来自 4 的边)
425: 1
565: 0
65

得到序列:3, 1, 4, 2, 6, 5。

关键节点:第 4 轮的二选一。{2, 6} 谁先都行——

  • 2 先 → 3, 1, 4, 2, 6, 5(= 选项 D)✓
  • 6 先 → 3, 1, 4, 6, 2, 5(不在选项中,但同样合法)

3, 1, 4 是被强制的前三个

  • 第 1 轮只有 3 入度 0 → 3 必为首
  • 第 2 轮只有 1 入度 0(4、6 都还有来自 1 的入边或来自 3 的入边等待去除)→ 1 必为第 2
  • 第 3 轮只有 4 入度 0(2 还有来自 4 的入边)→ 4 必为第 3

判别选项是否合法的快捷方法:把每条有向边 在选项序列里找位置,看是否 u 出现先于 v。一条违反就立即否决。

  • A:4→2,但 2 在 4 前 ✗
  • B:同 A 的 4→2 错 ✗
  • C:6→5,但 5 在 6 前 ✗
  • D:8 条边逐一验证全部满足 ✓

最终答案是 D(3, 1, 4, 2, 6, 5)

最后更新:

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

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