拓扑排序
文章目录
- 基本概念
- 算法思想
- 算法的执行过程
- 拓扑排序的特点
- 算法的代码实现
1.基本概念
首先掌握拓扑排序之前先要了解几个基本概念:
这里AOV网即是一种以顶点表示活动,以边表示活动先后次序的且没有回路的有向图。
2.算法思想
拓扑排序就是将一个有向无环图中的所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若存在由u到v的路径,则在拓扑排序序列中一定是u出现在v的前边。
可能直接看算法思想有点理解不来,下面给出具体执行过程:
3.算法执行过程
1.首先初始化一个数组,数组内存放图中所有顶点的入度,(目的是为了更好的找到入度为0的结点)。
2.找到入度为0的顶点,在数组内找到0结点。
3.删除从该顶点发出的全部边,并且更改数组内的各顶点的入度值。如下图所示:
之后重复以上步骤,依次找到入度为0的顶点并删除其顶点发出的全部边。
此时1顶点入度为0,删除1顶点发出的全部边并更改数组内的个顶点的入度值
此时顶点2的入度为0,所以删除2顶点发出的全部边并更改数组内的个顶点的入度值
最后剩下3顶点,入度为0,输出。
此时就产生了一个线性序列即拓扑排序的序列。