「常系数齐次线性递推」——矩阵快速幂的优化

  

引入:

  对于递推方程:

  $$F(x) = \sum_{i=1}^k a_iF(x-i)$$

  我们显然会得到一个关于$F$的多项式求逆或者矩阵递推式,大多数情况下我们都是用后者,但是当$k$很大的时候,$k^3log n$的时间复杂度我们是吃不消的,那么自然我们的前人就搞出了一些优化。

特征多项式及Cayley-Hamilton定理:

一、特征多项式的定义:

  设$A$是$n$阶矩阵,若数$\lambda$和非零列向量$x$使关系式$$Ax=\lambda x\;\;\;\;\;(1)$$

成立,那么,这样的数$\lambda$称为矩阵$A$的特征值,非零向量$x$称为$A$的对应于$\lambda$的特征向量。

  (1)式也可写成$$(A-\lambda E)x=0$$

此式有非零解(即存在$x$)的充分必要条件是其行列式$$|A-\lambda E|=0\;\;\;\;\;\;(2)$$

  (1)式可以看作以$\lambda$为未知数的一元$n$次方程,称为$A$的特征方程,(2)式是关于$\lambda$的$n$次多项式$\phi(\lambda)$,称为$A$的特征多项式。

二、矩阵的多项式:

  (矩阵的多项式不等于矩阵多项式,读者若想了解请自行百度)

  即对于$m$次多项式$f(x)$,将矩阵$A$看作未知数,此时$$f(A)=a_0E+a_1A+\dots +a_m)$$,记$f(A)$为$A$的$m$次多项式。其运算满足交换律,即$$f(A)g(A)=g(A)f(A)$$

三、Cayley-Hamilton定理:

  对于$A$的特征多项式$\phi(\lambda)$,有$$\phi(A)=0$$

由于笔者能力所限,其证明请读者自行百度。

$n$阶常系数齐次线性递推矩阵的特征多项式求法:

一、结论(懒人专用)

  $$\phi(\lambda)=(-1)^n(\lambda^n-\sum_{i=1}^n a_i\lambda^{n-i})$$

  其中$a$为递推方程中给出的递推系数。

二、证明

  

  那么我们考虑此时行列式如何去求($a_{i,j}$表示以上行列式的第$i$行第$j$列的元素):

  先考虑这样一件事实:

  若我们在前i列的选择元素的最大行数也为i,那么接下来的列只能选择对角线上元素,否则其最大行数一定为i+1,此时下一列即i+1列我们可以选择第一行或者第i+2行的元素

该事实读者可以自行证明。    

  假设我们选了$a_{1,1}$,由以上事实,我们只能选择对角线元素,那么此时结果为$$(-1)^n\lambda^n$$。

  否则选取$a_{2,1}$由以上事实,我们会得到一个$dfs$,直到在第$i$列时选取了$a_{1,i}$,此时得到结果为$$a_{1,i}*(-\lambda)^{n-i}*(-1)^{i-1}=a_{1,i}*(-1)^{n-1}\lambda^{n-i}$$

综上所述:

  $$\phi(\lambda)=(-1)^n(\lambda^n-\sum_{i=1}^{n}a_i\lambda^{n-i})$$

常系数齐次线性递推:

一、多项式引入:

  我们设$$x^{n}=f(x)g(x)+h(x)$$

其中$g(x)$为已知多项式,那么我们就可以通过多项式除法以及多项式取模来得到$f(x)$以及$h(x)$。

二、带入矩阵:

  我们将$k$阶$A$视为未知量,则有$$A^n=f(A)g(A)+h(A)$$

我们考虑若$g(A)=\phi(A)=0$那么,此时有$$A^n=h(A)=\sum_{i=0}^{k-1} h_i A^i\;\;\;\;\;\;(3)$$

三、如何计算:

  考虑$A^n$我们已经表示出来了,但是,我们发现此时算法复杂非但没有减少,反而增加为$k^4$。

  我们设$k*1$矩阵$$B_i^T={F(i+k-1),F(i+k-2),\dots ,F(i)}$$

  我们给式(3)等式两边同时乘上$B_1$,即$$A^nB_1=h(A)B_1$$

  化简得到$$B_{1+n}=\sum_{i=0}^{k-1}h_i B_{1+i}$$

  $$B_{1+n}^T={B_{n+k},\dots\,B_{n+1}}={\sum_{i=0}^{k-1}h_i,B_{1+i,i+k},\dots\,sum_{i=0}^{k-1}h_iB_{1+i,i+1}}$$

四、时间复杂度

  若只是计算$F$的某一项,那么时间复杂度上界在于如何去求$F$的前$2k$项和以及$h$。

  显然$h$由多项式取模方法时间复杂度为$k^2logn$或$klogklogn$。

  而$F$可以$klogk$或者$k^2$处理。  

原文地址:https://www.cnblogs.com/Troywar/p/9078013.html

时间: 2024-10-09 13:35:43

「常系数齐次线性递推」——矩阵快速幂的优化的相关文章

常系数齐次线性递推

