4动态规划

4动态è&sect...

Info iconThis preview shows pages 1–12. Sign up to view the full content.

View Full Document Right Arrow Icon
1 动态规划 动态规划 (Dynamic Programming) ± 基本思想和使用条件 ± 动态规划算法的设计步骤 ± 应用实例 ± 小结
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
2 S 1 S 2 S 3 S 4 S 5 T 1 T 2 T 3 T 4 T 5 B 1 A 1 A 2 A 3 A 4 B 2 B 3 B 4 B 5 C 1 C 2 C 3 C 4 6 4 7 4 5 9 4 3 9 3 6 2 4 1 4 3 3 4 3 3 2 1 2 5 2 5 4 7 3 7 1 6 u,2 d,3 u,7 u,1 d,9 u,8 d,6 u,7 d,11 u,5 u,7 d,5 d,15 u,13 d,10 d,11 u,4 u,10 基本思想和使用条件 1 求从始点到终点的最短路径
Background image of page 2
3 解:判断序列 )} ( { min ) ( )} ( { min ) ( )} ( { min ) ( ) { min ) ( j j i j i k k j k j l l k l k m l m l A F A S S F B F B A A F C F C B B F T C C F + = + = + = = 任何最短路径的子路径都是相对于子路径的始 点和终点的最短路径 为找一条最短路径只需从T j 开始进行多步判断 基本思想
Background image of page 3

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
4 一个最优决策序列的任何子序列本身一定是相对于 子序列的初始和结束状态的最优的决策序列 例2 求总长模10的最小路径 最优解:下、下、下、下 动态规划求解:下、上、上、上 不满足优化原则,不能使用动态规划设计技术 22 2 2 5 55 5 u,6 u,4 u,2 d,1 ST 使用条件 : 优化原则
Background image of page 4
5 3 矩阵乘法: 设 A 1 , A 2 ,…, A n 为矩阵序列, A i P i -1 × P i 矩阵, i = 1,2,…, n . 确定乘法顺序使得元素相乘的总 次数最少 . 输入:向量 P = < P 0 , P 1 , … , P n > 实例: P = <10, 100, 5, 50> A 1 : 10 × 100, A 2 : 100 × 5, A 3 : 5 × 50, 乘法次序 ( A 1 A 2 ) A 3 : 10 × 100 × 5 + 10 × 5 × 50 = 7500 A 1 ( A 2 A 3 ): 10 × 100 × 50 + 100 × 5 × 50 = 75000 算法设计步骤
Background image of page 5

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
6 ) / 2 ( ) 2 1 1 ( ) ) ( 2 ) ( 2 ) 2 ( 2 2 1 1 ( ) ! ! )! 2 ( 1 1 ( ) ( 2 3 2 2 1 2 1 2 2 2 2 1 2 n n n n n e e e n n n e n n e n n e n n n n n n n n W n n n n n n n n n n n Ω = + Ω = + Ω = + Ω = π 一般算法:加括号的方法有 种, Catalan + n n n 2 1 1 搜索空间的规模
Background image of page 6
7 输入 P =< P 0 , P 1 , …, P n > , A i..j 表示乘积 A i A i+ 1 …A j 的结果, 其最后一次相乘是 A i..j = A i..k A k+ 1 ..j , m [ i,j ] 表示得到 A i..j 的最少的相乘次数 递推方程 < + + + = = < j i P P P j k m k i m j i j i m j k i j k i } ] , 1 [ ] , [ { min 0 ] , [ 1 动态规划算法 为了确定加括号的次序,设计表 s [ i , j ], 记录求得最优时最 后一次运算的位置
Background image of page 7

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
8 算法 1 :递归实现 算法 1 RecurMatrixChain( P,i,j ) 1. m [ i,j ] ←∞ 2. s [ i,j ] i 3. for k i to j 1 do 4. q RecurMatrixChain( P,i,k ) + RecurMatrixChain( P,k +1, j ) + p i 1 p k p j 5. if q < m [ i , j ] 6. then m [ i , j ] q 7. s [ i , j ] k 8.Return m [ i , j ] 这里没有写出算法的全部描述(递归调用的初值等)
Background image of page 8
9 复杂性满足递推关系 = = = = + = + + > + + = 1 1 1 1 1 1 1 1 ) ( 2 ) ( ) ( ) ( ) ( ) ( 1 )) 1 ( ) ( ) ( ( 1 ) 1 ( ) ( n k n k n k n k k T n O k n T k T n O n T n O k n T k T n O n T 数学归纳法证明 T ( n ) 2 n 1 n =2,显然为真 假设对于任何小于 n k 命题为真, 1 1 1 1 1 1 1 2 ) 1 2 ( 2 ) ( 2 2 ) ( ) ( 2 ) ( ) ( = = + = + + n n n k k n k n O n O k T n O n T 递归实现的复杂性
Background image of page 9

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.