矩阵乘法 之 strassen 算法(二)

2014-11-24 07:10:50 · 作者: · 浏览: 1
s( t2, p3, p7 );
minus( u, t1, t2 );
for( i = 0; i < N / 2; i++ )
{
for( j = 0; j < N / 2; j++ )
{
mat[i][j] = r[i][j];
mat[i][j + N / 2] = s[i][j];
mat[i + N / 2][j] = t[i][j];
mat[i + N / 2][j + N / 2] = u[i][j];
}
}
printf("\n下面是strassen算法处理结果:\n");
for( i = 0; i < N; i++ )
{
for( j = 0; j < N; j++ )
{
printf("%d ", mat[i][j]);
}
printf("\n");
}
//下面是朴素算法处理
printf("\n下面是朴素算法处理结果:\n");
for( i = 0; i < N; i++ )
{
for( j = 0; j < N; j++ )
{
mat[i][j] = 0;
for( k = 0; k < N; k++ )
{
mat[i][j] += m1[i][j] * m2[i][j];
}
}
}
for( i = 0; i < N; i++ )
{
for( j = 0; j < N; j++ )
{
printf("%d ", mat[i][j]);
}
printf("\n");
}
return 0;
}
现在最好的计算矩阵乘法的复杂度是O( n^2.376 ),不过只是理论上的结果。此处仅仅做参考~