第3章数学建模中的动态规划问题

合集下载

数学建模-(动态规划)

数学建模-(动态规划)

1.某公司打算向它的三个营业区增设6个销售店,每个营业区至少增设1个。

各营业区每年增加的利润与增设的销售店个数有关,具体关系如表1所示。

试规划各营业区应增设销售店的个数,以使公司总利润增加额最大。

:个销售店,C 区增设1个销售店.最大利润为490万元。

贝尔曼(Bellman )最优化原理:在最优策略的任意一阶段上,无论过去的状态和决策如何,对过去决策所形成的当前状态而言,余下的诸决策必须构成最优子策略。

2.某公司拟将500万元的资本投入所属的甲、乙、丙三个工厂进行技术改造,各工厂获得投资后年利润将有相应的增长,增长额如表所示。

试确定500万元资解:将问题按工厂分为三个阶段3,2,1=k ,设状态变量k (3,2,1=k )代表从第k 个工厂到第3个工厂的投资额,决策变量k x 代表第k 个工厂的投资额。

于是有状态转移率k k k x S S -=+1、允许决策集合}0|{)(k k k k k S x x S D ≤≤=和递推关系式:)}()({max )(10k k k k k S x k k x S f x g S f k k -+=+≤≤ )1,2,3(=k0)(44=S f当3=k 时:)}({max }0)({max )(330330333333x g x g S f S x S x ≤≤≤≤=+=于是有表2-1,表中*3x 表示第三个阶段的最优决策。

当2=k 时:)}()({max )(2232202222x S f x g S f S x -+=≤≤于是有表7-3。

当1=k 时:)}()({max )(1121101111x S f x g S f S x -+=≤≤于是有表2-3。

然后按计算表格的顺序反推算,可知最优分配方案有两个:(1)甲工厂投资200万元,乙工厂投资200万元,丙工厂投资100万元;(2)甲工厂没有投资,乙工厂投资200万元,丙工厂投资300万元。

按最优分配方案分配投资(资源),年利润将增长210万元。

动态规划模型

动态规划模型

动态规划模型动态规划(Dynamic Programming)是一种优化问题的求解方法,它将原问题划分为多个子问题,并通过求解子问题的最优解来得到原问题的最优解。

动态规划方法适用于满足最优子结构(optimal substructure)和重叠子问题(overlapping subproblems)的问题。

动态规划模型由三个基本要素组成:状态(state)、状态转移方程(state transition equation)和初始条件(initial conditions)。

首先,我们需要定义问题的状态,即将原问题划分为多个子问题,并将子问题的结果组合起来得到原问题的结果。

状态可以是一个整数、一个数组、一个矩阵或者一个串等等。

状态具有两个性质:最优子结构和无后效性。

其次,我们需要确定状态之间的转移关系,即状态转移方程。

状态转移方程描述了一个状态如何从其前一个状态转移到后一个状态。

状态转移方程是问题求解的核心,通过它可以得到问题的最优解。

最后,我们需要确定初始条件,即问题的边界条件或者初始状态。

初始条件提供了问题的起始状态,是递推过程的终止条件。

动态规划模型的求解过程通常包括以下几个步骤:1. 定义状态:确定问题的状态,即将原问题划分为多个子问题,并定义每个子问题的状态。

2. 确定状态转移方程:根据问题的最优子结构性质,确定状态之间的转移关系,即状态转移方程。

3. 确定初始条件:确定问题的边界条件或者初始状态,提供递推过程的终止条件。

4. 设计算法:根据状态转移方程和初始条件,设计算法求解问题。

5. 检验结果:检验算法的正确性和有效性,确保得到的结果是问题的最优解。

动态规划模型的求解过程通常采用自底向上(bottom-up)的方法,即从最小的子问题开始求解,逐步通过求解子问题的最优解来得到原问题的最优解。

在求解过程中,将子问题的最优解存储起来,避免重复计算,提高求解效率。

总之,动态规划模型是一种有效的求解优化问题的方法,通过将原问题划分为多个子问题,并通过求解子问题的最优解来得到原问题的最优解。

数学建模中的动态规划与贪心算法

数学建模中的动态规划与贪心算法

在现代数学建模中,动态规划和贪心算法是两种常用的方法。

它们具有重要的理论和实际意义,可以在很多实际问题中得到应用。

动态规划是一种通过将问题分解为子问题,并反复求解子问题来求解整个问题的方法。

它的核心思想是将原问题分解为若干个规模较小的子问题,并将子问题的最优解合并得到原问题的最优解。

动态规划的求解过程通常包括问题的建模、状态的定义、状态转移方程的确定、初始条件的设置和最优解的确定等步骤。

通过动态规划方法,可以大大减少问题的求解时间,提高求解效率。

举个例子,假设我们有一组物品,每个物品有重量和价值两个属性。

我们希望从中选出一些物品放入背包中,使得在背包容量限定的条件下,背包中的物品的总价值最大化。

这个问题可以使用动态规划来解决。

首先,我们定义一个状态变量,表示当前的背包容量和可选择的物品。

然后,我们根据背包容量和可选择的物品进行状态转移,将问题分解为子问题,求解子问题的最优解。

最后,根据最优解的状态,确定原问题的最优解。

与动态规划相比,贪心算法更加简单直接。

贪心算法是一种通过每一步的局部最优选择来达到全局最优解的方法。

贪心算法的核心思想是每一步都做出当前看来最好的选择,并在此基础上构造整个问题的最优解。

贪心算法一般包括问题的建模、贪心策略的确定和解的构造等步骤。

尽管贪心算法不能保证在所有情况下得到最优解,但在一些特定情况下,它可以得到最优解。

举个例子,假设我们要找零钱,现有的零钱包括若干2元、5元和10元的硬币。

我们希望找出一种最少的方案来凑出某个金额。

这个问题可以使用贪心算法来解决。

首先,我们确定贪心策略,即每次选择最大面额的硬币。

然后,我们根据贪心策略进行解的构造,直到凑够目标金额。

动态规划和贪心算法在数学建模中的应用广泛,在实际问题中也有很多的成功应用。

例如,动态规划可以用于求解最短路径、最小生成树等问题;贪心算法可以用于求解调度、路径规划等问题。

同时,动态规划和贪心算法也相互补充和影响。

有一些问题既可以使用动态规划求解,也可以使用贪心算法求解。

建立动态规划数学模型的步骤

建立动态规划数学模型的步骤

u1=0
=22.32×125=2790(万元) 至此已算得最大总利润2790万元,再按与计算过程相反的 顺序推回去,可得最优计划如下表所示:
年份 完好机床数 高负荷机床数 低负荷机床数 uk xk+1=0.8xk-0.3uk xk-uk k 125 0 125 第一年 第二年
第三年 第四年 第五年
100
80 64 32
0
0 64 32
100
80 0 0
例2(带回收的资源分配问题)某厂新购某种机床125台。据 估计,这种设备5年后将被其它设备所代替。此机床如在高负荷状 态下工作,年损坏率为1/2,年利润为10万元;如在低负荷状态下 工作,年损坏率为1/5,年利润为6万元。问应如何安排这些机床的 生产负荷,才能使5年内获得的利润最大? 解:以年为阶段,k=1,2,3,4,5 取k年初完好的机床数为状态变量xk 以k年初投入高负荷运行的机床数为决策变量uk,则低负荷运 行机床数是xk-uk,于是状态转移方程为: xk+1=1/2uk+4/5(xk-uk)=0.8xk-0.3uk 以利润为目标函数,则k年利润为: 10uk+6(xk-uk)=4uk+6xk 记fk(xk)为k年至5年末最大总利润,则动态规划基本方程 为: fk(xk)= max{ 4uk+6xk+fk+1(0.8xk-0.3uk)} f6(x6)=0
= max{ 4u3+6x3+15(0.8x3-0.3u3)}
0≤u3≤x3
= max{ -0.5u3+18x3}=18x3
u3=0
动态规划基本方程为: fk(xk)= max{ 4uk+6xk+fk+1(0.8xk-0.3uk)}

数学建模之动态规划(一)

数学建模之动态规划(一)
关系式和恰当的边界条件(简言之为基本方程)。 (2)在多阶段决策过程中,动态规划方法是既把当前
一段和未来各段分开,又把当前效益和未来效益结合起来 考虑的一种最优化方法。
(3)在求整个问题的最优策略时,由于初始状态是已 知的,而每段的决策都是该段状态的函数,故最优策略所 经过的各段状态便可逐次变换得到,从而确定了最优路线。
表6-1
单位:万元
盈利 企业



设备台数
0
0
0
0
1
3
5
4
2
7
10
6
3
9
11
11
4
12
11
12
5
13
11
12
? 这五台设备如何分配给各企业,才能使国家得到的盈
利最大。
2020/8/23
18
解 将问题按企业分为三个阶段,甲、乙、丙三个企
业分别编号为1、2、3。设:
sk表示为分配给第k个企业至第n个企业的设备台数。
设状态变量表示分配用于生产第种产品至第n种产品
的原料数量。
2020/8/23
16
决 策 变 量 uk 表 示 分 配 给 生 产 第 k 种 产 品 的 原 料 数 , 即 uk=xk。
状态转移方程: s 1 s u s x
允许决策集合: D (s ) {u 0 u x s }
令最优值函数fk(sk)表示以数量为sk的原料分配给第种产
∧,n。如例1就可以看成是一个6个阶段决策问题。状态选
每阶段的初始节点Sk,决策则是每阶段的终止节点Uk,状 态转移方程可以 Sk+1=Uk(Sk) 用来表示。
2020/8/23

第3章数学建模中的动态规划问题

第3章数学建模中的动态规划问题

6
4.1算法总体思想
动态规划与一般搜索技术最大不同的地方就是记录了已
求解过的问题的结果。这里包含了两个方面的内容 :子 问题的记录和子问题结果的记录。其中,子问题的记录是 最重要,也是最为复杂的,它就是通常我们所说的状态表 示。 通常我们用一个数、一组数或一个向量来实现状态 表示。 状态表示要满足两个要求:正确、合理描述子问题和描 述的 子问题满足最优子结构性质;从算法实现角度来看, 状态表示必须能够用基本数据 结构实现并且能满足空间 要求。
13动态规划算法求解问题的一般思路动态规划算法求解问题的一般思路每个阶段中都求出本阶段的各个初始状态到过程终点e的最短路径和最短距离当逆序倒推到过程起点a时便得到了全过程的最短路径及最短距离同时附带得到了一组最优结果即各阶段的各状态到终点e的最优结果
学习要点:

第4章 动态规划 dynamic programming
2
4.1算法总体思想


动态规划法的定义:在求解问题中,对于每一 步决策,列出各种可能的局部解,再依据某种 判定条件,舍弃那些肯定不能得到最优解的局 部解,在每一步都经过筛选,以每一步都是最 优解来保证全局是最优解。 动态规划通常应用于最优化问题,即做出一组 选择以达到一个最优解。关键是存储子问题的 每一个解,以备它重复出现。
19
4.3 典型问题-合唱队形
【问题描述】N位同学站成一排,音乐老师要请其中的 (N-K)位同学出列,使得剩下的K位同学排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右 依次编号为1, 2, …, K,他们的身高分别为T1, T2, …, TK,则他们的身高满足T1 < T2 < … < Ti , Ti > Ti+1 > … > TK (1 <= i <= K)。你的任务是,已知所有N位 同学的身高,计算最少需要几位同学出列,可以使得 剩下的同学排成合唱队形。 【样例输入】8 186 186 150 200 160 130 197 220 【样例输出】 4 【说明】该样例中,可以要队头身高186的两个人出列, 以及队尾197和220的人出列,共4人出列,所以输出4.

数模动态规划模型

数模动态规划模型

9 5
C1
1 5
D
1
4 2 6 9 2 7 5 E2 E1 1 F
4
D
3
2
2016/3/31
B
1
9 5 4 5 1 7 3
C
1
1 5 8 4 6 4 2
D
1
4 2 E
1
B
1
9 5 4 5 1 7 3
C
1
1 5 8 4 6 4 2
D
1
4 2 E
1
3 A 4 B
3
5
B
2
C
2
D
2
6 9 7 5
1 F A
D
2
4 7 7
D
3
f 1 ( s 1 ) = d 1 ( s 1 ,x 1 ) + f 2 *(s 2 )
B1 3+ 14 = 17 B2 5+ 9 = 14 B3 4+ 12 = 16
f 1 *( s 1 )
14
X 1* B2
n = 3
X S
3
E2 E1 E2
f3*(s 3)
X
3 *
f 3 ( s 3 ) = d 3 ( s 3 ,x 3 ) + f 4 *( s 4 )
3、决策(decision) uk(sk) :从一个阶段某状态演变到下
1
2016/3/31
最优化原理
4、策略(policy):全过程中各个阶段的决策Un组成的有序总体 {Un},如 A B2 C1 D1 E 。 5、子策略(sub-policy) :剩下的M个阶段构成M子过程,相应的 决策系列叫M子策略,如 C1 D1 E。 6、状态转移方程:前一阶段的终点(决策)是后前一阶段的起点 (状态),Uk = Sk+1。 7、指标函数:各个阶段的数量指标 标 数 各个阶 数 标,记为 为Vk,n(sk,Uk).如上例中 中, 用dk(sk,Uk)表示距离,d2(B3,C2)=8,d3(C2,D2)=2 等. 8、目标函数: 策略的数量指标值,记为 Z=opt[v1(s1,u1)*…* vn(sn,un)]. 其中:opt为max或min,*为运算符号.如上例中, Z=min[d1(s1,u1)+ ...+dn(sn,un)]=min[d1+d2+…+ dn]

动态规划及其在数学模型中的应用-最新教育文档

动态规划及其在数学模型中的应用-最新教育文档

动态规划及其在数学模型中的应用1动态规划的起源与发展动态规划是解决多阶段决策过程最优化的一种方法,大约产生于20世纪50年代。

1951年,美国数学家理查德?贝尔曼根据一类多阶段决策问题的特点,把多阶段决策问题表示为一系列单阶段问题,即把一个N—变量问题作为一系列的N个问题而逐个加以解决,提出了解决这类问题的“最优化原理”,并将其应用于很多实际问题的研究,从而建立了运筹学的一个分支-动态规划.1957年理查德?贝尔曼在美国普林斯顿大学发表了第一本正式的著作。

随后理查德?贝尔曼及其他科学工作者发表了一些列动态规划应用的著作,包括动态规划在最佳控制论、资源理论、工业工程、经济学、管理科学、变分法和马尔柯夫过程中的应用。

动态规划的发展始终伴随着它的广泛应用而不断臻善的。

2动态规划的优点与局限动态规划的核心思想是贝尔曼提出的最优化原理,这个原理导致了分阶段决策的方法。

分阶段决策的方法是建立在整体最优化的基础上的,在寻求某一阶段的决策时,不仅要考虑局部的利益,而且应考虑总体的最优。

动态规划通过将一个N维变量的复杂问题进行分阶段处理,把N维变量问题变成求解N个单变量问题,大大简化求解过程,节省巨大的计算量,这是经典的求解极值方法所做不到的。

动态规划几乎超越了所有现在的计算方法,特别是经典最优化方法,它能确定出绝对(全局)极大或极小,而不是相对(局部)的极值,使得我们不再需要关心伤脑筋的局部极大或极小问题。

动态规划的另一特点是泛函方程的“嵌入"特性。

动态规划方法求出的不仅是对整个过程的某一特定状态的一个解,而且也是对所有后部子过程的所有可能出现状态的一族解.动态规划方法的局限性表现有以下几个方面:第一,到目前为止,动态规划还没有一个统一的标准模型可供使用。

实际问题不同,其动态规划模型可能各异,虽然理论上说可以把其他数学规划问题化为动态规划模型求解,但是这种转化的过程对于复杂的数学规划问题将变得十分困难。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
最小路径得分=6 状态表示 1-2
用二元组D(X,Y)描述问题,D(X,Y)表示到 达第X层第Y个位置时的得分,那么 D(X,Y)的 最优解包含了子问题D(X-1,Y)或D(X-1,Y-1) 的最优解,状态转移方程为 D(X,Y)= Min {D (X-1,Y),D(X-1,Y-1)} + A[X,Y]
11
动态规划算法求解问题的一般思路
S1:K=4,有:F4(D1)=3,F4(D2)=4,F4(D3)=3 S2: K=3,有: F3(C1)=min{d3(C1,D1)+F4(D1),d3(C1,D2)+F4(D2)}=min{8,10}=8 F3(C2)=d3(C2,D1)+f4(D1)=5+3=8 F3(C3)=d3(C3,D3)+f4(D3)=8+3=11 F3(C4)=d3(C4,D3)+f4(D3)=3+3=6 S3: K=2,有: F2(B1)=min{d2(B1,C1)+F3(C1),d2(B1,C2)+f3(C2),d2(B1,C3)+F3(C3 )}=min{9,12,14}=9 F2(B2)=min{d2(B2,c2)+F3(C2),d2(B2,C4)+F3(C4)}=min{16,10}=10 S4:k=1,有: F1(A)=min{d1(A,B1)+F2(B1),d1(A,B2)+F2(B2)}=min{14,13}=13 因此由A点到E点的全过程的最短路径为A—>B2一>C4—>D3—>E。 最短路程长度为13。
18
4.2动态规划算法的基本要素
三、备忘录方法
•备忘录方法的控制结构与直接递归方法的控制 结构相同,区别在于备忘录方法为每个解过的子 问题建立了备忘录以备需要时查看,避免了相同 子问题的重复求解。 •步骤:
为每个问题建立一个记录项,初值设为一个特殊值(表 未求解)
每个待求解子问题,首先查记录项,有解答则直接选取, 否则求解该子问题。
最优化原理是动态规划的基础。任何一个问题,如果失去了这个最优 化原理的支持,就不可能用动态规划方法计算。能采用动态规划求解 的问题都需要满足一定的条件: (1) 问题中的状态必须满足最优化原理; (2) 问题中的状态必须满足无后效性。
所谓的无后效性是指:“下一时刻的状态只与当前状态有关,而和当 前状态之前的状态无关,当前的状态是对以往决策的总结”。
D(1,1)= A[1,1]
9
动态规划算法求解问题的一般思路
【例题1】最短路径问题。图中给出了一个地图,
地图中每个顶点代表一个城市,两个城市间的连 线代表道路,连线上的数值代表道路的长度。现 在,想从城市A到达城市E,怎样走路程最短,最 短路程的长度是多少?
10
动态规划算法求解问题的一般思路
【分析】把从A到E的全过程分成四个阶段,用k表 示阶段变量,第1阶段有一个初始状态A,两条可供 选择的支路ABl、AB2;第2阶段有两个初始状态 B1、 B2,B1有三条可供选择的支路,B2有两条可供 选择的支路……。 用dk(xk,xk+1)表示在第k阶段由初始状态xk到下阶段 的初始状态xk+1的路径距离,Fk(xk)表示从第k阶段的 xk到终点E的最短距离,利用倒推方法求解A到E的 最短距离。
7
4.1算法总体思想
动态规划设计一般要经历以下几个步骤:
1、划分阶段:按照问题的时间或空间特征,把问题分为若 干个阶段。 2、确定状态:将问题发展到各个阶段时所处的各种客观情 况用不同的状态表示出来。 3、确定决策并写出状态转移方程:因为决策和状态转移有 着天然的联系,状态转移就是根据上一阶段的状态和决策来 导出本阶段的状态,所以如果确定了决策,状态转移方程也 就可以写出。 4、寻找边界条件:给出的状态转移方程是一个递推式,需 要一个递推的终止条件或边界条件。 5、程序设计实现:动态规划的主要难点在于理论上的设计, 一旦设计完成,实现部分就会非常简单。
【样例输入】8 186 186 150 200 160 130 197 220 【样例输出】 4 【说明】该样例中,可以要队头身高186的两个人出列,
以及队尾197和220的人出列,共4人出列,所以输出4.
20
4.3 典型问题-合唱队形
【算法分析】 :先分别从左到右求最大上升子序列,从右到 左求最大下降子序列,再枚举中间最高的一个人。算法时间 复杂度O(N2)。 【思路】:数组a[i]是第i个人的身高,b[i]是从左边第一个到 a[i]的最长上升子序列,c[i]是从右边第一个到a[i]的最长上升 子序列。
12
动态规划算法求解问题的一ห้องสมุดไป่ตู้思路
每个阶段中,都求出本阶段的各个初始状态到过 程终点E的最短路径和最短距离,当逆序倒推到过 程起点A时,便得到了全过程的最短路径及最短距 离,同时附带得到了一组最优结果(即各阶段的各 状态到终点E的最优结果)。
13
[思考与练习]:若城市路径示意图如图所示,图 中,每条边上的数字是这段道路的长度。条件: 从A地出发,只允许向右或向上走。试寻找一条 从A地到B地的最短路径和长度。
5
4.1算法总体思想
适合于用动态规划法求解的问题具有以下特点: 1、可以划分成若干个阶段,问题的求解过程就是对若干个
阶段的一系列决策过程。 2、每个阶段有若干个可能状态 3、一个决策将你从一个阶段的一种状态带到下一个阶段的
某种状态。 4、在任一个阶段,最佳的决策序列和该阶段以前的决策无
关。 5、各阶段状态之间的转换有明确定义的费用,而且在选择
16
4.2 动态规划算法的基本要素
一、最优子结构
•某个问题的最优解包含着其子问题的最优解。这种性质称为最 优子结构性质。
例如图中,若路线I和J是A到C的最优路径, 则根据最优化原理,路线J必是从B到C的 最优路线。这可用反证法证明:假设有另 一路径J‘是B到C的最优路径,则A到C的 路线取I和J’比I和J更优,矛盾。从而证明 J‘必是B到C的最优路径。 最优子结构是问题能用动态规划算法求解 的前提。
2
4.1算法总体思想
动态规划法的定义:在求解问题中,对于每一 步决策,列出各种可能的局部解,再依据某种 判定条件,舍弃那些肯定不能得到最优解的局 部解,在每一步都经过筛选,以每一步都是最 优解来保证全局是最优解。
动态规划通常应用于最优化问题,即做出一组 选择以达到一个最优解。关键是存储子问题的 每一个解,以备它重复出现。
3
4.1算法总体思想
动态规划算法与分治法类似,其基本思想也是 将待求解问题分解成若干个子问题。
但是经分解得到的子问题往往不是互相独立的。 不同子问题的数目常常只有多项式量级。在用 分治法求解时,有些子问题被重复计算了许多 次。
4
4.1算法总体思想
1、阶段:把问题分成几个相互联系的有顺序的几 个环节,这些环节即称为阶段。 2、状态:某一阶段的出发位置称为状态。 3、决策:从某阶段的一个状态演变到下一个阶段 某状态的选择。 4、状态转移方程:前一阶段的终点就是后一阶段 的起点,前一阶段的决策选择导出了后一阶段的状 态,这种关系描述了由k阶段到k+1阶段状态的演变 规律,称为状态转移方程。
1
最优化原理
1951年美国数学家R.Bellman等人,根据一类多阶段问题的特点,把 多阶段决策问题变换为一系列互相联系的单阶段问题,然后逐个加以 解决。与此同时,他提出了解决这类问题的“最优化原 理”(Principle of Optimality)。
“最优化原理”用数学化的语言来描述:假设为了解决某一优化问题, 需要依次作出n个决策D1,D2,…,Dn,如若这个决策序列是最优的, 对于任何一个整数k,1 < k < n,不论前面k个决策是怎样的,以后的 最优决策只取决于由前面决策所确定的当前状态,即以后的决策Dk+1, Dk+2,…,Dn也是最优的。
第4章 动态规划 学习要点: dynamic programming
• 理解动态规划算法的概念。 • 掌握动态规划算法的基本要素 (1)最优子结构性质 (2)重叠子问题性质 • 掌握设计动态规划算法的步骤。 (1)找出最优解的性质,并刻划其结构特征。 (2)递归地定义最优值。 (3)以自底向上的方式计算出最优值。 (4)根据计算最优值时得到的信息,构造最优解。
最佳决策时有递推关系(即动态转移方程)。
6
4.1算法总体思想
动态规划与一般搜索技术最大不同的地方就是记录了已 求解过的问题的结果。这里包含了两个方面的内容 :子 问题的记录和子问题结果的记录。其中,子问题的记录是 最重要,也是最为复杂的,它就是通常我们所说的状态表 示。 通常我们用一个数、一组数或一个向量来实现状态 表示。 状态表示要满足两个要求:正确、合理描述子问题和描 述的 子问题满足最优子结构性质;从算法实现角度来看, 状态表示必须能够用基本数据 结构实现并且能满足空间 要求。
不管a[i]为什么值时,b[i]>=1;(因为它本身就是一个上升 序列元素。)假设 i=1 ,此时b[1]=1;因为a[1]的前面没有元素。 那么如果a[2]>a[1],显然可以得到b[2]=b[1]+1,因为a[1]、a[2] 是一个上升子序列。如果a[2]<=a[1],那么b[2]只能为1。同理, 若a[3]>a[1]..a[3-1],则b[3]=max{b[1]...b[3-1]}+1。由此我们 可以得到递推关系式: b[i]=max{b[j](1<=j<i)|a[i]> a[j]}+1 c[i]=max{c[j](i<=j<N)|a[i]> a[j]}+1 然后,可以得到符合合唱队的队列是b[i]+c[i]-1(a[i]被重复计 算了一次),而题目要求的合唱队列是:max{b[i]+c[i]-1}。
相关文档
最新文档