荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: huhaiming (一生只爱她), 信区: Program
标 题: [合集]请教strassen矩阵乘法问题
发信站: 荔园晨风BBS站 (2004年10月30日09:42:06 星期六), 站内信件
☆ 1 ──────────── 我是分割线 ─────────────────☆
发信人: acmer (飘飘), 信区: Program
标 题: 请教strassen矩阵乘法问题
时 间: 2004年10月10日16:39:21 星期天
算法我已经比较明白了,但是要实现感觉有点困难。哪位可以提示
一下代码的框架?或者共享一下代码怎么样?谢谢了
☆ 2 ──────────── 我是分割线 ─────────────────☆
发信人: bakey (深海的鱼爱上会潜水的猫), 信区: Program
标 题: Re: 请教strassen矩阵乘法问题
时 间: 2004年10月10日21:19:19 星期天
555。。。谁帮我看一下~~
☆ 3 ──────────── 我是分割线 ─────────────────☆
发信人: Kenniel (here goes), 信区: Program
标 题: Re: 请教strassen矩阵乘法问题
时 间: 2004年10月10日22:06:28 星期天
框架:
void Strassen( n , A , B , C )
{
if( n==2 )
Adhoc_Matrix_Mul( A, B, C, n );//递归分解矩阵
Else
{
Strassen( n/2 , A11 , B12-B22, M1 );
Strassen( n/2 , A11+A12 ,B22, M2 );
Strassen( n/2 , A21+A22 , B11 , M3 );
Srtassen( 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 );
C1=M5+M4-M2+M6;
C2=M1+M2;
C3=M3+M4;
C4=M5+M1-M3-M7;
Merge( C1,C2,C3,C4,C,n );//最后合并回一个矩阵
}
}
☆ 4 ──────────── 我是分割线 ─────────────────☆
发信人: bakey (深海的鱼爱上会潜水的猫), 信区: Program
标 题: Re: 请教strassen矩阵乘法问题
时 间: 2004年10月10日22:37:50 星期天
这个框架我知道了,但是那个M1,M2....是怎么实现?
☆ 5 ──────────── 我是分割线 ─────────────────☆
发信人: kaman (天外飞仙), 信区: Program
标 题: Re: 请教strassen矩阵乘法问题
时 间: 2004年10月11日10:28:14 星期一
er……只是算一个二阶矩阵而已~~~你喜欢怎样算就怎样算啦~
☆ 6 ──────────── 我是分割线 ─────────────────☆
发信人: bakey (深海的鱼爱上会潜水的猫), 信区: Program
标 题: Re: 请教strassen矩阵乘法问题
时 间: 2004年10月11日12:23:57 星期一
Mx一定是二阶的?
☆ 7 ──────────── 我是分割线 ─────────────────☆
发信人: kaman (天外飞仙), 信区: Program
标 题: Re: 请教strassen矩阵乘法问题
时 间: 2004年10月11日14:22:00 星期一
都是递归分成二阶的啦,不过不是随便算,刚才记错了,这里的算二阶的是直接影响
到算法的时间复杂度的,一下是一种把二阶乘法化成7次算法和四次合并的办法
Adhoc_Matrix_Mul函数主要算Mx
M1=A11(B12-B22)
M2=(A11+A12)B22
M3=(A21+A22)B11
M4=A22(B21-B11)
M5=(A11+A22)(B11+B22)
M6=(A12-A22)(B21+B22)
M7=(A11-A21)(B11+B12)
merge:
C11=M5+M4-M2+M6
C12=M1+M2
C21=M3+M4
C22=M5+M1-M3-M7
验证一下:
C22=M5+M1-M3-M7
=(A11+A22)(B11+B22)+A11(B12-B22)-(A21+A22)B11-(A11-A21)(B11+B12)
=A11B11+A11B22+A22B11+A22B22+A11B12
-A11B22-A21B11-A22B11-A11B11-A11B12+A21B11+A21B12
=A21B12+A22B22
☆ 8 ──────────── 我是分割线 ─────────────────☆
发信人: bakey (深海的鱼爱上会潜水的猫), 信区: Program
标 题: Re: 请教strassen矩阵乘法问题
时 间: 2004年10月11日15:41:57 星期一
这个我知道,就是strassen嘛。不过不会实现:-(
☆ 9 ──────────── 我是分割线 ─────────────────☆
发信人: kaman (天外飞仙), 信区: Program
标 题: Re: 请教strassen矩阵乘法问题
时 间: 2004年10月11日16:16:35 星期一
无言……
☆ 10 ──────────── 我是分割线 ─────────────────☆
发信人: jango (姜戈,理想高于一切), 信区: Program
标 题: Re: 请教strassen矩阵乘法问题
时 间: Sun Oct 17 16:53:50 2004
#include<stdio.h>
#include<string.h>
struct maze
{
int n;
};
struct maze add(struct maze r1,struct maze r2)
{
struct maze rt;
}
struct maze sub(struct maze r1,struct maze r2)
{
struct maze rt;
}
struct maze mul(struct maze r1,struct maze r2);
struct maze strassen(struct maze r1,struct maze r2)
{
struct maze rt;
}
struct maze mul(struct maze r1,struct maze r2)
{
struct maze rt;
}
void print(struct maze r1)
{
int i,j;
}
void main()
{
int n,i,j;
}
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店