动态规划6个题目总结比较
對前面幾道題目做一下總結(jié)。
| 0-1背包 | 每種物品:放/不放 | 每種物品一個階段 | 不能超過總重量w | 放完索引物品后,總重量最大 |
| 雙11 | 每種物品:買/不買 | 每種物品一個階段 | w<=總價格<3w | 放完索引物品后,總價格是大于w的最小值 |
| 矩陣最短路徑長度 | 每個位置移動的方向:向下/右 | 每個位置一個階段 | 到達(n-1,n-1),最短路徑長度 | |
| 最長遞增子序列 | 每個元素是否在遞增子序列中:加/不加 | 以第0個元素結(jié)尾; 以第1個元素結(jié)尾 … 以第n-1個元素結(jié)尾 | 考察完數(shù)組所有元素,選擇長度最長的 | |
| 萊文斯坦編輯距離 | 當(dāng)前比較的兩個字符不相同時候的處理方式:添加/刪除/替換 | 字符的位置:0,1,2… | 考察完數(shù)組所有字符,選擇編輯距離最短的 | |
| 硬幣找零 | 符合條件不同幣值的硬幣:第0種、第1種… | 支付1元、2元…w元 | 支付w元,最少硬幣數(shù)量 |
| 0-1背包 | (i,cw) i:第i個物品 cw:當(dāng)前總重量 | true/false:能否達到那個重量 | state[n-1][j]=true,j最大 | |
| 雙11 | (i,presum) i:第i個物品 cw:當(dāng)前總價格 | true/false:能否達到那個價格 | state[n-1][j]=true,j>=w,且最小 | |
| 矩陣最短路徑長度 | (i,j) i:第i行 j:第j列 | 到達(i,j)的最短路徑長度 | min_dist(i,j)=matrix[i][j]+min(min_dist(i-1,j-1),min_dist(i-1,j)) | min_dist(n-1,n-1) |
| 最長遞增子序列 | (i) i:以第i個元素結(jié)尾 | 以第i個元素結(jié)尾的最長遞增子序列長度 | max_lis(i)=max(max_lis(j))+1 j=0,1,2…i-1,a[i]>a[j] | max_lis(i)的最大值,i=0,1,2…n-1 |
| 萊文斯坦編輯距離 | (i,j) i:比較字符a[i] j:比較字符b[j] | 最少編輯次數(shù) | a[i]=b[j],min_edit=min(min_edist(i-1,j-1),min_edist(i-1,j)+1,min_edist(i,j-1)+1) a[i]!=b[j],min_edit=min(min_edist(i-1,j-1),min_edist(i-1,j),min_edist(i,j-1)+1)+1 | min_edist(m-1,n-1) m:a字符串的長度,n:b字符串的長度 |
| 硬幣找零 | (x) x:已選擇硬幣總和 | 最少硬幣個數(shù) | F(i)=min(F(x-cic_ici?))+1 i=0,1,2,…n-1,x-cic_ici?>=0 | F(w) |
根據(jù)表格回答以下問題。
1 目標(biāo)狀態(tài)與目標(biāo)值是什么?
根據(jù)題目回答。
考察完所有物品;放入物品重量最大。
到達位置(n-1,n-1);最短路徑長度。
考察完最后一個元素;最長遞增子序列長度。
支付w元;最少應(yīng)比數(shù)量。
兩個字符串按位置,字符比較完成;最少編輯次數(shù)。
2 多階段決策問題,按照什么分階段?
按照目標(biāo)狀態(tài)分階段。
考察完所有物品,最大重量。那就按照物品分階段。
到達(n-1,n-1)時的最短路徑長度,那就按照所在位置分階段。
考察完數(shù)組最后一個元素后的最長遞增子序列長度,那就按數(shù)組中每一個元素分階段。
考察完所有物品后總價格最低,那就按照物品分階段。
支付w元時的最少硬幣數(shù)量,那就按照支付w-1、w-2…分階段。
考察完兩個字符串所有字符之后的最小編輯次數(shù),那就按照字符位置分階段。
3 狀態(tài)表的維度和值是什么?
狀態(tài)表的維度一般就是分階段的維度。
按照物品分階段,狀態(tài)表維度是物品所在下標(biāo)。
按照矩陣位置分階段,狀態(tài)表維度就是矩陣位置的橫縱坐標(biāo)。
按照支付多少元分階段,狀態(tài)表維度就是支付總額。
按照字符位置分階段,狀態(tài)表維度就是字符所在位置的下標(biāo)。
特例:0-1背包問題,因為重量是限制條件,狀態(tài)表維度是物品下標(biāo)和重量。
狀態(tài)表的值一般就是目標(biāo)值。
目標(biāo)值是最少編輯次數(shù),狀態(tài)表的值就是最少編輯次數(shù)。
目標(biāo)值是硬幣最少數(shù)量,狀態(tài)表的值就是硬幣最少數(shù)量。
特例:0-1背包問題,因為重量是限制條件,狀態(tài)表的值true/false表示能不能達到某個重量。
4 狀態(tài)轉(zhuǎn)移方程是按照什么列出的?
狀態(tài)轉(zhuǎn)移方程是按照業(yè)務(wù)條件列出的。
按照前進方向
按照硬幣幣值
按照字符相同,不同時候的處理方式
總結(jié)
以上是生活随笔為你收集整理的动态规划6个题目总结比较的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (三)IDEA部署Tomcat原理
- 下一篇: velocityjs 动画库 比jque