矩阵加速

矩阵加速

矩阵快速幂优化dp

先介绍矩阵乘法
现有大小为 \(n * n\) 的矩阵A,B,C。

\[C=A \times B \]

\[C_{i,j}=\sum_{k=1}^{n} A_{i,k} \times B_{k,j} \]

可以简记为 : A横乘B竖

矩阵快速幂
$ A * A * A * A * B = A^k * B $
和普通快速幂求解方式一样
模板

矩阵快速幂优化dp
把dp方程看成向量(或是1 * n的矩阵),尝试把转移方程当成矩阵。
例如:匪不垃圾式:\(f_n = f_{n-1} + f_{n-2}\)

\[(^{1, 1}_{1,0}) (^{f_{n-1}}_{f_{n-2}}) = (^{f_{n}}_{f_{n-1}}) \]

数据结构矩阵加速dp
我们可以把一个dp的转移看成乘上一个矩阵。
用矩阵快速幂是建立在每一个转移矩阵是一样的,但dp方程的转移往往与输入有关。于是就有了这玩意。

dp的一般形式:
\(dp_{初值} * A * B * C …… * Z = dp_{答案}\)(大写字母表示矩阵)
于是我们可以用数据结构来优化。(具体来讲,在ds的每个节点下存一个矩阵,修改操作就是把原来的矩阵删了加上新的矩阵)

总结一下:该算法用于处理对转移方程有微小修改操作的dp
如果这些转移矩阵不会变,那这个做法就是脱裤子放屁。

posted @ 2024-11-25 18:18  花子の水晶植轮daisuki  阅读(1)  评论(0编辑  收藏  举报
https://blog-static.cnblogs.com/files/zouwangblog/mouse-click.js