Enumeration 課堂補充 by TreapKing

38  Download (0)

Full text

(1)

Enumeration

課堂補充 by TreapKing

(2)

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 minima)

•  f(x)為凸函數 çè -f(x)為凹函數

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

(30)

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)

梯度下降

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

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

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

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

Figure

Updating...

References

Related subjects :