Dynamic Programming III

16
Dynamic Programming III Michael Tsai 2013/10/11

description

Dynamic Programming III. Michael Tsai 2013/10/11. 翻譯機問題. 最笨翻譯機 : 每個英文單字直接翻成法文單字 做法 : 建一棵 balanced binary search tree ( 例如紅黑樹 ), 裡面用英文 單 字當 key, 法文單字當作對應的資料 則每個字平均 花 的時間 假設我們知道每個字出現的頻率 ( 或機率 ), 可以做得更好嗎 ? 答 : 可以 ! 把常用的字放離 root 近一點. the. machicolation. - PowerPoint PPT Presentation

Transcript of Dynamic Programming III

Page 1: Dynamic Programming III

Dynamic Programming IIIMichael Tsai2013/10/11

Page 2: Dynamic Programming III

2

翻譯機問題 最笨翻譯機 : 每個英文單字直接翻成法文單字 做法 : 建一棵 balanced binary

search tree ( 例如紅黑樹 ), 裡面用英文單字當 key, 法文單字當作對應的資料 則每個字平均花的時間 假設我們知道每個字出現的頻率 ( 或機率 ), 可以做得更好嗎 ? 答 : 可以 ! 把常用的字放離 root 近一點 . the

machicolation

Page 3: Dynamic Programming III

3

翻譯機問題 Optimal Binary Search Tree

問題 : 給一個序列共 n 個排好序的 key (). 我們要用這些 key 建立一棵 binary search tree. 出現的機率為 . 另外我們也有 n+1 個”假 key” 代表沒有出現在 K 中的值 , 可用來表示 . 代表小於的值 , 代表介於和的值 ,…,代表大於的值 . 假 key 出現的機率為 . 則目標是找出一棵 binary search tree 使得 Expected

cost 最小 .

𝑘1 𝑘2 𝑘𝑛……𝑑0 𝑑1 𝑑2 ……

𝑑𝑛𝑑𝑛− 1

Page 4: Dynamic Programming III

4

++

since 使得以上 E[search cost] 最小的 binary search tree稱為 optimal binary search tree.

𝑘2𝑘1 𝑘5

𝑘4𝑘3

𝑑0 𝑑1

𝑑2 𝑑3

𝑑4

𝑑5

Page 5: Dynamic Programming III

5

i 0 1 2 3 4 50.15

0.10

0.05

0.10

0.20

0.05

0.10

0.05

0.05

0.05

0.10

𝑘2𝑘1 𝑘5

𝑘4𝑘3

𝑑0 𝑑1

𝑑2 𝑑3

𝑑4

𝑑5

假設給定的 key 的出現機率為右上表格所顯示 , 則左上圖為 optimal binary search tree (expected cost=2.75)

觀察 : 機率最大的 key 不見得在 root ( 不在 root)

Page 6: Dynamic Programming III

6

暴力法有多暴力 ? n 個 node 的 binary search tree 總共有個

(Catalan number)

Page 7: Dynamic Programming III

7

小觀察 : binary search tree 的 subtree 必包含一段連續的 key 及 . 小定理 : 假設 T 為之 optimal binary search tree. 則 T 之 subtree 包含這些 key, 也必定是這些 key的 optimal binary search tree. 證明 : 如果找出的不是 optimal binary search

tree, 則表示可以找出一個更好的 binary search tree , expected cost 比更好 , 則可以用取代中的 , 得到一個比 T cost 更低的 binary search tree ( 矛盾 )

Dynamic Programming 出招1. 找出 Optimal Substructure

Page 8: Dynamic Programming III

8

𝑇 ′ ′ 𝑇 ′

𝑇

𝑘𝑖 ,𝑘𝑖+1 ,…,𝑘 𝑗

+

+

¿𝐸 𝑖𝑗+𝐶

𝐸𝑖𝑗′ <E ij

𝐸𝑖𝑗′ +𝐶<𝐸 𝑖𝑗+𝐶矛盾 !

Page 9: Dynamic Programming III

9

Dynamic Programming 出招 如何用小問題的答案組出大問題的答案 ?

𝑘𝑖 ,𝑘𝑖+1 ,…,𝑘𝑟−1

𝑘𝑟

𝑘𝑟+1 ,𝑘𝑟+2 ,…,𝑘 𝑗𝑑𝑖− 1 ,𝑑𝑖 ,…,𝑑𝑟 −1 𝑑𝑟 ,𝑑𝑟+1 ,…,𝑑 𝑗

選出一 r,

𝑘𝑖 ,…,𝑘𝑖−1

𝑘𝑖

