常系数齐次线性递推

问题:求长度为k的常系数齐次线性递推式Σai*hj->hi+j的第n项hn,可以写成\(HA^n\),A是k阶矩阵

核心:对\(A^n\)取模变成\(\sum_{i=0}^{k-1} c_iA^i\),加上H变为\(\sum_{i=0}^{k-1} c_ih_i\)

问题是找一个模之后不变的式子,即某个多项式f(A)=0

凯莱-哈密顿定理:A的特征多项式f(λ)满足f(A)=0

特征矩阵:λI-A

特征多项式:|λI-A|,把λ看作未知数,化简得到\(f(\lambda)=\lambda^k-\sum_i a_i\lambda^{k-i}\)

之后把A看作未知数,用A^n模特征多项式即可化简

优化:若只有h0=1则可以求A^(n+k-1),这样每项取的就是当前H的最后一位,而模特征多项式之后的HA^i就只有HA^(k-1)是1其他都是0

(其实就是把h0放到h[k-1]的位置上,最后求h[n+k-1],一样还是取A最左边,所以转移n+k-1次,最后只有h[k-1]要算

直接暴力倍增取模是\(O(k^2\log n)\),用多项式优化取模做到\(O(k\log k\log n)\)

posted @ 2021-03-20 16:43  gmh77  阅读(50)  评论(0编辑  收藏  举报