矩阵乘法的strassen算法(C++实现)

时间:2016-05-13 13:57:25
【文件属性】:

文件名称:矩阵乘法的strassen算法(C++实现)

文件大小:3KB

文件格式:TXT

更新时间:2016-05-13 13:57:25

矩阵乘法 strassen算法

一般情况下矩阵乘法需要三个for循环,时间复杂度为O(n^3),现在我们将矩阵分块如图:( 来自MIT算法导论 ) 一般算法需要八次乘法 r = a * e + b * g ; s = a * f + b * h ; t = c * e + d * g; u = c * f + d * h; strassen将其变成7次乘法,因为大家都知道乘法比加减法消耗更多,所有时间复杂更高! strassen的处理是: 令: p1 = a * ( f - h ) p2 = ( a + b ) * h p3 = ( c +d ) * e p4 = d * ( g - e ) p5 = ( a + d ) * ( e + h ) p6 = ( b - d ) * ( g + h ) p7 = ( a - c ) * ( e + f ) 那么我们可以知道: r = p5 + p4 + p6 - p2 s = p1 + p2 t = p3 + p4 u = p5 + p1 - p3 - p7


网友评论

  • 可以运行 还不错
  • 我想要飞递归版本,不过这个是一个递归版本的,可以运行
  • 理论可以,但不够细致
  • 一般一般,参考可以。。