编程基础篇 · AI 背后的算法

BFS 与 DFS:Agent 在代码库里找文件

走迷宫动画看两种搜索的性格:一层层扫 vs 一条道走到黑;Coding Agent 的 grep 检索、网络爬虫都是它们的变体

本页解决的问题

先给结论

「BFS 与 DFS:Agent 在代码库里找文件」要解决的关键问题是什么?

走迷宫动画看两种搜索的性格:一层层扫 vs 一条道走到黑;Coding Agent 的 grep 检索、网络爬虫都是它们的变体

判断标准

让这个结论先证明自己值得留下。 把这一页当成决策工具,而不是需要背下来的定义。把概念连到一个真实任务、一个可观察结果,以及一个能改变你判断的失败上。

下一步

写下一个问题:试完这个方法后,你能用什么证据回答它?

常见误区

结论听起来很完整,却没有检查最关键的假设。

走迷宫看性格 · 同一张图,两种走法

🏁 是起点,🎯 是终点,深灰是墙。两个按钮各代表一种性格,留意三处:染色的形状(BFS 是一圈圈的波纹,DFS 是一条蛇);下方两个计数器;以及最后绿色高亮的路——谁的更短?谁探过的格子更多?

先跑 BFS,看波纹怎么扩散
BFS · 波纹式层层扫
访问格子数
最终路径长
DFS · 单头蛇形深入
访问格子数
最终路径长
两个数字讲完了全部理论。BFS 访问 77 格才碰到终点——它把「离起点 1 步、2 步、3 步……」的格子全泡开,代价是这一大片都得记在内存里;但正因为按距离一层层推进,它撞到终点的那条路必然是最短的(23 格)。DFS 只访问了 44 格就到了,内存里只需记住当前这一条路;但它走出的路 37 格,比最短路绕了一半还多——运气不好时还会一头扎进死胡同再倒出来(变浅的格子就是回溯)。
这和 AI 有什么关系?

把迷宫的格子换成文件夹和网页,这两种性格立刻出现在你身边:

没有谁全面胜出,只有场景匹配。要「最短 / 最近 / 最相关」,用 BFS,接受内存开销;要「先找到一个能用的解、内存又紧张」,用 DFS,接受路径可能绕。下一课的贪心和采样、再下一课的 Beam Search,本质上也是在这张「搜索策略光谱」上挑位置。

「走迷宫看性格 · 同一张图,两种走法」里的算法代价曲线

「🏁 是起点,🎯 是终点,深灰是墙。两个按钮各代表一种性格, 留意三处 :染色的 形状 (BFS 是一圈圈的波纹,DFS 是一条蛇);下方两个 计数器 ;以及最后绿色高亮的路—— 谁的更短?谁探过的格子更多」真正训练的不是背诵步骤,而是识别重复工作:输入变大时,程序到底多做了多少次比较、移动或递归。

先找重复工作,再谈快慢

「先 ls 看一眼顶层目录——这是 BFS 扫一层 ,快速建立全局感;发现 auth/ 文件夹最可疑,就一头钻进去逐层深挖——切换成 DFS 。真实 Agent 是 混合策略 :先广后深,还会用 grep 直接跳跃」可以拆成输入规模、每轮做什么、以及是否能缩小下一轮范围三个问题。Big-O 是描述增长趋势的语言,不是对每台机器的精确计时;常数、内存和真实数据分布也会影响最终结果。

  • BFS 层层扫 :按距离一圈圈泡开,找到的一定最短——代价是内存里泡着一大片
  • DFS 一条道走到黑 :省内存、常常更快碰到解,但路径不保证短,还会回溯
  • 访问数 vs 路径长 :77/23 对 44/37,两组数字就是两种性格的全部账本

别把理论最优当成无条件最优

面对 AI 写出的算法,先用小输入手算一遍,再用逐渐放大的数据做基准测试。这样才能把「「你可能认识的人」= 从你出发 BFS 走两层 :第一层是你的好友,第二层就是「好友的好友」。离你 2 步的人排在离你 5 步的人前面——层数本身就是亲疏」从一句结论变成可检查的性能判断。

从「走迷宫看性格 · 同一张图,两种走法」走到「这和 AI 有什么关系」

「走迷宫看性格 · 同一张图,两种走法」先把问题落在「🏁 是起点,🎯 是终点,深灰是墙。两个按钮各代表一种性格, 留意三处 :染色的 形状 (BFS 是一圈圈的波纹,DFS 是一条蛇);下方两个 计数器 ;以及最后绿色高亮的路—— 谁的更短?谁探过的格子更多」上;到了「这和 AI 有什么关系」,讨论继续推进到「把迷宫的格子换成文件夹和网页,这两种性格立刻出现在你身边」。两段连起来,重点就不只是记住一个结论,而是看清它成立所依赖的条件。

把这条判断带到下一个场景

算法题换成真实任务后,先找出重复工作,再问输入规模如何变化,最后用一个小基准验证理论判断。这样不会把复杂度记成脱离场景的标签。

  • 「走迷宫看性格 · 同一张图,两种走法」:🏁 是起点,🎯 是终点,深灰是墙。两个按钮各代表一种性格, 留意三处 :染色的 形状 (BFS 是一圈圈的波纹,DFS 是一条蛇);下方两个 计数器 ;以及最后绿色高亮的路—— 谁的更短?谁探过的格子更多
  • 「这和 AI 有什么关系」:把迷宫的格子换成文件夹和网页,这两种性格立刻出现在你身边
  • 「最后的要点」:爬虫、共同好友推荐 都是图搜索——迷宫只是最直观的一张图

最后的「最后的要点」把讨论落到「爬虫、共同好友推荐 都是图搜索——迷宫只是最直观的一张图」。回看这条线索时,最值得保留的是:当输入、规模或风险改变,哪些判断需要重新做一遍。

✅ 这一课想和你分享的

  • BFS 层层扫:按距离一圈圈泡开,找到的一定最短——代价是内存里泡着一大片
  • DFS 一条道走到黑:省内存、常常更快碰到解,但路径不保证短,还会回溯
  • 访问数 vs 路径长:77/23 对 44/37,两组数字就是两种性格的全部账本
  • 真实系统混着用:Agent 先 ls 一层(BFS)再钻可疑文件夹(DFS)
  • 爬虫、共同好友推荐都是图搜索——迷宫只是最直观的一张图
标记为已学完 阅读进度会自动记录
← 上一篇下一篇 →

继续阅读

同一条线上的下一篇。

文章讨论

读到这里,留下一个判断。

把刚想明白的地方、还没想通的问题,留给下一位一起学习的人。

正在讨论 BFS 与 DFS:Agent 在代码库里找文件 AI 背后的算法
3条讨论文章讨论 · 与共学社区同步
在共学社区查看
AM
Asha Morgan内容编辑
观点实践记录

我把这篇文章里的一个判断改写成了今天可以验证的小实验。比记住结论更有用的是,知道下一步要观察什么。

文章讨论7 有帮助
LH
Lin Harper独立开发者
观点观点

读完以后我先回头找它成立的条件,而不是直接把方法搬进项目。这个顺序让后面的取舍清楚很多。

文章讨论5 有帮助
KM
Kiki Moore产品运营
问题问题

如果把这个判断放到真实工作里,最先需要补的约束是什么?我想知道从阅读到第一次实践之间,哪一步最值得先做。

文章讨论4 有帮助