若图为有向无环图,则可进行拓扑排序。拓扑排序的结果为DFS后序遍历的倒序。选课是拓扑排序的经典应用场景之一,即:选修一门课程之前须先修完该课程的前置课程。
class Graph(object):
def __init__(self, points_nums, is_directed):
self.__points_nums = points_nums
self.__adj = [[] for _ in range(points_nums)]
self.__directed = is_directed
self.__in_
拓扑排序是一种用于有向无环图(DAG)的排序算法,它可以将DAG中的节点排成一条线性序列,使得对于任何一对有向边 (u, v),在序列中节点 u 都排在节点 v 的前面。简单来说,拓扑排序就是将图中的点按照依赖关系进行排序。
拓扑排序可以应用于许多场景,比如编译器中的代码依赖关系分析、工程项目中的任务调度、电路设计中的元器件布局等等。