伴随矩阵复杂性

时间:2009-04-07 14:42:09

标签: 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,1,..其中s(i)是序列的第i个值,而a(i)是代数域中的系数。

A是以上序列的伴随矩阵,如果是:
(0 0 0 0 ... 0 a(0))
(1 0 0 0 ... 0 a(1))
(0 1 0 0 ... 0 a(2))
(.. .. .. .. .. .. .. .. ..)
(0 0 0 0 ... 1 a(k-1))
此外,理论指出,对于序列的状态向量,我们有:
s(n)= s(0)A ^ n,n = 0,1,...
就是这样,谢谢你的帮助。

2 个答案:

答案 0 :(得分:2)

快速查找矩阵幂的常用策略是对角化(执行特征向量分解):

A = P -1 D P

其中D是对角矩阵。然后,您可以通过计算

将A提升到幂n

n = P -1 D n P

其中D n 计算速度快,因为它是一个对角矩阵,所以你只需要分别考虑每个元素的幂。

然而,并非所有矩阵都是对角线的 - 我不知道你的伴星矩阵是否存在。您可能会发现this Wikipedia article在任何情况下都很有帮助。

答案 1 :(得分:1)

您可以使用n矩阵产品计算矩阵M的{​​{1}}幂:

  • 如果O(log n),请返回n=0
  • 如果I为偶数,请计算n N=M 并返回n/2
  • 如果N*N为奇数,请计算n N=M 并返回n-1