Pixiv - KiraraShss
466 字
2 分钟
深度优先搜索与广度优先搜索
什么是深度优先搜索与广度优先搜索
深度优先搜索与广度优先搜索是经典的图遍历算法,用于在图中遍历或搜索节点。广泛应用于寻路算法、连通性分析、网页搜索/爬虫、图的遍历等场景。通常使用递归或者栈来实现深度优先搜索,使用队列来实现广度优先搜索。
深度优先搜索
深度优先搜索(Depth-First Search,简称 DFS) 是一种回溯思想的搜索算法,核心是:不撞南墙不回头,一条路走到黑,走不通再回溯换路。
核心步骤
1. 从起点出发2. 选择一个相邻且**未访问**节点,深入走下去3. 直到无法继续前进(无路可走、到达目标、越界)4. 立即回溯到上一个节点,尝试另一条未走的分支5. 重复直到所有节点遍历完毕 / 找到目标示例
假设我们有一个无向图 G,如下图所示。

假设我们从起点1开始,按号数较小优先的方法使用深度优先搜索遍历该图。
- 从起点
1出发,首先访问1。 - 和
1相邻的节点有2、3和4,选择2。 - 和
2相邻的节点只有6,选择6。 - 和
6相邻的节点有5和7,选择5。 - 由于
5没有未访问的相邻节点,立即回溯到上一个节点6并继续访问6的另一个相邻节点7。 - 访问
7的相邻节点3。 - 节点
3没有未被访问的相邻节点,一直回溯到1,起点1还有一个相邻节点4,选择4。
由此,深度优先搜索的遍历顺序为:1 -> 2 -> 6 -> 5 -> 7 -> 3 -> 4。
算法实现
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
深度优先搜索与广度优先搜索
https://blog.myqfeng.top/posts/dfs-and-bfs/