演算法導論給出的定義:通過組合子問題的解來求最優問題的解。該定義太簡單了。滿足該定義的解法還有分治法、貪婪法。
1 描述最優解的結構(描)
2 自頂向下遞迴的拆子問題(拆)
3 按自底向上的方式遞迴求解子問題(反求)
4 組合子問題求解(組)
如果第3步是直接自頂向下求解的話就是簡單的遞迴方法了
最優子結構:全域性問題的最優解包含子問題的最優解
子問題重疊:乙個遞迴演算法中不斷的呼叫同乙個子問題
給定由n個要相乘的矩陣構成的序列a1,a2,a3,…,an,其中每一元素a i是ai-1 *ai的矩陣。要計算其乘積,求計算標量最小的計算順序。ai-ai 的標量是ai-1 *ai*ai+1假設si,j 是ai,…,aj序列的最優解的標量值(i
<
j),定義 si,j = si,k+sk+1,j(i<=
k<
j) 那麼si,k也一定是ai,…,ak序列的最優解。而本問題的解為s1,n
si,j = min(si,k+sk+1,j)(i<=
k<
j)
si,i = 0
j=n;l=1;
do }while( 1==j )
每求si,i+l 時間複雜度為on
動態規劃演算法解析
數字三角形 poj1163 在上面的數字三角形中尋找一條從頂部到底邊的路徑,使得路徑上所經過的數字之和最大。路徑上的每一步都只能往左下或 右下走。只需要求出這個最大和即可,不必給出具體路徑。三角形的行數大於1小於等於100,數字為 0 99 輸入格式 5 表示三角形的行數 接下來輸入三角形 3 88...
動態規劃演算法
一 動態規劃演算法原理 將待求解的問題分解成若干個相互聯絡的子問題,先求解子問題,然後從這些子問題的解得到原問題的解 對於重複出現的子問題,只在第一次遇到的時候對它進行求解,並把答案儲存起來。了不去求解相同的子問題,引入乙個陣列,把所有子問題的解存於該陣列中,這就是動態規劃所採用的基本方法。動態規劃...
動態規劃演算法
動態規劃 通過把原問題分解為相對簡單的子問題來求解複雜問題。動態規劃常常適用於有重疊子問題和最優子結構性質的問題。演算法總體思想 演算法的基本步驟 演算法的基本要素 最優子結構 重疊子問題 備忘錄方法 問題描述 子串行 公共子串行 最長公共子串行 lcs 問題 問題分析 動態規劃求解lcs問題 最長...