
memo方法是一種變形的動態規劃方法。與動態規劃算法不同,memo方法的遞推方式是自頂向下的,而動態規劃算法是自下而上的。例如:LCS問題:當席=YJ,C[I,J]只需要知道C[I-1,J-1],而不是C[I,0]~C[I,J-1]和C[I-1,J]~C[I-1,N]。當只需要一個LCS時,一些C[P,q]可能不會在整個溶液過程中使用。一般情況下,當一個問題可以用動態規劃來求解時,二維數組中相當數量的元素不會用到整個計算中。我們不需要遞歸地逐個計算二維數組中的元素。使用memo方法:數組中的元素只在需要計算時才計算,并且計算是遞歸的。計算完這些值后,將保存這些值以用于其他目的。例如:LCs的問題:首先,將C[I,0](0≤I≤m)和C[0,J](1≤J≤n)初始化為0。其余的m×nc[I,J]都初始化為-1。計算C[I,J]L2(x,y,I,J,C)的遞歸算法LCS(memo方法):如果x[I]=y[J],檢查C[I-1,J-1],如果C[I-1,J-1]>-1(計算),將C[I-1,J-1]1賦值給C[I,J],并返回。如果C[I-1,J-1]=-1(尚未計算),則遞歸調用LCSL2(x,y,I-1,J-1,C)計算C[I-1,J-1],然后將C[I-1,J-1]1賦給C[I,J],并返回。如果x[i]1,y[J],檢查C[i-1,J]和C[i,J-1]。如果兩者都大于-1(已計算),則將Max{C[I-1,J],C[I,J-1]}賦給C[I,J],并返回。如果C[I-1,J],C[I,J-1]中的一個等于-1(尚未計算),或者兩者都等于-1,則遞歸調用LCS,L2計算它,然后將Max{C[I-1,J],C[I,J-1]}賦值給C[I,J]。如果大量的子問題不需要解決,memo方法可以節省時間。但是當只需要計算少數或全部子問題時,遞歸方法比memo方法(如矩陣乘法、最優二叉搜索樹)要好

本文題目:動態規劃求解背包問題用動態規劃求解非線性規劃問題?-創新互聯
文章起源:http://www.js-pz168.com/article10/ddejdo.html
成都網站建設公司_創新互聯,為您提供電子商務、靜態網站、定制開發、App開發、品牌網站設計、面包屑導航
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