Skip to content

從 DFS、BFS 到 A* 的 Pacman 實作|Berkeley CS188 主題單元

2026年8月22日1 分鐘
TL;DRLecture 1–4 與 Project 1 把 DFS、BFS、UCS、A*、state representation 和 heuristic 串成同一套搜尋工具;關鍵不是背演算法,而是看清楚 frontier、cost 與 state 各自改變什麼。

🌏 English version

影片狀態:已附影片。 影片來源與說明

CS188 的第一段用 Pacman 回答一個基本問題:在不知道答案路徑的情況下,agent 要依什麼順序展開可能狀態?Lecture 1–4 的課表依序處理 agents、uninformed search、A* 與 local search;Project 1則要求你實作 DFS、BFS、UCS、A*,再設計 corners 與 food search 的 heuristic。

先固定共同骨架

四種 graph search 都可以看成同一個迴圈:從 frontier 取出節點、檢查目標、展開 successor、避免重複狀態。DFS 與 BFS 改的是 frontier 順序;UCS 用累積成本排序;A* 再加入對剩餘成本的估計。若四份程式碼大量重複,通常代表共同抽象還沒看清楚。

最難的是 state,不是公式

P1 的 corners problem 刻意要求你不要把整個 GameState 當搜尋狀態。位置相同、已造訪角落不同的兩個局面,未來目標不同;ghost 或無關食物資訊又不該塞進 state。好的 state 只保存「會影響後續合法動作與目標判定」的資訊。

heuristic 則必須在速度與正確性間守住界線。官方 P1 規格要求 food heuristic 保持 consistent;一個看似聰明但高估或前後不一致的估計,可能讓 A* 失去保證。先做容易證明的 lower bound,再用 autograder 看展開節點數,不要反過來猜評分門檻。

建議操作順序

  1. 不看程式,先寫出四種演算法的 frontier 規則。
  2. 完成 DFS/BFS,確認相同迷宮因展開順序不同而走出不同路。
  3. 完成 UCS/A*,分開檢查 path cost 與 heuristic。
  4. 為 corners state 寫一句「此 tuple 足以預測什麼」。說不出來就先別寫 code。
  5. 每次只跑一題或一個 test case;本機 autograder 是主要回饋,不需要 Gradescope。

完成 P1 後,真正該帶走的是三個問題:state 是否保留了必要資訊、frontier 代表什麼偏好、heuristic 是否只提供安全的方向感。這三問會一路回到後面的 MDP、Bayes nets 與 planning。

系列導航:上一篇:課程總覽|下一篇:CSP 與多代理搜尋

課程影片來源

官方 Spring 2026 課表與官方 YouTube 播放清單([CS188 SP26] Live Lectures,28 支)已於 2026-10-10 即時核對,本文嵌入的講課錄影在清單中(課表標為 Recording)。此處不提供未核對的時間跳轉。

YouTube:CS188 Spring 2026 Lecture 1: Intro, Agents, and Environments

原始影片:CS188 Spring 2026 Lecture 1: Intro, Agents, and Environments

課程與錄影入口:

查核日期:2026-10-10。

內容核對:已依字幕核對(2026-10-10):抽樣核對(只讀字幕開頭約五千字元):確認嵌入的是 Lecture 1,主題為課程介紹、agents 與 environments;字幕前段是課程行政與師資介紹(含 Dan Klein 與 Stuart Russell 分工),之後才進入 agent 的概念,與本文把第一講當作搜尋單元起點的敘述相符。本文其餘章節講的是同單元其他講次與 Project,不是這支影片的內容。

更新紀錄

  • 2026-10-10:標註影片狀態,核對錄影來源與取得方式。
  • 2026-10-10:重查影片狀態。官方 Spring 2026 課表與 YouTube 播放清單即時核對,嵌入的講課錄影在清單中,狀態改為已附影片。
  • 2026-10-10:依字幕核對影片內容。確認嵌入影片是 Lecture 1(課程介紹、agents 與 environments),主題與本文範圍相符;未發現需更正的影片說法。

參考資料