拓扑排序
1、有向无环图(DAG):有向图中不存在环。
2、AOV网:各结点活动具有先后顺序的有向无环网络(而且边没有权值)。
3、拓扑排序:
拓扑排序可以理解为按活动的顺序排序,比如早上起来我必须先穿裤子再穿鞋,先穿内衣再穿外套,这个顺序不能乱。也可以应用在排课表上,比如我必须先学过C语言的课,才能去学数据结构。拓扑排序就是把这件事的活动的顺序,从活动网中提取出来,就是拓扑排序。
拓扑排序的时间复杂度为O(|V|+|E|)
拓扑排序常用两种算法:Khan算法和DFS深度优先搜索
a、Khan算法:
就是依次寻找入度为0的结点,然后输出,删除该结点,然后重复以上操作,直到全部输出。同一次输出的结点先后顺序可以改变,比如第一次输出ADF,也可以写成DAF,因此拓扑排序不唯一。
b、深度优先搜索(DFS)方法进行拓扑排序:
用DFS依次寻找输出 出度为0的结点,然后将输出的结点进行逆序,即可得到拓扑排序的序列。
c、三角矩阵时说明没有回路,说明一定有拓扑排序。
本文作者:oaoa
本文链接:https://www.cnblogs.com/oaoa/p/13750854.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步