拓扑排序
作者:互联网
拓扑排序用来解决什么问题
解决相互依赖的条件下的排序问题。
比如:
- 早上起来你只穿了内裤
- 你还需要穿:秋衣、秋裤、毛衣、毛裤、羽绒服、外裤、袜子、鞋子
此时穿衣顺序上就有了两两之间的局部依赖,如:
- 内裤 --> 秋裤 --> 毛裤 --> 外裤
- 秋衣 --> 毛衣 --> 羽绒服
- 袜子 --> 鞋子
当然有的人喜欢先穿毛裤再来秋裤(逃)
最终的穿衣顺序可能为:
- 内裤 --> 秋裤 --> 毛裤 --> 外裤 --> 球衣 --> 毛衣 --> 羽绒服 --> 袜子 --> 鞋子
- 内裤 --> 秋衣 --> 毛衣 --> 羽绒服 --> 秋裤 --> 毛裤 --> 外裤 --> 袜子 --> 鞋子
是的,拓扑排序有可能有多种结果
拓扑排序实现
需要用到的数据结构
如果 a 先于 b 执行,也就是说 b 依赖于 a,那么就在顶点 a 和顶点 b 之间,构建一条从 a 指向 b 的边。而且,这个图不仅要是有向图,还要是一个有向无环图,
也就是不能存在像 a->b->c->a 这样的循环依赖关系。因为图中一旦出现环,拓扑排序就无法工作了。实际上,拓扑排序本身就是基于有向无环图的一个算法。
//TODO
Kahn 算法
DFS 算法
相关题目
标签:外裤,秋裤,--,拓扑,毛裤,排序 来源: https://www.cnblogs.com/miyanyan/p/14268616.html