浅谈拓扑排序

2019-03-23  本文已影响0人  桐人_

与拓扑第一次相遇是在大一下学期,那时候觉得拓扑很单纯很好懂。但是时隔一年以后,在天梯赛再遇拓扑时却是形同路人,那么陌生。我对拓扑情感尚在,因此在此文中记录拓扑,以表忠心!
瞎扯时间已经过去,下面进入正题。
什么是拓扑排序?

拓扑排序就是按照一种规则进行排序,并且只有有向无环图才能进行拓扑排序,一个有向无环图可能有多种
排列结果。

那么规则是?

拓扑排序就是根据有向无环图中的关系进行排列,其中父节点排在子节点前面。
(节点1指向节点2,则节点1是父节点,节点2是子节点)

拓扑排序已经很显然了,下面将说明怎么用代码进行拓扑排序。

  1. 任取一个入度为零的节点入队,如果没有则结束
  2. 在图中删除入队节点,以及关联的边。
  3. 对所有子节点的入度减一
  4. 递归操作剩下的所有节点

这就是拓扑排序的过程,若最后入队节点少于n, 则说明该图不是有向无环图。对于拓扑排序的理解就这么多,更多详情见一位前辈的文章<< 深入理解拓扑排序(Topological sort) >>

上一篇下一篇

猜你喜欢

热点阅读