滑雪路线

Route

联系华体会

Contact huatihui

手机:@HASHKFK
电话:@HASHKFK
QQ:@HASHKFK
邮箱:@HASHKFK
地址:华体会- 华体会体育- 华体会体育官网
滑雪常识

>>你的位置: 首页 > 滑雪常识

华体会- 华体会体育官方网站- 体育APP下载动态规划习题精讲

2025-05-26 12:11:32

  华体会电竞,华体会电子,华体会体育官网,华体会靠谱吗,华体会APP,华体会官方网站,华体会网址,华体会官方平台,华体会app下载,华体会体育靠谱吗,华体会2025最新,华体会世界杯,华体会欧洲杯

华体会- 华体会体育官方网站- 华体会体育APP下载动态规划习题精讲

  首先确定状态,用F[I,J]表示从顶层走到第I行第J列的点能取得的最大和。显然每一层为一个阶段。而对于走到每一个非顶层点的情况来说,最多都只可能由它上方的点或左上方的点走来。则有状态转移方程:F[I,J] = Max(F[I-1,J], F[I-1,J-1]) A[I,J];初始状态为F[1,1] = A[1,1];目标状态为F[N,K],其中K∈[1,N]。要求输出的解则是Max {F[N,K]},其中K∈[1,N]。时空复杂度均为O(N2)。

  接下来我们从理论上来讨论使用动态规划的条件。对于一种状态划分的方法来说,状态只与状态本身的性质有关,而与如何达到该状态等其他条件一概无关的性质叫做无后效性。由于存在无后效性,决策只能从决策本身的性质来确定,使得某一阶段的状态只与它所在阶段的前一阶段的状态有关。可以看出,存在无后效性是应用动态规划的前提条件。而考虑动态规划的正确性时,问题则需要满足最优子结构。所谓最优子结构,即当前一阶段的状态最优时,通过状态转移方程得到的状态也能达到最优。理论上看,无后效性和最优子结构是使用动态规划时的两个基本条件,而具体应用动态规划时更多凭借的是经验。

  有了前面的例子,不难看出,每个点可以由四个方向中比它高的点滑到。设DX = {0,1,0,-1},DY = {1,0,-1,0},F[I,J]表示滑到第I行第J列的点时存在的最长滑坡长度,则有状态转移方程:F[I,J] = Max{F[IDX[K],JDY[K]]} 1,其中要求满足第IDX[K]行第JDY[K]列的点存在且高度比第I行第J列的点的高度高。我们可以按照深度优先搜索的方式计算F,并利用二维数组Arr记录计算过的F值,下面同样给出程序主干部分:

  举一个简单的例子:给出N个数,要从其中取M个求和,并使和尽量大。这明显是一个贪心可解的问题,把数字从大到小排序后取前M个求和即可。那么我们同样也可以扩展出一部分状态。我们设F[I,J]表示前I个数字中取了J个数字得到的最大和,则有:F[I,J] = Max (F[I–1,J],F[I-1][J-1] A[J])。那些贪心算法并不用考虑的“多余”状态就是扩展出的状态,举个实例来说明:N = 5 , M = 3时,A[] = {1, 2, 3, 4, 5}。那么显然1和2都不会被取到,但数组F中的F[1,1], F[2,1]和F[2,2]都是由1和2组成的状态,从贪心的角度看,它们就是多余的,就是为了使用动态规划扩展出来的状态。当然,就这道题目来看,贪心算法无论是从思维角度、编程角度还是时空复杂度角度都明显优于动态规划。

  同样是动态规划,是什么使得两道题目代码的主干部分相差巨大呢?这里讨论一下动态规划的两种实现形式——递推和记忆化搜索。首先,可以说所有用递推实现的动态规划均可以利用记忆化搜索实现。而某些题目之所以可以用递推求解,是因为这类题目同一阶段的状态表示上有很大的相关性,比如数字矩阵中某一行或列,这使得我们可以计算一个阶段的所有状态后再计算下一状态。而某些题目中利用动态规划划分的同一阶段的状态表示上没有多大相关性,比如Skiing里面的状态,从某点做起点每滑动一步为一个阶段,我们无法用一个准确的可以直接利用的集合将一个阶段中的状态表示出来,只能从已知状态去找和它相关联的状态。对于Skiing我们已知的是目标状态(即四面都不比该点高的点),通过边界条件(即四面都比该点高的最优值为1),便可以进行记忆化搜索。

【返回列表】

搜索您想要找的内容!

首页 | 关于华体会 | 华体会新闻 | 滑雪门票 | 滑雪常识 | 人才招聘 | 在线留言 | 联系华体会 | 滑雪路线 | 精彩图片 |

地址:华体会- 华体会体育- 华体会体育官网 电话:@HASHKFK 手机:@HASHKFK

Copyright © 2012-2024 华体会体育户外滑雪培训设备有限公司 版权所有 非商用版本 ICP备案编号: