矩阵快速幂中矩阵的构造技巧

对于出现线性递推的题目,当直接暴力计算的复杂度太高时,我们可以考虑用矩阵快速幂进行加速。

因为虽然矩阵乘法的复杂度为O(n^3),但是通过二进制分解,整体的复杂度变成了 log(n^3) = 3logn = O(logn),复杂度是对数级别的,非常小。

但是矩阵快速幂的难点就是在如何构造矩阵来完成计算。

因为矩阵快速幂是用来加速线性递推的,所以最核心的部分就是线性递推公式

最经典的就是斐波那契数列的递推: f(n) = f(n-1) + f(n-2);

其对应的矩阵就是       f(n+1)      1    1          f(n)

                                      f(n)  =    0    1     *   f(n-1)

可以发现,左面是个常数矩阵,而右面的列向量中每一项就是递推公式中的依赖项。

当递推公式中出现常数时,我们只需在右面的列向量中加入个常数1,即可。

剩下的就是我们如何去构造左面的常数矩阵。其实给出了右面的列向量,我们在根据题中的递推公式,在左面的常数矩阵中填入对应的常数即可。

这样,这个问题就圆满的解答了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值