数塔问题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

d[n][j]=data[n][j] j=1,2,…,n; i=n-1,n-2,…,1, j=1,2,…,i, 时 d[i][j]=max(d[i+1][j],d[i+1][j+1])+data[i][j] 最后d[1][1]存储的就是问题的结果。 3)最优解路径求解及存储 通过数组data和数组d可以找到最优解的路径,但 需要自顶向下比较数组data和数组d中的数据。求 解和输出过程如下图:
算法设计与分析
第三章 动态规划
——数字三角形宝塔问题
Hale Waihona Puke Baidu
中原工学院 计算机学院 张英
数字三角形宝塔问题
【例题】如图示一个数字三角形宝塔。数字三角形 中的数字为不超过100的整数。现规定从最顶层走 到最底层,每一步可沿左斜线向下或右斜线向下走。 要求找出一条路径,使路径上的数值和最大。 输入数据:由文件提供输入数据,文 件的第一行是数字三角形的行数N和 整数值 M。以后的N行分别是从最顶 层到最底层的每一层中的数字。
数组data 7 3 8 8 1 0 2 7 4 4 5 2 数组d 30 23 21 20 13 10 7 12 10 10 4 5 2 6 5
4 6
5
动态规划的每个阶段的决策,作出的是一组局 部的决策结果。每个阶段都使问题规模变小,且更 接近最优解;直到最后一步,问题的规模变为1, 就找到了问题的最优解,算法结束。
多阶段决策问题
多阶段决策过程,是指这样的一类特殊的活动 过程,问题可以按时间顺序分解成若干相互联系 的阶段,在每一个阶段都要做出决策,全部过程 的决策是一个决策序列。要使整个活动的总体效 果达到最优的问题,称为多阶段决策问题。
【问题分析】对于这一问题,很容易想到用枚举的 方法去解决,即列举出所有路径并记录每一条路径 所经过的数字总和。然后判断数字总和是否等于给 定的整数值M或寻找出最大的数字总和,这一想法 很直观,而且当数字三角形行数不大时,其枚举量 也不是很大,应该能够实现。但如果用枚举的方法, 当三角形的行数等于100时,其枚举量之大是可想 而知的,显然,枚举法对于行数较大的问题求解并 不适用。其实,只要对其稍加分析,就可以得出一 个结论: 如果得到一条由顶至底的某处的一条最佳路径, 那么对于该路径上的每一个中间点来说,由顶至该 中间点的路径所经过的数字和也为最大。因此该问 题是一个典型的多阶段决策最优化的问题。
第二步:存储、求解
1)原始信息存储 原始信息有层数和数塔中的数据。层数用一个整形 变量N存储,数塔中的数据用二维数组data存储成 如下的三角阵:
2)动态规划过程存储 由于早期阶段动态规划决策的结果是一组数据,且 这次的决策结果是下次决策的唯一依据,所以必须 存储每一次决策的结果,若仅求最优解用一个一维 数组存储最新的决策结果即可;但若要同时找出最 优解的构成或路径,则必须用二维数组d存储个阶 段的决策结果。根据算法设计,二维数组d的存储 内容如下:
动态规划 第一步:阶段划分
从数字三角形宝塔问题的特点来看,不难发现解决问 题的阶段划分应该是自下而上的逐层决策。第一步对 于第五层的5个数据进行4次决策: 对经过第四层2的路径,在第五层的4,5中选择5 对经过第四层7的路径,在第五层的5,2中选择5 对经过第四层4的路径,在第五层的2,6中选择6 对经过第四层4的路径,在第五层的6,5中选择6 这是一次递推和降阶过程,因为以上的决策结果将5 阶数塔问题变为4阶子问题。用同样的方法还可以将4 阶数塔问题,变为3阶数塔问题,…… ,最后得到1阶 数塔问题,就是整个问题的最优解。
相关文档
最新文档