写出计算方阵A[n][n]与B[n][n]乘积C[n][n]的算法,分析算法的时间复杂度.

如题所述

普通乘法的时间复杂度是O(N^3)。而Strassen矩阵乘法是通过递归实现的,它将一般情况下二阶矩阵乘法)所需的8次乘法降低为7次,将计算时间从O(n^3)降低为O(n^2.81)

procedure STRASSEN(n,A,B,C); 
begin

if n=2 then MATRIX-MULTIPLY(A,B,C)
 else begin 
                STRASSEN(n/2,A11,B12-B22,M1); 
                STRASSEN(n/2,A11+A12,B22,M2);
                STRASSEN(n/2,A21+A22,B11,M3); 
                STRASSEN(n/2,A22,B21-B11,M4); 
                STRASSEN(n/2,A11+A22,B11+B22,M5); 
                STRASSEN(n/2,A12-A22,B21+B22,M6); 
                STRASSEN(n/2,A11-A21,B11+B12,M7);
                end;                
 end;

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-12
我不确定你问的是不是矩阵乘法,如果是的话,接着看,

int i, j, k;

for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)

{

c[i][j] = 0;

for(k = 0; k < n; k++)

{

c[i][j] += a[i][k] * b[k][j];

}

}

}

时间复杂度是O(N^3)。

不懂可以再问!本回答被提问者和网友采纳

写出计算方阵A[n][n]与B[n][n]乘积C[n][n]的算法,分析算法的时间复杂...
普通乘法的时间复杂度是O(N^3)。而Strassen矩阵乘法是通过递归实现的,它将一般情况下二阶矩阵乘法)所需的8次乘法降低为7次,将计算时间从O(n^3)降低为O(n^2.81)procedure STRASSEN(n,A,B,C); beginif n=2 then MATRIX-MULTIPLY(A,B,C) else begin STRASSEN(n\/2,A11,B12-B22,M1...

求一份伪代码 N阶方阵转置 C语言 加急
第一步,定义一个N阶方阵和一个用于存放转置结果的方阵。这里采用二维数组来表示矩阵,即`int a[N][N], b[N][N];`。`N`代表矩阵的大小,可根据需要调整。第二步,通过循环读取原矩阵`a`的值。外层循环控制行,内层循环控制列。使用`scanf`函数从用户输入中获取矩阵元素,并将其存储在`a`中。

设计可以计算输入矩阵的行列式和逆矩阵的算法
{ void temp(double aa[],double bb[],int n); double fun(double array[n][n]); double a[n][n],b[n][2*n],c[n][n],det1,yinzhi; double bb; int i,j,kk=0,k,u; for(i=0;i<n;i++) for(j=0;j<2*n;j++) b[i][j]=0; cout<<"请输入一个方阵"<<endl; for(i=0;i...

矩阵转置
详情请查看视频回答

方阵A的n次方怎么计算?
1. (A^m)^n = A^mn 2. A^mA^n = A^(m+n)一般计算的方法有:1. 计算A^2,A^3 找规律, 然后用归纳法证明 2. 若r(A)=1, 则A=αβ^T, A^n=(β^Tα)^(n-1)A 注: β^Tα =α^Tβ = tr(αβ^T)3. 分拆法: A=B+C, BC=CB, 用二项式公式展开 适用于 B^n ...

用c语言求一个n阶方阵的所有元素之和,并给出算法的时间复杂度
{ int a[N][N] = {1,2,3,4,5,6,8,7,9};int iterx = 0, itery = 0;int sum = 0;for(iterx = 0; iterx < N; iterx++){ for(itery = 0; itery < N; itery++){ sum += a[iterx][itery];} } printf("the sum is %d\\n", sum);return 0;} 时间复杂度O...

算法分析
【例 】求两个n阶方阵的乘积 C=A×B 其算法如下:# define n \/\/ n 可根据需要定义 这里假定为 void MatrixMultiply(int A[a] int B [n][n] int C[n][n]){ \/\/右边列为各语句的频度int i j k;( ) for(i= ; i<n;j++) n+ ( ) for (j= ;j<n;j++) { n(n+ )...

关于算法是时间复杂度,对数阶比指数阶效率高吗?
一个算法的时间耗费就是该算法中所有语句的频度之和。求两个n阶方阵的乘积 C=A×B,其算法如下:define n 100 \/\/ n 可根据需要定义,这里假定为100 void MatrixMultiply(int A[a],int B [n][n],int C[n][n]){ \/\/右边列为各语句的频度 int i ,j ,k;(1) for(i=0; i ...

计算方法里面矩阵A的n次方怎么算
对角法: A=P^-1diagP,A^n = P^-1diag^nP。拆分法:A=B+C,BC=CB,用二项式公式展开,适用于 B^n 易计算,C的低次幂为零:C^2 或 C^3 = 0。特征值法:若r(A)=1,则A=αβ^T,A^n=(β^Tα)^(n-1)A,注:β^Tα =α^Tβ = tr(αβ^T)。扩展材料:矩阵是高等代数学...

n阶方阵怎么算?
n-1)A;分拆法,A=B+C,BC=CB,用二项式公式展开,适用于B^n易计算,C的低次幂为零:C^2或C^3 = 0。矩阵在物理学中的另一类泛应用是描述线性耦合调和系统。这类系统的运动方程可以用矩阵的形式来表示,用一个质量矩阵乘以一个广义速度来给出运动项,用力矩阵乘以位移向量来刻画相互作用。

相似回答
大家正在搜