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
Dynamic Programming IIIMichael Tsai2011/10/14
2
( 複習 start)
3
DNA 比對問題 DNA 序列可表示為以 {A,C,G,T} 組合而成的一字串
比較兩者有多相像 ?? 親屬關係 ?
你是我爸 ?!
4
DNA 比對問題 多相像找出兩者中都出現的最長子序列看最長子序列有多長 , 越長越相像 子序列 :
順序相同 但不一定要連續 .
簡單的例子 : X=ABCBDAB, Y=BDCABA 子序列之一 : BCA 最長共同子序列 : BCBA
最長共同子序列 =? 答案在課本 p.391
5
DNA 比對問題最長共同子序列 問題 : 給兩字串 , 找出最長共同子序列 .
最長共同子序列 =Longest Common Subsequence=LCS
問 : 暴力法有多暴力 ?
6
暴力法有多暴力 ? 找出所有 X 之子序列 , 與 Y 比較檢驗看看是不是 Y 的子序列 . X 有幾個子序列 ? 個 Running time:
7Dynamic Programming 出招 先來個小定義 , 對 ,
先證明以下三個小定理 . 給定兩字串 , 及為 X 和 Y 的LCS( 之一 )
1. If , then and 是及的 LCS 之一2. If , then 表示是及的 LCS 之一3. If , then 表示是及的 LCS 之一
1. 找出 Optimal Substructure
8
1. If , then (1) and (2) 是及的 LCS 之一
(1) Z 最後一個字元一定是 , 否則可以把加到Z 的最後面成為比 LCS 更長的 CS ( 矛盾 )
(2) 一定是和的 LCS. 假設不是 , 則可以找到一個長度 >k-1 的 LCS, 但是加上這一個字元 , 表示可以找到一個和的 LCS 長度 >k ( 矛盾 )
𝑋𝑚−1
𝑌 𝑛−1
𝑥𝑚
𝑦 𝑛
𝑍 𝑘− 1𝑍 𝑘
9
2. If , then 表示是及的 LCS 之一
假設 Z 不是和的 LCS, 則有 W 為和的 LCS, 長度 >k, 則 W 亦為和的 LCS, 長度 >k ( 矛盾 )
3. If , then 表示是及的 LCS 之一證明類似上面 2. 的證明 .
𝑋𝑚−1
𝑌 𝑛
𝑥𝑚
𝑍 𝑘− 1𝑍 𝑘
10
Optimal Substructure 給定兩字串 , 及為 X 和 Y 的 LCS( 之一 )1. If , then and
是及的 LCS 之一2. If , then 表示是及的 LCS 之一3. If , then 表示是及的 LCS 之一
大問題的解裡面有小問題的解 !
11
Overlapping subproblem 給定兩字串 , 及為 X 和 Y 的 LCS( 之一 )1. If , then and
是及的 LCS 之一2. If , then 表示是及的 LCS 之一3. If , then 表示是及的 LCS 之一
𝑋𝑚和𝑌 𝑛的𝐿𝐶𝑆
𝑋𝑚−1和𝑌 𝑛的𝐿𝐶𝑆
𝑋𝑚和𝑌 𝑛−1的𝐿𝐶𝑆
𝑋𝑚−1和𝑌 𝑛−1的𝐿𝐶𝑆不同問題需要同樣子問題的解 !
12
Dynamic Programming 出招2. 列出遞迴式子 ( 表示花費 )
if i=0 or j=0if and if and
兩種選擇
條件不同 , 使用的 subproblem 不同
13
Dynamic Programming 出招 使用 dynamic programming 填表 共有多少個 entry?
3. 計算花費
0 1 2 30123
ij
每一格只用到左、左上、上三格的資訊使用 bottom-up 方法兩層迴圈依序填入即可
14
( 複習 end)
15
翻譯機問題 最笨翻譯機 : 每個英文單字直接翻成法文單字 做法 : 建一棵 balanced binary
search tree ( 例如紅黑樹 ), 裡面用英文單字當 key, 法文單字當作對應的資料 則每個字平均花的時間 假設我們知道每個字出現的頻率 ( 或機率 ), 可以做得更好嗎 ? 答 : 可以 ! 把常用的字放離 root 近一點 . the
machicolation
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
17
++
since 使得以上 E[search cost] 最小的 binary search tree稱為 optimal binary search tree.
𝑘2𝑘1 𝑘5
𝑘4𝑘3
𝑑0 𝑑1
𝑑2 𝑑3
𝑑4
𝑑5
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)
19
暴力法有多暴力 ? 上學期也講過 (?)… 跟上次同樣的 n 個 node 的 binary search tree 總共有個
(Catalan number)
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
21
𝑇 ′ ′ 𝑇 ′
𝑇
𝑘𝑖 ,𝑘𝑖+1 ,…,𝑘 𝑗
+
+
¿𝐸 𝑖𝑗+𝐶
𝐸𝑖𝑗′ <E ij
𝐸𝑖𝑗′ +𝐶<𝐸 𝑖𝑗+𝐶矛盾 !
22
Dynamic Programming 出招 如何用小問題的答案組出大問題的答案 ?
𝑘𝑖 ,𝑘𝑖+1 ,…,𝑘𝑟−1
𝑘𝑟
𝑘𝑟+1 ,𝑘𝑟+2 ,…,𝑘 𝑗𝑑𝑖− 1 ,𝑑𝑖 ,…,𝑑𝑟 −1 𝑑𝑟 ,𝑑𝑟+1 ,…,𝑑 𝑗
選出一 r,
𝑘𝑖 ,…,𝑘𝑖−1
𝑘𝑖
𝑘𝑖+1 ,𝑘𝑖+2 ,… ,𝑘 𝑗𝑑𝑖− 1 ,…,𝑑𝑖− 1 𝑑𝑖 ,𝑑𝑖+1 ,…,𝑑 𝑗
null𝑑𝑖− 1
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
𝑇
24
,if ,if
包含的 subtree 所發生的機率
r 有多種選擇
條件不同 , 使用的 subproblem 不同
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
26
e 的填表順序
e 0 1 2 3 4 5123456
e 0 1 2 3 4 5123456
橘色是會用到的 subproblem
ij
一次填一條對角線Θ (𝑛3 )
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
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)
29
Dynamic Programming 出招 會出現在 hw3 15.5-1 on p. 403
4. 印出 Optimal Binary Search Tree 結果