𝑘𝑖+1 ,𝑘𝑖+2 ,… ,𝑘 𝑗𝑑𝑖− 1 ,…,𝑑𝑖− 1 𝑑𝑖 ,𝑑𝑖+1 ,…,𝑑 𝑗

null𝑑𝑖− 1

Page 10: Dynamic Programming III

10

Dynamic Programming 出招2. 列出遞迴式子 ( 表示花費 )

𝑇 𝐿𝑘𝑖 ,𝑘𝑖+1 ,…,𝑘𝑟−1

𝑇 𝑅

𝑘𝑟

𝑘𝑟+1 ,𝑘𝑟+2 ,…,𝑘 𝑗𝑑𝑖− 1 ,𝑑𝑖 ,…,𝑑𝑟 −1 𝑑𝑟 ,𝑑𝑟+1,…, 𝑑 𝑗

𝑒 [𝑖 ,𝑟 −1 ]=∑𝑚=𝑖

𝑟− 1

(𝑑𝑒𝑝𝑡 h𝑇 𝐿 (𝑘𝑚 )+1) ∙𝑝𝑚     + ∑𝑚=𝑖− 1

𝑟 −1

(𝑑𝑒𝑝𝑡 h𝑇 𝐿 (𝑑𝑚 )+1) ∙𝑞𝑚 𝑒 [𝑟 +1 , 𝑗 ]= ∑𝑚=𝑟+1

𝑗

(𝑑𝑒𝑝𝑡 h𝑇 𝑅 (𝑘𝑚 )+1) ∙𝑝𝑚     + ∑𝑚=𝑟+1

𝑗

(𝑑𝑒𝑝𝑡 h𝑇 𝑅 (𝑑𝑚 )+1)∙𝑞𝑚

𝑑𝑒𝑝𝑡 h𝑇 ( ∙ )=𝑑𝑒𝑝𝑡 h𝑇 𝐿(∙ )+1=𝑑𝑒𝑝𝑡 h𝑇 𝑅

(∙ )+1

𝑇

Page 11: Dynamic Programming III

11

,if ,if

包含的 subtree 所發生的機率

r 有多種選擇

條件不同 , 使用的 subproblem 不同

Page 12: Dynamic Programming III

12

Dynamic Programming 出招 填表 : e & w

e[i,j]: i=1 to n+1, j=0 to n w[i,j]: i=1 to n+1, j=0 to n

為什麼 w 要填表 ? 不然計算每個 e[i,j] 都需要做次加法

3. 計算花費

w 0 1 2 3 4 5123456

w 0 1 2 3 4 5123456

Θ (𝑛2 )i

j

𝑤 [ 𝑖 , 𝑗 ]={ 𝑞𝑖−1

𝑤 [𝑖 , 𝑗−1 ]+𝑝 𝑗+𝑞 𝑗

,if ,if

Page 13: Dynamic Programming III

13

e 的填表順序

e 0 1 2 3 4 5123456

e 0 1 2 3 4 5123456

橘色是會用到的 subproblem

ij

一次填一條對角線Θ (𝑛3 )

Page 14: Dynamic Programming III

14

大家來練習0 1 2 3 4 5

0.15 0.10 0.05 0.10 0.200.05 0.10 0.05 0.05 0.05 0.10

𝑤 [ 𝑖 , 𝑗 ]={ 𝑞𝑖−1

𝑤 [𝑖 , 𝑗−1 ]+𝑝 𝑗+𝑞 𝑗

,if ,if

𝑒 [𝑖 , 𝑗 ]={ 𝑞𝑖− 1

min𝑖≤ 𝑟≤ 𝑗

{𝑒 [ 𝑖 ,𝑟 −1 ]+𝑒 [𝑟+1, 𝑗 ]+𝑤 (𝑖 , 𝑗 )},if ,if

Page 15: Dynamic Programming III

15

Optimal_BST(p,q,n)let e[1..n+1,0..n],w[1..n+1,0..n],and root[1..n,1..n] be new tablesfor i=1 to n+1e[i,i-1]=w[i,i-1]=for l=1 to nfor i=1 to n-l+1j=i+l-1e[i,j]=w[i,j]=w[i,j-1]++for r=i to jt=e[i,r-1]+e[r+1,j]+w[i,j]if t<e[i,j]e[i,j]=troot[i,j]=rreturn e and root

邊界起始值填表 : 兩層迴圈 , 對角線順序

e 紀錄 expected cost, root 紀錄選擇結果

Θ(𝑛3)

Page 16: Dynamic Programming III

16

Dynamic Programming 出招 自己回家研究一下 15.5-1 on p. 403

4. 印出 Optimal Binary Search Tree 結果