日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

矩阵快速幂(教主传授)

發布時間:2024/2/28 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 矩阵快速幂(教主传授) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

教主傳授

快速冪的思想:

假設我們要求a^b,最樸素的方法就是不斷地乘a,乘b次,復雜度O(b)。
如果b很大,10^9,就需要用快速冪的思想。
例:a=3,b=100;
100的二進制為:1100100
也就是100可以化成64+32+4。
所以原數可以化成a^64*a^32*a^4

算法流程:
判斷1100100的每一位是否為1,如果是1,就乘對應的二進制次冪。以此類推,直到乘完全部的位數。
時間復雜度O(log n)

代碼:

int quickpow(int a,int b){ans=1; while(b){if(b&1) ans*=a;a*=a;b>>=1;}return ans; }

矩陣與DP
a[i]=a[i-1]+b[i-1]+1,b[i]=2*a[i-1]-5 ;a[1]=1,b[1]=1,問a[x]=?,b[x]=?
很簡單的遞推,一步步推即可,但是,如果x是10^9,如何推?
思維:遞推式可以化為矩陣乘積

那么,矩陣A[i]=A[i-1]*B;
A[i+1]=A[i]*B=A[i-1]*B*B
A[x]=A[1]*B*B*B.......=A[1]*( B^(x-1) );
因為矩陣乘積可以換乘積順序,所以可以先算出B^(x-1),如何計算呢?
快速冪!

問題迎刃而解~

1.構造出遞推矩陣
2.對構造出的矩陣B,進行B^x的快速冪,乘積換成矩陣乘法。
3.最后矩陣的第一行第一列和第二列就是a[x]和a[y]。

其實快速冪和矩陣快速冪是異曲同工,但是往往構造矩陣是難點,轉載一個別人博客寫的矩陣構造方法:

Fibonacci數列:F(0)=1 , F(1)=1 , F(n)=F(n-1)+F(n-2)

我們以前快速求Fibonacci數列第n項的方法是 構造常系數矩陣

(一) Fibonacci數列f[n]=f[n-1]+f[n-2],f[1]=f[2]=1的第n項快速求法(不考慮高精度)

解法:

考慮1×2的矩陣【f[n-2],f[n-1]】。根據Fibonacci數列的遞推關系,我們可以通過乘以一個2×2的矩陣A,得到矩陣:【f[n-1],f[n]】。

即:【f[n-2],f[n-1]】*A = 【f[n-1],f[n]】=【f[n-1],f[n-1]+f[n-2]】

很容易構造出這個2×2矩陣A,即:
0 1
1 1

所以,有【f[1],f[2]】×A=【f[2],f[3]】
又因為矩陣乘法滿足結合律,故有:
【f[1],f[2]】×A ^(n-1) =【f[n],f[n+1]】
這個矩陣的第一個元素f[n]即為所求。



(二) 數列f[n]=f[n-1]+f[n-2]+1,f[1]=f[2]=1的第n項的快速求法(不考慮高精度)

解法:
仿照前例,考慮1×3的矩陣【f[n-2],f[n-1],1】,希望求得某3×3的矩陣A,使得此1×3的矩陣乘以A得到矩陣:【f[n-1],f[n],1】

即:【f[n-2],f[n-1],1】* A =【f[n-1],f[n],1】=【f[n-1],f[n-1]+f[n-2]+1,1】

容易構造出這個3×3的矩陣A,即:
0 1 0
1 1 0
0 1 1

故:【f[1],f[2],1】* A^(n-1) = 【f[n],f[n+1],1】



(三)數列f[n]=f[n-1]+f[n-2]+n+1,f[1]=f[2]=1的第n項的快速求法(不考慮高精度).
解法:

仿照前例,考慮1×4的矩陣【f[n-2],f[n-1],n,1】,希望求得某4×4的矩陣A,使得此1×4的矩陣乘以A得到矩陣:【f[n-1],f[n],n+1,1】
即:【f[n-2],f[n-1],n,1】* A = 【f[n-1],f[n],n+1,1】=【f[n-1],f[n-1]+f[n-2]+n+1,n+1,1】
容易構造出這個4×4的矩陣A,即:

0 1 0 0
1 1 0 0
0 1 1 0
0 1 1 1

故:【f[1],f[2],3,1】* A^(n-1) = 【f[n],f[n+1],n+2,1】



(四) 數列f[n]=f[n-1]+f[n-2],f[1]=f[2]=1的前n項和s[n]=f[1]+f[2]+……+f[n]的快速求法(不考慮高精度).
解法:

仿照之前的思路,考慮1×3的矩陣【f[n-2],f[n-1],s[n-2]】,我們希望通過乘以一個3×3的矩陣A,得到1×3的矩陣:【f[n-1],f[n],s[n-1]】
即:【f[n-2],f[n-1],s[n-2]】 * A = 【f[n-1],f[n],s[n-1]】=【f[n-1],f[n-1]+f[n-2],s[n-2]+f[n-1]】
容易得到這個3×3的矩陣A是:

