zoukankan      html  css  js  c++  java
  • 矩阵快速幂总结

    update觉得自己之前写的跟..一样,重写了

    依然主要还是自用

    首先矩阵一条性质的概述和证明

    概述:对于一个临接矩阵$G$来说,它自乘$G^k$次方中$G[i][j]$含义为从i走到j走k步方案数.

    证明:比较麻烦,我们设f[i]表示从1走到其他点方案数,那么根据矩阵递推优化,k次就是转移了k次,那么每次走一步,k次就是走了k步

    最好手模一下,然后自己随便写一个数据验证一下.

    然后矩阵可以优化递推,比如优化菲波纳契数列的递推,暴力递推时间复杂度是$O(n)$的用矩阵快速幂能优化成$8*log(n)$的

    具体优化步骤,

    首先把之前各项写出来,

    先写出这一项可以由什么转移过来,

    通过添加系数的方法把各项算出来

    就拿菲波纳契数列为例

    首先假设f矩阵为

    $(f[n], f[n-1])$

    根据横乘竖的原则

    得出$(f[n],f[n-1])$=$(f[n-1],f[n-2]) imes$$left(egin{array}{cc}1&1\1&0end{array} ight)$

    那么关于矩阵快速幂优化一些套路

    1.ans矩阵对角线初始化为1

    这是相当于快速幂中ans初始化为1的操作(对角线为1是单位矩阵,乘一个矩阵后变为乘的那个矩阵 1*5=5)

    2.处理出第一次方案,然后递推m--次

    这样我们算出第一次方案,然后递推m-1次可得到最终系数矩阵

    3.最后还要算一次,从第一次转移到最后一次出答案

    我们算出往往是系数矩阵,系数矩阵递推了m-1次我们让第一次*当前转移m-1次系数矩阵就是最终结果

    我们这里考虑的都是系数矩阵

    还是觉得自己写的很...

    我已没有下降的余地
  • 相关阅读:
    react-router刷新页面Cannot GET 问题
    react学习之弹出层
    react学习之js-xlsx导入和导出excel表格
    c#串口通信并处理接收的多个参数
    react与微信小程序
    promise知识点小结
    汇编命令小记
    Firebase-config 在android中的使用
    python:html元素解析
    Toast实现源码解析
  • 原文地址:https://www.cnblogs.com/znsbc-13/p/11233836.html
Copyright © 2011-2022 走看看