拓扑序是什么
一张有向图的拓扑序指的是【0】。
Kahn 算法怎么做
Kahn 求拓扑序的做法是【0】。
每个点的入度是多少
六门课的先修关系:0→2、1→2、2→3、2→4、3→5、4→5。运行下面这段程序: def indeg(g): d = {u: 0 for u in g} for u in g: for v in g[u]
排出来的拓扑序
用 Kahn 算法,每次从入度为 0 的点里取编号最小的。运行下面这段程序: from collections import deque def kahn(g): d = {u: 0 for u in g} for u i
先把入度算出来
补全 indeg:返回一个列表,第 i 项是 i 号点的入度。
写一个 Kahn 拓扑排序
补全 kahn:入度为 0 的点先进队列,取出一个就把它指向的点入度各减一,减到 0 就入队。
⚠️ 图里有环会怎样
在原来的六个点上多加一条 5→1,就出现了一个环。用同一个 kahn 各跑一遍。 把两次排出来的长度拼起来输出(无环的在前)。
⚠️ 验一个顺序是不是合法拓扑序
补全 valid(order, g):检查 order 里每条边都从前指到后。 验两个顺序,拼起来输出:[0,1,2,3,4,5] 和 [0,1,3,2,4,5]。
拿到一个"网络"问题先做什么
要把一个实际问题变成图问题,第一件事是【0】。
交付图遍历的解要验什么
把一个图遍历的解交出去,最该验的是【0】。