- 1、本文档共52页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
动态规画技巧及其在序列分析的应用-台大资讯系三十周年系庆.ppt
動態規畫技巧簡介(Dynamic Programming) 趙坤茂 陽明大學生命科學系 Email: kmchao@.tw WWW: .tw/~kmchao 聰明的教授 有四個人一起搭一班往花蓮的飛機, 分別是總理,教授,神父和一個小學生, 加上駕駛共五人, 很不巧的, 在飛到機場上空時飛機竟然故障要墜毀了, 但機上卻只有四套降落傘. 首先飛行員很沒道義的搶了一具就跳了下去, 接著總理說, 我是最有權力的人所以我不能死,也抱了一具跳下去, 然後教授說,我是最聰明的人,必須留著我的有用之軀,因此也搶了一套降落傘就跳, 這時只剩一套降落傘啦怎麼辦呢? 神父便對小學生說:我離天堂比較近,你就逃生去吧,不用管我了! 小學生說: 不用呀,我們還有兩套降落傘喔! 聰明的教授(續) 因為剛才那個最聰明的人, 背著我的書包跳下去了... The Heaviest Non-decreasing Subsequence Problem Let S be a sequence of integers. A heaviest non-decreasing subsequence of S is a non-decreasing subsequence with the maximum sum. (這是2000年全國大專軟體設計競賽大學甲組的試題) 動態規畫技巧與序列分析 費氏數(Fibonacci number) 最長共同子序列 兩個序列的分析 多重序列分析 費氏數(Fibonacci number) How to compute 請問F10是多少? 列表式計算 如果我們從F0、F1、…往F10邁進,很快我們就可以算出F10 好漢做事好漢當 上代數的時候,小明同學在後面..z...z...z....Z。 後來,老師發現了,就生氣地說: 「旁邊的同學,把睡覺的叫起來!」 語畢, 不知道是哪個活得不耐煩的同學答道: 「是你自己把他弄睡著的,你自己去把他叫醒…」 動態規畫(dynamic programming) 基本上,動態規畫技巧有三個主要部份: 遞迴關係(recurrence relation) 列表式運算(tabular computation) 路徑迴溯(traceback) 「最長共同子序列」(LCS, Longest Common Subsequence)問題 首先我們先解釋什麼是子序列(subsequence) ,所謂子序列就是將一個序列中的一些(可能是零個)字元去掉所得到的序列,例如:pred、sdn、predent等都是 ”president” 的子序列。 給定兩序列,最長共同子序列(LCS)問題是決定一個子序列,使得 (1) 該子序列是這兩序列的子序列;(2) 它的長度是最長的。 LCS 例如: 序列一:president 序列二:providence 它的一個LCS為 LCS 例如: 序列一:president 序列二:providence 它的一個LCS為 priden ( PResIDENt PRovIDENce ) LCS 又例如: 序列一:algorithm 序列二:alignment 它的一個LCS為 LCS 又例如: 序列一:algorithm 序列二:alignment 它的一個LCS為 algm or algt ( ALGorithM ALiGnMent ) How to compute LCS? 給定兩序列及,令len(i, j)表示與的LCS之長度,則下列遞迴關係可用來計算len(i, j): 極樂世界 老師:「 小明,你的毛病就是用詞不當,現在考考你 … 。用一句成語來形容老師很開心,而且成語中要包含數字。」 小明:「 」 極樂世界 老師:「 小明,你的毛病就是用詞不當,現在考考你 … 。用一句成語來形容老師很開心,而且成語中要包含數字。」 小明:「含笑九泉」 兩個序列的分析 在1970年代,分子生物學家Needleman 及Wunsch [15]以動態程式設計技巧(dynamic programming)分析了氨基酸序列的相似程度; 有趣的是,在同一時期,計算機科學家Wagner及Fisher [22]也以極相似的方式來計算兩序列間的編輯距離(edit distance),而這兩個重要創作當初是在互不知情下獨立完成的。 雖然分子生物學家看的是兩序列的相似程度,而計算機科學家看的是兩序列的差異,但這兩個問題已被證明是對偶
文档评论(0)