拓扑排序
文章目录
拓扑排序主要是应用在有向无环图中的一种排序方法,在一个有向无环图中,所有的事情都存在一个先后关系。举个简单的例子,大学里面专业课的学习,部分专业课需要有高等数学的基础才可以进行学习,这个也叫做先修课程。但是同时有的可能也可以并行的学习,因为两者没有交叉,互不影响。接下来举一个简单的例子。

那么可以利用图结构来表达该先后关系,如下图所示。
那么在给定一个“先修课程”的关系之后,如何才能得到正确的“修读”顺序呢,这就需要使用到接下来讲到的拓扑排序。
A O V − AOV- AOV−网
在介绍拓扑排序之前需要对一些定义进行解释,首先是 A O V − AOV- AOV−网,如果用有向图的顶点表示活动,用弧表示活动间的优先关系,则称该有向图为顶点表示活动的 A O V − AOV- AOV−网。
A O V − AOV- AOV−网的应用包括流程图、工程安排等。对于 A O V − AOV- AOV−网,内部不能存在环,如果存在环的话就意味着某项活动需要以自己作为先决条件。
那么根据上述定义就知道需要判断一个图是不是存在环,那么不存在环的有向图就称其为有向无环图 D A G DAG DAG,接下来通过两个例子来说明。
对于如何来判断一个有向图中是否有环,可以使用的方法有很多,可以使用之前图中的 D F S DFS DFS或 B F S BFS