1 / 30

主題 : Dynamic Programming (II)

主題 : Dynamic Programming (II). 經典問題 Longest Common Subsequence Longest Increasing Subsequence Matrix-chain Multiplication Optimal Polygon Triangulation 例題講解 : H.89.4 歷年題目. a. b. c. b. d. a. b. Longest Common Subsequence.

nancy
Download Presentation

主題 : Dynamic Programming (II)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 主題: Dynamic Programming (II) • 經典問題 • Longest Common Subsequence • Longest Increasing Subsequence • Matrix-chain Multiplication • Optimal Polygon Triangulation • 例題講解: H.89.4 • 歷年題目

  2. a b c b d a b Longest Common Subsequence • Subsequence:對字串 T 而言,T 的 subsequence 為從 T 中消掉某些字元可以得到的新字串 • 對數列也有類似的定義

  3. a b c b d a b b d c a b a Longest Common Subsequence • 對兩個字串 X = x1x2…xn和 Y = y1y2…ym求兩字串中相同且最長的 subsequence X  Y   ba, bca, bcba, bdab, … commonsubsequence LCS  bcba, bdab, …

  4. 某個最佳解 不可能的最佳解 x1 x1 x2 x2 … … xn xn … … … … y1 y1 y2 y2 … … ym ym LCS: Optimal Substructure • 若 xn = ym,則在 LCS 中有包含這兩個的解,至少跟沒有同時包含這兩個的任何解一樣好

  5. LCS: Optimal Substructure (cont.) • 所以若 xn = ym,就取這兩個為 LCS 的一部分,然後求 X[1…n-1] 和 Y[1…m-1] 的 LCS 來和這兩個合併 • 若 xn ym,則 LCS 就會是下面兩種其中之一的解X[1…n] 和 Y[1…m-1] 的 LCSX[1…n-1] 和 Y[1…m] 的 LCS

  6. LCS: Recurrence • 定義 L[i, j] 為 X[1…i] 和 Y[1…j] 之間的 LCS 長度 L[0, j] = 0L[i, 0] = 0 Boundary condition

  7. j-1 j i-1 i LCS: Build Table L[i, j] 需要的表格  row-major column-major 對角線順序 • Time = O(nm)

  8. LCS: 節省空間 • 雖然 LCS 是二維 mn 的 recurrence,但在 row-major (column-major) 順序下,每一個 row (column) 都只需要看前一個 row (column) 就可以算出 LCS 的長度,更前面的部分就用不到 • 若不需要 backtracking,則只需要兩個 row (column) 就足夠算出長度的最佳解

  9. 3 4 2 6 4 1 7 遞增數列  2 6 7 最長遞增數列之一  3 4 4 7 最長遞增數列之二  3 4 6 7 Longest Increasing Subsequence • 給一串數列 a1, a2, …, an,從數列中找出最長且數字依序單調遞增的subsequence A 

  10. LIS: 直覺解法 • 依照定義,LIS 是原數列的 subsequence • 若將 a1, a2, …, an照大小重排會變成一個遞增數列 B = b1, b2, …, bn,由於 LIS 也是遞增數列,LIS 為 B 的 subsequence • LIS 為原數列 A 和新數列 B (對 A 做 sort 所得) 兩者的 LCS

  11. A  Sorted B  3 1 2 4 2 3 4 6 4 4 1 6 7 7 LIS: Example • Time complexity = O(n2) 問題: 若題目要求的是最長的嚴格遞增數列呢? Hint: 對 B做改變

  12. a a  b = b c c Matrix Multiplication • 一個大小為 a  b的矩陣與大小為 b  c的矩陣相乘,需要做 (ac)  b次乘法和加法,然後得到一個 a  c的矩陣

  13. Matrix-chain Multiplication • 給定 n 個需要連續相乘且大小不等的矩陣 A1 A2 …  An,其中第 i 個矩陣 Ai的大小為 pi-1 pi,為了使運算量最少,請求出最好的運算順序(用括號表示) • Ex: (p0, p1, p2, p3) = (50, 5, 100, 10) ((A1A2)A3)  505100 + 5010010 = 75000 (A1(A2A3))  510010 + 50510 = 7500

  14. MCM: Optimal Substructure • 假設要先把 A1 …  Ai和 Ai+1 …  An兩個部分做完,然後這兩個部分再來對乘,則在此情形下最好的解必定是先做 A1 …  Ai的 MCM,再做 Ai+1 …  An的 MCM,最後再把兩個完成的矩陣相乘 A1A2A3A4A5A6A7 挑最好的切法

  15. MCM: Recurrence • 令 m[i, j] 為做 Ai …  Aj的 MCM 所需的最少運算量 • m[i, j] = min {m[i, k] + m[k+1, j] + pi-1pkpj} • m[i, i] = 0 for all i i  k < j • Time complexity = O(n3)

  16. ji 1 2 3 … n m[k+1, j] m[i, j] 1 0 2 0 3 0 0 Boundary condition m[i, k] … … 0 n 0 MCM: Build Table • 適合的填表順序 • 對角線 • 由下而上做row-major • 由左而右做逆向的column-major • MCM 沒辦法只用一維陣列 O(n2)

  17. MCM: Backtracking • 在計算 m[i, j] 時所取的 k 表示從 Ai到 Aj之間最好的計算順序是先算 Ai到 Ak,再算 Ak+1到 Aj,最後兩邊相乘 (Ai  …  Ak)(Ak+1  …  Aj) • 用一個額外的陣列 c[i, j] 來幫每個 m[i, j] 記住其最好的 k

  18. Polygon Triangulation • 給定一個 n 邊的凸多邊形,只要加入 n – 3 條互不相交的對角線,就可以把此多邊形切成 n – 2 個三角形

  19. Triangulation 的 cost • 按照不同題目的定義,可以給每一個 abc 一個 cost w(abc ) • 每種 triangulation 的 cost,是由所有三角形之 cost計算而得,如: • w(abc ) = 邊長總合, triangulation 的 cost 是所有三角形之 cost加總 • w(abc ) = 面積, triangulation 的 cost 是最大三角形的面積

  20. Optimal Polygon Triangulation • 以順時針方向給予一個凸多邊形的 n 個頂點 v0, v1, …, vn-1,並指定一種 cost function w,求 cost 最小的 triangulation • 因為 triangulation 中對角線互不相交,所以任一個三角形的頂點必為此多邊形的頂點 vi, vj, vk,令此三角形為 vivjvk

  21. 小多邊形分別求解 小多邊形分別求解 OPT: Optimal Substructure vk … … vn-2 w(v0vkvn-1) v1 任一條 edge 必定也是某個三角形的 edge vn-1 v0

  22. OPT: Recurrence • 令 P[i, j] 為從 vi-1開始順時鐘繞到 vj再繞回 vi-1的凸多邊形,而 t[i, j] 就是對 P[i, j] 進行 optimal polygon triangulation 所得最佳解的 cost 總合 • t[i, j] = min {t[i, k] + t[k+1, j] + w(vi-1vkvj)} • t[i, i] = 0 for 1  i  n – 1 i  k < j

  23. OPT: Analysis • Time: O(n3) • Space: O(n2) • 要 backtracking 只需要記住每個 t[i, j] 所使用的 k 即可

  24. 例題講解: H.89.4(http://www.cc.nccu.edu.tw/info_race89/doc/final_program.doc) • 現在有 n 個貨櫃 (n  10),載重量分別為 a1, a2, …, an公斤 (50  ai  1000),要用來運送主機以及螢幕 • 主機一台 7公斤,螢幕一台 10公斤,一套系統需要一台主機及兩台螢幕 • 問每個貨櫃應該如何配置主機及螢幕的數量,使這 n 個貨櫃可以運送最多套的系統

  25. Definition • 令 f(i, j) 為貨櫃 i在裝了 j 台主機之後,剩下的負重量足夠放置的螢幕數量 • f(i, j) = (ai – 7j) / 10, for ai 7j –, otherwise

  26. Recurrence (cont.) • 令 c[i, j] 為只使用前 i 個貨櫃,並且在其中裝入 j 台主機後,最多可以再放置多少螢幕的數量 • c[i, j] = max {c[i – 1, j – k] + f(i, k)} • c[1, j] = f(1, j) 0  k  j

  27. 輸出答案 • 從最後一個貨櫃的解中,找出可以放置最多主機,且螢幕容量在主機兩倍以上的那一個位置 最大系統套數 = max {j | 2j  c[n, j]} • 題目需要 backtracking,所以每個 c[i, j] 都要記住使這格可以取得最大值的 k

  28. Analysis • 二維的 recurrence 中第一個維度是 n,而第二個維度的最大值是用 n 個貨櫃可以塞下去的主機總數,也就是所有貨櫃的負重量總合除以 7 令 S = (1  i  n ai) / 7 < 1500 • Time: O(nS2)Space: O(nS)

  29. 練習題 • 練習題 • A.526 String Distance and Transform Process • http://acm.uva.es/p/v5/526.html • A.348 Optimal Array Multiplication Sequence • http://acm.uva.es/p/v3/348.html • A.10003 Cutting Sticks • http://acm.uva.es/p/v100/10003.html • H.88.5 • http://www.cc.nccu.edu.tw/info_race88/Q.pdf • H.89.4 貨櫃配置問題 • http://www.cc.nccu.edu.tw/info_race89/doc/final_program.doc • 挑戰題 • A.10379 Pit Stop Strategy • http://acm.uva.es/p/v103/10379.html • A.757 Gone Fishing • http://acm.uva.es/p/v7/757.html

  30. 歷年題目 • 其他歷年題目 • A.111, A.103, A.116, A.136, A.164, A.231, A.242, A.357, A.323, A.443, A.481, A.497, A.417, A.452, A.531, A.585, A.580, A.590, A.640, A.674, A.682, A.702, A.707, A.751, A.861, A.10000, A.10036, A.10051, A.10066, A.10007, A.10069, A.10076, A.10100, A.10120, A.10130, A.10131, A.10154, A.10164, A.10192, A.10111, A.10128, A.10157, A.10198, A.10213, A.10223, A.10232, A.10237, A.10238, A.10239, A.10259, A.10261, A.10271, A.10280, A.10337, A.10303, A.10304, A.10312, A.10313, A.10328, A.10358, A.10373, A.10381, A.10399, A.10405, A.10404, A.10440, A.10453, A.10534, A.10564, A.10578, A.10516, A.10518, A.10520, A.10532, A.10536, A.10541, A.10549, A.10593, A.10599, A.10604, A.10616, A.10617, A.10626, A.10635, A.10655, A.10664

More Related