<算法设计技巧与分析>M.H>Alsuwaiye编著 读书心得
2013-10-06 11:49
435 查看
(1)选第7章动态规划作为研究的开始
动态规划的基本要素就是(1)可以分拆同时得到最优解(2)解必须重叠
否则动态规划无法起到把时间复杂度减少到多项式
本章一开始选择了Fibonacci序列问题作为研究对象
procedure f(n)
if(n=1)or(n=2) then return 1
else return f(n-1)+f(n-2)
然后选择:最长公共子序列为重点研究
(1)i=0orj=0 L[i,j]=0;
(2)i>0,j>0 和ai=bj L[i,j]=L[i-1,j-1]+1
(3)i>0,j>0 和ai=bj max(L[i,j-1],L[i-1,j])
然后是矩阵链相乘:
道理还是一样,前提是不同维数的矩阵相乘的问题,通过结合律来解决.
找到最优解:
c[i,j]=mini<k<=j(c[i,k-1]+c[k,j]+RiRkRj+1)
解体的关键是采用了对角线问题.然后根据距离d=1,2,n-1
最后当然是背包问题,
很简单 只要设计好数据结构S[i,j]
i代表之前的i-1个物品,j代表剩余量,剩下的就好理解,然后考虑i=0或j=0,在考虑v[i]的重量和j的不同情况下的分析就行.
动态规划的基本要素就是(1)可以分拆同时得到最优解(2)解必须重叠
否则动态规划无法起到把时间复杂度减少到多项式
本章一开始选择了Fibonacci序列问题作为研究对象
procedure f(n)
if(n=1)or(n=2) then return 1
else return f(n-1)+f(n-2)
然后选择:最长公共子序列为重点研究
(1)i=0orj=0 L[i,j]=0;
(2)i>0,j>0 和ai=bj L[i,j]=L[i-1,j-1]+1
(3)i>0,j>0 和ai=bj max(L[i,j-1],L[i-1,j])
然后是矩阵链相乘:
道理还是一样,前提是不同维数的矩阵相乘的问题,通过结合律来解决.
找到最优解:
c[i,j]=mini<k<=j(c[i,k-1]+c[k,j]+RiRkRj+1)
解体的关键是采用了对角线问题.然后根据距离d=1,2,n-1
最后当然是背包问题,
很简单 只要设计好数据结构S[i,j]
i代表之前的i-1个物品,j代表剩余量,剩下的就好理解,然后考虑i=0或j=0,在考虑v[i]的重量和j的不同情况下的分析就行.
相关文章推荐
- <数据结构与算法分析 C++描述>算法分析之最大子序列和问题
- <机器学习系统设计>第十章(上)----代码与错误分析
- <重构:改善即有代码的设计>读书分享
- <菜鸟学算法-A排序(分治的思想:归并排序)>
- <s:if>标签分析
- HTML5的<meta> 元素移动端的使用技巧
- <<Oracle数据库性能优化艺术(第五期)>> 第14周 性能报告分析(AWR,ASH)
- <菜鸟学算法-A排序(分治的思想:堆排序)>
- <四>--RIL层代码分析--整个电话来访过程
- <Fast Tracking via Spatio-Temporal Context Learning> 阅读和算法使用总结
- <<程序员的自我修养>>第一章读书读书笔记----从hello world说起
- <菜鸟学算法-A排序(选择排序)>
- <C/C++ 版> 设计模式 学习之 工厂模式 <2>
- << Oracle高可用>>部分书面作业 - 第十一课 Oracle Golden gate 设计及应用
- <Java/Hbase + C>云平台架构设计_十项法则
- 一串首尾相连的珠子(m 个),有N 种颜色(N<=10),设计一个算法,取出其中一段,要求包含所有N 中颜色,并使长度最短。并分析时间复杂度与空间复杂度。
- <转>关于常见排序算法的稳定性分析和结论
- 网页制作简单入门——用<div>设计简单模块
- <5>Android HAL hardware.h 源码文件分析 路径:/hardware/libhardware/include/hardware/hardware.h
- 使用<<jquery+html5+css>>实现的20个酷的视觉大背景网站设计