计算矩阵幂的复杂性


14

我对计算n × n矩阵A的次幂感兴趣。假设我们有一个在O(M (n ))时间内运行的矩阵乘法算法。然后,可以轻松地以O(M (n )log (n ))时间计算A n。是否可以用更少的时间来解决这个问题?nn×nAO(M(n))AnO(M(n)log⁡(n))

通常,矩阵条目可以来自半环,但如果有帮助,则可以采用其他结构。

注意:我了解在一般情况下,以o (M (n )log (m ))时间计算会得到o (log m )求幂的算法。但是,许多有趣的问题都归结为矩阵求幂的特殊情况,其中m = O(n ),而我无法证明这个简单问题也是如此。Amo(M(n)log⁡(m))o(log⁡m)O(n)


矩阵的条目是什么?整数?
— 卡夫

1
条目通常可以来自半环,但如果有帮助,则可以采用其他结构。
— Shitikanth'4

从上述提议的方法(即使用),我无法得到从乘法到平方的简化。但是,使用(0 A B 0) 2可以。但是,这在计算A n时仅给出Ω (M (n ))。(A±B)2(0AB0)2Ω(M(n))An
— Shitikanth '04年

Answers:


11

如果矩阵是可对角的,则可以在时间O (D (n )+ n log n )中获得第次幂 n

O(D(n)+nlog⁡n)
中,其中是对角化A的时间。D(n)A

只是为了完成细节,如果且对角线为D,则 A n = (P − 1 D P )n = P − 1 D n PA=P−1DPD

An=(P−1DP)n=P−1DnP

通过仅将对角线的每个元素(A的每个特征值)取第n次幂即可计算出和D n。DnAn


6
O(n3)O(n2.3727log⁡(m))Am

1
(1)您引用的时间并非由Coppersmith-Winograd(您可能知道)。(2)所有该形式的算法仅适用于环;它们不适用于一般的半环(在您的问题中允许)。
— 瑞安·威廉姆斯

5

n×nAA=UΣUTΣO(n3)Am=UΣmUTO(nlog⁡m)U×Σm×UTO(n2.3727)O(n3+nlog⁡m)

O(n2.3727+nlog⁡m)o(M(n)log⁡(m))o(log⁡n)


O(n2.3727)O(n2.3727log⁡(m))Amm=O(n)。
— Shitikanth'4

1
SVD不给 一种=üΣü⊤ 通常-右侧矩阵为 V≠ü⊤
— Suresh'4

1
有一个有点误导 ñ 功率也一样,所以我将使用 米。如果ñ=1个 它应该 Ø(中号(1个)日志⁡米 找时间 一种米,等于将整数相乘
— PKG 2012年

2
@Shitikanth参见ccrwest.org/gordon/jalg.pdf,以了解快速求幂算法。通常,使用的数量不能少于日志⁡米乘法。
— 2012年

1
如上所述,您的问题尚不清楚。
— PKG 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.