参考:https://blog.csdn.net/qq_35644234/article/details/60578189
问题描述:修一门课程之前必须修完该课程的先修课程,给出一个可行的选课顺序。(可能会有几种不同方案)
以上问题可以抽象为如下有向无环图的拓扑排序结果:
上图的邻接表为:
1、概念
拓扑排序(topological sort),将一个有向无环图(Directed Acyclic Graph,DAG)中所有顶点在不违反先决条件关系的前提下排成线性序列的过程称为拓扑排序。
先决条件,对于有向无环图G=(V,E),从顶点到顶点之间有一条路径,则在序列中顶点必须在之前。
2、算法
法一:
从图中选择任意一个入度为0的顶点输出;从图中删掉该顶点及其所有的出边,并将出边对应顶点的入度减