2018年2月27日训练笔记

本文介绍了如何通过矩阵快速幂求解递推式的方法,并详细解释了如何构建转移矩阵。以递推式f(n)=f(n-1)+f(n-2)为例,展示了如何将递推过程转化为矩阵形式,进而通过快速幂高效计算出结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于矩阵快速幂找转移矩阵(参考:http://blog.youkuaiyun.com/wust_zzwh/article/details/52058209

比如对于递推式:f(n)=f(n-1)+f(n-2),要先建立矩阵递推式,然后找到转移矩阵,递推式如下:

,这里的递推式就是个矩阵乘法等式,左边:1*f(n-1)+1*f(n-2)=f(n);1*f(n-1)+0*f(n-2)=f(n-1);

简写成T* A(n-1)=A(n),T矩阵是一个2*2的常数矩阵即转移矩阵,而,An是一个列矩阵,它的第一行为F(n),比如对于公式:.f(n)=a*f(n-1)+b*f(n-2)+c,右边有3项,那么转移矩阵就是3行3列,An为3列的列矩阵。

这里还是说一下构建矩阵递推的大致套路,一般An与A(n-1)都是按照原始递推式来构建的,当然可以先猜一个An(第一行为F(n)),主要是利用矩阵乘法凑出矩阵T,T的第一行与An相乘一般就是递推式,T矩阵后面的行就是使得其与列矩阵A(n-1)的行元素相乘得到An中的行元素。矩阵T就叫做转移矩阵(一定要是常数矩阵),它能把A(n-1)转移到A(n);然后这就是个等比数列,直接写出通项:,此处A1叫初始矩阵(题干中获得)。所以用一下矩阵快速幂然后乘上初始矩阵就能得到An,上面An就两个元素(两个位置),根据自己设置的A(n)对应位置就是对应的值,按照上面矩阵快速幂写法,res[1][1]=f(n)就是我们要求的。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值