矩阵链的乘法问题

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

posted @ 2020-04-27 00:20  Arielsixsixsix  阅读(302)  评论(0编辑  收藏  举报