文章目录
Part 1: 矩阵的运算
矩阵有许多种运算,这里列举出其中最常用的三个。为了方便书写,假设参与运算的两个矩阵是 A , B A, B A,B,表示运算结果的矩阵是 C C C。
①矩阵加法。对于两个大小相同的矩阵,我们可以相加。
其中 C i , j = A i , j + B i , j C_{i,j}=A_{i,j}+B_{i,j} Ci,j=Ai,j+Bi,j。
②矩阵减法。对于两个大小相同的矩阵,我们可以相减。
其中 C i , j = A i , j − B i , j C_{i,j}=A_{i,j}-B_{i,j} Ci,j=Ai,j−Bi,j。
③矩阵乘法。只要 A A A的列数等于 B B B的行数就可以相乘。
其中 C i , j = ∑ i = 1 m A i , k B k , j C_{i,j}=\sum_{i=1}^m A_{i,k}B_{k,j} Ci,j=∑i=1mAi,kBk,j
换句话说, C i , j C_{i,j} Ci,j表示对于 A A A的第 i i i行, B B B的第 j j j列组成的两个长度相等的序列,对应位置相乘的值之和。
可以发现,矩阵乘法是有结合律与分配率的,但绝对没有交换律。
现在,可以说我们学会了许多种矩阵运算。现在,我们通过 4 4 4道例题与许多练习题,对矩阵加深理解。
Part 2: 例题与讲解
例1. 斐波那契数列
Description
求斐波那契数列的第 n n n项的值。由于答案可能过大,请将其对 1 0 9 + 7 10^9+7 109+7取模。
n < 2 63 n<2^{63} n<263。
Solution
显然,我们不能采用 O ( n ) O(n) O(n)的线性递推解法。
那我们怎么办呢?先把递推的式子给写下来:
f i = f i − 1 + f i − 2 f_i=f_{i-1}+f_{i-2} fi=fi−1+fi−2
现在,我们开始考虑用矩阵乘法来优化。即,我们考虑,如何从 [ F k , F k − 1 ] [F_k, F_{k-1}] [Fk

本文详细介绍了矩阵运算的基本操作,如加法、减法和乘法,并通过斐波那契数列、图论问题等例题展示了如何利用矩阵快速幂优化算法。文章强调了矩阵运算在解决大规模数据问题时的效率提升,特别是对于递推关系的处理。通过一系列实例,阐述了如何构造矩阵、应用矩阵快速幂以及解决实际问题,如路径计数、路径长度计算和状态转移等。此外,还讨论了如何根据数据范围选择合适的矩阵优化技巧。
最低0.47元/天 解锁文章
2177





