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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

矩阵快速幂(Matrix_Fast_Power)

發(fā)布時間:2024/10/5 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 矩阵快速幂(Matrix_Fast_Power) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、基礎知識

(1)矩陣乘法

https://blog.csdn.net/weixin_43272781/article/details/82899737

簡單的說矩陣就是二維數(shù)組,數(shù)存在里面,矩陣乘法的規(guī)則:A*B=C

其中c[i][j]為A的第i行與B的第j列對應乘積的和,即:

代碼:

const int N=100; int c[N][N]; void multi(int a[][N],int b[][N],int n)//n是矩陣大小,n<N {memset(c,0,sizeof c);for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)for(int k=1;k<=n;k++)c[i][j]+=a[i][k]*b[k][j]; }

另一種寫法:

int c[N][N]; void multi(int a[][N],int b[][N],int n) {memset(c,0,sizeof c);for(int i=1;i<=n;i++)for(int k=1;k<=n;k++)for(int j=1;j<=n;j++)c[i][j]+=a[i][k]*b[k][j]; }


這種可以在第二重for判斷if(a[i][k]==0)continue;對于矩陣有較多0的有一定效果。不過一般第一種寫法就夠了,這種知道就行。
顯然矩陣乘法的復雜度是O(n^3);(O(n^2.7)的方法不會寫,無視這里)。

這里我直接寫的是n*n的矩陣(即方陣),顯然兩個相乘是要一行和一列對應乘,那么矩陣乘法是需要A的行數(shù)與B的列數(shù)相等的(這是A*B的前提條件,可見矩陣的乘法是不滿足交換律的)。然而這些一般都是沒什么用的,矩陣快速冪只會用到方陣(除非題目是裸的矩陣乘法)。矩陣快速冪都是方陣也就避免的相乘的前提條件,可以放心用。

二、矩陣構(gòu)造方法

https://blog.csdn.net/weixin_43272781/article/details/88878064

三、矩陣快速冪

如果不知道快速冪的請參考:https://blog.csdn.net/weixin_43272781/article/details/85058595

const int N=10; int tmp[N][N]; void multi(int a[][N],int b[][N],int n) {memset(tmp,0,sizeof tmp);for(int i=0;i<n;i++)for(int j=0;j<n;j++)for(int k=0;k<n;k++)tmp[i][j]+=a[i][k]*b[k][j];for(int i=0;i<n;i++)for(int j=0;j<n;j++)a[i][j]=tmp[i][j]; } int res[N][N]; void Pow(int a[][N],int n) {memset(res,0,sizeof res);//n是冪,N是矩陣大小for(int i=0;i<N;i++) res[i][i]=1;while(n){if(n&1)multi(res,a,N);//res=res*a;復制直接在multi里面實現(xiàn)了;multi(a,a,N);//a=a*an>>=1;} }

值得注意的是矩陣快速冪只適用于n*n的矩陣方陣。?

四、例題

http://poj.org/problem?id=3070

http://poj.org/problem?id=3233

http://acm.hdu.edu.cn/showproblem.php?pid=2276

http://acm.hdu.edu.cn/showproblem.php?pid=5015

https://ac.nowcoder.com/acm/contest/338/L(題解:https://blog.csdn.net/weixin_43272781/article/details/85937715)

http://acm.hdu.edu.cn/showproblem.php?pid=3306?

http://acm.hdu.edu.cn/showproblem.php?pid=2157(題解:https://blog.csdn.net/weixin_43272781/article/details/88958713)

五、參考文章

http://www.matrix67.com/blog/archives/276

http://www.cnblogs.com/frog112111/archive/2013/05/19/3087648.html?tdsourcetag=s_pcqq_aiomsg?

https://www.cnblogs.com/frog112111/archive/2013/05/15/3080678.html?

https://www.cnblogs.com/frog112111/archive/2013/05/16/3081493.html?

https://www.cnblogs.com/frog112111/archive/2013/05/16/3082416.html

https://www.cnblogs.com/frog112111/archive/2013/05/20/3089358.html

https://www.cnblogs.com/frog112111/archive/2013/05/20/3089687.html

https://www.cnblogs.com/frog112111/archive/2013/05/21/3089953.html

https://www.cnblogs.com/frog112111/archive/2013/05/22/3092012.html

https://www.cnblogs.com/frog112111/archive/2013/05/20/3089802.html

https://www.cnblogs.com/frog112111/archive/2013/05/22/3093697.html

https://www.cnblogs.com/frog112111/archive/2013/05/22/3093757.html?

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。