編程基礎篇 · 搜索與決策

BFS 與 DFS:Agent 在程式碼庫裏找檔案

工程進階篇裏,Coding Agent 接到「搵出登入報錯嘅原因」後,會在幾百個資料夾裏翻程式碼。往哪兒翻?先翻完這層再下去,還是抓住一條綫索鑽到底?這是兩種截然不同的性格——BFS(廣度優先)和 DFS(深度優先)。這一課讓它們各走一遍同一個迷宮,性格一眼見分曉。

走迷宮看性格 · 同一張圖,兩種走法

🏁 是起點,🎯 是終點,深灰是牆。兩個按鈕各代表一種性格,留意三處:染色的形狀(BFS 是一圈圈的波紋,DFS 是一條蛇);下方兩個計數器;以及最後綠色高亮的路——誰的更短?誰探過的格子更多?

先跑 BFS,看波紋怎麼擴散
BFS · 波紋式層層掃
訪問格子數–
最終路徑長–
DFS · 單頭蛇形深入
訪問格子數–
最終路徑長–
兩個數字講完了全部理論。BFS 訪問 77 格才碰到終點——它把「離起點 1 步、2 步、3 步……」的格子全泡開,代價是這一大片都得記在記憶體裏;但正因為按距離一層層推進,它撞到終點的那條路必然是最短的(23 格)。DFS 只訪問了 44 格就到了,記憶體裏只需記住當前這一條路;但它走出的路 37 格,比最短路繞了一半還多——運氣不好時還會一頭扎進死胡同再倒出來(變淺的格子就是回溯)。
呢樣同 AI 有咩關係?

把迷宮的格子換成資料夾和網頁,這兩種性格立刻出現在你身邊:

沒有誰全面勝出,只有場景匹配。要「最短 / 最近 / 最相關」,用 BFS,接受記憶體開銷;要「先找到一個能用的解、記憶體又緊張」,用 DFS,接受路徑可能繞。下一課的貪心和採樣、再下一課的 Beam Search,本質上也是在這張「搜索策略光譜」上挑位置。

✅ 這一課想和你分享的