矩陣(神奇算法)


  昨晚學長教了我們這樣一個神奇的算法---矩陣快速冪,矩陣快速冪在遞推優化上相當神奇,並且效率很高。

 一、 先舉這樣一個例子。斐波那契數列大家都知道的吧。f[n]=f[n-1]+f[n+2](n=108),求f[n];

  這種題目,要是用遞歸做下去肯定超時。但是用矩陣就很容易解決。

   f[n]           *        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值特別大,或者類似的組合問題。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM