拓扑排序

阅读量: 75 编辑

拓扑排序是图的算法,用于解决依赖关系和顺序性问题,确保在满足约束条件的情况下正确排序图中的顶点。

拓扑排序是一种对有向无环图(DAG:Directed Acyclic Graph)中的顶点进行线性排序的算法。

拓扑排序常用于表示任务之间的依赖关系,确保任务按照依赖关系的顺序执行。如:火车路线图、课程表、任务调度、编译器优化、依赖关系分析等领域。

拓扑排序通常使用深度优先搜索(DFS)或广度优先搜索(BFS)算法来实现。通常,一个有向无环图可以有一个或多个拓扑排序序列。

一、如何找到有效拓扑排序?

1、找入度为0的结点,依次放到拓扑排序中

2、将该结点的出度(边)删掉

3、重复1、2步骤,完成整个图中结点的删除

1581855891521568.png

二、练习题

关于拓扑排序,下列说法正确的是( )

A. 所有连通的有向图都可以实现拓扑排序

B. 对同一个图而言,拓扑排序的结果是唯一的

C. 拓扑排序中入度为0的结点总会排在入度大于0的结点的前面

D. 拓扑排序结果序列中的第1个结点一定是入度为0的结点

参考答案 D

拓扑排序是从入度为0的点开始找。

已知有向图G=(V,E),其中V={V1,V2,V3,V4,V5,V6,V7},E={<V1,V2>,<V1,V3>,<V1,V4>,<V2,V5>,<V3,V5>,<V3,V6>,<V4,V6>,<V5,V7>,<V6,V7>},G的拓扑排序是( )

A. V1,V3,V4,V6,V2,V5,V7

B. V1,V3,V2,V6,V4,V5,V7

C. V1,V3,V4,V5,V2,V6,V7

D. V1,V2,V5,V3,V4,V6,V7

参考答案 A

画图演算:构造图,找出拓扑排序。

爱码岛编程公众号
试卷资料
爱码岛编程小程序
在线刷题
苏ICP备13052010号
©2023 南京匠成信息科技有限公司