常系数齐次线性递推 给定递推式\(f_n =a_1f_{n-1} + a_2 f_{n-2}...+a_k f_{n-k}\). 给定\(f_0,f_1...f_k\),求\(f_n\). 先定义\(f_n\)的特征方程:\(C(x) = x^{k-1} - a_1 x^{k-2} - a_2 x^{k-3}...-a_{k-1}x - a_k\). 求齐次线性递推通项式 由基本代数定理,\(C(x) = 0\) 的解(称为特征根)有\(K\)个,设为\(\alpha_1\).\(\alpha_

常系数齐次线性递推初探

常系数齐次线性递推式第n项的快速计算初探 XJB学后的XBJ胡扯 要做啥? 求\(f[n]=\sum_{i=1}^ka[i]f[n-i]\),\(a,f[1\to k]\)已经给出. 我会矩阵快速幂! 时间复杂度\(O(k^3\log n)\),其中\(n\le 10^9,k\le32000\),emmm. 我不会魔法! 设初始状态矩阵为\(S\),转移矩阵为\(A?\),不难发现一步转移长得像这个样子(四阶情形) \[ \begin{bmatrix} f[n]\f[n-1]\f[n-2]\f[

LG4723 【模板】常系数齐次线性递推

P4723 [模板]常系数齐次线性递推 题目描述 求一个满足$k$阶齐次线性递推数列${a_i}$的第$n$项. 即:$a_n=\sum\limits_{i=1}^{k}f_i \times a_{n-i}$ 输入输出格式 输入格式: 第一行两个数$n$,$k$,如题面所述. 第二行$k$个数,表示$f_1 \ f_2 \ \cdots \ f_k$ 第三行$k$个数,表示$a_0 \ a_1 \ \cdots \ a_{k-1}$ 输出格式: 一个数,表示 $a_n \% 998244353$

[HDOJ2604]Queuing(递推,矩阵快速幂)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2604 递推式是百度的,主要是练习一下如何使用矩阵快速幂优化. 递推式:f(n)=f(n-1)+f(n-3)+f(n-4),其中f(0)=2, f(1)=4, f(2)=6, f(3)=9. 当n>4时候,需要通过这个关系来递推. 构造矩阵这种东西我以前一直认为是很玄学的,但是如果深入研究的话不难发现其实也有规律可循.这是一个齐次递推式,很好构造. 我们希望通过如下矩阵(1)得到矩阵(2) | f(n

hihoCoder 1143 : 骨牌覆盖问题·一(递推,矩阵快速幂)

[题目链接]:click here~~ 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 骨牌,一种古老的玩具.今天我们要研究的是骨牌的覆盖问题: 我们有一个2xN的长条形棋盘,然后用1x2的骨牌去覆盖整个棋盘.对于这个棋盘,一共有多少种不同的覆盖方法呢? 举个例子,对于长度为1到3的棋盘,我们有下面几种覆盖方式: 提示:骨牌覆盖 提示:如何快速计算结果 输入 第1行:1个整数N.表示棋盘长度.1≤N≤100,000,000 输出 第1行:1个整数,表示覆盖方案数 M

[题解][SHOI2013]超级跳马 动态规划/递推式/矩阵快速幂优化

这道题... 让我见识了纪中的强大 这道题是来纪中第二天(7.2)做的,这么晚写题解是因为 我去学矩阵乘法啦啦啦啦啦对矩阵乘法一窍不通的童鞋戳链接啦 层层递推会TLE,正解矩阵快速幂 首先题意就是给你一个 n 行m 列 的格子图 一只马从棋盘的左上角跳到右下角.每一步它向右跳奇数列,且跳到本行或相邻行. 题意很简单暴力dp的思路也很简单但是数据很恶心虽然远古一点,但毕竟是省选题 1 ≤ n ≤ 50,2 ≤ m ≤ 10^9 不过还是给了我们一点提示:n这么小? 总之我们先找出转移式对于每一个点

hdu2604 递推转换矩阵快速幂

刚开始还以为用位运算与或几下几个循环就搞定了,算着算着发现不行........ 还是一种固定的切题角度,我假设有长度为n,总的排列数位f(n),怎么算他呢?从后往前考虑,因为大多数情况,都是用前面的结果推后面的结果, 那么当第n位是m的时候,如果我知道f(n-1)等于多少,那么f(n-1)的排列+加一个m是不是就是f(n)的一部分解了?  对吧,以此类推,   当第n位为f的时候,可是fff,fmf不能连着 那是不是就剩下ffm,fmm的情况了,对于前者ffm,由于不能凑成ffmf的情况,所以只

多校第九场:贪心+矩阵快速幂中间优化+线性递推&线段树递推

HDU 4968 Improving the GPA 思路:贪心的搞吧!比赛的时候想了好久,然后才发现了点规律,然后乱搞1A. 因为贪心嘛!大的情况就是刚开始每个人的分数都是最大的最小值,即绩点4.0的最低分数85,然后最后一个数设为剩余的分数,然后如果小于60就从第一个分数补到这个分数来,然后最后一个分数还小于60,那就用第二个补--依次往下搞,那时我也不知道这样就搞出答案了,我还没证明这个对不对呢,哈哈. 小的情况:小的情况就是先假设每个人都是绩点最小的最大分数,即绩点2.0的最大分数69,

2016 pku campusH/OpenJ_POJ - C16H(推公式+矩阵快速幂)

传送门:http://poj.openjudge.cn/practice/C16H?lang=en_US 题面:描述 Wenwen has a magical ball. When put on an infinite plane, it will keep duplicating itself forever. Initially, Wenwen puts the ball on the location (x0, y0) of the plane. Then the ball starts