去年有想过将研究过的动态规划总结一下,不过那时没有写博客习惯,后来就不了了之了。这次不作大而无望的总结了,有一点说一点。
以下部分代码和分析出自《计算机算法设计与分析》(王晓东 编著)。
(一)最大子段和问题
1、一般理论
最大子段和问题复杂度为O(n)的解法,在上篇博客
最大连续子序列
中已经谈过了。这里在稍微提及一下,主要是更形式化的说明为什么是用动态规划。然后谈一下这个问题的分治解法。
设所要求的序列为
, 记:
也就是说:
那么原问题转化为:
而数组b是可以递归表达的,如下:
或者表示为:
这样就很明显的显示出了最优子结构性质。
具体算法就不给了,上篇博客已经给出了。
2、分治法