# 章節包:人工智慧導論(AI)W2(9/17)第 07 章「局部搜尋與爬山演算法」
影片 2:11:49–2:35:52,YouTube ID hNZQIO0q74o,逐字稿 C:\D槽\TAICA課程\人工智慧導論\第二周1150917\W2_人工智慧導論_朱威達.逐字稿.txt。Notion 章節頁 https://app.notion.com/p/3e6fc631b03081e896bdc677065a3376(頁 ID 3e6fc631-b030-81e8-96bd-c677065a3376),頁面標題「07 局部搜尋與爬山演算法(2:11–2:35)」。
## 1. 第一行(直接照抄,不要改)
[人工智慧導論](https://app.notion.com/p/3e6fc631b0308131b213f0a3d93fe91d) › [W2(9/17)](https://app.notion.com/p/3e6fc631b0308175a433e5fa4bc500df) › 07|影片 [2:11:49–2:35:52](https://www.youtube.com/watch?v=hNZQIO0q74o&t=7909s)|投影片 Ch4 p.1–9|上一章 [06 Greedy 與 A* 搜尋(1:56–2:11)](https://app.notion.com/p/3e6fc631b03081f7acf6d56761c8225c)|下一章 無
## 1b. 最後一行(直接照抄,放在 Self-check 後面,當全頁最後一行)
這週讀完了。下一週第一章:[01 下週預錄課與抽算力制度(0:09–0:23)](https://app.notion.com/p/3e6fc631b030813ebaaac6d55eece1b5)|回到週頁:[W2(9/17)](https://app.notion.com/p/3e6fc631b0308175a433e5fa4bc500df)
## 2. 各段標題(照順序;每段一個 ## 標題,直接照抄連結)
- `## [2:11:49](https://www.youtube.com/watch?v=hNZQIO0q74o&t=7909s) 路徑不重要的問題` 老師講什麼:前面的問題都能畫成樹、路徑就是解;8-queens 只在乎最後擺法,跟放的順序無關,所以需要不管路徑的演算法,其中最重要的是 local search。老師用線性代數找最小平方解比喻:這裡的 search 是在解空間裡找最好的解。
- `## [2:16:03](https://www.youtube.com/watch?v=hNZQIO0q74o&t=8163s) Local search 的基本原則` 老師講什麼:從目前這個解看周圍鄰居,往比自己好的鄰居移動再重複;記憶體用得很少,在很大的解空間也常能找到還不錯的解,適合有 objective function 的純最佳化問題。
- `## [2:18:08](https://www.youtube.com/watch?v=hNZQIO0q74o&t=8288s) State-space landscape` 老師講什麼:x 軸是各種狀態、y 軸是 objective function 的值,目標是找到最高點;用 8-puzzle 說明鄰居就是空格移一步後的盤面。
- `## [2:21:46](https://www.youtube.com/watch?v=hNZQIO0q74o&t=8506s) 會卡住的地方` 老師講什麼:一路往上爬可能停在 local maximum、平坦高原(flat local maximum)或山腰平台(shoulder),而且解題時永遠不知道真正的最高點在哪。
- `## [2:23:55](https://www.youtube.com/watch?v=hNZQIO0q74o&t=8635s) Hill climbing 演算法` 老師講什麼:看所有鄰居,最好的鄰居比自己好就移過去,否則自己就是答案;像被丟到山區,每次往方圓 100 公尺內最高的地方走。
- `## [2:26:12](https://www.youtube.com/watch?v=hNZQIO0q74o&t=8772s) 八皇后例子與 greedy local search` 老師講什麼:鄰居定義成把某一欄的皇后在同一欄內移動,h 是互相攻擊的皇后對數(例:14 降到 12);hill climbing 又叫 greedy local search,常表現不錯,但會卡在 local maximum、ridge、plateau。
- `## [2:29:33](https://www.youtube.com/watch?v=hNZQIO0q74o&t=8973s) 成功率與 sideways move` 老師講什麼:8-queens 有 86% 會卡住、只有 14% 成功,但成功平均 4 步、卡住 3 步(狀態共 8^8,約 1,700 萬);允許走到一樣好的鄰居後成功率升到 94%,代價是成功要 21 步、失敗要 64 步。
- `## [2:32:35](https://www.youtube.com/watch?v=hNZQIO0q74o&t=9155s) 三種變形與收尾` 老師講什麼:Stochastic hill climbing 從比較好的鄰居中隨機挑;first-choice 遇到第一個比自己好的就走(老師用找工作比喻);random-restart 用多個隨機起點再取最好的。成敗很看 landscape 形狀,本週講到這裡。
## 3. 老師強調/會考/不考的地方(原句已驗證;寫進筆記時 ASR 錯字要改正)
- (2:14:09) [強調] 「最重要的一種做法,就叫做Local Search」 → 路徑不重要的問題,最重要的做法是 local search
## 3b. 數學段候選(程式抓的,只是提示;寫「跳過提示」行用)
0 段候選(門檻 3.0 字/30 秒)
## 4. 這章摘要與重要度
Ch4 開場:像 8-queens 這種只在乎最後結果、不在乎路徑的問題改用 local search,重點介紹 hill climbing、它會卡住的原因和幾種改良版。(核心)
## 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 看這幾張圖:**
- Ch4 p.1 → C:\D槽\TAICA課程\_work\notes-v2\ai-w2\img\brief_Ch4_p001.png
- Ch4 p.6 → C:\D槽\TAICA課程\_work\notes-v2\ai-w2\img\brief_Ch4_p006.png
- Ch4 p.7 → C:\D槽\TAICA課程\_work\notes-v2\ai-w2\img\brief_Ch4_p007.png
- Ch4 p.8 → C:\D槽\TAICA課程\_work\notes-v2\ai-w2\img\brief_Ch4_p008.png
- Ch4 p.9 → C:\D槽\TAICA課程\_work\notes-v2\ai-w2\img\brief_Ch4_p009.png
--- Ch4 p.1 ---
Introduction to
Artificial Intelligence
Chapter 4
Search in Complex Environments
Wei-Ta Chu (朱威達)
1
--- Ch4 p.2 ---
• The search algorithms that we have seen so far are designed to explore search
spaces systematically. When a goal is found, the path to that goal also
constitutes a solution to the problem.
• In many problems, however, the path to the goal is irrelevant. In the 8-queens
problem, what matters is the final configuration of queens, not the order in
which they are added.
• We need algorithms not worrying about paths at all.
Local Search Algorithms and Optimization
Algorithms
2
--- Ch4 p.3 ---
• Local search algorithms operate using a single current node and generally
move only to neighbors of that node.
• They use very little memory—usually a constant amount
• They can often find reasonable solutions in large or infinite (continuous)
state spaces for which systematic algorithms are unsuitable.
• Local search algorithms are useful for solving pure optimization problems, in
which the aim is to find the best state according to an objective function.
Local Search Algorithms and Optimization
Algorithms
3
--- Ch4 p.4 ---
Local Search Algorithms and Optimization
Algorithms
4
--- Ch4 p.5 ---
• The hill-climbing search algorithm (steepest-ascent version) is simply a loop
that continually moves in the direction of increasing value. It terminates when
it reaches a “peak”.
• Does not maintain a search tree, so the data structure for the current node need
only record the state and the value of the objective function.
Hill Climbing Search
5
--- Ch4 p.6 ---
• 8-queens problem
• The successors of a state are all possible states generated by moving a single
queen to another square in the same column. The heuristic cost function h is
the number of pairs of queens that are attacking each other.
• Hill-climbing algorithms typically choose randomly among the set of best
successors if there is more than one.
Hill Climbing Search
6
--- Ch4 p.7 ---
• Hill climbing is sometimes called greedy local search because it grabs a good
neighbor state without thinking ahead about where to go next.
• It turns out that greedy algorithms often perform quite well
• Hill climbing often gets stuck for the following reasons:
• Local maxima
• Ridges (屋脊)
• Plateaux (can be flat
local maximum or
a shoulder)
Hill Climbing Search
7
--- Ch4 p.8 ---
• For the 8-queens problem, steepest-ascent hill climbing gets stuck 86% of the
time, solving only 14% of problem instances. It works quickly, taking just 4
steps on average when it succeeds and 3 when it gets stuck—not bad for a
state space with 88 ≈ 17 million states.
• Might it not be a good idea to keep going—to allow a sideways move in the
hope that the plateau is really a shoulder? The answer is usually yes. This
raises the percentage of problem instances solved by hill climbing from 14%
to 94%. Success comes at a cost: the algorithm averages roughly 21 steps for
each successful instance and 64 for each failure.
Hill Climbing Search
8
--- Ch4 p.9 ---
• Stochastic hill climbing chooses at random from among the uphill moves; the
probability of selection can vary with the steepness of the uphill move.
• First-choice hill climbing implements stochastic hill climbing by generating
successors randomly until one is generated that is better than the current state.
• Random-restart hill climbing conducts a series of hill-climbing searches
from randomly generated initial states until a goal is found.
• The success of hill climbing depends very much on the shape of the state-
space landscape.
Hill Climbing Search
9
## 7. 逐字稿(2:11:49 前後各多 1 分鐘,原始行)
[02:10:51] 我們第三章講完了
[02:10:53] 都不針對課程內容問題
[02:11:11] 大家都在注意那些
[02:11:14] 沒有問題我們要繼續往下走
[02:11:26] 再來
[02:11:29] 好
[02:11:49] 剛剛在第三章呢
[02:11:50] 我們知道
[02:11:52] 有一些問題我們可以把它
[02:11:55] 描寫在一顆Tree上面
[02:11:58] 對不對
[02:11:59] 那我們就可以在Tree上面運作
[02:12:01] 來找到我們的解答
[02:12:04] 好
[02:12:05] 那接下來到了第四章呢
[02:12:06] 我們要來講一個更複雜一點的
[02:12:09] 就是如果我今天我的問題
[02:12:12] 無法表達在Tree上面的話怎麼辦
[02:12:19] 所以他說呢
[02:12:20] 這個講到這邊為止呢
[02:12:22] 前面都是說
[02:12:23] 我可以這個表達在Tree上面啊
[02:12:27] 那我在Tree上面走來走去走走走
[02:12:30] 我去做不同的Action走
[02:12:32] 我就找到我的目的地
[02:12:33] 我就找到我的答案了
[02:12:34] 好
[02:12:35] 那但是在很多的問題裡面啊
[02:12:38] 呃
[02:12:39] 我抵達目的地
[02:12:42] 或者是抵達我達到我要的目標
[02:12:45] 這件事情呢
[02:12:46] 跟你怎麼走
[02:12:47] 可能是沒有什麼關係的
[02:12:50] 跟你執行的Action的
[02:12:52] 誰先誰後是沒什麼關係的
[02:12:55] 好
[02:12:56] 比如說在八皇后問題裡面
[02:12:59] 我們並沒有規定說
[02:13:01] 你一定是要把第一隻皇后放在第一個Color
[02:13:08] 第二隻皇后放在第二個Color
[02:13:10] 沒有啊
[02:13:11] 我高興的話
[02:13:12] 我第一隻皇后我直接放在某一個位置
[02:13:15] 第七個Color
[02:13:17] 第二隻皇后我放在第三個Color
[02:13:20] 那反正我最後
[02:13:22] 我擺起來的樣子
[02:13:23] 沒有互相攻擊就好了
[02:13:25] 所以他跟你擺的順序基本上沒有關係
[02:13:30] 沒什麼關係
[02:13:31] 沒什麼關係
[02:13:35] 所以說
[02:13:36] 在這種問題裡面呢
[02:13:37] 他就不太適合用表達成Tree的一個形式
[02:13:42] 在八皇后問題裡面呢
[02:13:46] What matters is the final configuration
[02:13:50] 我在乎的是他最後有沒有互相攻擊
[02:13:53] 跟你怎麼擺那個皇后的順序無關
[02:13:56] 所以呢
[02:13:57] 我們需要另外一種種類的演算法呢
[02:14:00] Not worry about the past at all
[02:14:02] 一點都不關心誰先誰後
[02:14:05] 好
[02:14:06] 那其中呢
[02:14:08] 我們來講
[02:14:09] 最重要的一種做法
[02:14:12] 就叫做Local Search
[02:14:14] 它一樣是一種Search
[02:14:16] 我們這裡講的Search呢
[02:14:18] 是指說
[02:14:19] 在好多不同可能的解答裡面
[02:14:23] 找到我們要的解的這種Search
[02:14:25] 所以大家不要看到Search
[02:14:26] 就覺得說
[02:14:27] 在做Google裡面的文件搜尋
[02:14:30] 我們這裡講的Search是一個更廣泛的概念
[02:14:33] 就是
[02:14:34] 假設在一個空間當中
[02:14:35] 一個虛擬的Solution Space當中
[02:14:41] 我們要去找到我們的最佳解的那種感覺
[02:14:47] 那個大家理工科的應該都上過線性代數吧
[02:14:52] 對不對
[02:14:53] 線性代數就是在做這件事
[02:14:55] 你回想一下
[02:14:56] 你想一下
[02:14:57] 回想一下線性代數
[02:14:59] 是吧
[02:15:00] 我現在給你好多線性方程式
[02:15:03] 你要找到
[02:15:04] Solution
[02:15:08] 你是不是要找到解
[02:15:10] 你要去求AX等於B
[02:15:12] 你要找到那個X嘛
[02:15:14] 對不對
[02:15:15] 好那你一定也修過
[02:15:16] 就是說
[02:15:17] 當你不見得每一個這個AX等於B都會有解啊
[02:15:21] 對不對
[02:15:22] 當A這個矩陣有反矩陣的時候
[02:15:24] 才有解嘛
[02:15:25] 對不對
[02:15:26] 那它如果無解的話怎麼辦
[02:15:29] 你就只能夠找最小平方解
[02:15:32] This Square Solution
[02:15:34] 那其實它的意思就是說
[02:15:36] 在眾多可能的解裡面找到一個解
[02:15:39] 是最佳的那一個
[02:15:41] 能夠符合這種狀態的最佳的解嘛
[02:15:45] 所以這個也就是
[02:15:48] 線性代數裡面就已經有這種觀唸了嘛
[02:15:50] 現在Again
[02:15:51] 這裡又來這種觀念
[02:15:52] 也是一樣
[02:15:53] 我們就是要在眾多可能的解裡面
[02:15:56] 找到最好的那種解的意思
[02:15:59] 好
[02:16:00] 那OK
[02:16:03] 那Local Search的演算法呢
[02:16:05] 它的基本原則就是說
[02:16:06] 我現在從某一個地方出發
[02:16:10] 我就去看我周圍的鄰居
[02:16:13] 現在重新定義是
[02:16:17] 這裡雖然寫Node
[02:16:18] 我現在從這個Node出發
[02:16:20] 現在啊
[02:16:21] 所謂的一個Node的意思就是
[02:16:24] 某一個可能的解的意思
[02:16:27] 但是我這個解呢
[02:16:32] 我這個Solution可能不是那麼好
[02:16:35] 我要從我的鄰居
[02:16:38] 裡面找到一個
[02:16:40] 表現得比我更好的那個Solution
[02:16:43] 然後我走過去
[02:16:45] Update一下
[02:16:46] 我就變成新的
[02:16:47] 用那個鄰居來當成是一個
[02:16:49] 更好的一個解
[02:16:51] 然後那從那個鄰居
[02:16:52] 以它為中心
[02:16:53] 又去找我鄰居的鄰居
[02:16:56] 看看裡面有沒有人
[02:16:57] 又表現得更好
[02:16:59] 我再去Update成更好的一個解
[02:17:01] 這個整個大的原則
[02:17:03] 就叫做Local Search
[02:17:06] 那Local Search的
[02:17:07] 最內的演算法呢
[02:17:09] 它用的Memory很少
[02:17:11] 為什麼
[02:17:12] 因為它一次只需要看
[02:17:14] 少部分的鄰居們
[02:17:16] 這樣子
[02:17:18] 那一般來講呢
[02:17:20] They can often find reasonable solution
[02:17:24] 一般來講
[02:17:25] 它也能夠找到
[02:17:26] 合理還不錯的解
[02:17:28] 即使你的Solution Space
[02:17:30] 非常大
[02:17:31] 你的解空間
[02:17:33] 你可能可以走的
[02:17:35] 這個範圍可能很大
[02:17:36] 一般來講
[02:17:37] 只要你找得夠久
[02:17:39] 可以找到還不錯的解
[02:17:41] 我之所以講還不錯
[02:17:42] 就代表它不見得是最好
[02:17:45] Local Search Algorithms are useful
[02:17:47] for solving pure optimization problems
[02:17:50] 其中呢它就是
[02:17:52] 它基本上每一個解
[02:17:55] 我都可以去評判說
[02:17:56] 你這個解
[02:17:57] 你這個Solution
[02:17:59] 是一個多棒的Solution
[02:18:02] 它有一個Objective Function
[02:18:03] 有一個目標函數
[02:18:05] 來去評判
[02:18:06] 你這個Solution有多棒
[02:18:08] 概念上來講
[02:18:12] 我們可以用這張圖來表達
[02:18:14] Local Search這個問題
[02:18:17] 這張圖的Excel
[02:18:20] 代表的是State Space
[02:18:22] 就是你這個問題的某種狀態
[02:18:25] 你在不同的狀態之下
[02:18:27] 你的Objective Function
[02:18:30] 你的目標函數
[02:18:32] 的值是怎麼樣
[02:18:34] 也就是說
[02:18:35] 你今天做了某一個動作
[02:18:37] 讓你目前的狀態
[02:18:38] 變成某一種狀態了
[02:18:40] 那這個狀態到底有多棒的意思
[02:18:43] 有多棒的意思
[02:18:45] 那假設我們是要
[02:18:46] 讓這個Objective Function的值
[02:18:48] 越高越好
[02:18:49] 越大越好的話
[02:18:51] 那我們可以去試
[02:18:53] 各種不同的狀態嗎
[02:18:56] 你也可以想像
[02:18:57] 剛剛我們那個九宮格的問題
[02:19:00] 九宮格的問題
[02:19:02] 你那八塊積木
[02:19:04] 八塊木塊
[02:19:06] 可以隨便亂擺嗎
[02:19:08] 對不對
[02:19:09] 有一種擺法
[02:19:10] 可能離我真正最後的
[02:19:12] 要排好1 2 3 4 5 6 7 8
[02:19:14] 離得很遠
[02:19:15] 那它的分數
[02:19:16] 它的Objective Function Value
[02:19:18] 就低嘛
[02:19:19] 如果只差那個
[02:19:21] 感覺1 2 3 4 5 6
[02:19:23] 或者說1 2 3 4 5 6 7
[02:19:25] 都已經擺好
[02:19:26] 只剩下8的位置
[02:19:27] 跟7的位置
[02:19:28] 還沒有擺得很好
[02:19:30] 那它其實就離我的目標很近
[02:19:32] 我就給它比較高分嘛
[02:19:34] 所以概念上
[02:19:36] 那我們要解一個
[02:19:37] 這個問題
[02:19:38] 這個問題的時候
[02:19:39] 它就如同是
[02:19:40] X軸是我各式各樣不同的State
[02:19:43] Y軸是我某一種狀態之下
[02:19:47] 有多高的分數
[02:19:50] 那它可能是一個
[02:19:51] 很複雜崎嶇的
[02:19:54] 一個曲線的變動
[02:19:57] 那我們的目標是什麼
[02:19:58] 我們的目標是
[02:19:59] 能夠讓分數最高分的那種狀態
[02:20:02] 所以它的最高分在這裡
[02:20:04] 它對應的狀態就是拉下來
[02:20:06] 就是這個狀態
[02:20:07] 這個狀態
[02:20:09] OK
[02:20:10] 好
[02:20:11] 那一開始
[02:20:15] 首先要怎麼擺
[02:20:20] 它可能在這裡
[02:20:22] 那我們就評估一下
[02:20:23] 那它的分數大概就只有這麼多
[02:20:25] 那我要如何讓
[02:20:29] 我盡可能貼近
[02:20:32] 我的目標呢
[02:20:34] 那我就去
[02:20:35] 如果你在玩這個遊戲的話
[02:20:37] 你是會稍微移移看對不對
[02:20:39] 你會盡可能的移動你的那個空白
[02:20:43] 讓它盡可能去接近
[02:20:46] 你想要達到那個目標的擺設嘛
[02:20:49] 對不對
[02:20:50] 好
[02:20:51] 你可以往右移一格看看
[02:20:53] 往上移一格看看
[02:20:54] 往左移一格看看
[02:20:55] 往下移一格看看嘛
[02:20:57] 對不對
[02:20:58] 這個你往上移一格所造成的狀態
[02:21:01] 就叫做你的鄰居
[02:21:04] 你的鄰居
[02:21:05] 這樣可以嗎
[02:21:06] 你往上移一格造成一個結果
[02:21:09] 那就是你的一號鄰居
[02:21:11] 往右移一格
[02:21:12] 造成的結果就是你二號鄰居
[02:21:14] 那你可能有N個鄰居
[02:21:16] 對不對
[02:21:17] 那你再看看說
[02:21:18] 那你這些鄰居裡面
[02:21:20] 哪一個是最接近
[02:21:23] 你的目標狀態的
[02:21:26] 你就決定
[02:21:28] 就這麼移這樣子
[02:21:30] 那你聽懂嗎
[02:21:31] 好
[02:21:32] 那現在在這裡
[02:21:34] 一樣喔
[02:21:35] 我現在初始狀態可能在這邊
[02:21:36] 我就找到一個最好的鄰居
[02:21:38] 我就移過去
[02:21:39] 然後一時之內
[02:21:40] 我再移一下
[02:21:41] 我可能
[02:21:42] 就找到這個
[02:21:43] 再移一下
[02:21:44] 就找到這個
[02:21:45] 好
[02:21:46] 所以在某種情況下
[02:21:48] 你可能就會發現
[02:21:49] 某種狀態呢
[02:21:50] 接下來我再怎麼移動
[02:21:52] 我再也不會更好的
[02:21:55] 好
[02:21:56] 那你可能就說
[02:21:57] 喔好
[02:21:58] 我的最佳解
[02:21:59] 大概就是這樣子的
[02:22:00] 我目前移到這裡
[02:22:04] 好
[02:22:05] 那這種情況呢
[02:22:06] 就是你達到了一定程度的解拔
[02:22:10] 這就是所謂的local maxima
[02:22:14] 那你一看這個圖
[02:22:15] 你就知道說
[02:22:16] 可是你這個顯然不是最好的解答嘛
[02:22:18] 因為我一看
[02:22:19] 我就知道
[02:22:20] 最好的解答在這裡嘛
[02:22:22] 對不對
[02:22:23] 好
[02:22:24] 但問題是喔
[02:22:25] 在你真正解一個問題的
[02:22:27] 在解一個問題的時候呢
[02:22:29] 你永遠不知道說
[02:22:32] 你可能永遠都不知道
[02:22:35] 哪邊有一個最好的解法
[02:22:36] 那個解法在哪裡
[02:22:37] 你永遠都不知道
[02:22:38] 你只能夠說
[02:22:39] 就目前我能夠看到的範圍內
[02:22:42] 我能夠找到的最佳解法
[02:22:44] 就是在這裡
[02:22:46] 好
[02:22:47] 有可能是這樣
[02:22:48] 所以你在找尋的過程當中
[02:22:49] 你可能會卡在這個local maxima
[02:22:52] 那你也有可能會
[02:22:53] 假設你今天一開始的初始條件在這裡
[02:22:56] 好
[02:22:57] 那你可能走走走
[02:22:58] 走到這裡來囉
[02:22:59] 你就發現
[02:23:00] 我的鄰居們都跟我一樣好
[02:23:04] 那就happy
[02:23:05] 對不對
[02:23:06] 我們不錯了
[02:23:08] 你也有可能會卡在這邊
[02:23:10] 這個叫做
[02:23:11] 你走到一個高原
[02:23:13] 高原的地方
[02:23:14] flat
[02:23:15] the local maxima
[02:23:16] 好
[02:23:17] 或者你走到一個山腰
[02:23:18] 剛好這個山腰
[02:23:19] 不知道為什麼
[02:23:20] 剛好有一個平臺
[02:23:21] 你本來從這裡出發
[02:23:22] 走走走
[02:23:23] 走到這裡來
[02:23:24] 你覺得你已經走到最好的
[02:23:30] 殊不知其實
[02:23:31] 你如果再繼續往下走
[02:23:33] 你有可能會找到這裡
[02:23:35] 但你不知道
[02:23:36] 那你在走之前
[02:23:37] 根本就不知道
[02:23:38] 所以基本上
[02:23:40] 這個search的演算法
[02:23:42] search的這個問題呢
[02:23:43] 就是說
[02:23:44] 你其實永遠也不曉得
[02:23:47] 你的最佳解
[02:23:49] 會是在什麼地方
[02:23:53] 你只能夠邊走邊看
[02:23:55] 好
[02:23:56] 那所以說呢
[02:23:57] 這個local search的演算法
[02:23:59] 我們介紹好幾個
[02:24:00] 都屬於這一類的
[02:24:02] 其中第一個就叫做
[02:24:03] heel climbing search
[02:24:05] 爬山演算法
[02:24:07] 那概念
[02:24:08] 我剛剛其實已經講完了
[02:24:10] 就是說呢
[02:24:11] 我今天隨便把你丟到
[02:24:13] 一個奇虛不平的一個地方
[02:24:17] 你的目標就是
[02:24:18] 爬到最高那裡
[02:24:20] 好
[02:24:21] 那這裡的策略就是什麼
[02:24:22] 我隨機的把你丟到某個地
[02:24:24] 一個位置
[02:24:26] 好
[02:24:27] 那你就去看一下
[02:24:28] 我的鄰居們
[02:24:29] 我就看一下
[02:24:30] 方圓100公尺內
[02:24:32] 哪一個地方是最高的
[02:24:34] 因為方圓100公尺
[02:24:35] 就是我的鄰居嘛
[02:24:36] 哪個地方
[02:24:37] 我就把我的鄰居
[02:24:38] 全部都check過一次
[02:24:40] 發現呢
[02:24:41] 我往右邊走20公尺的那個地方
[02:24:44] 是海拔高度最高的
[02:24:46] 好
[02:24:47] 然後就走過去
[02:24:48] 然後我再以那個鄰居為中心
[02:24:51] 再去看他方圓100公尺內的範圍
[02:24:54] 的鄰居們
[02:24:56] 有沒有比他再更好的
[02:24:57] 如果有
[02:24:58] 我就走過去
[02:24:59] 就這樣
[02:25:00] 就這麼簡單
[02:25:01] 所以你看這個演算法很簡單啊
[02:25:03] 我現在呢
[02:25:05] 我是current
[02:25:07] 我在這裡
[02:25:08] 那我去找到
[02:25:10] 我的鄰居們
[02:25:15] 當然鄰居的定義
[02:25:16] 有各式各樣
[02:25:17] 就看你的應用核定
[02:25:19] 好
[02:25:20] 如果鄰居的
[02:25:23] 所有鄰居的objective function value
[02:25:27] 都比我現在來的低
[02:25:29] 那代表我現在已經在最高處啦
[02:25:31] 那我就回答我現在的答案
[02:25:35] 如果沒有
[02:25:37] 有鄰居的value比我高
[02:25:40] 那我就用鄰居來取代叫我
[02:25:43] 好
[02:25:44] 而且這裡講的鄰居是
[02:25:46] 周邊鄰居裡面最高的那個鄰居
[02:25:49] 他的objective function value最高的那個鄰居
[02:25:52] 所以我永遠都會走到
[02:25:54] 我最強的那個鄰居那裡
[02:25:56] 就對了啦
[02:25:57] 好
[02:25:58] 如果我已經是最強的
[02:25:59] 我就是答案
[02:26:00] 如果我不是
[02:26:01] 如果旁邊有鄰居比我更強
[02:26:04] 我就用那個鄰居來取代叫我
[02:26:07] 這個就叫希爾談
[02:26:11] OK
[02:26:12] 來舉個例子啦
[02:26:13] 剛剛講八皇后問題
[02:26:15] 八皇后問題呢
[02:26:17] 假設今天
[02:26:19] 我隨機的放這八隻
[02:26:21] 八隻皇后
[02:26:23] 長這樣
[02:26:24] 我放完之後長這樣
[02:26:26] 好那我現在
[02:26:27] 我要想辦法調整這個盤面
[02:26:31] 使得
[02:26:33] 我越接近我的目標越好
[02:26:36] 我的目標當然就是八隻皇后
[02:26:38] 我的衝突的數量要越少越好
[02:26:40] 好那我現在來定義一下
[02:26:42] 怎麼樣叫做鄰居呢
[02:26:43] 就是說我允許你動一隻皇后
[02:26:47] 然後呢
[02:26:48] 這隻皇后只能夠在同一個column裡面移動
[02:26:51] 好
[02:26:52] 我定義我的所謂的鄰居是這樣
[02:26:54] 好
[02:26:55] 那
[02:26:56] 我每動一個位置
[02:26:58] 我就要
[02:26:59] 我都可以去評估說
[02:27:01] 我動了她之後呢
[02:27:02] 我皇后之間我衝突的數量
[02:27:06] 是多少個
[02:27:07] 所以比如說
[02:27:08] 假設我動這個皇后
[02:27:10] 第二個column的皇后
[02:27:11] 我如果是把她移到這一格
[02:27:14] 我還是會有十四個衝突
[02:27:17] 十四組皇后的衝突
[02:27:20] 我如果移到這一格也是十四組
[02:27:22] 我如果移到這一格呢
[02:27:23] 會只剩下十二組皇后的衝突
[02:27:26] 以此類推
[02:27:28] 所以說呢
[02:27:29] 在這個盤面之下呢
[02:27:31] 我就決定
[02:27:33] 我要把這個皇后移到這裡來
[02:27:36] 相當於我就走到一個
[02:27:39] 我的鄰居那邊去
[02:27:41] 好到了下一個步驟
[02:27:42] 我再從那個鄰居
[02:27:44] 再去看說我要移哪一個
[02:27:46] 能夠讓我的衝突的數量
[02:27:49] 越低越好
[02:27:50] 那經過很多次很多次呢
[02:27:53] 他可能就只像這個樣子
[02:27:55] OK那這個就是一個heel climbing
[02:28:00] 好那heel climbing的演算法呢
[02:28:03] 有時候又稱為是
[02:28:05] greedy local search
[02:28:06] 就是隻看周邊的鄰居
[02:28:09] 做出最貪婪的決定
[02:28:11] 因為他永遠只取
[02:28:13] 最強的那個鄰居來取代掉
[02:28:15] 那是這麼簡單的一個想法呢
[02:28:20] it turns out that the greedy algorithm
[02:28:22] often performs quite well
[02:28:24] 事實上表現得還不錯喔
[02:28:27] 他當然你可想而知
[02:28:30] 他絕對不保證
[02:28:31] 永遠可以找到最佳解
[02:28:33] 但一般來講
[02:28:34] 可以找到還不錯的解
[02:28:37] 那他也
[02:28:40] 我之所以講還不錯
[02:28:41] 就是因為他不是最佳解嘛
[02:28:43] 他可能走走走
[02:28:45] 走到一定的程度就卡住了
[02:28:47] 所謂的卡住是因為
[02:28:50] 他已經覺得他很厲害了
[02:28:52] 他夠好了
[02:28:53] 周邊的鄰居沒有在比他更好
[02:28:55] 所以他可能是卡在一個local maximum
[02:28:58] 也可能卡在一個無極
[02:29:01] rich
[02:29:02] 就是說剛好
[02:29:04] 這個無極這條線上
[02:29:07] 所有旁邊的鄰居都是更弱的
[02:29:11] 那我往某個方向走
[02:29:13] 其實所有的鄰居都跟我一樣好
[02:29:17] 對不對
[02:29:18] 某個方向上的鄰居都跟我一樣好
[02:29:20] 除了這個方向之外的其他鄰居
[02:29:22] 都比我們來的爛
[02:29:24] 那我也會覺得說
[02:29:25] 我已經夠好了
[02:29:26] 這是無極
[02:29:27] 或者說我走到一個平原
[02:29:29] 高原
[02:29:31] 那你也可能會卡住
[02:29:33] 那這裡有一些過去的實驗數據
[02:29:36] 比如說八華貨問題裡面呢
[02:29:38] 假設我永遠都取
[02:29:40] 最好的那個鄰居走過去
[02:29:44] 他基本上有86%的時間呢
[02:29:49] 會卡在local minimum
[02:29:52] 然後呢14%會找到解答
[02:29:59] 那通常是這樣
[02:30:02] 它的好處是說
[02:30:03] It works quickly
[02:30:05] Taking just 4 steps on average
[02:30:07] when it succeeds
[02:30:09] and 3 when it gets done
[02:30:11] 他的意思是說
[02:30:12] 如果他在八華貨問題裡面
[02:30:15] 如果真的有找到最佳解的話
[02:30:19] 真的有找到不死
[02:30:22] 即使八隻皇后不互相衝突
[02:30:24] 如果有找到的話
[02:30:25] 平均四步移動四次就找到了
[02:30:28] 如果他找得到的話
[02:30:30] 那我們說
[02:30:31] 他其實大概只有14%找到
[02:30:33] 大部分86%是找不到的
[02:30:36] 那不過好在是這樣
[02:30:38] 他就算沒找到互相衝突的case
[02:30:42] 他卡住了
[02:30:43] 他也很快就卡住
[02:30:44] 他三步就卡住了
[02:30:46] OK
[02:30:48] 那他說呢
[02:30:49] 即使整體而言
[02:30:50] 這不錯喔
[02:30:51] 因為整體而言呢
[02:30:53] 他要考慮的所有擺設的情況
[02:30:56] 有8的84%
[02:30:58] 17個million
[02:31:00] 在這17個million可能的狀況裡面
[02:31:03] 你就算卡住了
[02:31:05] 也是很快就卡住了
[02:31:07] 這是很不錯的
[02:31:09] 至少讓你很快知道你失敗了
[02:31:13] OK
[02:31:14] 那你可能會想
[02:31:16] 那我可不可以稍微改良一下
[02:31:18] 比如說
[02:31:19] 我讓他
[02:31:21] 如果允許讓他
[02:31:23] 即使你走到一個高遠的地方
[02:31:25] 照理講高遠的地方就是說
[02:31:27] 你的鄰居們都
[02:31:29] 跟你一樣好了嘛
[02:31:30] 對不對
[02:31:31] 你如果允許讓他用
[02:31:33] 跟你一樣的鄰居
[02:31:35] 你也走過去試試看
[02:31:37] 你讓他有這個彈性
[02:31:40] 那效果會變好呢
[02:31:42] 答案是會
[02:31:44] 因為
[02:31:46] 這個
[02:31:48] 你有更多探索的機會嘛
[02:31:51] 說不定
[02:31:52] 你雖然你左邊
[02:31:54] 連續5個鄰居
[02:31:56] 都跟你一樣好
[02:31:57] 你搞不好到了第6個
[02:31:59] 左邊的第5個
[02:32:00] 再往外看
[02:32:01] 說不定就會找到一個更好的
[02:32:03] 一個高峰可以爬上去
[02:32:05] 所以在這樣的一個小巧的變形之下呢
[02:32:08] 成功找到錢的機率
[02:32:10] 就從14%飛到94%喔
[02:32:13] 不過呢
[02:32:14] 因為你允許他
[02:32:16] 用一個跟你一樣好的鄰居
[02:32:18] 所以呢
[02:32:19] 你要
[02:32:20] 找到最佳企業的
[02:32:22] 這個步驟啊
[02:32:23] 就遠遠
[02:32:24] 變成21步
[02:32:26] 那你如果要卡住
[02:32:28] 也要64步
[02:32:29] 之後才會卡住
[02:32:31] 所以
[02:32:32] 這個就是一個
[02:32:33] 妥協啦
[02:32:35] 那還有其他變形呢
[02:32:36] 比如說
[02:32:38] Stochastic Hill Climbing
[02:32:41] 他說
[02:32:42] 我們剛剛前面都講說
[02:32:43] 我永遠都找最好的那個鄰居嘛
[02:32:47] 那我可不可以不要
[02:32:48] 永遠找最好的鄰居
[02:32:50] 今天我有一百個鄰居
[02:32:52] 其中有十個表現比我好
[02:32:54] 我從這十個裡面
[02:32:55] 我隨機挑一個
[02:32:56] 我不要永遠都挑最好的那一個
[02:32:59] 這叫Stochastic Hill Climbing
[02:33:02] 誰知道啊
[02:33:03] 說不定
[02:33:04] 這個
[02:33:05] 我先挑一個不是那麼好的鄰居
[02:33:09] 從他去往外走
[02:33:12] 搞不好有更好的一個結果啊
[02:33:14] 這就好像說
[02:33:15] 大家畢業的時候
[02:33:16] 一開始第一份工作
[02:33:17] 你一定要挑
[02:33:19] 給你吸嘴最高的那個工作嘛
[02:33:22] 你是Greedy First Search
[02:33:25] 是不是
[02:33:26] 但很難保證
[02:33:28] 你未來的生涯
[02:33:29] 你走這條路是最好的
[02:33:31] 對不對
[02:33:32] 再來
[02:33:34] First Choice Hill Climbing
[02:33:36] 意思就是說
[02:33:37] 你在搜尋鄰居的過程當中
[02:33:39] 你碰到的
[02:33:41] 第一個表現比你好的鄰居
[02:33:43] 你就選他了這樣子
[02:33:47] 所以這有點像是
[02:33:48] 你以後出去轉工作
[02:33:49] 你投了時間努力
[02:33:51] 對不對
[02:33:52] 第一個說要搜你的那家公司
[02:33:54] 你就去了
[02:33:55] 這是First Choice Hill Climbing
[02:33:57] 不見得一定是不好
[02:33:59] 也不見得一定好就是了啦
[02:34:02] 不好說
[02:34:03] 那也可以是Render Result
[02:34:05] 那比如說
[02:34:06] 因為不管怎麼樣
[02:34:08] 不管是哪一種Hill Climbing
[02:34:10] 都有可能會卡住
[02:34:12] 你隨機從這個地方出發
[02:34:14] 搜尋
[02:34:15] 有可能卡住了
[02:34:17] 那所以怎麼辦
[02:34:18] 我可不可以隨機很多次出發
[02:34:21] 對不對
[02:34:22] 我這次從這裡出發
[02:34:23] 卡在某一個Local Maxima
[02:34:27] 我下一次從另外一個地方出發
[02:34:29] 我可能卡在另外一個Local Maxima
[02:34:32] 對不對
[02:34:33] 我做了好幾次
[02:34:34] 那這些Local Maxima裡面
[02:34:37] 我就取相對最厲害的那一個
[02:34:41] 那這就是Render Result Hill Climbing
[02:34:44] OK
[02:34:45] 那到底Hill Climbing會不會成功呢
[02:34:47] 會不會整整找到解呢
[02:34:49] Depends very much on the shape of the state
[02:34:52] State and the state space landscape
[02:34:55] 那就要看說
[02:34:56] 你這個整個Objective Function
[02:34:59] 隨著你不同的State
[02:35:00] 你這個高高低低的複雜的情況是怎樣
[02:35:03] 不見得一定不好
[02:35:06] 也不見得一定好
[02:35:08] 我們只是說
[02:35:09] 它是一種解決
[02:35:12] 它是一種Local Search的方式
[02:35:13] 它是一種解法
[02:35:16] OK
[02:35:17] 好
[02:35:18] 那今天時間差不多了
[02:35:20] 我們就今天先講到Hill Climbing
[02:35:23] 就好了
[02:35:25] 那看看最後有沒有什麼問題
[02:35:27] 是的
[02:35:35] 我之後會把它放上去
[02:35:37] 沒有問題
[02:35:42] 大家對課程內容
[02:35:44] 全盤理解
[02:35:46] 一點問題都沒有
[02:35:47] 我們今天就上到這裡
## 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 一次),檢查後集中修改。