466 字
2 分钟

深度优先搜索与广度优先搜索

什么是深度优先搜索与广度优先搜索#

深度优先搜索与广度优先搜索是经典的图遍历算法,用于在图中遍历或搜索节点。广泛应用于寻路算法、连通性分析、网页搜索/爬虫、图的遍历等场景。通常使用递归或者栈来实现深度优先搜索,使用队列来实现广度优先搜索。

深度优先搜索#

深度优先搜索(Depth-First Search,简称 DFS) 是一种回溯思想的搜索算法,核心是:不撞南墙不回头,一条路走到黑,走不通再回溯换路。

核心步骤#

1. 从起点出发
2. 选择一个相邻且**未访问**节点,深入走下去
3. 直到无法继续前进(无路可走、到达目标、越界)
4. 立即回溯到上一个节点,尝试另一条未走的分支
5. 重复直到所有节点遍历完毕 / 找到目标

示例#

假设我们有一个无向图 G,如下图所示。

无向图G

假设我们从起点1开始,按号数较小优先的方法使用深度优先搜索遍历该图。

  1. 从起点1出发,首先访问1
  2. 1相邻的节点有234,选择2
  3. 2相邻的节点只有6,选择6
  4. 6相邻的节点有57,选择5
  5. 由于5没有未访问的相邻节点,立即回溯到上一个节点6并继续访问6的另一个相邻节点7
  6. 访问7的相邻节点3
  7. 节点3没有未被访问的相邻节点,一直回溯到1,起点1还有一个相邻节点4,选择4

由此,深度优先搜索的遍历顺序为:1 -> 2 -> 6 -> 5 -> 7 -> 3 -> 4

算法实现#

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

深度优先搜索与广度优先搜索
https://blog.myqfeng.top/posts/dfs-and-bfs/
作者
明月清风
发布于
2026-04-02
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
明月清风
苦逼大学生一枚
公告
欢迎来到我的博客!转载请标明出处:https://blog.070219.xyz。
音乐
Cover

Music

No playing

0:00 / 0:00
No lyrics available
分类
标签
站点统计
文章
9
分类
4
标签
17
总字数
14,597
运行时长
0
最后活动
0 天前

目录