友情支持
如果您觉得这个笔记对您有所帮助,看在D瓜哥码这么多字的辛苦上,请友情支持一下,D瓜哥感激不尽,😜
有些打赏的朋友希望可以加个好友,欢迎关注D 瓜哥的微信公众号,这样就可以通过公众号的回复直接给我发信息。
公众号的微信号是: jikerizhi 。因为众所周知的原因,有时图片加载不出来。 如果图片加载不出来可以直接通过搜索微信号来查找我的公众号。 |
Topological Sort (Graph) 拓扑排序
拓扑排序模式用来寻找一种线性的顺序,这些元素之间具有依懒性。比如,如果事件B依赖于事件A,那A在拓扑排序顺序中排在B的前面。
这种模式定义了一种简单方式来理解拓扑排序这种技术。
这种模式是这样奏效的:
-
初始化
-
借助于HashMap将图保存成邻接表形式。
-
找到所有的起点,用HashMap来帮助记录每个节点的入度
-
-
创建图,找到每个节点的入度
-
利用输入,把图建好,然后遍历一下图,将入度信息记录在HashMap中
-
-
找所有的起点
-
所有入度为0的节点,都是有效的起点,而且我们讲他们都加入到一个队列中
-
-
排序
-
对每个起点,执行以下步骤
-
把它加到结果的顺序中
-
将其在图中的孩子节点取到
-
将其孩子的入度减少1
-
如果孩子的入度变为0,则改孩子节点成为起点,将其加入队列中
-
-
重复(a)过程,直到起点队列为空。
-
拓扑排序模式识别:
-
待解决的问题需要处理无环图
-
你需要以一种有序的秩序更新输入元素
-
需要处理的输入遵循某种特定的顺序