Strassen算法
概述
定义
Strassen 算法(Strassen's Algorithm)
将两个 矩阵 和 各分为 4 个 的子矩阵:
朴素方法需要 8 次子矩阵乘法和 4 次加法。Strassen 算法只做 7 次乘法(和 18 次加/减法),构造 7 个中间矩阵:
最终结果:
核心性质
| 性质 | 描述 | 备注 |
|---|---|---|
| 乘法次数 | 7 次(而非朴素 8 次) | 每次递归减少 1 次乘法 |
| 加法次数 | 18 次加/减法(多于朴素的 4 次) | 加法代价低于乘法 |
| 时间复杂度 | 由主定理情形一得出 | |
| 实际指数 | 优于 ,劣于 | |
| 历史意义 | 第一个打破 壁垒的矩阵乘法算法 | 1969 年提出,开创了快速矩阵乘法领域 |
复杂度分析
由主定理分析递推关系 :
- ,,
- ,其中
- 适用情形一:
应用场景
- 大规模矩阵乘法:当 较大时,Strassen 算法优于朴素算法
- 理论意义:证明了矩阵乘法可以亚立方时间完成
- 后续发展:Coppersmith-Winograd 算法 ,目前最优