29
Dynamic Programming III Michael Tsai 2011/10/14

Dynamic Programming III

  • Upload
    hada

  • View
    29

  • Download
    0

Embed Size (px)

DESCRIPTION

Dynamic Programming III. Michael Tsai 2011/10/14. ( 複習 start). DNA 比對問題. DNA 序列可表示為以 {A,C,G,T} 組合而成的 一字串 比較兩者有多 相像 ?? 親屬 關係 ?. 你是我爸 ?!. DNA 比對問題. 多相像  找出兩者中都出現的最長子序列  看 最長 子序列有多長 , 越長越相像 子序列 : 順序 相同 但不一定要 連續 . 簡單的例子 : X=ABCBDAB, Y=BDCABA 子 序列之一 : BCA 最長共同子 序列 : BCBA - PowerPoint PPT Presentation

Citation preview

Page 1: Dynamic Programming III

Dynamic Programming IIIMichael Tsai2011/10/14

Page 2: Dynamic Programming III

2

( 複習 start)

Page 3: Dynamic Programming III

3

DNA 比對問題 DNA 序列可表示為以 {A,C,G,T} 組合而成的一字串

比較兩者有多相像 ?? 親屬關係 ?

你是我爸 ?!

Page 4: Dynamic Programming III

4

DNA 比對問題 多相像找出兩者中都出現的最長子序列看最長子序列有多長 , 越長越相像 子序列 :

順序相同 但不一定要連續 .

簡單的例子 : X=ABCBDAB, Y=BDCABA 子序列之一 : BCA 最長共同子序列 : BCBA

最長共同子序列 =? 答案在課本 p.391

Page 5: Dynamic Programming III

5

DNA 比對問題最長共同子序列 問題 : 給兩字串 , 找出最長共同子序列 .

最長共同子序列 =Longest Common Subsequence=LCS

問 : 暴力法有多暴力 ?

Page 6: Dynamic Programming III

6

暴力法有多暴力 ? 找出所有 X 之子序列 , 與 Y 比較檢驗看看是不是 Y 的子序列 . X 有幾個子序列 ? 個 Running time:

Page 7: Dynamic Programming III

7Dynamic Programming 出招 先來個小定義 , 對 ,

先證明以下三個小定理 . 給定兩字串 , 及為 X 和 Y 的LCS( 之一 )

1. If , then and 是及的 LCS 之一2. If , then 表示是及的 LCS 之一3. If , then 表示是及的 LCS 之一

1. 找出 Optimal Substructure

Page 8: Dynamic Programming III

8

1. If , then (1) and (2) 是及的 LCS 之一

(1) Z 最後一個字元一定是 , 否則可以把加到Z 的最後面成為比 LCS 更長的 CS ( 矛盾 )

(2) 一定是和的 LCS. 假設不是 , 則可以找到一個長度 >k-1 的 LCS, 但是加上這一個字元 , 表示可以找到一個和的 LCS 長度 >k ( 矛盾 )

𝑋𝑚−1

𝑌 𝑛−1

𝑥𝑚

𝑦 𝑛

𝑍 𝑘− 1𝑍 𝑘

Page 9: Dynamic Programming III

9

2. If , then 表示是及的 LCS 之一

假設 Z 不是和的 LCS, 則有 W 為和的 LCS, 長度 >k, 則 W 亦為和的 LCS, 長度 >k ( 矛盾 )

3. If , then 表示是及的 LCS 之一證明類似上面 2. 的證明 .

𝑋𝑚−1

𝑌 𝑛

𝑥𝑚

𝑍 𝑘− 1𝑍 𝑘

Page 10: Dynamic Programming III

10

Optimal Substructure 給定兩字串 , 及為 X 和 Y 的 LCS( 之一 )1. If , then and

是及的 LCS 之一2. If , then 表示是及的 LCS 之一3. If , then 表示是及的 LCS 之一

大問題的解裡面有小問題的解 !

Page 11: Dynamic Programming III

11

Overlapping subproblem 給定兩字串 , 及為 X 和 Y 的 LCS( 之一 )1. If , then and

是及的 LCS 之一2. If , then 表示是及的 LCS 之一3. If , then 表示是及的 LCS 之一

𝑋𝑚和𝑌 𝑛的𝐿𝐶𝑆

𝑋𝑚−1和𝑌 𝑛的𝐿𝐶𝑆

𝑋𝑚和𝑌 𝑛−1的𝐿𝐶𝑆

𝑋𝑚−1和𝑌 𝑛−1的𝐿𝐶𝑆不同問題需要同樣子問題的解 !

Page 12: Dynamic Programming III

12

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

if i=0 or j=0if and if and

兩種選擇

條件不同 , 使用的 subproblem 不同

Page 13: Dynamic Programming III

13

Dynamic Programming 出招 使用 dynamic programming 填表 共有多少個 entry?

3. 計算花費

0 1 2 30123

ij

每一格只用到左、左上、上三格的資訊使用 bottom-up 方法兩層迴圈依序填入即可

Page 14: Dynamic Programming III

14

( 複習 end)

Page 15: Dynamic Programming III

15

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

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

machicolation

Page 16: Dynamic Programming III

16

翻譯機問題 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 17: Dynamic Programming III

17

++

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

𝑘2𝑘1 𝑘5

𝑘4𝑘3

𝑑0 𝑑1

𝑑2 𝑑3

𝑑4

𝑑5

Page 18: Dynamic Programming III

18

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 19: Dynamic Programming III

19

暴力法有多暴力 ? 上學期也講過 (?)… 跟上次同樣的 n 個 node 的 binary search tree 總共有個

(Catalan number)

Page 20: Dynamic Programming III

20

小觀察 : 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 21: Dynamic Programming III

21

𝑇 ′ ′ 𝑇 ′

𝑇

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

+

+

¿𝐸 𝑖𝑗+𝐶

𝐸𝑖𝑗′ <E ij

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

Page 22: Dynamic Programming III

22

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

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

𝑘𝑟

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

選出一 r,

𝑘𝑖 ,…,𝑘𝑖−1

𝑘𝑖

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

null𝑑𝑖− 1

Page 23: Dynamic Programming III

23

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 24: Dynamic Programming III

24

,if ,if

包含的 subtree 所發生的機率

r 有多種選擇

條件不同 , 使用的 subproblem 不同

Page 25: Dynamic Programming III

25

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 26: Dynamic Programming III

26

e 的填表順序

e 0 1 2 3 4 5123456

e 0 1 2 3 4 5123456

橘色是會用到的 subproblem

ij

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

Page 27: Dynamic Programming III

27

大家來練習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 28: Dynamic Programming III

28

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 29: Dynamic Programming III

29

Dynamic Programming 出招 會出現在 hw3 15.5-1 on p. 403

4. 印出 Optimal Binary Search Tree 結果