具有以下性质:

如果这个图不是 DAG,那么它是没有拓扑序的;

如果是 DAG,那么它至少有一个拓扑序;

反之,如果它存在一个拓扑序,那么这个图必定是 DGA。

对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(uv)∈E(G),则u在线性序列中出现在v之前。

通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。

简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排序。

在讲算法步骤之前先了解入度与出度的概念:

入度:顶点的入度是指“指向该顶点的边”的数量;

出度:顶点的出度是指该顶点指向其他点的边的数量。

可以理解为入度为0的点就是起点,拓扑排序步骤如下:

从 DAG 图中选择一个入度为0的顶点并输出;

从图中删除该顶点和所有以它为起点的有向边;