C++——《算法分析》实验贰——最长公共子序列问题
實驗目的:
1、理解動態規劃算法的概念;
2、掌握動態規劃算法的基本要素;
3、掌握設計動態規劃算法的步驟;
4、通過應用范例學習動態規劃算法的設計技巧與策略;
實驗原理:
動態規劃是運籌學的一個分支,是求解決策過程最優化的數學方法。20世紀50年代初美國數學家R.E.Bellman等人在研究多階段決策過程的優化問題時,提出了著名的最優化原理,把多階段過程轉化為一系列單階段問題,利用各階段之間的關系,逐個求解,創立了解決這類過程優化問題的新方法——動態規劃。1957年出版了他的名著Dynamic Programming,這是該領域的第一本著作。
算法總體思想:
1)動態規劃算法與分治法類似,其基本思想也是將待求解問題分解成若干個子問題,先求解子問題,然后從這些子問題的解得到原問題的解。
2)與分治法不同的是,適合于用動態規劃法求解的問題,經分解得到的子問題往往不是獨立的。子問題中存在大量的公共子問題,在分治求解過程中被多次重復計算,保存計算結果,為后面的計算直接引用,減少重復計算次數這就是動態規劃的基本思想。
3)用動態規劃算法求解問題,可依據其遞歸式以自底向上的方式進行計算。在計算過程中,保存已解決的子問題的答案。每個子問題只計算一次,而在后面需要時只要簡單查一下,從而避免大量重復計算,最終得到多項式時間算法。
動態規劃基本步驟:
前三個步驟是動態規劃算法的基本步驟。在只需求出最優值的情況,步驟四可以省去。若需要求最優解,則必須執行步驟四,根據所記錄的信息,快速構造出最優解。
實驗內容:
1、使用動態規劃算法解決最長公共子序列問題:給定兩個序列X={x1,x2,…,xm}和Y={y1,y2,…,yn},找出X和Y的最長公共子序列。。
2、通過上機實驗進行算法實現。
3、保存和打印出程序的運行結果,并結合程序進行分析,上交實驗報告。
實驗代碼:
實驗結果:
總結
以上是生活随笔為你收集整理的C++——《算法分析》实验贰——最长公共子序列问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Delphi中PCAHR的妙用
- 下一篇: C/C++中涉及存储方式的关键字:aut