LeetCode刷题记录---拓扑排序(Topological Order)算法

每次刷到拓扑排序算法题将在此博文更新~~~

?这里先来讲下拓扑排序:

一个较大的工程经常被分成许多子工程,把这些子工程称为活动。可用有向图来反映出各个活动之间的先后顺序。顶点代表活动,有向边代表活动的先后顺序。通常称这种图为顶点活动网(AOV)。一个AOV网是一个有向无环图(所以判断是否存在拓扑序列,即判断该有向图是不是无环图)。
在AOV网中,把所有活动排列成一个线性序列,使得每个活动的所有前驱活动都排在该活动的前面,把此序列叫做拓扑序列,由AOV网构造拓扑序列的过程就叫拓扑排序。
拓扑序列不唯一。
拓扑排序算法主要是循环执行两步,直到不存在入度为0的顶点为止:

1.选择一个入度为0的顶点并输出之。
2.从网中删除此顶点及所有出边。

循环结束后,若输出的顶点数小于网中的顶点数,则输出“有回路”信息,否则输出的顶点序列就是一种拓扑序列。

算法实现主要有以下3步:

1.创建好入度表
2.创建好节点构成的图
3.基于BFS的队列,依次将入度为0的顶点出列、入列处理

Ƕ


版权声明:本文为weixin_43646592原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。