算法学习轨迹之动态规划

1.关键词:运筹学–最优化;穷举搜索即满足条件的所有可行解;初始可行解即初值问题;换基运算即状态转移方程;结果便是最优可行解。
2.两个方向:自下而上迭代和自上而下递归,后者需要画出递归树
3.核心:找状态以及状态之间的转移关系;找重叠子问题
4.完全背包问题:状态转移方程(F[i][w]=max{F[i][w-wi]+vi,F[i-1][w]}),核心思想同0-1背包即选取第i个物品和不选该物品,区别在于第i个物品可以无限制选择,其中F[i][w]表示可以选取第1到i个物品且最大重量不超过W时的最大价值量。
5.0-1背包问题:状态转移方程(F[i][w]=max{F[i-1][w],F[i-1][w-wi]+vi})
6.步骤:先找递归方程,再进行优化(备忘录或者动态规划)即解决重复子问题,递归是自身上而下,而动态规划则是自下而上。
7.最长公共子序列问题:分析case,即当两个字符相等的情况以及不相等的情况只有这两种状态;同时它们的行为只有第一个右移,第二个不动或者第一个不动,第二个右移或者两者同时向右移;以上就把所有行为和状态都分析清楚了,所以状态转移方程也就水到渠成:若s[i]==s[j],则L[i][j]=lL[i-1][j-1]+1;
否则,L[i][j]=max{L[i-1][j],L[i][j-1]};注意初始化L[i][0]=L[0][j]=0
8.一般一维数组不行,就用二维数组
9.先求解递归关系式即自下而上,然后找到初始值,最后画出表格即可以解决(思路非常清晰)
10.最长上升公共子序列问题,把一维表格画出来即可,初始长度为1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值