主要介绍了C++ Strassen算法代码的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2022-02-18 18:18:12 53KB C++ Strassen算法 C++ Strassen
1
本文仅代码,无理论解释 实话实说,我觉得这个算法在C系列的语言下,简直垃圾到爆炸……毕竟是一群完全不懂程序数学家对着纸弄出来的,看起来好像非常的有用,实际上耗时是非常爆炸的。 但是《算法导论》里有啊……然后上课又要求手写一个 于是我就手写了一个……我尽可能的减少使用的空间同时加快速度了,当 n = 512 的时候,内存使用量峰值没有超过 10mb,而且是通过递归实现 Strassen 算法 其中,in.txt 已经预先准备了 3000000 个范围在 0-100 随机数,避免程序在运算过程中爆 int(虽然完全可以取1000) /** * Created by Mauve on 3/29/
2021-12-28 16:25:20 54KB AS ras ss
1
矩阵乘法的strassen算法,随机产生nxn阶方阵并做乘法,n为2的幂,结果打印输出
2021-12-28 16:24:39 3KB 矩阵乘法的strassen算法
Strassen 算法 C++ 实现 任意矩阵相乘 用Command line 输入编制好的两个矩阵,输出相乘的结果矩阵。如果需要手动输入,删除程序里的相关语句,添加输入命令即可。
2021-11-03 19:10:03 5KB Strassen 算法 C++ 实现
1
一般情况下矩阵乘法需要三个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
2021-03-19 11:01:26 3KB 矩阵乘法 strassen算法
1
矩阵相乘,普通算法的时间界是10的3此方,而采用strassen算法可提高运算效率。
2019-12-21 21:17:48 9KB 矩阵相乘
1