拓扑排序的概念:
- 重复一个操作:(遍历入度为0的点,遍历从这个点连接的其他点)
拓扑排序的注意事项:
- 因为是遍历时是从一个点到其他点,也就是说,需要是有向边,再稍加推理即可得出这样一个结论:拓扑排序必须在DAG上.
拓扑排序的例题(难度由低到高):
拓扑排序的适用范围:
- 有向无环图(DAG)
关于拓扑排序的总结:
- 无后效性:拓扑排序的过程类似动态规划的无后效性的体现。这是因为,拓扑排序都是由入度为0的结点开始运行的。而运行过一次的点,不需要再次运行。而在运行的过程中又会产生新的入度为0的结点,这就类似DP的状态转移方程了.
- 图上算法:拓扑排序是一种图上算法。与之类似的算法有:Dijkstra,Kruskal等,其中,Dijkstra可以作用在无负边权的图上,而Kruskal可以运行在无向无环图上。而拓扑排序只能运行在DAG上.
- 数论:数论中的拓扑,指:只考虑物体之间的位置关系而不考虑物体的形状和大小。(欧拉回路 例题:七桥问题)
- 排序:拓扑排序也是一种“排序”算法,也就是说,他可以求出一些具有依赖关系的任务的排序关系。比如:选课问题。
- 关系:拓扑排序可以用于求一系列对象之间的关系。比如:三角恋问题