1-动态规划.docVIP

  • 24
  • 0
  • 约4.63千字
  • 约 9页
  • 2017-08-14 发布于河南
  • 举报
动态规划法(Dynamic Programming) 与分治法类似,动态规划法 也是把问题一层一层地分解为规模逐渐减小的同类型的子问题。 动态规划法与分治法的一个重要的不同点在于, 用分治法分解后得到的子问题通常都是相互独立的, 而用动态规划法分解后得到的子问题很多都是重复的。 因此,对重复出现的子问题,只是在第一次遇到时才进行计算, 然后把计算所得的结果保存起来;当再次遇到该子问题时, 就直接引用已保存的结果,而不再重新求解。 下面我们先看一个例子: 矩阵连乘问题 e.g. 设有矩阵M1,M2,M3,M4, 其维数分别是10(20, 20(50, 50(1 和1(100, 现要求出这4个矩阵相乘的结果。 我们知道,若矩阵A的维数是p(q,矩阵B的维数是q(r, 则A与B相乘后所得矩阵AB的维数是p(r。 按照矩阵相乘的定义, 求出矩阵AB中的一个元素需要做q次乘法(及q-1次加法)。 这样,要计算出AB就需要做p(q(r次乘法。 为简单起见,且由于加法比同样数量的乘法所用时间要少得多, 故这里我们暂不考虑加法的计算量。 由于矩阵连乘满足结合律,故计算矩阵连乘的方式可以有多种。 例如,我们可以按M1(M2(M3M4))的方式去计算, 也可以按(M1(M2M3))M4的方式去计算,所得结果是相同的。 但是值得注意的是, 按前一方式计算需要做125,000次乘法, 而按后一方式计算

文档评论(0)

1亿VIP精品文档

相关文档