zoukankan      html  css  js  c++  java
  • 动态规划法解矩阵链乘问题

         [问题]给定一个包含n个矩阵的链乘式,通过对矩阵加括号来变换矩阵相乘的次序。问应当怎样加括号才能使求解过程中乘法运算的总次数最少?最少的总次数是多少?

         [解析]假设矩阵链乘式A1A2A3A4A5的最优解为((A1)(A2A3))(A4A5) ,则(A1)(A2A3)必为链乘式A1A2A3的最优解(由反证法易得)。由此可知,该问题具有最优子结构性质。递推式如下;

         设链乘式AiAi+1Ai+2……Aj中矩阵An的列数为Columns[n],其划分的形式为 

    (Ai……Ak)(Ak+1……Aj),则相应的乘法运算的总次数为,对左括号进行计算求得矩阵ALeft的过程中的最少总次数f(i)(k),加上对右括号进行计算求得矩阵ARight的过程中的最少总次数f(k+1)(j),再加上Columns[i-1] × Columns[k]的矩阵ALeft与Columns[k] × Columns[j]的矩阵ARight 相乘时乘法运算的总次数Columns[i-1] * Columns[k] * Columns[j]。所以链乘式AiAi+1Ai+2……Aj的最优解的值f(i)(j)就是k的取值从i一直取到j的过程中所得的最小的总次数,即

         f(i)(j) = Min{f(i)(k) + f(k+1)(j) + Columns[i-1] * Columns[k] * Columns[j]},i≤k<j

          

     

  • 相关阅读:
    BZOJ BLO 1123 (割点)【双连通】
    P4291 [HAOI2008]排名系统
    P3165 [CQOI2014]排序机械臂
    P3224 [HNOI2012]永无乡
    P1169 [ZJOI2007]棋盘制作
    P2303 [SDOi2012]Longge的问题
    P2216 [HAOI2007]理想的正方形
    P2473 [SCOI2008]奖励关
    P2617 Dynamic Rankings
    P2518 [HAOI2010]计数
  • 原文地址:https://www.cnblogs.com/laifeiyao/p/3477938.html
Copyright © 2011-2022 走看看