• 沒有找到結果。

課堂補充 by TreapKing Enumeration

N/A
N/A
Protected

Academic year: 2022

Share "課堂補充 by TreapKing Enumeration"

Copied!
38
0
0

加載中.... (立即查看全文)

全文

(1)

Enumeration

課堂補充 by TreapKing

(2)

Q&A Q&A

• 影片都看過了嗎?

• 對於影片的內容有沒有什麼問題?

• 如果是三分搜不懂的話,等等我會再解釋。

(3)

題目在說什麼 題目在說什麼

• 給你一堆二次函數,要請你找出最小值。

• 影片中提到的「超車」到底是什麼意思?

• 函數的圖形長什麼樣子?

(4)

題目在說什麼 題目在說什麼

(5)

影片的片段 影片的片段

(6)

影片的片段 影片的片段

• Case1: S(a)<S(b)<S(c)<S(d)

(7)

影片的片段 影片的片段

• Case2: S(a)>S(b)<S(c)<S(d)

(8)

影片的片段 影片的片段

• Case3: S(a)>S(b)>S(c)<S(d)

(9)

影片的片段 影片的片段

• Case4: S(a)>S(b)>S(c)>S(d)

(10)

影片的片段 影片的片段

• 試著遮掉一些東西看看。

• 只要比較中間兩項的大小就好!

(11)

圖解三分搜 圖解三分搜

(12)

圖解三分搜 圖解三分搜

(13)

圖解三分搜 圖解三分搜

(14)

圖解三分搜 圖解三分搜

(15)

水平線水平線

• 有些題目的單調性會是非嚴格遞增,二分搜的時候這並不成問題

,因為二分搜時會是越右 ( 左 ) 邊越好之類的,所以你會知道要 往哪一邊砍。

• 那麼三分搜呢?如果函數圖形有水平線也可以三分搜?

• 答案是不太行。

• 廢話要是可以的話我幹嘛特別提出來。

• 那為什麼不行呢?不太行又是怎麼一回事?

(16)

水平線 - 圖解 水平線 - 圖解

(17)

水平線 - 圖解 水平線 - 圖解

(18)

水平線 - 圖解 水平線 - 圖解

(19)

水平線 - 結論 水平線 - 結論

• 三分搜在有水平線的情況下,如果可以確定水平線的地方一定是 答案的話,才可以用三分搜找極值。

• 否則的話,三分搜有可能會壞掉。

(20)

踏實感踏實感

• 所以說,哪些函數可以用三分搜找極值?

• 有沒有數學一點的寫法?

• for any (a, b), a<=b, if f(a)≤f(b), arg min f(x)≤b

• 要怎麼用數學表示那種先遞減再遞增的函數?

• 存在 (a, b) 使得 a≤b

• f(x)=f(a) for all x in [a, b]

• f on (-∞, a] 遞減 , g on [b, ∞) 遞增

• ( 嚴格 ) 遞增:對於任意 (a, b), 如果 a<b ,則 f(a)<f(b)

(21)

影片最後的想一想 影片最後的想一想

(22)

影片最後的想一想 影片最後的想一想

• Lotto 中,當 M=k 時, DFS 與 BFS 的空間差距會多大?

• 其實影片裡面有答案

• By 二項式定理, ΣMi=0CMi=2M

• M=10 時, 2M=1024

• M=20 時, 2M=1048576

(23)

影片最後的想一想 影片最後的想一想

• 數獨問題如果跑完所有可能的話,複雜度會是多少?

• 每個位子都可以填 1~9 ,有 81 個格子。

• 這樣有 981≈1.966*1077 種可能。

(24)

影片最後的想一想 影片最後的想一想

• 假如在暴搜的時候搜索的 k 層,通常大部分時間會花在哪一層?

• 基本上都會是在第 k 層。

• 暴搜的狀態樹的節點數通常隨著深度都是指數成長。

• 如果每層都長三倍的話,最後一層的節點數就跟前面所有其他層 加起來的兩倍差不多了。

(25)

影片最後的想一想 影片最後的想一想

• 如果有個估價函數,花時間計算估價函數可以減少狀態樹的節點 數,應不應該用呢?

• 這不好說。

• 看題目而定,通常需要試過了才知道會不會變快。

(26)

凸函數凸函數

• 數學上有一個很類似的定義叫做凸函數 (convex function)

• 上下顛倒後就叫凹函數 (concave function)

(27)

凸函數凸函數

• convex set:

• 凸函數一定可以三分搜,可以三分搜不一定是凸函數

(28)

凸函數凸函數

• 直線應該是凸函數還是凹函數?

