什么是拓扑排序?
拓扑排序就是对有向无环图
的顶点进行线性排列,使得从顶点 u 到顶点 v 的每个有向边,u 在排序中都在 v 的前面。一个有向无环图的拓扑排序可能有多种。
当前仅当图中不存在环时,才有可能进行拓扑排序。
运用拓扑排序可以解决哪些问题?
最常见的问题就是,课程安排问题。有些课是基础课程,有些课是综合课程,往往我们需要先学习基础课,再学习综合课程。现在给出所有的课,和每门课与先修课的对应关系。求出可否学完所有课程,或者课程学习的一个合理顺序。
类似的问题还有工程安排问题。
总之拓扑排序适合于那些局部有序(两个元素之间),总体可以无序。例如 工程 A,B,C,开始工程 B 之前 必须先完成工程 A,但 C 无要求,这样合理的工程安排顺序如下:A B C,或者 C A B。只要满足 A 在 B 的前面既可。
题目链接: