您的位置:首页 > 其它

矩阵(神奇算法)

2015-10-12 14:22 113 查看
  昨晚学长教了我们这样一个神奇的算法---矩阵快速幂,矩阵快速幂在递推优化上相当神奇,并且效率很高。
 一、 先举这样一个例子。斐波那契数列大家都知道的吧。f
=f[n-1]+f[n+2](n=108),求f
;

  这种题目,要是用递归做下去肯定超时。但是用矩阵就很容易解决。

   f
          *        0 1       =   f[n+1]

   f[n+1] ...A          1 1 ...C        f[n+2] ...B   A矩阵*C矩阵得到B矩阵。C矩阵是推出来的;主要的核心就是推出一个矩阵与A得到B矩阵。(即我知道当前状态和下一状态,我就要求出中间的媒介,这样的话就是可以无限知道下下状态,下下下状态....的值~~)我们知道f[1]=1,f[2]=1;  A*Cn=B,接着对Cn快速幂取模就OK了!

  略懂一点之后,转变一下。

  二、有a,b,c,d四个城市,如同所示。

求从a->d在正好n步的条件下走到。n很大很大。求有多少种方法。 

  这个的初始的是走0步到达下一个位置的矩阵A=E(单位矩阵),然后很明显的中介矩阵就是  a b c d

                                           a 0 1 1 0  

                                            b 0 0 1 1

                                            c 1 1 0 1

                                            d 0 1 1 0....C 然后A*C就可以得到走两步到一个地方的种数。其中"1"表示a->b有一种方法。

  三、依旧是有a,b,c,d四个城市,如图所示。

我现在要从a到d在正好n步的条件下走到,加一个要求就是路程最短。求最短的路程。和上一个类似,这里就不进行详解了0.0

 

学长还讲了区域赛里的几个题目,一时半会说不清楚,从早上总结到现在,该去吃饭了==总结一下吧

矩阵快速幂主要的就是要写出那三个矩阵来解决问题,虽然现在讲的只是一种思想,里面掺杂一些动态规划的问题,不过是很实用的,可以很快速的来解决n值特别大,或者类似的组合问题。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: