基本信息
文件名称:算法设计与分析-第7章 动态规划-教学课件(非AI生成).ppt
文件大小:766 KB
总页数:63 页
更新时间:2025-06-23
总字数:约1.12万字
文档摘要

M1,nM1M2,nM1,2M3,nM1,3M4,n...M2M3,nM2,3M4,n...M3M4,nM3,4M5,n...矩阵链乘问题:子问题树中有大量的重叠子问题。*动态规划三.动态规划算法设计示例2.矩阵链乘问题原问题与子问题之间的关系:例:M1,5=M1M2M3M4M5表示5个矩阵链乘。则第一个划分有4个位置可以选:(1)M1(M2M3M4M5)(2)(M1M2)(M3M4M5)(3)(M1M2M3)(M4M5)(4)(M1M2M3M4)M5即分成四类,每类都有各自的子问题。如果这些子问题的最优解都已经知道了,那么原问题的最优解如何得到?动态规划三.动态规划算法设计示例2.矩阵链乘问题最优子结构:记Mi,j=MiMi+1…Mj,i=j。设计算M1,n的最优顺序的最后一次矩阵乘法是计算M1,k-1Mk,n,1k=n,则该最优顺序中所包含的计算M1,k-1和Mk,n的乘法顺序分别是计算M1,k-1和Mk,n的最优顺序。该问题有大量重叠的子问题:图示:矩阵链乘问题:子问题树.ppt动态规划三.动态规划算法设计示例2.矩阵链乘问题递归关系:例:M1,5=M1M2M3M4M5表示5个矩阵链乘。则第一个划分有4个位置可以选:(1)M1(M2M3M4M5)(2)(M1M2)(M3M4M5)(3)(M1M2M3)(M4M5)(4)(M1M2M3M4)M5设C[1,5]表示M1,5所对应的最少乘法数,则C[1,5]=min{C[2,5]+r1r2r6,C[1,2]+C[3,5]+r1r3r6,C[1,3]+C[4,5]+r1r4r6,C[1,4]+r1r5r6}动态规划三.动态规划算法设计示例2.矩阵链乘问题递归公式:设C[i,j],1=i=j=n,表示计算Mi,j的所需的最少数量乘法次数,则计算M1,n所需的最少数量乘法次数为C[1,n]。动态规划三.动态规划算法设计示例2.矩阵链乘问题求最优值:最少数量乘法次数。用自底向上的迭代算法。迭代顺序:行序?列序?例:C[1,5]=min{C[2,5]+r1r2r6,C[1,2]+C[3,5]+r1r3r6,C[1,3]+C[4,5]+r1r4r6,C[1,4]+r1r5r6}动态规划三.动态规划算法设计示例2.矩阵链乘问题C[1,2]C[1,3]C[1,4]C[1,5]C[2,5]C[3,5]C[4,5]行序可以么?列序可以么?动态规划三.动态规划算法设计示例2.矩阵链乘问题迭代顺序:对角线例:n=5d0d1d2d3d4C[1,1]C[1,2]C[1,3]C[1,4]C[1,5]C[2,2]C[2,3]C[2,4]C[2,5]C[3,3]C[3,4]C[3,5]C[4,4]C[4,5]图7.2(P134)C[5,