第①②章 概述&递归分治
第③章 动态规划
第④章 贪心算法
第⑤⑥章 回溯法&分支界限
第三章 动态规划
3.1动态规划
基本思想
在动态规划中,子问题并非相互独立,而是相互重叠在一起。在求解子问题时,一旦得到一个子问题得最优解,并不把这个子问题得最优解丢掉,而是记录到一个表格当中,在未来一旦要用到这个子问题的解,并不需要重新计算这个子问题,只需要回到表格当中,以常数时间获取这个子问题的最优解。
基本步骤
- 找出最优解的性质,并刻划其结构特征。
- 递归地定义最优值。
- 以自底向上的方式计算出最优值。
- 根据计算最优值时得到的信息,构造最优解。
3.2 最长公共子序列
1.问题
X={A,B,C,B,D,A,B}和Y={B,D,C,A,B,A}
求最长公共子序列Z。
2.分析
3.求解
最长公共子序列Z={B,C,B,A}
5.算法分析
3.3 电路布线
1.问题
i = {1,2,3,4,5,6,7,8,9 ,10}
π(i) = {8,7,4,2,5,1,9,3,10,6 }
2.分析
相交:对于1≤i<j≤n,π(j)<π(i)
不相交:对于1≤i<j≤n,π(i)<π(j)
3.算法
3.4 最优二叉搜索树
1.问题一
代价函数:平均比较次数
2.问题二
例如S={3,12,24,37,45,53,61,78,90,100}。表示有序集S的二叉搜索树利用二叉树的结点来存储有序集中的元素。
归一
3.问题二–例子
随笔
(●’◡’●)