首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

求矩阵连乘的数趁次数~

2014-04-19 
求矩阵连乘的数乘次数~~~~~~~~~~~~~~~~~~~~~~~~~~~4个矩阵的维数分别是A50*10B10*40C40*30D30*5求:(A(

求矩阵连乘的数乘次数~~~~~~~~~~~~~~~~~~~~~~~~~~~
4个矩阵的维数分别是
A=50*10 B=10*40 C=40*30 D=30*5
求:(A((BC)D))的数乘次数是多少?

[解决办法]
方阵相乘的复杂度是O(n^3),BC需要10*40*30次乘法得到一个10*30的矩阵B',A*B'需要50*10*30次乘法得到一个50*30的矩阵B'',B''*D需要50*30*5次乘法得到一个50*5的矩阵,共需要10*40*30*50*10*30*50*30*5次乘法。
[解决办法]
利用公式
m[i,j] = 0, i=j
= m[i,k] + m[k+1,j] + p[i-1]p[k]p[j], i<j, i<=k<j

int[] p = {50, 10, 40, 30, 5);
m[1,4]
= m[1,1] + m[2,4] + p[0]*p[1]*p[4] k=1
= 0 + (m[2,3] + m[4,4] + p[1]*p[3]*p[4]) + p[0]*p[1]*p[4] k=3
= m[2,2]+m[3,3] + p[1]*p[2]*[3] + p[1]*p[3]*p[4] + p[0]*p[1]*p[4]
= 10*40*30 + 10*30*5 + 50*10*5
= 16000
[解决办法]
应该就是这个问题吧?

http://www.51nod.com/question/index.html#!questionId=110
[解决办法]
这种矩阵相乘应该有专门的研究,毕竟最后结果是个50*5矩阵,每个都能用4个矩阵元素的加减乘法表达出来,而这些公式中又有许多重合的计算,这些计算能用动态规划法预先算出来,也许游戏引擎的算法书会有,或者专有的数学库,c++ template 表达式模板也能有所启发。

热点排行