Matrix 伴随矩阵复杂性
我知道这更像是一个复杂性理论问题,而不是一个编程问题,希望我没有在这里写错字,如果写错了地方,请向我道歉,但我希望你们中的某个人能找到答案。它甚至与程序有关,因为它是一个复杂性理论的研究课题 我在研究线性循环序列,我读到为了得到序列的第n个值,你需要得到一个伴随矩阵的幂,我想知道是否有一个已知的算法可以快速得到这种矩阵的幂 我无法给出编码示例,但我将尝试为您提供更多解释: k阶齐次线性循环序列:Matrix 伴随矩阵复杂性,matrix,complexity-theory,Matrix,Complexity Theory,我知道这更像是一个复杂性理论问题,而不是一个编程问题,希望我没有在这里写错字,如果写错了地方,请向我道歉,但我希望你们中的某个人能找到答案。它甚至与程序有关,因为它是一个复杂性理论的研究课题 我在研究线性循环序列,我读到为了得到序列的第n个值,你需要得到一个伴随矩阵的幂,我想知道是否有一个已知的算法可以快速得到这种矩阵的幂 我无法给出编码示例,但我将尝试为您提供更多解释: k阶齐次线性循环序列: s(n+k)=a(k-1)s(n+k-1)+a(k-2)s(n+k-2)+…+a(0) 对于n=0,
s(n+k)=a(k-1)s(n+k-1)+a(k-2)s(n+k-2)+…+a(0)
对于n=0,1,。。其中s(i)是序列的第i个值,a(i)是代数域中的系数 A是上述序列的伴随矩阵,如果它是:
(0…0 a(0))
(1000…0A(1))
(0 1 0 0…0 a(2))
(……)
(0…1A(k-1))
此外,理论表明,对于序列的状态向量,我们有:
s(n)=s(0)A^n表示n=0,1
就这样,谢谢你的帮助 快速求矩阵幂的常用策略是对其进行对角化(执行特征向量分解): A=p-1 D p 其中D是对角矩阵。然后可以通过计算将A提高到n的幂 An=p-1 Dn p 其中Dn的计算速度很快,因为它是一个对角矩阵,所以只需分别计算每个元素的幂
然而,并不是所有的矩阵都是可对角化的——我不知道你们的伴随矩阵是否是可对角化的。您可能会发现在任何情况下都有帮助。您可以使用
O(logn)
矩阵乘积计算矩阵的n
th次方M
:
- 如果
,则返回n=0
I
- 如果
为偶数,则计算n
n=M
并返回n/2
n*n
- 如果
为奇数,则计算n
n=M
并返回n-1
M*n