给定
1)一个1xn
向量a
,
2)一个nx1
向量b
,
3)一个nxn
矩阵X
,
问题是获得一种迭代方法,它可以尽可能快地计算出乘积
a*{X*{X*{X*X}*X}*X}*b
,其中括号{Y}
是一个用户定义的运算符,返回一个所有对角线元素都为零且其非对角线元素等于矩阵Y
的元素。
注意:
如果没有括号{}
运算符,如果想计算乘积a*X*X*X*X*X*X*b
,我认为我们可以自然地将矩阵乘法运算符*
与之关联,如下所示:
(((a*X)*X)*X)*(X*(X*(X*b)))
因此总时间复杂度为O(n^2)
。然而,当涉及到计算
a*{X*{X*{X*X}*X}*X}*b
我不知道如何改变*
的关联顺序。如果有人能给我一些提示,以显示迭代计算a*{X*{X*{X*X}*X}*X}*b
在与O(n^2)
相同的时间内完成,而不是O(n^3)
,我将不胜感激。
a*{X*{X*{X*X}*X}*X}*b = {{{{{{a*X}*X}*X}*X}*X}*X}*b
。 - amit{}
改变了涉及的矩阵。我认为它不再是可结合的了。 - Teepeemm{X*Y}*Z != X*{Y*Z}
,尽管传统的矩阵乘法是可结合的。 - John Smith