网站大量收购独家精品文档,联系QQ:2885784924

不合法-联合大学.ppt

  1. 1、本文档共45页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
不合法-联合大学.ppt

Course 6 動態規劃 Dynamic Programming ▓ Outlines 本章重點 Divide-and-Conquer v.s. Dynamic Programming Dynamic Programming v.s. Greedy Approach Floyds Algorithm for Shortest Paths Chained Matrix Multiplication Dynamic Programming and Optimization Problems 由前一單元得知,Divided-and-Conquer即為遞迴解法。 以費氏數 (Fibonacci Number) 說明: 終止條件 遞迴關係 ▓ Divide-and-Conquer v.s. Dynamic Programming Recursive Fibonacci Algorithm inputs: num identified the ordinal of the Fibonacci number outputs: returns the nth Fibonacci number void Fib(int num) { if (num is 0 OR num is 1) return num; else return (Fib(num-1) + Fib(num-2)); } Based on recursive function, 求取Fib (8)的過程如下: Top-Down求算方式 子問題重覆 (Overlapping Subproblem) ?是Divided-and-Conquer主要的問題所在 以人的方式求算: 求算F8和F7時,F6會被用到2次,但我們用表格記錄已算過的部份!! Bottom-Up求算方式 動態規劃 (Dynamic Programming)是一種表格式的演算法設計原則。 其精神是將一個較大的問題定義為較小的子問題組合,先處理較小的問題,並將其用表格儲存起來,再進一步地以較小問題的解逐步建構出較大問題的解。 Programming: 用表格存起來,有 “以空間換取時間”之涵意 屬於作業研究 (OR)的技巧 n 0 1 2 3 4 5 6 7 8 Fn 0 1 1 2 3 5 8 13 21 Divide-and-Conquer 和 Dynamic Programming都是將問題切割再採用遞迴方式處理子問題,但是: Divide-and-Conquer可能會對相同子問題進行重覆計算 Dynamic Programming會使用表格將子問題的計算結果加以儲存,在後面階段如果需要這個計算結果,再直接由表格中取出使用,因此可以避免許多重覆的計算,以提高效率。 Divide-and-Conquer v.s. Dynamic Programming Divide-and-Conquer Dynamic Programming 額外記憶體空間 不需額外記憶體空間 需要額外記憶體空間 解題方式 Top-Down Bottom-Up 適用時機 適用non-overlap子問題 適用overlap子問題 ▓ Dynamic Programming v.s. Greedy Approach 對於具有限制的最佳化問題,可以採用 “貪婪法則” 或 “動態規劃” 來設計演算法則。 Greedy Approach: 是一種階段性 (Stage) 的方法 具有一選擇程序 (Selection Procedure),自某起始點(值) 開始,在每一個階段逐一檢查每一個輸入是否適合加入答案中,重複經過多個階段後,即可順利獲得最佳解 較為簡單 (?若遇最佳化問題,先思考可否用Greedy Approach解,若不行再考慮用Dynamic Programming) 如果所要處理的最佳化問題無法找到一個選擇程序,則需要考慮所有的可能情況,就是屬於Dynamic Programming Dynamic Programming 先把所有的情況都看過一遍,才去挑出最佳的結果 考慮問題所有可能的情況,將最佳化問題的目標函數表示成一個遞迴關係式,結合Table的使用以找出最佳解 Ex 1. 有一Graph如下,每一個邊都有一權重值,試找出 “具最小權重值總合且不包含Cycle” 的 Graph。 Sol: (選擇程序) 從最小的邊開始逐一選擇,挑選出來的邊不能構成Cycle,直到所有的邊都被選完為止。 或 Ex 2. 一有向加權圖Graph如下,該圖可分成2個部份,請找出由第一個部份的出發頂點到最後部份的目的地頂點的最短距離路。 Sol: 找不到一個選擇程序,可自某起始點(值) 開始逐一

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档