动态规划

来源:互联网 发布:网络语石锤是什么意思 编辑:程序博客网 时间:2024/06/05 11:45

这篇只是一些思考,没有动态规划的例子或者实现。
贪婪策略在解决计算规模非常大的NP完全问题时可以一试,虽然求出的是近似解,但这却是在计算能力不足或者允许时限内的最优方案了,不过如何找到最优解呢?

    贪婪策略是取得局部的最优解,即部分的利益或效果最大化,以求得全局或最终结果的最优解(即近似最优的解决方案),        对于要解决的问题,该问题要由一些元素组成,每个元素都对最终结果有不同的影响,贪婪策略是取影响效果最大的元素来组成最终的近似结果            这是一种需要组合的问题,组成问题的各元素之间并没有什么顺序            但是有一种问题是每一步都会对下一步产生影响,他们是需要顺序的,或者说他们之间是存在联系的,这个在前一篇中中提到过。                这种联系有时候也是多样的                    比如最终的容量是有限的,每走一步都会使总可用容量减少,而影响接下来每步的选择,或许有些选择产生的效果更大,但是可用容量却不足以放下这个选择                    这种在约束条件下解出最优解的问题可以用动态规划解决

贪婪策略与动态规划

对于有约束条件的问题,贪婪策略会选择出所产生效果最大的那个元素,可是这样的话,选择完后整体仍然有一部分可用容量,而这些容量却不足以放下其他的选择,或者即使放下,但也会出现这样一种情况:比产生效果最大的那个元素小一些的两个或多个元素,占用空间并不多,其总和加起来却在一样的约束条件下产生了更大的效果,这是贪婪策略无法解决的。    问题就出现在当使用贪婪策略选择了效果最大的那个元素后,剩余空间即使能放下其他元素,其单位容量内所产生的效果也不如选择几个效果不及最大的元素,但占用容量更小,其总和效果却最大的组合方案。        问题变成了如何使剩余的小空间也能发挥最大的效果,这里所说的小空间其实不小,指的是在选择了一个或几个后,剩余空间的最优的解决方案(这里的最优,依旧是组合最优,而不是局部最优)        那么可以倒过来从解决小问题入手,让小空间可以产生大效果,即解决小容量时的最优解,慢慢增长解决大空间的最优解,如果有剩余空间的话那么之前解决的小空间的最优解就会派上用场,直接把之前的适合的小空间的最优解取出就可以得出全局的最优解

动态规划功能强大,它能够解决子问题并使用这些答案来解决大问题。 但仅当每个子问题都是离散的,即不依赖于其他子问题时,动态规划才管用

原创粉丝点击