算法与数据结构之拓扑排序

拓扑排序是对有向无环图(DAG)中顶点按依赖关系进行的线性排序,保证若存在边 u→v,则u 必在v之前出现。

排序方法

拓扑排序的方法非常简单,如下:

  • 从DAG图中选择一个没有前驱(入度为0)的顶点并输出
  • 从图中删除该顶点和所有以它为起点的有向边

重复上述两个步骤知道DAG图为空

注意,当排序过程中有多个入度为0的顶点时,可以任意选择,故拓扑排序的结果不唯一。

例题

考点

1.若有向图的拓扑排序序列为1,则图中每个点的入度和出度最多为1。

2."拓扑序列唯一" ≠ "原图唯一"。

3.用领接矩阵存储具有有序拓扑序列的有向图,则其领接矩阵必是三角矩阵,若不是三角矩阵则图中可能存在环。

4.在拓扑排序序列中,若顶点之前,则有可能是:

G中有一条的弧

G中没有弧但是有一条的路径,比如: