其他分享
首页 > 其他分享> > A

A

作者:互联网

动态规划

 

本质:

 

将待求解问题分解为若干子问题,先求解子问题,再结合这些子问题的解得到原问题的解。(在这点上和分治法很像)

 

 

那为什么不直接用分治法:

 

因为重复计算。

适合用动态规划法求解的问题经分解得到的子问题往往不是相互独立的。

有些问题分解后的子问题往往是重复的,若用分支法则会重复计算耗费时间内存。

 

 

解决方法:

用一个表来记录所有已解决的子问题的答案。不管该子问题以后是否被用到,只要它被计算过,就将其结果填入表中。

 

 

步骤:用a[MAXN]储存输入的数据(一般是一维数组)

基于题目规则,找出最优解性质,刻画其结构特征,寻找状态转移方程。(比如a数组总某些符合条件的数的和或者积)

自底向上的方式,递归或循环地定义最优值。

基于关系式,用另一个数组来储存上面的得到的结果/最优值(比如f[MAXN][MAXN]二维数组)

f的值一般是多次替换的。如下方法:

在符合条件的关系式中寻找最优值,然后填入f[i][j]。

或者定义f[i][j]为无穷大或无穷小,每次更迭(若有此次关系式所得出的值由于f[i][j],则替换)

标签:,求解,关系式,问题,MAXN,数组,最优
来源: https://www.cnblogs.com/jihuiting/p/15554482.html