# 章節包:人工智慧導論(AI)W2(9/17)第 03 章「搜尋問題的定義」
影片 0:53:20–1:08:52,YouTube ID hNZQIO0q74o,逐字稿 C:\D槽\TAICA課程\人工智慧導論\第二周1150917\W2_人工智慧導論_朱威達.逐字稿.txt。Notion 章節頁 https://app.notion.com/p/3e6fc631b03081c8a7e0e152c12bbd25(頁 ID 3e6fc631-b030-81c8-a7e0-e152c12bbd25),頁面標題「03 搜尋問題的定義(0:53–1:08)」。
## 1. 第一行(直接照抄,不要改)
[人工智慧導論](https://app.notion.com/p/3e6fc631b0308131b213f0a3d93fe91d) › [W2(9/17)](https://app.notion.com/p/3e6fc631b0308175a433e5fa4bc500df) › 03|影片 [0:53:20–1:08:52](https://www.youtube.com/watch?v=hNZQIO0q74o&t=3200s)|投影片 Ch3 p.1–10|上一章 [02 環境性質與五種 Agent(0:13–0:40)](https://app.notion.com/p/3e6fc631b03081da84a3de991c10424f)|下一章 [04 BFS 與 UCS 搜尋(1:08–1:23)](https://app.notion.com/p/3e6fc631b030811291c5ebaf18c949df)
## 1b. 最後一行(直接照抄,放在 Self-check 後面,當全頁最後一行)
讀完了嗎?下一章:[04 BFS 與 UCS 搜尋(1:08–1:23)](https://app.notion.com/p/3e6fc631b030811291c5ebaf18c949df)|回到週頁:[W2(9/17)](https://app.notion.com/p/3e6fc631b0308175a433e5fa4bc500df)
## 2. 各段標題(照順序;每段一個 ## 標題,直接照抄連結)
- `## [0:53:20](https://www.youtube.com/watch?v=hNZQIO0q74o&t=3200s) Problem-solving agent 與 search` 老師講什麼:延續 goal-based agent,這章只看最簡單的情況:解答是一串固定的動作,找出這串動作的過程就叫 search。
- `## [0:55:20](https://www.youtube.com/watch?v=hNZQIO0q74o&t=3320s) 羅馬尼亞地圖:問題的五個要素` 老師講什麼:從 Arad 走到 Bucharest,用 initial state、actions、transition model、goal test、path cost 五要素定義問題;這個環境是 deterministic,任何解答都是一串 action。
- `## [0:59:42](https://www.youtube.com/watch?v=hNZQIO0q74o&t=3582s) 8-puzzle 的問題定義` 老師講什麼:狀態是盤面,動作想成空格上下左右移,goal test 看有沒有排好,path cost 是移動次數;老師說這些例子之後的章節還會再用。
- `## [1:02:21](https://www.youtube.com/watch?v=hNZQIO0q74o&t=3741s) 8-queens 的問題定義` 老師講什麼:8×8 棋盤擺 8 個皇后互不攻擊(同列、同行、對角線);狀態是放了 0–8 個皇后的盤面,動作是再放一個皇后。開頭約 30 秒逐字稿是亂碼。
- `## [1:04:42](https://www.youtube.com/watch?v=hNZQIO0q74o&t=3882s) 真實世界的搜尋問題` 老師講什麼:旅行推銷員、VLSI layout、機器人導航等問題更複雜,但本質上都是在建構 problem-solving agent。
- `## [1:05:45](https://www.youtube.com/watch?v=hNZQIO0q74o&t=3945s) 把問題展開成搜尋樹` 老師講什麼:從起點 A 展開可以走到的城市,一層層畫成 search tree:root 是起點,分支是動作,節點是狀態。
- `## [1:07:03](https://www.youtube.com/watch?v=hNZQIO0q74o&t=4023s) 樹上節點的結構` 老師講什麼:用 8-puzzle 說明每個 node 記錄 state(盤面)、parent(造成這個盤面的上一步)、action,以及 path cost(多走一個分支就多一步成本)。
## 3. 老師強調/會考/不考的地方(原句已驗證;寫進筆記時 ASR 錯字要改正)
- (0:59:43) [強調] 「這是一個我們之後會用的例子,我們順便也介紹其他,在往後不只這一章,在往後其他Chapter也可能會用到的例子」 → 羅馬尼亞地圖、8-puzzle、8-queens 之後各章會反覆使用
## 3b. 數學段候選(程式抓的,只是提示;寫「跳過提示」行用)
0 段候選(門檻 3.0 字/30 秒)
## 4. 這章摘要與重要度
Problem-solving agent 把解答看成一串動作,用羅馬尼亞地圖、8-puzzle、8-queens 示範怎麼正式定義問題,再把問題展開成搜尋樹。(核心)
## 5. 整堂課的提醒(ASR 錯字、老師口誤、投影片缺公式等;只用跟這章有關的)
- 影片開頭缺幾分鐘:YouTube 標題 AI2026_0917_3。0:00:00–0:01:43 老師在設定直播畫面,0:01:46 起接著講到一半的 HW1 說明,HW1 前段不在影片裡。
- 1:02:22–1:02:52 約 30 秒逐字稿是 ASR 亂碼(重複「我用這個」「有一個」),剛好是八皇后問題的開場,寫筆記時以投影片 Ch3 p.7 為準。
- 兩次下課:0:40:28–0:53:20、1:43:47–1:56:41。下課時段的逐字稿時間戳有跳動(0:43:20→0:53:20、1:52:41→1:56:41 都剛好差整數分鐘),Ch3 與 informed search 的起點建議開影片確認。
- HW1 說明前段不在影片裡,本機投影片也沒有 HW1 說明頁(Lecture 0 只有一行 project proposal),研究動機之前講了什麼無法得知。
- 0:03:10「所以這邊會佔75%的比例」不確定指哪幾塊(introduction 加方法?),筆記建議只寫老師提到 75%,不要自行解讀。
- ASR 錯字(寫筆記時要改):0:06:52「CPPR的格式」應為 CVPR;0:06:57「體驗報告」推測是「提案報告」;0:07:02「角角的期限」應為「繳交期限」;2:28:58「無極」應為 ridge(屋脊);2:30:5x「8的84%17個million」應為 8^8 ≈ 17 million;另外多處 Asian=agent、Socastic=stochastic、Pass Cost=path cost、heel climbing=hill climbing、None=known、Amstrong Search/Active=A* search/optimal。
- 1:29:16「GPD-6 ASTRON」不確定原詞,大概是某個 GPT 的 agent 產品,筆記建議寫「現在的 AI agent」即可。
- 1:02:22–1:02:52 逐字稿亂碼約 30 秒(八皇后開場,老師好像在說買了一個小棋盤),內容以 Ch3 p.7 補。
- 時間戳疑似漂移:0:43:20「好接下來呢」→0:53:20、1:52:41「第二個部分」→1:56:41,都剛好差整數分鐘;章節起點採後者,建議開影片確認。
- 老師口誤或 ASR:1:12:54、1:17:25 把 BFS、UCS 說成「Informed Search」,投影片 p.12–17 標的是 Uninformed,筆記照投影片寫。
- 老師口頭說法跟投影片不同(筆記照投影片寫,並加「注意」):(a) 1:21:5x 說「BFS 也可以找最佳解」,課本是步驟成本都一樣時才是;(b) 2:01:2x 說 greedy「有解一定會找到」,p.30 寫的是只在有限狀態空間才 complete;(c) 2:06 說 A* 要同時符合 admissible 與 consistent 才最佳,p.33 說 consistency 是稍強的條件,只有 graph search 才需要。
- 投影片內容有、老師沒明講的地方,Exam-ready 要補原句:Ch3 p.23(IDDFS 是搜尋空間大、解的深度未知時的首選)、Ch2 p.25(utility-based 能處理 stochastic/部分可觀察環境的不確定性)、Ch4 p.6 後半(有多個最好的鄰居時隨機挑)。
- 投影片 _text 缺公式(p.14、p.19、p.20、p.25 的 O(b^d)、O(b^m)、O(bm)、O(b^(d/2)) 都是空白),寫 Exam-ready 前要看投影片圖確認。
- 下課時段講台邊的對話(1:44:44–1:52:27)分不清誰是老師、誰是學生,例如 1:45:54「就是有自己的想法這才是那個重點」不確定是誰說的;「這週要記得」只用確定是老師回答的部分。
- 0:11:10「沒有點名」推測是回答 Slido 上「有沒有點名」的問題,但沒看到原問題,不確定。
## 6. 投影片文字(這章範圍)
**這幾頁的公式或內容只在圖裡(文字檔抓不到),寫 Exam-ready 與公式前先用 Read 看這幾張圖:**
- Ch3 p.1 → C:\D槽\TAICA課程\_work\notes-v2\ai-w2\img\brief_Ch3_p001.png
- Ch3 p.2 → C:\D槽\TAICA課程\_work\notes-v2\ai-w2\img\brief_Ch3_p002.png
- Ch3 p.3 → C:\D槽\TAICA課程\_work\notes-v2\ai-w2\img\brief_Ch3_p003.png
- Ch3 p.5 → C:\D槽\TAICA課程\_work\notes-v2\ai-w2\img\brief_Ch3_p005.png
- Ch3 p.9 → C:\D槽\TAICA課程\_work\notes-v2\ai-w2\img\brief_Ch3_p009.png
--- Ch3 p.1 ---
Introduction to
Artificial Intelligence
Chapter 3
Solving Problems by Searching
Wei-Ta Chu (朱威達)
1
--- Ch3 p.2 ---
• Goal-based agents consider future actions and the desirability of
their outcomes. This chapter describes one kind of goal-based
agent called a problem-solving agent.
• In this chapter, we limit ourselves to the simplest kind of task
environment (PEAS: Performance, Environment, Actuators,
Sensors), for which the solution to a problem is always a fixed
sequence of actions.
Introduction
2
--- Ch3 p.3 ---
• The process of looking for a sequence of actions that reaches the
goal is called search. A search algorithm takes a problem as input
and returns a solution in the form of an action sequence. Once a
solution is found, the actions it recommends can be carried out.
This is called the execution phase.
Problem-Solving Agents
3
--- Ch3 p.4 ---
• An example problem: moving from Arad to Bucharest
Problem-Solving Agents
4
--- Ch3 p.5 ---
• A problem can be defined formally by five components
• Initial state – In(Arad)
• A description of the possible actions -- {Go(Sibiu), Go(Timisoara),
Go(Zerind)}
• A description of what each action does (transition model) --
RESULT(In(Arad), Go(Zerind)) = In(Zerind)
• The goal test, which determines whether a given state is a goal state --
In(Bucharest)
• A path cost function that assigns a numeric cost to each path
• A solution to a problem is an action sequence that leads from the initial state
to a goal state. Solution quality is measured by the path cost function.
Well-Defined Problems and Solutions
5
--- Ch3 p.6 ---
• 8-puzzle problem
Formulating Problems
6
--- Ch3 p.7 ---
• 8-queens problem
• A queen attacks any piece in the same row, column
or diagonal.
Formulating Problems
7
--- Ch3 p.8 ---
• Touring problems – route-finding problem
• Traveling salesperson problem – route-finding problem
• VLSI layout problem
• Robot navigation -- – route-finding problem
• …
Real-World Problems
8
--- Ch3 p.9 ---
• Search algorithms work by considering various possible action sequences. The
possible action sequences starting at the initial state form a search tree with
the initial state at the root; the branches are actions and the nodes correspond
to states in the state space of the problem.
Searching for Solutions
9
--- Ch3 p.10 ---
Infrastructure for Search Algorithms
10
• For each node n of the tree, we have a structure containing four
components
## 7. 逐字稿(0:53:20 前後各多 1 分鐘,原始行)
[00:53:20] 我們要開始第三章
[00:53:22] OK
[00:53:23] 我們先從一個
[00:53:25] 最簡單廣
[00:53:27] 來講說
[00:53:31] 我們如果利用search
[00:53:33] 我們把解決問一個
[00:53:41] 所以第三章呢
[00:53:42] 講的是solving problems by searching
[00:53:45] OK
[00:53:47] 沿襲我們之前所說的
[00:53:49] 這個goal based agent
[00:53:51] 角色呢
[00:53:52] 我們現在先不管後面更
[00:53:54] 所謂的utility based
[00:53:56] 或者是learning agent
[00:53:58] 我們先回到goal based agent這邊
[00:54:02] goal based agent呢
[00:54:04] 他考慮的是說
[00:54:05] 我今天收到一些訊息之後
[00:54:07] 我要做一些決策
[00:54:09] 然後看是不是能夠
[00:54:10] 離我的目標比較接近
[00:54:13] 那我們來考慮
[00:54:16] 我們考慮其中一種
[00:54:18] goal based agent的方式
[00:54:20] 這個叫做problem solving agent
[00:54:23] 那在這一章裡面呢
[00:54:24] 我們把我們的討論呢
[00:54:26] 侷限在最簡單的PEAS
[00:54:32] 其中呢
[00:54:33] 它的solution
[00:54:35] 都可以當成是一連串動作
[00:54:39] A sequence of action
[00:54:41] 或者是action sequence
[00:54:43] 我們的解答就是一連串的動作
[00:54:46] 這一類的問題
[00:54:48] 那我們呢
[00:54:52] 這一連串的動作呢
[00:54:54] 我們去找一連串的動作
[00:54:56] 來完成我們的目標
[00:54:59] 這件事情呢
[00:55:00] 我們稱呼它叫做search
[00:55:02] 我們要去搜尋出一連串的動作
[00:55:05] 來達到我們的目標
[00:55:07] 那我們的一個解答呢
[00:55:08] 其實就是
[00:55:09] 這一連串動作裡面的
[00:55:10] 某一串動作
[00:55:13] 那它可能能夠讓我們
[00:55:16] 達到我們的目標這樣子
[00:55:19] 好
[00:55:20] 那我們舉個例子
[00:55:21] 講了半天
[00:55:22] 虛擬的
[00:55:23] 我們直接舉一個實際例子
[00:55:24] 就像這一個
[00:55:26] 這個是一個羅馬尼亞的地圖
[00:55:30] 那上面的每一個點呢
[00:55:32] 代表的是羅馬尼亞的一個都市
[00:55:35] 那剛好
[00:55:36] 為什麼舉這個例子
[00:55:37] 因為恰好呢
[00:55:39] 這個都市的名稱的開頭
[00:55:41] 剛好就是ABCDE一直到Z
[00:55:44] 幾乎啦
[00:55:45] 所以它故意舉一個這樣的例子
[00:55:47] 假設我們有一個羅馬尼亞的地圖
[00:55:50] 然後呢
[00:55:51] 有ABCDE到Z的城市
[00:55:54] 比如說有
[00:55:55] Arab這個都市啦
[00:55:57] 然後有什麼Sibiu的這個都市啦
[00:56:00] 什麼等等等等
[00:56:01] 那某一些都市之間呢
[00:56:03] 有道路相連
[00:56:06] 那假設呢
[00:56:07] 我們也知道說
[00:56:08] 比如說從Arab到Sibiu
[00:56:11] 中間是離140公里
[00:56:15] 比如說單位叫公里
[00:56:17] 好
[00:56:18] 我們現在的目標是
[00:56:19] 我們現在給一個任務
[00:56:21] 這個任務是呢
[00:56:22] 要你從A
[00:56:24] 走到B
[00:56:26] Arab走到Bucharest
[00:56:29] Bucharest其實是羅馬尼亞的首都
[00:56:32] 我們現在給你一個任務
[00:56:33] 要你由A走到B
[00:56:36] 那你走哪一個路
[00:56:38] 你路徑要怎麼走會最好呢
[00:56:41] 這個就是我們現在要解的問題
[00:56:44] 好那所以來定義一下這個問題啦
[00:56:47] 一開始呢
[00:56:48] 我人是在A這個都市
[00:56:52] 那我在A這個都市
[00:56:53] 我可以做的動作是什麼呢
[00:56:55] 就是我走去S這個都市
[00:56:57] 或走去T
[00:56:58] 或者走去Z
[00:56:59] 因為為什麼
[00:57:00] 因為你看
[00:57:01] 從A可以走出去的路
[00:57:03] 一個是Z嘛
[00:57:05] 一個是S嘛
[00:57:06] 一個是T嘛
[00:57:08] 對不對
[00:57:09] 它可以做的動作
[00:57:10] 就是這三個動作的其中一個
[00:57:12] 看你是要走去哪一個都市
[00:57:15] 那Transition Model的意思就是說
[00:57:17] 你做了
[00:57:18] 你選了某一個動作之後
[00:57:21] 你做了那個動作
[00:57:23] 你的狀態會怎麼變動
[00:57:26] 這個叫做Transition Model
[00:57:28] 那In this case
[00:57:30] 就是說我本來在A這個都市
[00:57:32] 我假設要走去Z這個都市的話呢
[00:57:35] 我造成的結果就是
[00:57:37] 我後來人會跑到Z這個都市
[00:57:40] 好所以這裡回顧一下
[00:57:42] 我們剛剛上一節課講的
[00:57:44] 這樣子的環境
[00:57:47] 是Deterministic還是Stochastic
[00:57:51] 是Deterministic
[00:57:52] 因為我們是假設說
[00:57:54] 一旦我們說要從A走到Z
[00:57:56] 我們的下一個狀態就是
[00:57:58] 我們真的會到Z
[00:57:59] 這是一定的
[00:58:00] 所以它是Deterministic
[00:58:02] 然後呢
[00:58:03] 有沒有抵達終點呢
[00:58:05] 那就看說
[00:58:06] 我經過多次的走訪之後
[00:58:10] 我是不是身處於
[00:58:13] Butcher Ranch的這個都市
[00:58:15] 如果是
[00:58:16] 基本上我就達到了我的目標了
[00:58:20] 那我們要定義一下
[00:58:22] 我這樣子走
[00:58:24] 我要花的
[00:58:25] 我的花費
[00:58:26] 我的Pass Cost
[00:58:28] 是什麼呢
[00:58:29] 就是我每一條路徑
[00:58:31] 每一條路徑上面
[00:58:34] 你走的里程
[00:58:35] 我希望我走的里程
[00:58:36] 是越小越好
[00:58:38] 也就是說我花的
[00:58:40] 油錢
[00:58:41] 或者我花的相同數目之下
[00:58:44] 我花的時間最短
[00:58:46] 這個叫我的Pass Cost
[00:58:48] 這樣子
[00:58:49] 那這個問題裡面的一個
[00:58:51] 這個問題裡面的Solution
[00:58:53] 它其實可能有很多Solution
[00:58:55] 對不對
[00:58:56] 我可以這樣子
[00:58:57] A走到Z
[00:58:58] 走到O
[00:58:59] 再走到S
[00:59:00] 走到F
[00:59:01] 再走到B
[00:59:02] 這是一個
[00:59:03] 這是一個Solution
[00:59:04] 我也可以
[00:59:05] A走到S
[00:59:06] 走到R
[00:59:07] 走到P
[00:59:08] 再走到B
[00:59:09] 這也是另外一個Solution
[00:59:10] 對不對
[00:59:11] 所以其實
[00:59:12] 這個問題有很多的Solution
[00:59:14] 任何的一個Solution
[00:59:16] 怎麼表達呢
[00:59:17] 其實就是一連串的Action
[00:59:20] 對不對
[00:59:21] 走到Z是一個Action
[00:59:23] 再走到O是一個Action
[00:59:25] 再走到S是一個Action
[00:59:27] 對不對
[00:59:28] 所以
[00:59:29] 一個任何的一個
[00:59:31] 解答
[00:59:32] 都可以用一連串的Action來表達
[00:59:36] OK
[00:59:37] 那這個就是
[00:59:38] 這個問題的整體的地方
[00:59:42] 好那
[00:59:43] 這是一個我們之後會用的例子
[00:59:46] 我們順便也介紹其他
[00:59:49] 在往後不只這一章
[00:59:51] 在往後其他Chapter
[00:59:52] 也可能會用到的例子
[00:59:54] 其中一個例子是這個
[00:59:55] 叫做A puzzle problem
[00:59:57] 大家可能都玩過
[00:59:59] 好
[01:00:00] 這是一個九公格
[01:00:01] 上面有八個八塊
[01:00:04] 編號12345678
[01:00:06] 八塊
[01:00:07] 好
[01:00:08] 那其中有一格呢
[01:00:09] 是空的
[01:00:11] 好
[01:00:12] 那這一個問題呢
[01:00:14] 就是我隨機的把
[01:00:16] 編號1到8的方塊
[01:00:18] 擺在九公格裡面
[01:00:20] 然後要你去移
[01:00:22] 移動這些方塊
[01:00:24] 使得最後呢
[01:00:26] 你的方塊的
[01:00:28] 這個擺放會長這樣
[01:00:31] 最左上角是這個空格
[01:00:33] 然後呢12345678
[01:00:35] 照這樣子排好
[01:00:37] OK
[01:00:38] 好這個就是
[01:00:40] 這個問題的狀態是這樣
[01:00:42] 所以呢
[01:00:43] 每一個狀態
[01:00:44] 就是任何一個
[01:00:46] 在九公格裡面有擺一個
[01:00:48] 擺八塊
[01:00:50] 這個木塊
[01:00:51] 每一個排
[01:00:53] 每一個盤面
[01:00:54] 都是一個狀態
[01:00:55] 好
[01:00:56] 那Initial state呢
[01:00:57] 就是看你隨機
[01:00:58] 從什麼樣子的狀態開始吧
[01:01:00] 你的Action是什麼
[01:01:02] 這個問題裡面的Action
[01:01:04] 就是
[01:01:06] 實際上我們是去移動
[01:01:08] 那個有數字編號的木塊嘛
[01:01:11] 對不對
[01:01:12] 但是這樣子
[01:01:13] 你有好幾塊都可以移呀
[01:01:14] 所以我們把問題稍微趕一下
[01:01:16] 我們把空格這個
[01:01:18] 也想成是一個方塊
[01:01:20] 所以我們把它想像成是
[01:01:22] 我有這個空格這方塊
[01:01:24] 我這空格可以往左移
[01:01:25] 往右移
[01:01:26] 往上移
[01:01:27] 往下移
[01:01:28] 比如說你這個空格
[01:01:29] 往上移
[01:01:30] 就等於是你二號
[01:01:31] 往下移的意思嘛
[01:01:32] 好
[01:01:33] 所以我們把它的Action呢
[01:01:34] 想像成就是
[01:01:35] 我的空格這一塊
[01:01:37] 是可以上下左右移的
[01:01:39] 這樣
[01:01:40] 那你的Transition Model就是
[01:01:42] 比如說你空格
[01:01:43] 如果往上移
[01:01:44] 你現在一個狀態
[01:01:45] 就是你二號
[01:01:46] 跑到中間來
[01:01:47] 空格跑到上面來嘛
[01:01:48] 所以這也是一個
[01:01:49] Deterministic的一個Environment
[01:01:51] Environment
[01:01:52] 好
[01:01:53] Goal Test呢
[01:01:54] Goal Test就是
[01:01:55] 看看最後的盤面
[01:01:56] 是不是長這樣嘛
[01:01:57] 對不對
[01:01:58] 好
[01:01:59] 那你的Pass Cost呢
[01:02:01] 你這樣子移來CVA去
[01:02:03] 你所需花的費用是什麼
[01:02:08] 我們把它定義成
[01:02:09] 你要移多少次
[01:02:11] 我希望你移越少次
[01:02:13] 你越快達到
[01:02:14] 右上角這個Goal State越好
[01:02:17] 所以這個就是這個定義
[01:02:21] 好
[01:02:22] 那你這個
[01:02:24] 我用這個
[01:02:25] 我用一個
[01:02:26] 我用這個
[01:02:27] 我用這個
[01:02:28] 我用這個
[01:02:29] 我用這個
[01:02:30] 我的意思是
[01:02:31] 我的意思是
[01:02:32] 如果你有帶
[01:02:33] 我用這個
[01:02:34] 有這個
[01:02:35] 你其實我用這個
[01:02:36] 你直接可以
[01:02:37] 他就是
[01:02:38] 他有一個
[01:02:39] 有一個
[01:02:39] 有一個
[01:02:40] 有一個
[01:02:41] 有一個
[01:02:42] 有一個
[01:02:43] 有一個
[01:02:44] 有一個
[01:02:45] 有一個
[01:02:46] 有一個
[01:02:48] 我有一個
[01:02:49] 我買了一個
[01:02:50] 夠小的
[01:02:51] 很便宜
[01:02:52] 挺便宜的
[01:02:53] 皇后這個旗子呢
[01:02:55] 它會攻擊
[01:02:57] 跟它同一列
[01:02:59] 跟同一行
[01:03:00] 還有跟它同一個對角線上面的
[01:03:02] 所有的其他的旗子
[01:03:05] OK 好
[01:03:06] 所謂的八皇后問題呢
[01:03:08] 就是說在一個這樣的盤面
[01:03:11] 12345678
[01:03:13] 在一個八乘八的一個旗盤上面呢
[01:03:16] 要你擺八隻皇后
[01:03:19] 使得你擺完之後的結果呢
[01:03:22] 皇后們不會互相攻擊
[01:03:25] 比如說像這個例子
[01:03:27] 這個例子呢
[01:03:28] 其實有沒有符合八皇后的
[01:03:30] 沒有呢
[01:03:31] 其實很快就知道沒有
[01:03:33] 這一個會打到這一個
[01:03:35] 因為這是同一個對角線
[01:03:37] 對不對
[01:03:38] 這個還好
[01:03:39] 這個會打這裡
[01:03:40] 也會打這裡
[01:03:41] 然後它所有的對角線
[01:03:42] 都沒有打到
[01:03:43] 這個OK
[01:03:44] 所以所謂的八皇后問題的目標就是
[01:03:47] 你這八隻皇后應該要怎麼擺
[01:03:50] 會讓我最後擺完
[01:03:52] 然後盤面上的八隻皇后不會互相攻擊
[01:03:55] 這個就是這個問題的定義
[01:03:57] 所以它的State是什麼
[01:03:59] 它的State就是一個盤面
[01:04:02] 你可能放0隻皇后到8隻皇后
[01:04:05] 你一開始是什麼
[01:04:06] 你一開始是一個空白的旗的一個盤
[01:04:09] 旗盤
[01:04:10] 然後你要一隻一隻皇后把它放上去
[01:04:13] 某一個位置這樣子
[01:04:16] 你的Action是什麼
[01:04:17] 你的Action就是你把皇后放到某一個位置
[01:04:19] 這就是你的Action
[01:04:22] 傳記序Model就是什麼
[01:04:24] 比如說你要放在22這個位置
[01:04:27] 你把它放上去之後呢
[01:04:29] 那接下來盤面就是22那個位置
[01:04:32] 位於一隻皇后
[01:04:33] 就這樣
[01:04:34] 這個就是你的傳記序Model
[01:04:36] 那你的目標就是說
[01:04:38] 有8隻皇后在盤面上
[01:04:40] 彼此不互相攻擊
[01:04:42] 所以我們這裡介紹了三個不同的例子
[01:04:49] 接下來
[01:04:50] 世上還有很多很多
[01:04:52] 這個實際實體世界當中
[01:04:55] 有很多很多各種不同的問題
[01:04:59] 那這些問題呢
[01:05:00] 其實很多是資工系的同學
[01:05:03] 你在大二修演算法的時候
[01:05:06] 你可能都有碰過的問題
[01:05:07] 比如說
[01:05:09] Traveling salesperson problem
[01:05:12] 或者說你現在在做電路設計的
[01:05:13] 你會有Layout problem
[01:05:16] 或者說你現在在做自駕車的
[01:05:18] 會有Robot Navigation problem
[01:05:20] 這些
[01:05:21] 廣義來講
[01:05:23] 都屬於
[01:05:24] 像要介紹的這些問題
[01:05:31] 來得更為複雜
[01:05:32] 當然我們上課
[01:05:33] 我們就先從最簡單的開始講起
[01:05:35] 但從像話來看
[01:05:37] 它要解的
[01:05:38] 它都是一種Problem solving的agent
[01:05:40] 你要建構出一個Problem solving agent
[01:05:44] 好吧
[01:05:45] 那我們就先從地圖這個問題開始
[01:05:47] 我們要如何找到一個解答呢
[01:05:49] 我們要從A走到B
[01:05:53] 在這個問題裡面呢
[01:05:54] 我們有一種做法是
[01:05:55] 我們把
[01:05:57] 這整個行走的過程
[01:05:59] 它可以走的Action
[01:06:01] 它可以做的Action
[01:06:02] 或者說
[01:06:03] 它可以走過去的都市
[01:06:04] 整體而言表達成一個Search Tree
[01:06:08] 表達成一棵樹
[01:06:11] 這棵樹的Root
[01:06:13] 出發點就是A這個都市
[01:06:17] OK
[01:06:18] 那簡單的我們知道嘛
[01:06:19] 你從A這個都市出發
[01:06:21] 你可以走到S
[01:06:22] 你可以走到T
[01:06:23] 你可以走到Z
[01:06:25] 那同樣的
[01:06:26] 你如果走到S的話呢
[01:06:28] 你可以走到
[01:06:29] 你可以走回A
[01:06:31] 或者走到F
[01:06:32] 或者走到O
[01:06:33] 或者走到R
[01:06:35] 依此類推
[01:06:36] 所以你是不是可以把
[01:06:38] 你要從A走到B的這整個的過程
[01:06:41] 你可以展開成一棵樹
[01:06:46] 對不對
[01:06:47] 你可以展開成一棵樹
[01:06:48] 那這些事情顯然的
[01:06:52] 很容易用來表達
[01:06:55] 剛剛羅馬尼亞地圖這個問題
[01:06:58] 那其實可能也可以用來表達
[01:07:01] 這個九宮格的這個問題啊
[01:07:03] 比如說
[01:07:04] 我今天在這個Tree裡面呢
[01:07:07] 某一個Node
[01:07:08] 代表的是某一個盤面的意思
[01:07:10] 這個Node的Parent
[01:07:14] 其實就是
[01:07:16] 能夠造成
[01:07:18] 這種盤面的上一個步驟
[01:07:21] 會造成這個盤面的
[01:07:28] 有可能是我前一個盤面呢
[01:07:30] 4號在最右上角
[01:07:32] 空白在這裡
[01:07:33] 或者說前一個盤面
[01:07:35] 就是8號在最右上角
[01:07:37] 空格在這裡
[01:07:38] 那它有可能造成
[01:07:40] 我現在這個Node長這樣
[01:07:42] 所以它的Parent
[01:07:43] 有兩種可能
[01:07:45] 那同樣它的Child呢
[01:07:47] 它的Child可以是
[01:07:49] 我從這個盤面
[01:07:50] 可以繼續往下變動的情況
[01:07:53] 所以它的State
[01:07:54] 就是代表一個盤面
[01:07:55] 它的Parent就是能夠造成
[01:07:57] 這個盤面的上一個動作
[01:08:00] 那它可以做的Action就是
[01:08:02] 我今天如果把這個空白
[01:08:04] 往下移
[01:08:05] 那就8號跑到最上面
[01:08:09] 如果往左移
[01:08:10] 就是4號馬來村右上角
[01:08:12] 空白跑到這裡
[01:08:14] 那PassCross的其實就是
[01:08:17] 你在這個Tree裡面行走
[01:08:20] 你多走一個分支
[01:08:22] 多走一次分支
[01:08:23] 就代表
[01:08:24] 我這個空格
[01:08:25] 多移動一次的意思
[01:08:27] 對不對
[01:08:28] 就好像說
[01:08:29] 剛剛這個
[01:08:30] 從A走到B的這個Tree
[01:08:32] 我多走一個分支
[01:08:33] 我就要付出
[01:08:35] 我的里程數
[01:08:37] 那就是我的PassCross
[01:08:42] 所以我們剛才有把問題
[01:08:44] 像這一類的問題
[01:08:46] 我們可以把它描述成
[01:08:48] 在一棵樹上面來找尋
[01:08:52] 剛剛講P.E.A.S
[01:08:54] 我們要如何去評某一個演算法
[01:08:58] 我們還沒有跟大家講
[01:08:59] 你可以用什麼演算法
[01:09:01] 但是我們先來定義一下
[01:09:03] 我們如何去評判一個演算法
[01:09:05] 有幾種不同的指標
[01:09:09] 第一個Completeness
[01:09:12] 它的意思是說
[01:09:14] 如果這個系統有解的話
[01:09:16] 如果這個問題是有Solution的話
[01:09:18] 它是不是一定能夠找到Solution
[01:09:21] 比如說
[01:09:27] 我從A走到B
[01:09:29] 可能我有很多種走法
[01:09:31] 對不對
[01:09:32] 我有好多種Solutions
[01:09:35] 那評判一個演算法的第一種指標
[01:09:38] 可能是說
[01:09:39] 如果它有Solution
[01:09:41] 你是不是一定就能夠找到Solution
[01:09:44] 當然也有一些問題是沒有Solution的
[01:09:47] 那種就目前暫時
[01:09:49] 不在我們的考慮
[01:09:51] 如果它有Solution
[01:09:52] 是不是一定能夠找到Solution
## 8. 寫作規則
(這是 `_筆記SOP.md` 第 3.1、4、5、6 節的濃縮版。兩者衝突時以 SOP 為準。)
讀者:碩士生,兩門課期末是英文考試。要只看筆記就能學會,講得比老師好懂。畫面要簡潔。
**最高原則:Notion 是主教材,不是輔助(2026-10-04 主理人)**。主理人看不懂老師的英文簡報、數學和底層內容,**不看影片、不看投影片,只讀這一章也要學得會**。寫完用這三題自我檢查,任一題答「否」就補:
1. **數學段**:每個收起來的數學段,預設看得到的地方有沒有一句白話說明「這段公式想解決什麼問題、算出來代表什麼」?(例:「這段推導的目的是找出走哪個方向分數上升最快,結果就是梯度。」)只寫「可跳過」不算。
2. **英文圖**:每張投影片圖,下面有沒有把圖上的英文重點翻成中文(2–5 點)並說明這張圖在講什麼?
3. **底層知識**:這章用到、但老師沒解釋的東西(數學名詞、程式名詞、前幾週的概念),有沒有用白話補上(一兩句或「要先懂什麼?」摺疊)?前幾週學過的概念,附一句提醒+連結。
**概念優先(2026-09-26 主理人)**:主理人只想懂概念,不想補數學、不想看程式碼和座標圖。兩門課的考試也都是問答題、不考算式(AI W1 1:16:52;NLP W3 1:47:41、2:48:36)。所以:
- 每段預設看得到的只有:白話摘要(2–4 句)+**一句生活比喻**(例:模擬退火像投資理財,年輕時敢冒險、越老越保守)+「考試可能怎麼問」一句。
- 數學推導、公式、手算、程式碼、座標圖,全部收進標題寫「(進階,可跳過)」的摺疊,例如「它到底怎麼運作?(進階,可跳過)」。每段最多一個進階摺疊,不要寫長篇計算。
- 演算法要能「用文字說出步驟」(考試可能要你描述),這一點放在預設看得到的地方,不用數字。
- **重心比例**:白話理論與概念模式(它在解決什麼問題、核心想法、跟別的方法差在哪、優缺點、生活比喻)占主要篇幅;數學與程式細節只用一兩句帶過,細節收進進階摺疊。
**圖文並茂(2026-09-26 主理人:不要只有文字)**:
- 每章至少 2–3 個圖,放在**預設看得到**的地方,每個圖前後各用一兩句白話說明「這張圖在看什麼」。
- 流程、步驟、因果、比較 → 用 mermaid 流程圖(```mermaid,flowchart LR 或 TD;節點文字用中文、加雙引號;一張圖不超過 10 個節點)。
- 投影片上的示意圖、架構圖 → 用 [[IMG: …]] 放投影片圖。
- 仍守「每個 ## 段落最多一種視覺元素」。
### 輸出兩個檔
1. `chNN.md`(Notion 寫法,不含頁面標題),結構固定:
- 第一行:章節包第 1 節那行,原樣照抄。
- 第二行起(有數學段才寫):**跳過提示**,每段一行,讓主理人看影片時知道從哪跳到哪。用章節包第 3b 節的候選當提示,對照第 7 節逐字稿確認(只標老師連續講公式、推導、矩陣、微積分、機率計算、程式細節超過約 1 分鐘的段落;概念講解和比喻不算):
`跳過提示:(1:31:02–1:35:40) 老師在推導梯度公式,聽不懂可以直接跳到 [1:35:40](YouTube 連結),接著講「步長 α 怎麼選」。`
- `## 重點`:三點中文,每點一到兩句。
- `## Exam-ready`:3–10 行英文,**從章節包的投影片文字逐字抄**,每行 `- **Term**: "原句"(Ch3 p.14)`。老師有明確證據才在行尾加 `【老師強調】(h:mm:ss)`。
**每一行下面一定要有一行縮排的中文解釋**(主理人英文不好,看不懂的英文等於沒用):
```
- **Hill climbing**: "It keeps track of one current state and on each iteration moves to the neighboring state with highest value."(Ch4 p.5)
- 中文:爬山法只記住「現在這一個狀態」,每一輪都移到分數最高的鄰居。白話:一直往比較高的地方走一步。
```
中文要先把句子意思講清楚,再補一句白話;最後用「英文(中文)」列出這句裡 1–3 個難字,例:sparse(稀疏)、distinct terms(不重複的字)。
**一行只放一句投影片原句**。同一頁有多句要考就拆成多行,每行各接一行中文;不要用分號串三句以上,不要把計算量 O(...) 塞進去。
- 章節包第 2 節的每一段:`## [h:mm:ss](連結) 標題`(照抄),下面 2–4 句白話摘要,其餘全部收進摺疊:
```
問句(例:用生活例子講,BFS 在做什麼?)
內容
```
摺疊種類(需要才放):用生活例子講?/它到底怎麼運作?/要先懂什麼?(老師假設你會的數學或概念,短版教學)/老師原話是什麼?(「原話」(h:mm:ss),只放重要的,最多 5 句)。
- 「它到底怎麼運作?」要用一組小數字把這段的演算法**真的跑 1–3 步**(例:算出梯度、更新一次、比較兩個 α),不是只示範定義的加減乘除。全章盡量沿用同一組數字,讓前一段的答案能在下一段被驗證。
- 每段正文要回答讀者最可能卡住的一個「為什麼」。投影片公式方向跟題目相反、或投影片說「解不出來」時,用一兩句講出原因,自己補的標(我補充)。
- 投影片句子停在公式前(公式在圖裡)時:Exam-ready 在粗體詞條上補公式、引號內保持原句;正文寫出同一條式子。公式圖看章節包第 6 節列出的 PNG。
- `## Self-check`:2–4 題英文考題,答案收摺疊。**至少一題考老師強調的內容**;只出 explain/why/compare 這類問答題,**不出要代數字計算的題目**(考試不考算式);不出「老師和投影片哪裡不同」這類不會考的題目。每題格式:
```
Q1. English question?(中文:中文題目)
**Answer**: English answer.
中文:把答案完整講一遍(不是只翻一句),讓看不懂英文的人也知道要怎麼答。
```
- **最後一行**:章節包第 1b 節那行(下一章連結),原樣照抄。讓讀完的人直接點下一章。
- 不要把章節包或這份規則裡的指示句寫進筆記(例如「寫筆記時照投影片寫」「已改正 ASR 錯字」)。
- 長度:全文不超過 16,000 字元(跟 check_note.py 同一個數字)。**不要為了壓字數反覆刪改**(實測一章最多花 12 輪在刪字);超過時只刪進階摺疊裡的第二組算例,比喻、比較表、圖說、「老師說不用背」的提醒都不刪。
- 預設看得到的正文不放計算量 O(...)、代號對照(例如 SMART 字母)、課本出處考據,一律移進進階摺疊。
2. `chNN.concepts.json`:JSON 陣列,4–12 個考試可能問的術語,每個物件:
`name`(英文)、`zh`、`type`(概念/演算法/公式/人物事件/前置知識/行政)、`signal`("老師說會考"/"老師強調"/"核心(我判斷)"/"")、`evidence`(有 signal 前兩種時必填:原句+時間)、`definition_en`(投影片原句;沒有就註明 (textbook)/(lecture)/(my wording))、`plain`(一句中文)、`a4`(≤150 字元英文,可夾極短中文;期末拼貼用的小方塊)、`time`、`slides`、`prereq`(英文名陣列)。
### 風格鐵律
- 不用 emoji 或裝飾符號(✓✗★⚠ 都不要;→ 可以)。不用 callout。不用 `$`。時間不要用 code 樣式。
- 每個 `##` 段落最多一種視覺元素:一張圖、或一個表格、或一個 mermaid。
- 摺疊標題是問句,前面不加符號。
- 圖片最多 3 張,只放文字取代不了的圖。放法:單獨一行 `[[IMG: | 中文圖說]]`,PNG 用 `slides_to_png.py <圖片資料夾> <頁> --dpi=110` 產生。
- 考試訊號只在老師明確說時標。老師只說「不用背」「不講」就寫「注意:……」。
- 老師口誤或跟投影片不同:照投影片寫,加「注意:老師口頭說的是……」。
- 引用老師的話時,ASR 錯字改成正確的字。
### 沒有投影片時
不要憑記憶逐字重現課本段落或數值表。英文定義用自己的話寫、句尾標 (my wording);Exam-ready 每行標「(自擬,投影片待補)」。例子只用老師講的。
### 寫完之後(只做一次)
跑檢查:
`C:\Users\user\.cache\meeting-record\venv\Scripts\python.exe C:\Users\user\.claude\scripts\check_note.py --transcript <逐字稿> --slides <投影片 txt …> --start <起> --end <訖> --vid <影片 ID>`
- STYLE/VISUAL/TIME/FORMAT:全部改掉。
- QUOTE:確認是不是你改正了 ASR 錯字(是就保留),不是就改成原文或拿掉引號。
- ENGLISH:確認是不是投影片斷行造成的(是就保留),不是就改成投影片原句。
**省額度守則**:章節包裡已經有你需要的全部資料。不要再去讀整份逐字稿、整份投影片、segments.json 或手冊。一次寫好整個檔(Write 一次),檢查後集中修改。