zoukankan      html  css  js  c++  java
  • 矩阵链的乘法问题

    P=<20,70,25,30,5,35,10> 它对应6个矩阵
    A1:20*70   A2:70*25   A3:25*30   A4:30*5   A5:5*35  A6:35*10

    先计算:
    m[1,1]=0   m[2,2]=0  m[3,3]=0  m[4,4]=0  m[5,5]=0  m[6,6]=0

    当r=2表示两个矩阵相乘的运算量
    m[1,2]=20*70*25=35,000‬
    m[2,3]=70*25*30=52500
    m[3,4]=25*30*5=3750
    m[4,5]=30*5*35=5250
    m[5,6]=5*35*10=1750

    当r=3表示3个矩阵相乘的运算量
    m[1,3]=min{m[1,2]+20*25*30,m[2,3]+20*70*30}=min{35000+15000,52500+42000}=min{50000,94500}=50000  (A1A2)A3  s[1,3]= 2
    m[2,4]=min{m[2,3]+70*30*5,m[3,4]+70*25*5}=min{52500+10500,3750+8750}=min{63000,12500}=12500  A2(A3A4)  s[2,4]=2
    m[3,5]=min{m[3,4]+25*5*35,m[4,5]+25*30*35}=min{3750+4375,5250+26250}=min{8125,31500}=8125  (A3A4)A5  s[3,5]=4
    m[4,6]=min{m[4,5]+30*35*10,m[5,6]+30*5*10}=min{5250+10500,1750+1500}=min{15750,3250}=3250  A4(A5A6)  s[4,6]=4

    当r=4表示4个矩阵相乘的运算量
    m[1,4]=min{m[1,3]+20*30*5,m[2,4]+20*70*5,m[1,2]+m[3,4]+20*25*5}
              =min{50000+3000,12500+7000,35000+3750+2500}
              =19500      A1(A2A3A4)---->A1(A2(A3A4))  s[1,4]=1
    m[2,5]=min{m[2,4]+70*5*35,m[3,5]+70*25*35,m[2,3]+m[4,5]+70*30*35}
              =min{12500+61250,8125+61250,52500+5250+73500}
              =69375       A2(A3A4A5)---->A2((A3A4)A5)  s[2,5]=2
    m[3,6]=min{m[3,5]+25*35*10,m[4,6]+25*30*10,m[3,4]+m[5,6]+25*5*10}
              =min{8125+8750,3250+7500,3750+1750+1250}
              =6750       (A3A4)(A5A6)  s[3,6]=4

    当r=5表示5个矩阵相乘的运算量
    m[1,5]=min{m[1,4]+20*5*35,m[2,5]+20*70*35,m[1,3]+m[4,5]+20*30*35,m[1,2]+m[3,5]+20*25*35}
              =min{19500+3500,69375+49000,50000+5250+21000,35000+8125+17500}
              =23000          (A1A2A3A4)A5 ---->(A1(A2(A3A4)))A5   s[1,5]=4

    m[2,6]=min{m[2,5]+70*35*10,m[3,6]+70*25*10,m[2,3]+m[4,6]+70*30*10,m[2,4]+m[5,6]+70*5*10}
              =min{69375+24500,10750+17500,52500+3250+21000,12500+1750+3500}
              =17750           (A2A3A4)(A5A6)    s[2,6]=4

    当r=6表示6个矩阵相乘的运算量
    m[1,6]=min{m[1,5]+20*35*10,m[2,6]+20*70*10,m[1,3]+m[4,6]+20*30*10,m[1,2]+m[3,6]+20*25*10,m[1,4]+m[5,6]+20*5*10}
              =min{23000+7000,17750+14000,50000+3250+6000,35000+6750+5000,19500+1750+1000}
              =22250             (A1A2A3A4)(A5A6)---->(A1(A2(A3A4)))(A5A6)   s[1,6]=4

    优化函数备忘录:
    r=1   m[1,1]=0   m[2,2]=0  m[3,3]=0  m[4,4]=0  m[5,5]=0  m[6,6]=0
    r=2   m[1,2]=35,000  m[2,3]=52500  m[3,4]=3750  m[4,5]=5250  m[5,6]=1750
    r=3   m[1,3]=50000   m[2,4]=12500  m[3,5]=8125  m[4,6]=3250
    r=4   m[1,4]=19500   m[2,5]=69375  m[3,6]=6750
    r=5   m[1,5]=23000   m[2,6]=17750  

    标记函数
    r=2   s[1,2]=1   s[2,3]=2   s[3,4]=3   s[4,5]=4   s[5,6]=5
    r=3   s[1,3]=2   s[2,4]=2   s[3,5]=4   s[4,6]=4
    r=4   s[1,4]=1   s[2,5]=2   s[3,6]=4
    r=5   s[1,5]=4   s[2,6]=4

    根据s[1,6]=4 推出最后一次划分的位置为4  (A1A2A3A4)(A5A6) 然后再由(A1A2A3A4)找s[1,4]=1 推出最后一次划分位置为1 A1(A2A3A4)---->A1(A2(A3A4))
    所以最终答案为:(A1(A2(A3A4)))(A5A6)  运算次数为:22250

    你數過天上的星星嗎
  • 相关阅读:
    SQL SERVER的检查点checkpoint
    MySQL备份说明
    声明对象和创建对象的区别
    getParameter的用法总结
    Jsp的九大对象,七大动作,三大指令
    为什么内部类访问的外部变量需要使用final修饰
    java synchronized详解
    网上选课系统需求说明书
    第三次作业
    第二次作业
  • 原文地址:https://www.cnblogs.com/Myrecord-7/p/12444829.html
Copyright © 2011-2022 走看看