线型动态规划PPT课件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
无后效性原则
给定某一阶段的状态,则在这一阶段以后过程的发展不受 这阶段以前各段状态的影响,所有各阶段都确定时,整个 过程也就确定了。这个性质意味着过程的历史只能通过当 前的状态去影响它的未来的发展,这个性质称为无后效性 。
第1题:关键子工程
有N个子工程,每一个子工程都有一个完成 时间。
子工程之间的有一些依赖关系,即某些子 工程必须在一些子工程完成之后才开工。
在满足子工程间的依赖关系前提下,可以 有任何多个子工程同时在施工。
求整个工程的完成的最短时间。 求出所有关键子工程。 N≤200
有向图的关键路径
分析
如果该图能够进行拓扑排序,证明有解,反之则 无解。
根据拓扑序列进行动态规划求解,得到工程所需 的完成时间。 设 F[I]表示完成子工程I所需的最早时间。 动态规划方程:F[I]=MAX{F[J]}+ A[I,J]
即求最少覆盖序列。
• N<=10000.
分析
• 设f(i)表示前i个数的最长不上升序列的长 度。 则, f(i)=max{f(j)+1},其中j<i and a[j]>=a[i] 这里0<j<i<=n。 显然时间复杂度为O(n2)。
• 上述式子的含义:找到i之前的某j,这个 数不比第i个数小,对于所有的j取f(j)的最
多阶段最优化决策问题
由上例可以看出,整个问题分成了A、B、C、D 四个阶段来做,每个阶段的数值的计算只会跟上 一个阶段的数值相关,这样一直递推下去直到目 标。
即由初始状态开始,通过对中间阶段决策的选择 ,达到结束状态。这些决策形成了一个决策序列 ,同时确定了完成整个过程的一条最优的活动路 线。
• 具体过程:
i
1
2
3
4
5
6
7
8
389 207 155 300 299 170 158 65
第1次 389
ห้องสมุดไป่ตู้
第2次 389 207
第3次 389 207 155
第4次 389 300 155
(由于207<300<389,因此更新)
第5次 389 300 299
(由于155<299<300,因此更新)
状态转移方程
• 设fk(i)—k阶段状态i的最优权值,即初 始状态至状态i的最优代价。
fk+1(i) = min{ fk(j) + u(i,j) }
第k+1阶 段状态
第k阶 决策 段状态
动态规划的基本原理
最优性原理
作为整个过程的最优策略,它满足:相对前面决策所形成 的状态而言,余下的子策略必然构成“最优子策略”。
3. 因为生成的序列为有序序列,因此我们可以采用二分查找 的方法很快查找到更新的值,时间复杂度为O(n㏒n)
求导弹的最小覆盖
• 第二问很容易想到贪心法:那就是采取多次求最 长不上升序列的办法,然后得出总次数。
• 上述贪心法不正确,很容易就能举出反例。 例如: “7 5 4 1 6 3 2” 用多次求最长不上升序列所有为 “7 5 4 3 2”、“1”、“6”共3套系统; 但其实只要2套,分别为: “7 5 4 1”与“6 3 2”。
第6次 389 300 299 170
第7次 389 300 299 170 158
第8次 389 300 299 170 158 65
思考?
• 有些同学可能会问: – 对于每个f,为什么只保留一个数值呢? – 而对于该序列,为什么要保留较大的值呢?
1. 再回过头来看方程:
f(i)=max{f(j)+1},其中j<i and a[j]>=a[i]
线型动态规划
带权有向的多段图问题
• 给定一个带权的有向图,要求从点A到点D 的最短路径。
• 设F(i)表示从点A到达点i的最短距离,则 有
• F(A)=0 • F(B1)=5,F(B2)=2 • F(C1)=min{F(B1)+3}=8 • F(C2)=min{F(B1)+2,F(B2)+7}=7 • F(C3)=min{F(B2)+4}=6 • F(D)=min{F(C1)+4,F(C2)+3,F(C3)+5}=10
根据的得到的F序列和拓扑序列,查找关键工程。 初始时,最后完成的一个或多个工程为关键工程 。如果F[I]=F[J]- A[I,J] ,且第I个子工程为 关键工程,那么第J个子工程也是关键工程。
时间复杂度为O(N2)。
拦截导弹
• 给定N个数
– 求最长的不上升子序列长度 – 求最少有多少个不上升序列能覆盖所有的数,
– 自反性:a≤a; – 反对称性:如果a≤b且b≤a,则有a=b; – 传递性:如果a≤b且b≤c,则a≤c 。
• 带有偏序关系的集合称为偏序集。 • 令(X,≤)是一个偏序集,对于集合中的两个元素a、b,如
果有a≤b或者b≤a,则称a和b是可比的,否则a和b不可比。
• 一个反链A是X的一个子集,它的任意两个元素都不能进行 比较。
该式子表示找前面的一个最大f的符合条件的j,因此只要 保存符合条件的最大的j就可以了。
2. 在f值相同的情况下,保留较大的数显然更好。因为后面 的数若能跟较小的数构成下降序列也一定能能较大的数构 成下降序列,反之则不一定。例如207与300的f=2,但207 不能与299构成下降序列,而300则可以。
• 那么,正确的做法又是什么呢?
分析
• 上述问题的原因是若干次最优决策值和不 一定能推导出整个问题的最优。
• 为了解决这个问题下面介绍一个重要性质:
– 最少链划分=最长反链长度
• 为了证明这个性质,需要了解离散数学中 偏序集的相关概念和性质以及偏序集的 Dilworth定理。
偏序集
• 偏序是在集合X上的二元关系≤(这只是个抽象符号,不 是“小于或等于”),它满足自反性、反对称性和传递性。 即,对于X中的任意元素a,b和c,有:
优化
• 分析样例
i 12345678 389 207 155 300 299 170 158 65
f 12323456
• 这里找j,是在1~i之间进行寻找,那么我们能否快速查找 到我们所要更改的j呢?
• 要能更改需要两个条件:
– j<i and a[j]>=a[i]
– f(j)尽可能大
• 以上两个条件提示我们后面的值一定要小于等于前面的值。 因此我们试着构建一个下降的序列。在这个下降的序列中 查找可以更改的f值,使得序列的值尽可能大。
相关文档
最新文档