You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

拓扑排序结果疑问:为何节点4先于节点3出现?

拓扑排序结果顺序疑问解答

首先明确:拓扑排序的合法结果并不唯一,只要满足「所有指向当前节点的前驱节点都出现在序列的前面」,这个序列就是有效的拓扑排序。

回到你的问题,我们一步步拆解图的处理过程:

  1. 初始入度统计:节点7入度为0,先处理它。处理后节点5、6的入度各减1,此时5和6的入度都变为0。
  2. 按结果里的顺序,先处理6:处理后节点3的入度减1(变为0),节点4的入度减1(变为1)。
  3. 接着处理5:处理后节点2的入度减1(变为0),节点4的入度再减1(变为0)。
  4. 此时入度为0的节点有3、4、2三个——这三个节点的前驱都已经处理完毕,选择它们的顺序完全是任意的。题目给出的结果只是选择了先加4,再加3,最后加2,这完全符合拓扑排序的规则。

换句话说,你觉得「节点3的入度更早变为0」没错,但拓扑排序并没有要求必须先选入度更早变0的节点,只要当前节点的前驱都处理完,不管它什么时候入度变0,都可以加入序列。比如[7,6,5,3,2,4,1,0]或者[7,5,6,2,4,3,1,0]也都是完全合法的拓扑排序结果。

内容的提问来源于stack exchange,提问作者unknown potato pumba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 01:12:32