n阶常系数线性齐次递推关系的解法有很多,特征方程法、生成函数法,但是对于编程最实用的是矩阵解法。
我们定义所要求的f(n) = Ak-1 * f(n - 1) + Ak-2 * f(n - 2) + ... + A0 * f(n-k),其中f(0)...f(k-1)的初值已经给好。
构造k * k的矩阵M:
其中A =(Ak-1 Ak-2 ... A1),I是单位矩阵。
然后构造一个k * 1列向量b:
这样,M * b之后b0的值就是f(k),以此类推,M ^ n * b之后b0的值就是f(k-1+n),算法复杂度O(k ^ 3 * logn)。
posted on 2009-05-08 22:08
sdfond 阅读(466)
评论(0) 编辑 收藏 引用 所属分类:
Algorithm - Combinatorics