第三章作业
一、对动态规划的理解
1.基本概念
动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。
2.分治法的问题
子问题是相互独立的,如果子问题不是相互独立,分治法将重复计算公共子问题,效率很低。(自顶向下地计算)
3.动态规划特点
把原始问题划分成一系列子问题。
求解每个子问题仅一次,并将其结果保存在一个表中,以后用到时直接存取,不重复计算,节省计算时间。
自低向上地计算。
4.使用动态规划条件
优化子结构(保证正确性):如果问题的最优解所包含的子问题的解也是最优的,就称该问题具有最优子结构,
重叠子问题(保证有效性):即子问题之间是不独立的,一个子问题在下一阶段决策中可能被多次使用到。
二 、编程题递归方程
7.1
for(i=2;i<=n;i++) { max=0; for(j=1;j<=i-1;j++) { if(m[j]>max&&num[i]>num[j]) { max=m[j]; m[i]=max+1; } } }
7.2
for(int k=2;k<n;k++) { for(int i=1;i<=n-k;i++) { int j=i+k; for(int z=i+1;z<=j;z++) { int temp=dp[i][z]+dp[z][j]; if(dp[i][j]>temp) dp[i][j]=temp; } } }
三 、结对编程情况
这次作业没有和队友很好地交流,大部分都得是自己看书完成的。下次作业一定要约上队友一起去学习,互相促进,共同进步。