0 1 0
1 1 1
0 0 1

這種方法的矩陣規模是(r+1)*(r+1)

f(1)=f(2)=s(1)=1 ,所以,有

【f(1),f(2),s(1)】* A = 【f(2),f(3),s(2)】

故:【f(1),f(2),s(1)】* A^(n-1) = 【f(n),f(n+1),s(n)】



(五) 數列f[n]=f[n-1]+f[n-2]+n+1,f[1]=f[2]=1的前n項和s[n]=f[1]+f[2]+……+f[n]的快速求法(不考慮高精度).
解法:

考慮1×5的矩陣【f[n-2],f[n-1],s[n-2],n,1】,
我們需要找到一個5×5的矩陣A,使得它乘以A得到如下1×5的矩陣【f[n-1],f[n],s[n-1],n+1,1】
即:【f[n-2],f[n-1],s[n-2],n,1】* A =【f[n-1],f[n],s[n-1],n+1,1】
=【f[n-1], f[n-1]+f[n-2]+n+1,s[n-2]+f[n-1],n+1,1】

容易構造出A為:
0 1 0 0 0
1 1 1 0 0
0 0 1 0 0
0 1 0 1 0
0 1 0 1 1

故:【f(1),f(2),s(1),3,1】* A^(n-1) = 【f(n),f(n+1),s(n),n+2,1】



一般地,如果有f[n]=p*f[n-1]+q*f[n-2]+r*n+s
可以構造矩陣A為:
0 q 0 0 0
1 p 1 0 0
0 0 1 0 0
0 r 0 1 0
0 s 0 1 1


傳送門——>快速冪基本思想



如果這篇文章對你產生了幫助,就請給博主一個小小的贊吧!大家的點贊是我創作的最大動力!

總結

以上是生活随笔為你收集整理的矩阵快速幂(教主传授)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 极品美女被c | 国产又粗又猛又爽又黄av | 久久久久久久久久一区二区三区 | www.四虎com| 免费看国产黄色片 | www.午夜av | 少妇一级淫片免费放播放 | 亚洲日b视频 | 国产福利小视频在线观看 | 成年网站在线 | 亚洲国产97在线精品一区 | 精品一区二区在线播放 | 在线综合色 | 日韩av一 | 青草国产视频 | 热久久中文 | 高清视频免费在线观看 | 91久久精品日日躁夜夜躁欧美 | 熊出没之冬日乐翻天免费高清观看 | 欧美精品在线观看 | 亚洲精品社区 | 成人免费淫片aa视频免费 | 德国老妇性猛交 | 成人影片网址 | 干干天天 | 精品国产一区二区三区久久久久久 | 成人午夜视频精品一区 | 2019天天干 | 中文字幕第一页在线视频 | 亚洲精品人人 | 亚洲色图 一区二区 | 91视频污在线观看 | 亚洲一区二区精品在线观看 | 男女啪啪在线观看 | 大尺度电影在线 | 丁香六月激情 | 99精品免费在线观看 | 超碰在线观看91 | 国产精品老女人 | 国产欧美一区二区三区视频在线观看 | 亚洲午夜精品 | 国产裸体无遮挡 | 亚洲一区二区三区中文字幕 | 激情视频一区二区 | 日韩性高潮 | 久久老司机 | 欧美一区二区免费视频 | av日韩一区二区三区 | 欧美黄色高清视频 | 男人的天堂免费 | 自拍偷拍亚洲欧美 | 色爱视频 | 国产精品揄拍一区二区 | 天天澡天天狠天天天做 | 天天干天天狠 | 一区二区免费 | 亚洲综合少妇 | 一级片在线观看免费 | 国产高清在线精品 | 牛牛影视免费观看 | 秋霞一级视频 | 久久久精品免费视频 | 99一级片 | 成人h动漫精品一区二区下载 | 中文字幕少妇 | 精品国产一区二区三区性色 | 久久大伊人 | 久久精品欧美视频 | xxxxwwww国产 | 婷婷综合色 | 蜜桃成人免费视频 | 婷婷射图 | 国产专区视频 | 精品国产鲁一鲁一区二区张丽 | 欧美做爰全过程免费观看 | 国产一级片免费视频 | 在线中文字日产幕 | 成年人网站免费看 | 91视频插插插 | 中文字幕三级电影 | 天堂成人在线 | 日本一二三区不卡 | 午夜一二区 | 久久麻豆视频 | 国产区一区二区 | 日本午夜大片 | 久久av一区二区三区 | 揉我啊嗯~喷水了h视频 | 国产一区二区三区在线视频 | eeuss国产一区二区三区黑人 | xxx性视频| 精品久久香蕉国产线看观看亚洲 | 中文字幕第35页 | 蜜桃成人无码区免费视频网站 | 日本欧美激情 | 青青视频免费看 | 欧美粗暴jizz性欧美20 | 青青青在线观看视频 | 日韩 国产 欧美 |