『算法設計_僞代碼』動態規劃問題

這一部分僞代碼太長,因此只講解解題手段算法

核心思想是將複雜問題化解爲兩個簡單一點的問題,遞歸處理。spa

零、幾個概念

最優子結構

一個問題的最優解包含其子問題的最優解blog

證實:反證法,a=b+c中a的最優解若是不是b和c的最優解,則b和c的最優解和將優於a的最優解,矛盾,的證。遞歸

重疊子問題

解決問題的遞歸算法中會重複求解相同的子問題bfc

解法:對每一個子問題的第一次求解存入表中,再次求解時直接查詢便可。im

1、割繩子問題

r:表示最大價值查詢

s:表示此時分割位置,如i=8時的2表示繩子分爲二、6兩段,二、6對應i=2和i=6的rimg

2、矩陣鏈乘問題

右表記錄k值copy

pi表示Ai的第二維,pi-1表示Ai的第一維co

3、最長公共子序列 (LCS)

問題描述

並非一般意義上的公共子序列(和常見的算法題中的不同),定義以下,

解法示意

  1. xi=yi時直接將當前的左上格子數+1做爲本格,箭頭指向左上;
  2. xi!=yi時比較上方格子和左面格子:
    1. 上方不小於右側,箭頭指上,copy上方格子
    2. 不然箭頭指右,copy右側格子

 格子圖生成先補0,而後由上到小一行一行的填充,而結果讀取是從右下到左上的方向:

 4、最優二叉查找樹

問題描述

解法示意

W爲機率矩陣,e爲消耗指望矩陣

先填W,後填e,注意表格行1:6,列0:5,root記錄對應e位置的r的值。

重建時看root,[1,5]位置爲2,表示2爲根,分解爲k1,{k3,k4,k5},再看[3,5]爲5,右子樹5爲根……

相關文章
相關標籤/搜索