
任意一个有向图的拓扑序列(33)。 A. 可能不存在 B. 有一个 C. 一定有多个 D. 有一个或多个
有向图的拓扑序列可能不存在。拓扑排序仅适用于有向无环图(DAG),若图中存在环(如A→B→C→A),则因循环依赖无法生成线性序列。例如任务调度场景中,若任务A依赖B,B依赖C,C又依赖A,这种环形依赖会导致所有任务入度无法归零,拓扑序列不存在。
即使是DAG,拓扑序列也可能不唯一。当图中存在多个相互独立的节点(即无直接或间接依赖关系)时,这些节点的顺序可以互换。比如工作流中的节点2和3、4和5不存在依赖关系,它们在拓扑序列中的位置可任意调整,从而产生多种合法排序。只有当排序的每一步都恰好有一个入度为0的节点时,拓扑序列才唯一。
综上,有向图的拓扑序列是否存在取决于图是否为DAG,而序列数量则由节点间的依赖关系决定。工程实践中,Kahn算法通过检查入度为0的节点数量,既能判断拓扑序列是否存在,也能通过选择不同入度为0的节点生成多个序列。那么,你认为在依赖关系复杂的大型系统(如软件编译依赖)中,如何利用拓扑排序的多序列特性优化执行效率?