- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
动态规划 - 建中首页
Dynamic Programming
方法概述
在Divide and Conquer的時候,如果一次會分成數個子問題,很容易就會要重複計算一些子問題,這樣非常浪費時間。所以我們建一張表,把所有子問題的答案存下來,下次再碰到時,就可以直接用。這是由上而下的做法。
我們也可以倒過來,由下往上做,就是先把可能遇到的子問題都處理好,再一步一步推回原本的問題。
用Dynamic Programming,最重要的是「DP元素」和「遞迴式」。「DP元素」就是表格上每一格存的東西所代表的意義;「遞迴式」就是用子問題答案建構出原問題答案的方法。通常決定了這兩樣東西,就可以很容易的寫出程式。而這兩樣東西的好壞,會決定這個演算法的好壞。
如果題目不只求最佳解的值是多少,還要問「如何解」,那多半需要把DP過程中所做的選擇記錄下來,然後從最後面trace-back回去。
題1 生產線
現在有兩條生產線,每條線有n個工作站,第a條線上的第b個站需要Aa,b的時間。每一個貨物都要依序經過n個工作站(無論在哪條線上),才能出廠。從工作站W1,x到W1,x+1不需要花時間,但是從W1,x到W2,x+1需要T1,x的時間;同樣的,從W2,x到W1,x+1需要T2,x的時間。進入生產線和從生產線送出分別需要E1、E2、X1、X2的時間。
給定這些時間,若想以最快的方式生產一件產品,要經過哪些工作站?
DP元素:Time[a, b] 表示 第a條生產線第b個站到出口所需的最短時間
遞迴式:Time[a, b] = min{ Time[a, b+1], Time[3-a, b+1] + Ta,b }
題2 Longest Common Subsequence(最長共同子序列)
定義:字串p為字串s的subsequence 若且唯若 p的每個字元都按照順序出現在s中。(不一定要連續,連續的又稱為substring)例如字串”abc”的subsequence有 “”、“a”、“b”、“c”、“ab”、“bc”、“ac”、“abc”。
現在給定兩字串s、t,求一字串p,滿足p同時為s及t的subsequence,且p的長度最長,此時稱p為s與t的LCS。
例:”bronze” 和 ”crown” 的LCS為 ”ron”。
DP元素:len[a, b] 表示 s[1..a] 和t[1..b] 的LCS長度
遞迴式:len[a, b] = max{ len[a-1, b] , len[a, b-1] , len[a-1, b-1] + (s[a] == t[b]) }
變化:如果要求3個字串以上的LCS呢?
題3 Longest Incresing Subsequence (最長遞增子序列)
給定一數列,求此數列的一個最長的子序列,且該子序列嚴格遞增。這有很多種方法,有O(n2) 的,也有O(n lgn) 的。另外,也可以利用LCS來求LIS。
例:{5, 2, 8, 7, 3, 1, 6, 4} 的LIS為 {2, 3, 4} 或 {2,3, 6}。
DP元素:len[a] 表示 結束在a的LIS長度
遞迴式:len[a] = max{ len[b] | b a s[b] s[a] } + 1
題4 矩陣相乘
矩陣A[p1, p2] 和 B[p2, p3] 相乘,需要p1*p2*p3次乘法,得到 [p1, p3]的矩陣。若一系列的矩陣相乘,順序不同,所需乘法的數量不一樣。
像 [1, 3]*[3, 5]*[5, 4],若先乘前兩項,會需要1*3*5 + 1*5*4 = 35次乘法;若先乘後兩項,則需要3*5*4 + 1*3*4 = 72次乘法。
現在給定n個矩陣的大小,保證一定可乘,求最少需幾次乘法?要怎麼乘?
DP元素:m[a, b] 表示 從矩陣a乘到矩陣b所需的最少乘法數
遞迴式:m[a, b] = min{m[a, k] + m[k+1, b] + ax*ky*by | a = k b }
題5 最大子矩陣
給定一矩陣m,求一個子矩陣其中的元素和最大。
5-1 一維矩陣
最暴力的做法是O(n3),對每個起點、終點都加一次,求最大值。
用預先累加的pre - processing技巧可以做到O(n2)。
最好的做法是O(n)。
DP元素:sum[a] 表示 結束在a的最大子矩陣和
遞迴式:sum[a] = max{ 0 , sum[a-1] } + m[a]
5-2 二維矩陣
窮舉所有可能的起點、終點,並一一算出每個子矩陣的和,再求最大值,這個方法是O(n6)。
同樣用pre-processing的技巧,可以變成O(n4)。這裡的pre-processing,是讓m[a, b] 代表 [1, 1] – [a, b] 內的元素和。[a, b
您可能关注的文档
- 从病名到病理-论恽铁樵的中西医学汇通之路 - 卫生福利部国家中医药 .pdf
- 从宋王台看宋朝历史学校分享 - 教育局.pdf
- 从篇章结构看新闻主线与副线之间的连续.pdf
- 从纪委到监委 - 复旦大学选举与人大制度研究中心.pdf
- 从腹盆腔系膜、筋膜、间隙解剖谈结直肠癌规范化外科治疗.pdf
- 从难易杠杆之平衡探讨高中物理的教与学:以静力平衡 - 物理学科中心.doc
- 从脾病论治房颤的尝试初探 - 环球中医药.pdf
- 从自陈式虚惊与就医次数比值探讨组织的风险意识.pdf
- 他在第三节扭伤脚踝提前离场.doc
- 从认知负荷观点分析国小二至四年级数与计算成就测验.pdf
- 2024年江西省高考政治试卷真题(含答案逐题解析).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)物理试卷(含答案详解).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)地理试卷(含答案详解).pdf
- 2024年内蒙通辽市中考化学试卷(含答案逐题解析).docx
- 2024年四川省攀枝花市中考化学试卷真题(含答案详解).docx
- (一模)长春市2025届高三质量监测(一)化学试卷(含答案).pdf
- 2024年安徽省高考政治试卷(含答案逐题解析).pdf
- (一模)长春市2025届高三质量监测(一)生物试卷(含答案).pdf
- 2024年湖南省高考政治试卷真题(含答案逐题解析).docx
- 2024年安徽省高考政治试卷(含答案逐题解析).docx
最近下载
- 2022年新高考全国Ⅰ卷英语真题.docx VIP
- 《0-3岁婴幼儿身心发展与教养》PPT教学课件.pptx VIP
- 《0-3岁婴幼儿身心发展与教养》课件06婴幼儿语言的发展及教养.pptx VIP
- 护士生涯人物访谈 .pdf VIP
- 体育职业生涯规划书课件.pptx VIP
- AB SCIEX 6500 质谱系统在食品安全中的应用.pptx VIP
- 《0-3岁婴幼儿身心发展与教养》课件05婴幼儿记忆的发展及教养.pptx VIP
- C-Primer-Plus第六版中文版习题答案.doc
- 《0-3岁婴幼儿身心发展与教养》课件09婴幼儿意志的发展及教养.docx VIP
- 新能源学生职业生涯规划与管理.pptx VIP
文档评论(0)