Matrix 伴随矩阵复杂性

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,

我知道这更像是一个复杂性理论问题,而不是一个编程问题,希望我没有在这里写错字,如果写错了地方,请向我道歉,但我希望你们中的某个人能找到答案。它甚至与程序有关,因为它是一个复杂性理论的研究课题

我在研究线性循环序列,我读到为了得到序列的第n个值,你需要得到一个伴随矩阵的幂,我想知道是否有一个已知的算法可以快速得到这种矩阵的幂

我无法给出编码示例,但我将尝试为您提供更多解释:

k阶齐次线性循环序列:
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

它并不总是可对角化的,除非特征多项式的根是不同的,总之,好吧,这很好,但我想知道是否有某种方法可以利用矩阵的结构,很抱歉,我不知道如何在O(logn)中实现,我想每个矩阵乘法都是O(n^2)其中n是行数(假设是一个平方矩阵),不是吗?哦,好的,读得好吗:D是O(logn)*矩阵乘积的成本,所以它将是O(n^2 logn),对吗?谢谢,但我想这不是我需要的,我想知道一种特殊类型矩阵的开发…不完全是。矩阵积(被认为)比这更难,但是矩阵的大小,比如说m×m,与指数n完全无关,所以对于Strassen算法是O(m^2.807 logn),对于naive算法是O(m^3 logn)。