矩阵快速幂—— 构造矩阵

Posted asdfknjhu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了矩阵快速幂—— 构造矩阵相关的知识,希望对你有一定的参考价值。

借鉴视频:https://www.bilibili.com/video/BV1gx41127d7?p=2

借鉴博客:https://blog.csdn.net/wangjian8006/article/details/7868864

 

 

一,汇总

矩阵乘法可以用来求递推式

基本形式:由一个 基础矩阵(用  A 表示) 和 递推矩阵(用 B 表示)  组成 (名字自己取的 ,也不知道有没有专业名称)

基础矩阵:由条件充分的已知元素组成,如 f(n-1) , f(n-2) 等等

递推矩阵:一个固定矩阵,元素不包含变量,基础矩阵 乘以 递推矩阵 可以得到 下一个基础矩阵

下一个基础矩阵:与基础矩阵大小相同,包含 f(n) 和 基础矩阵的一部分元素,下一个矩阵 乘以 递推矩阵可以得到 下下一个基础矩阵

下一个基础矩阵:与基础矩阵大小相同,包含 f(n) 和 上一个矩阵的一部分元素

注意:通常,如果 基础矩阵 只有一行,递推矩阵 是为方阵,其行数 为 基础矩阵的列数

 

二,Fibonacci 

斐波那契数列递推关系为:F0 = 0, F1 = 1, and Fn = Fn − 1 + Fn − 2 for n ≥2

这里有两种矩阵递推式,一个是题目给出的,一个可以自己推导出来。

1,这个是题目给出的这个推导式,我不会推导

 技术图片.

 

2,这个自己推导的递推式和第一个很像,不过还是有着本质区别,估计可以由这个推导出题目的递推式

推导过程:
由:Fn = Fn − 1 + Fn − 2 for n ≥2 可知,我们只需要两个元素,就有足够条件求下一个元素

所以:

基础矩阵由两个元素组成,f(1),f(0)

下一个矩阵也由两个元素组成:f(2),f(1)

由此,便可以求 递推矩阵:

技术图片

 

If x < 10 f(x) = x.
If x >= 10 f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + …… + a9 * f(x-10);
And ai(0<=i<=9) can only be 0 or 1 .
Give you a0 ~a9,two integer k,m,outf(k)%m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

以上是关于矩阵快速幂—— 构造矩阵的主要内容,如果未能解决你的问题,请参考以下文章

算法笔记--矩阵快速幂

矩阵快速幂

poj3070 单位矩阵(转移矩阵构造)+矩阵快速幂

一些特殊的矩阵快速幂 hdu5950 hdu3369 hdu 3483

矩阵快速幂

POJ3233 构造子矩阵+矩阵快速幂