二维动态规划空间优化

发布时间:2024-12-25 21:25

合理规划时间和空间也能优化生活质量 #生活乐趣# #生活质量# #生活品质# #生活质量优化策略#

题目描述

常见的动态规划中,如果有两个或者三个可变参数,最终,会生成一张二维或者三维的动态规划表。动态规划的思想就是用空间换取时间,用空间把递归过程中的中间值记录下来,减少时间复杂度。
但是,如果再进一步优化空间呢?是否可以实现呢?当然可以。

二维动态规划空间优化

对于二维动态规划,有两个可变参数,需要画一张二维表,因此,我们就需要申请一个二维数组来存放。那么,二维动态规划的空间优化就是用一维数组就能实现。
话不多说,直接示例加上图:
比如,在一个二维动态规划题目中,最终求解结果是右下角的值,用五角星表示。
在这里插入图片描述
然后,在此题中,一般位置的依赖,是上边和左边,图中圆圈表示。
在这里插入图片描述
这种动态规划题目的已知条件,必须有左上角的数,如果左上角都不知道,就没法向下递推了。
因此,我们可以申请一个一维数组,只保存第一行。
因为依赖关系是左边和上边,但是第一行就只有左边,因此,就只能依赖左边,因此,我们就可以推出第一行。三角位置是已知的,推出第一行。
在这里插入图片描述
有了第一行,就可以推出第二行了,我们动态更新这个一位数组,替换数组中的数值为第二行的,相当于一维数组的复用。
因为第一行已知,那么第二行的第一列的数,因为在边界,所以只能依赖上面的,左边没东西,所以可以推出第二行第一个数,然后更新一维数组第一个数,然后,后面就可以依赖一般的递推规则,从上面和左边依次更新。

在这里插入图片描述
这样,就能顺利更新第二行,然后依次同理更新第三行、第四行…直到右下角。

相关问题

何时才能优化?
首先,就是临近的依赖才可以优化。如果依赖的是上面两行的话,就可以申请两个一维数组,然后轮流更新,比如说,根据第一行,更新第二行,然后,根据一二两行,更新第三行,然后,此时第三行替换掉了第一行的数据,此时两个数组中保存的是二三行的数据,然后再更新第四行,替换第二行,就这样交替更新。同理,如果依赖前面三行的数据,就需要三个一维数组,因此,如果依赖过远,这种优化就不合适了。
三维数组如何优化?首先,三维数组其实也是只有临近依赖才可以优化,比如,三维数组是平面嘛,如果上一层依赖下一层,那么,其实就可以只申请一个二维数组,然后,根据下一层更新上一层,把这个二维数组复用。
如果依赖左上角,左边以及上面的数据,此时,如果出现一维数组更新的时候,某些数据还要用到,但是更新下一行的时候会覆盖掉,此时就可以申请一个变量来临时保存。
比如上面的例子,依赖左边,上边以及左上角,当需要更新第二行第二个位置时,此时,左边有,上面有,但是,左上角的数已经被左边替换掉了,因此,可以申请一个变量记录下左上角的数。

网址:二维动态规划空间优化 https://www.yuejiaxmz.com/news/view/566640

相关内容

动态规划的时间复杂度优化
动态规划优化技巧.doc
动态规划 多重01背包及空间开销优化
动态规划算法的优化技巧(转贴)
强化学习二(动态规划)
简阳市强化国土空间规划引领,优化“生产、生活、生态”空间格局
土地利用规划与空间结构优化
城市土地利用与空间规划优化
国土空间规划背景下中国生态空间规划研究进展
物流空间布局规划与优化方法

随便看看