图的广度、深度优先搜索和拓扑排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图的广度、深度优先搜索和拓扑排序相关的知识,希望对你有一定的参考价值。

参考技术A

广度优先搜索是最简单的图搜索算法之一。之所以得名是因为该算法始终将已经发现的结点集合,沿着其 广度方向 向外扩展去寻找未发现结点。
具体算法执行过程如下图所示:

深度优先搜索,只有可能就在图中尽可能的 深入 ,总是从最近才发现的结点出发,寻找下一个结点。
具体算法执行过程如下图所示:

拓扑排序是计算机中经常遇到的概念,下面用于《算法导论》的定义

如下图3-1所示,事件E1完成之后,可以同时执行事件E2和E3,两事件执行结束之后,执行事件E4,最后可以同时执行事件E5和E6。每个事件的执行都依赖于它之前事件是否执行完成,执行的顺序是固定的,这样的线性顺序就是 拓扑排序

图的广度、深度优先搜索和拓扑排序是图论算法中的基础,也是实践中经常遇到的问题。在考研和面试笔试中会通过选择题或者填空题考察,学习理解上文图示中的算法思想,辅助练习问题不大。当然也有关于这里的算法题,例如LeetCode815公交路线问题,就是利用图的广度优先搜索求解,因为解题复杂,并且在平时的应试中出现概率不大,这里不做详细讲解。有兴趣的可以在LeetCode中搜索,题目后面有我提交过的题解。

以上是关于图的广度、深度优先搜索和拓扑排序的主要内容,如果未能解决你的问题,请参考以下文章

Java 深度遍历和广度优先遍历

Java 深度遍历和广度优先遍历

图相关算法

数据结构课设——有向图的深度广度优先遍历及拓扑排序

图的深度优先搜索及拓扑排序

通用的深度优先搜索+图的应用1:拓扑排序