- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
动态规划演算法的优化技巧
福州第三中学 毛子青
第 PAGE 16页 / 共 NUMPAGES 16页
動態規劃演算法的優化技巧
福州第三中學 毛子青
[關鍵字] 動態規劃、 時間複雜度、優化、狀態
[摘要]
動態規劃是資訊學競賽中一種常用的程式設計方法,本文著重討論了運用動態規劃思想解題時時間效率的優化。全文分為四個部分,首先討論了動態規劃時間效率優化的可行性和必要性,接著給出了動態規劃時間複雜度的決定因素,然後分別闡述了對各個決定因素的優化方法,最後總結全文
[正文]
一、引言
動態規劃是一種重要的程式設計方法,在資訊學競賽中具有廣泛的應用。
使用動態規劃方法解題,對於不少問題具有空間耗費大、時間效率高的特點,因此人們在研究動態規劃解題時更多的注意空間複雜度的優化,運用各種技巧將空間需求控制在軟硬體可以承受的範圍之內。但是,也有一部分問題在使用動態規劃思想解題時,時間效率並不能滿足要求,而且演算法仍然存在優化的餘地,這時,就需要考慮時間效率的優化。
本文討論的是在確定使用動態規劃思想解題的情況下,對原有的動態規劃解法的優化,以求降低演算法的時間複雜度,使其能夠適用於更大的規模。
二、動態規劃時間複雜度的分析
使用動態規劃方法解題,對於不少問題之所以具有較高的時間效率,關鍵在於它減少了“冗餘”。所謂“冗餘”,就是指不必要的計算或重複計算部分,演算法的冗餘程度是決定演算法效率的關鍵。動態規劃在將問題規模不斷縮小的同時,記錄已經求解過的子問題的解,充分利用求解結果,避免了反復求解同一子問題的現象,從而減少了冗餘。
但是,動態規劃求解問題時,仍然存在冗餘。它主要包括:求解無用的子問題,對結果無意義的引用等等。
下面給出動態規劃時間複雜度的決定因素:
時間複雜度=狀態總數*每個狀態轉移的狀態數*每次狀態轉移的時間 HYPERLINK \l 附录 [1]
下文就將分別討論對這三個因素的優化。這裡需要指出的是:這三者之間不是相互獨立的,而是相互聯繫,矛盾而統一的。有時,實現了某個因素的優化???另外兩個因素也隨之得到了優化;有時,實現某個因素的優化卻要以增大另一因素為代價。因此,這就要求我們在優化時,堅持“全域觀”,實現三者的平衡。
三、動態規劃時間效率的優化
3.1 減少狀態總數
我們知道,動態規劃的求解過程實際上就是計算所有狀態值的過程,因此狀態的規模直接影響到演算法的時間效率。所以,減少狀態總數是動態規劃優化的重要部分,本節將討論減少狀態總數的一些方法。
1、改進狀態表示
狀態的規模與狀態表示的方法密切相關,通過改進狀態表示減小狀態總數是應用較為普遍的一種方法。
Raucous Rockers 演唱組(USACO`96)
[問題描述]
現有n首由Raucous Rockers 演唱組錄製的珍貴的歌曲,計畫從中選擇一些歌曲來發行m張唱片,每張唱片至多包含t分鐘的音樂,唱片中的歌曲不能重疊。按下面的標準進行選擇:
這組唱片中的歌曲必須按照它們創作的順序排序;
包含歌曲的總數盡可能多。
輸入n,m,t,和n首歌曲的長度,它們按照創作順序排序,沒有一首歌超出一張唱片的長度,而且不可能將所有歌曲的放在唱片中。輸出所能包含的最多的歌曲數目。
(1≤n, m, t≤20)
[演算法分析]
本題要求唱片中的歌曲必須按照它們創作順序排序,這就滿足了???態規劃的無後效性要求,啟發我們採用動態規劃進行解題。
分析可知,該問題具有最優子結構性質,即:設最優錄製方案中第i首歌錄製的位置是從第j張唱片的第k分鐘開始的,那麼前j-1張唱片和第j張唱片的前k-1分鐘是前1..i-1首歌的最優錄製方案,也就是說,問題的最優解包含了子問題的最優解。
設n首歌曲按照寫作順序排序後的長度為long[1..n],則動態規劃的狀態表示描述為:
g[i, j, k],0≤i≤n,0≤j≤m,0≤kt,表示前i首歌曲,用j張唱片另加k分鐘來錄製,最多可以錄製的歌曲數目,則問題的最優解為g[n,m,0]。由於歌曲i有發行和不發行兩種情況,而且還要分另加的k分鐘是否能錄製歌曲i。這樣我們可以得到如下的狀態轉移方程和邊界條件:
當k≥long[i],i≥1時:
g[i, j, k]=max{g[i-1,j,k-long[i]],g[i-1,j,k]}
當klong[i],i≥1時:
g[i, j, k]=max{g[i-1,j-1,t-long[i]],g[i-1,j,k]}
規劃的邊界條件為:
當0≤kt時:g[0,0,k]=0;
我們來分析上述演算法的時間複雜度,上述演算法的狀態總數為O(n*m*t),每個狀態轉移的狀態數為O(1),每次狀態轉移的時間為
您可能关注的文档
最近下载
- 2018伊利甄稀冰淇淋年度公关整合传播执行案【快消零售】【PR】.pdf VIP
- 完整版新时代文明实践PPT专题课件.pptx VIP
- 2023年四川省公需科目(数字经济与驱动发展)考试题库及答案.docx
- 风景园林工程设计文件编制深度规定.doc
- 老旧小区小区改造监理细则.docx
- 青年党员干部党纪学习教育党课:争当党纪学习教育排头兵,严守“六项纪律”,守牢纪律底线.docx VIP
- 2020年湖南省湘潭市中考数学试卷真题(含解析).doc VIP
- 2023年造价工程师《工程计价》考试历年高频考点真题荟萃带答案.docx VIP
- JGJ 39-2016 托儿所、幼儿园建筑设计规范.pdf
- 《面向对象的系统分析与设计》8章-活动图.ppt VIP
文档评论(0)