27乘43的格子算法详解

VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

}

动态规划是运筹学中用于求解决筞过程中的最优化数学方法当然,我们在这里关注的是作为一种算法设计技术作为一种使用多阶段决策过程最优的通用方法

基本思想與分治法类似,也是将待求解的问题分解为若干个子问题(阶段)按顺序求解子阶段,前一子问题的解为后一子问题的求解提供了实鼡的信息。
在求解任一子问题时列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解丢弃其它局部解。依次解决各子問题最后一个子问题就是初始问题的解。
因为动态规划解决的问题多数有重叠子问题这个特点为降低反复计算。对每个子问题仅仅解┅次将其不同阶段的不同状态保存在一个二维数组中。
与分治法最大的区别是:适合于用动态规划法求解的问题经分解后得到的子问題往往不是互相独立的(即下一个子阶段的求解是建立在上一个子阶段的解的基础上,进行进一步的求解)

  1. 把原问题分解为若干个子问題,子问题和原问题形式相同或类似只不过规模变小了。子问题都解决原问题即解决(以走方格问题为例)。
    子问题的解一旦求出就会被保存所以每个子问题只需求 解一次。

  2. 在用动态规划解题时我们往往将和子问题相关的各个变量的一组取值,称之为一个“状 态”┅个“状态”对应于一个或多个子问题, 所谓某个“状态”下的“值”就是这个“状 态”所对应的子问题的解。
    所有“状态”的集合構成问题的“状态空间”。“状态空间”的大小与用动态规划解决问题的时间复杂度直接相关。 在走方格的例子里一共有N×N数字,所鉯这个问题的状态空间里一共就有N×N个状态

  3. 确定一些初始状态(边界状态)的值
    以“方格”为例,边界状态就是第一行与第一列值就昰1。

  4. 定义出什么是“状态”以及在该“状态”下的“值”后,就要找出不同的状态之间如何迁移――即如何从一个或多个“值”已知的 “状态”求出另一个“状态”的“值”(递推型)。状态的迁移可以用递推公式表示此递推公式也可被称作“状态转移方程”。

能用动规解决的问题的特点:

  1. 问题具有最优子结构性质如果问题的最优解所包含的 子问题的解也是最优的,我们就称该问题具有最优子结 构性质

  2. 无后效性。当前的若干个状态值一旦确定则此后过程的演变就只和这若干个状态的值有关,和之前是采取哪种手段或经过哪条路径演變到当前的这若干个状态没有关系。

  3. 有重叠子问题:即子问题之间是不独立的一个子问题在下一阶段决策中可能被多次使用到(该性質并非动态规划适用的必要条件,可是假设没有这条性质动态规划算法同其它算法相比就不具备优势)。

小明从A点要去B点请问有多少種不同的路线?规则是只能向下和向右走

  • 典型的动归问题,假设B在A的右边此时只有一条路线;B在A的下面,也只有一条路线;
  • 然后慢慢累加如下图所示!

此时在A到B的路程中有一柱子挡着(柱子不能被翻越)。请问有多少种不同的路线

  • 同上所述,不考虑柱子占据的位置慢慢累加!

问题升级:(类似于数塔问题)
还是由A走到B,但每个格子对应有数字求A(5)走到B(6),数字最大为多少

}

我要回帖

更多关于 格子算法详解 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信