• 都是,直線是凸函數也是凹函數

(29)

凸函數的一些性質 凸函數的一些性質

• 若 f(x), g(x) 皆為凸函數,則以下的函數皆為凸函數:

1. f’(x) = af(x)+b 2. f’(x) = f(ax+b) 3. f’(x) = f(x)+g(x)

4. f’(x) = max(f(x), g(x))

• 凸函數的區域極小值 (local minima) 即為全域最小值 (global m inima)

• f(x) 為凸函數  -f(x) 為凹函數

• 凹函數同理,只差在 max 變成 min

(30)

2014 TOI 1! 模考題 2014 TOI 1! 模考題

• 給你一張無向圖,圖上的每個邊有兩個權重 a, b ,你要決定一 個神秘數字 k ,讓圖上的每個邊的花費變成 ak+b 。

• 問你用哪一個 k 可以讓這張圖的最小生成樹權重和最大?

• n, m <= 100,000

• a, b <= 1,000,000,000

(31)

最小生成樹?

最小生成樹?

• 生成樹:從原圖中挑一些邊把所有點連起來,而且要是一棵樹

• 最小生成樹:所有生成樹中權重和最小的。

• 請情感上相信我有一個

O(ElogE) 的方法可以找到 最小生成樹

(32)

思考思考

• 設 T={t1, t2…} 為所有生成樹組成的集合

• cost(t, k) 為 t 在神秘數字為 k 時的權重和 ( t 為生成樹)

• 題目的要求為找出

• 對於每一顆生成樹 t , cost(t, k) 對於 k 成線性關係

• 所以 f(k) 在某個位子上為所有 cost(t, k) 的最小值

• f(k) 的函數圖形為許多直線的最小值

• 直線為凹函數 f(k) 為凹函數

• 凹函數  可以三分搜找最大值!

(33)

解法解法

• 對於 k 做三分搜。

(34)

最佳化最佳化

• 數學上的「最佳化」指的是找到函數的最低點的過程

• 有許多問題都可以轉成最佳化問題來得到解

• ( 雖然可以轉成最佳化跟解得出來是兩回事 )

• 機器學習的模型訓練過程其實就是最佳化

• 多數是找出一個近似解

• 但可能可以證明可以花 O(1/ε) 的時間讓誤差小於 O(ε) 之類的

• 接下來介紹幾個簡單的 ( 不一定有用的 ) 最佳化算法

(35)

模擬退火模擬退火

• 名字好像是因為要模擬金屬降溫的時候分子的移動模式之類的

• 理念簡單明瞭:靠賽 (?

• 每一次隨機看一個附近的點

• 如果那裡的函數值比較低就跳過去

• 否則就再換一個點

• 步長可以考慮每次乘 0.9 ,讓他慢慢停到最低點

(36)

這東西應該有名字但我忘記了 這東西應該有名字但我忘記了

• 在座標平面上給你 N 個點

• 要你找到一個點 ( 不用是 N 個點的其中一個 ) ,

• 使得這個點到那 N 個點的距離盡量小

(37)

模擬退火動起來 模擬退火動起來

• 對,這題用模擬退火真的 ( 可能 ) 解得出來

• 可能需要花些時間調步長 & 收斂速度

(38)

梯度下降梯度下降

• 如果我數學比較好,知道往哪邊走會降最快怎麼辦?

• 我可以每次算個切線斜率,然後往斜率的方向走!

• 高維度情況下,也可以算出類似的東西

• 很多主流的機器學習模型是用這種方法

參考文獻

相關文件

從幾何圖形上來看,所有指數函數,在 (0,1) 的切線斜率恰 好為一的函數也只有惟一一個,因此

如果函數是由基本函數所組成,至少需要注意:分式函 數分母會等於 0

從幾何上看,一個在區間上的每一點都連續的函數,其函數 圖形沒有分斷。直觀上,這樣的連續圖形我們可以一筆劃完

相對應的,由於這些函數可以跟雙曲線上的點做對應,所以 稱為雙曲函數,其中主要的奇組合稱為 hyperbolic sine 雙曲 正弦函數,偶組合稱為

對於給定的一個 x 值,經過某一對應方式後得到「唯一」的 y 值,這種對應方式我們稱 為函數,其中 x 是自變數,y 是應變數。. 而在表

前一章我們學過了一次函數,本章將繼續延伸到二次函數。二次函數的函數圖形為拋

前一章我們學過了一次函數,本章將繼續延伸到二次函數。二次函數的函數圖形為拋

學生已在 2000 年版小學數學課程學習單位 4N4「倍數和因數」中認識因