slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
動態規劃 Dynamic Programming PowerPoint Presentation
Download Presentation
動態規劃 Dynamic Programming

Loading in 2 Seconds...

play fullscreen
1 / 79

動態規劃 Dynamic Programming - PowerPoint PPT Presentation


  • 262 Views
  • Uploaded on

動態規劃 Dynamic Programming. 演算法方式總覽. The Divide-and-Conquer Strategy ( 個各擊破 ) binary Searching 、 Quick Sort …. The Greedy Method ( 貪婪演算法 ) Prim MST 、 Kruskal MST、Djikstra's algorithm Dynamic Programming ( 動態演算法 ) 二項是係數 、 矩陣連乘、最佳二元搜尋樹 … Trace Back ( 回溯 ) 圖形著色 、漢米爾迴路問題 ….

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

動態規劃 Dynamic Programming


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
    Presentation Transcript
    1. 動態規劃 Dynamic Programming

    2. 演算法方式總覽 • The Divide-and-Conquer Strategy (個各擊破) • binary Searching、Quick Sort…. • The Greedy Method(貪婪演算法) • Prim MST、Kruskal MST、Djikstra's algorithm • Dynamic Programming(動態演算法) • 二項是係數、矩陣連乘、最佳二元搜尋樹… • Trace Back(回溯) • 圖形著色、漢米爾迴路問題…. • Tree Searching Strategy(樹的追蹤)

    3. 費氏數列(Fibonacci sequence) • Fibonacci sequence: 0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , … Fi = i if i 1 Fi = Fi-1 + Fi-2 if i 2 • Solved by a recursive program: • Much replicated computation is done. • It should be solved by a simple loop.

    4. Dynamic Programming Dynamic Programming is an algorithm design method that can be used when the solution to a problem may be viewed as the result of a sequence of decisions 動態規劃是一種演算法的設計於當ㄧ個問題的解決方式是可以視為根據ㄧ連續的結果而得到。

    5. 動態規劃介紹 • 當ㄧ個問題可以被分解成數各的性質相同的小問題。 • 會先計算較小的問題的結果,並且存儲。 • 如果有需要先前已經計算過的部份,就不需要重新計算,直接從先前存儲的結果中獲得。 • 由最小的問題開始計算,循序向上求取最後整個問提的答案。 • 是一種由下而上(bottom-up)的解決問題的方式。

    6. 動態規劃設計步驟 • 建立一個遞迴機制,用它來求取ㄧ個問題經過切割後,所產生較小但性質相同的問題解。 • 用Bottom-up的方式解題,首先由最小的問題開始,逐步向上求取最後整各問題的解。

    7. 動態規劃 VS個各擊破 • 相同 • 將ㄧ個問題切成數個較小問題來解。 • 相異 • 會先計算較小的問題並儲存計算結果(動態規劃) • 有計算過的小問題就無須重複計算(動態規劃) • Bottom-up的方式(動態規劃) • 盲目的遞迴計算(個各擊破)

    8. 最短路徑(The shortest path) • To find a shortest path in a multi-stage graph • Apply the greedy method : the shortest path from S to T : 1 + 2 + 5 = 8

    9. The shortest path in multistage graphs • e.g. • The greedy method can not be applied to this case: (S, A, D, T) 1+4+18 = 23. • The real shortest path is: (S, C, F, T) 5+2+2 = 9.

    10. 動態規劃 • Dynamic programming approach (forward approach): • d(S, T) = min{1+d(A, T), 2+d(B, T), 5+d(C, T)} • d(A,T) = min{4+d(D,T), 11+d(E,T)} = min{4+18, 11+13} = 22.

    11. d(B, T) = min{9+d(D, T), 5+d(E, T), 16+d(F, T)} = min{9+18, 5+13, 16+2} = 18. • d(C, T) = min{ 2+d(F, T) } = 2+2 = 4 • d(S, T) = min{1+d(A, T), 2+d(B, T), 5+d(C, T)} = min{1+22, 2+18, 5+4} = 9.

    12. Backward approach • d(S, A) = 1 d(S, B) = 2 d(S, C) = 5 • d(S,D)=min{d(S,A)+d(A,D), d(S,B)+d(B,D)} = min{ 1+4, 2+9 } = 5 d(S,E)=min{d(S,A)+d(A,E), d(S,B)+d(B,E)} = min{ 1+11, 2+5 } = 7 d(S,F)=min{d(S,B)+d(B,F), d(S,C)+d(C,F)} = min{ 2+16, 5+2 } = 7

    13. d(S,T) = min{d(S, D)+d(D, T), d(S,E)+ d(E,T), d(S, F)+d(F, T)} = min{ 5+18, 7+13, 7+2 } = 9

    14. 練習 Find out the shortest path in the following graph.

    15. 0-1 背包問題 假設有 n 個物品,令: S = {item1,item2,...,itemn} wi = itemi的重量 pi = itemi的價值 W = 背包的最大載重 其中,wi、Pi、W均為正整數,找出子集合 A 使得:

    16. 貪婪解法範例 (1) 先拿價值最高的。 (2) 先拿重量最輕的。 (3) 先拿「價值/重量」比率最高的。 浪費5磅空間 最 大 載 重 30磅 20磅 $140 20磅 20磅 $60 $50 10磅 10磅 5磅 5磅 拿取順序:1,3,2。 背包 貪婪 解法 最佳解 物品1 物品2 物品3

    17. Example • n objects , weight:W1, W2, ,Wn profit:P1, P2, ,Pn capacity:M maximize: subject to:M xi = 0 or 1, 1in • e. g.

    18. The multistage graph solution • The 0/1 knapsack problem can be described by a multistage graph.

    19. 動態規劃 • The longest path represents the optimal solution: • x1=0, x2=1, x3=1 • = 20+30 = 50

    20. 練習 0-1背包問題:求出下列最佳解

    21. 資源分配問題 • The resource allocation problem • m resources, n projects profit Pi, j : j resources are allocated to project i. maximize the total profit.

    22. The multistage graph solution • The resource allocation problem can be described as a multistage graph. • (i, j) : i resources allocated to projects 1, 2, …, j e.g. node H=(3, 2) : 3 resources allocated to projects 1, 2.

    23. Find the longest path from S to T : (S, C, H, L, T), 8+5+0+0=13 2 resources allocated to project 1. 1 resource allocated to project 2. 0 resource allocated to projects 3, 4.

    24. 練習 找出下列最佳的分配

    25. 準則 • In summary, if a problem can be described by a multistage graph, then it can be solved by dynamic programming. • 如果一個問題可以轉成多階圖形問題,那ㄧ定可以用動態規劃解決

    26. 二項式係數 分解

    27. 二項式係數(divide-and-conquer版) }

    28. 遞迴推疊圖(The recursive stack) 呼叫過程: C4,2 B4,2 B3,1 B3,2 B2,1 B2,0 B2,1 B2,2 B2,0 B1,1 B2,0 B1,1

    29. 設計動態規劃

    30. 矩陣 B

    31. 二項式係數(dynamic programming版)

    32. 二項式係數時間複雜度

    33. 練習 • 計算出 (6,2)之矩陣 B的值。

    34. 動態規劃與個各擊破

    35. 動態規劃和最佳化問題 定義: 最佳化原則(principle of optimality)要可以應用在一個問題上,他必須符合一個原則: 當一個問題存在著最佳解,則表示其所有的子問題也必存在著最佳解。

    36. 連鎖矩陣相乘 Ex: 2x3矩陣乘 3x4矩陣

    37. 連鎖矩陣相乘最佳化問題

    38. 問題分析 • 使用暴力法(brute-force) • 找出具有最少乘法的組合 • 時間複雜度:指數(exponential)

    39. 問題分析 • 矩陣相乘問題符合最佳化問題。 • 最佳化原則:如果有存在最佳的相乘順序,則此最佳相乘順序的任一子集合,也是最佳的相乘順序。 • 假設下列為六個矩陣的最佳相乘順序 • 則子集合亦是最佳相乘順序 • 使用動態規劃找尋最佳化的組合

    40. 動態規劃

    41. 陣列M規劃

    42. Example

    43. 最少乘法次數

    44. 最少乘法次數(M 陣列)

    45. 最少乘法次數(M 陣列)

    46. 最少乘法次數(M 陣列)

    47. 最少乘法次數演算法

    48. 最少乘法次數的時間複雜度