文章目录 1. 有向无环图(DAG) 2. 拓扑排序 2.1 拓扑排序的概念 2.2.拓扑排序的基本思想 3.拓扑排序的实现 3.1 有向图的邻接表实现 3.1.1 图的邻接表存储 3.1.2 邻接表的拓扑排序 3.2 有向图的邻接矩阵实现 3.2.1 图的邻接矩阵存储 3.2.2 邻接矩阵的拓扑排序 3.3 测试用例 3.4 基于深度优先的拓扑排序 参考资料 拓扑排序 主要可以判断 有向无环图(DAG) 中是否存在 环路 ,其可以用来判断一个有着先后关系的工程能否顺利进行。 1. 有向无环图(DAG) 一个不存在环路的有向图称作 有向无环图(Directed Acycline Graph) ,简称DAG图。 判断一个图是否存在环路可以有以下两种思路: 对于无向图,若深度优先遍历过程中遇到回边(即指向已经访问过的顶点的边),则必存在环路; 对于有向图,可以构造其顶点的拓扑排序序列,若图中所有顶点都在它的拓扑排序序列中,则必不存在环路; 2. 拓扑排序 2.1 拓扑排序的概念 **拓扑排序(Topological Sort)**即由一个集合上的一个偏序得到该集合上的一个全序。 (偏序是值集合中仅有部分成员之间可比较,而全序指集合中全体成员之间均可比较) 2.2.拓扑排序的基本思想 拓扑排序的算法如下: 1)在有向图中选择一个没有前驱(入度为0)的顶点输出; 2