斯特拉森算法

转载 2013年12月05日 21:20:18

Strassen演算法是個計算矩陣乘法演算法


AB F上的方矩陣。求兩者的積C

\mathbf{C} = \mathbf{A} \mathbf{B} \qquad \mathbf{A},\mathbf{B},\mathbf{C} \in F^{2^n \times 2^n}

(一般矩陣可以填0的方法計算令它成為2^n \times 2^n矩陣。)

ABC分成相等大小的方塊矩陣:

\mathbf{A} =\begin{bmatrix}\mathbf{A}_{1,1} & \mathbf{A}_{1,2} \\\mathbf{A}_{2,1} & \mathbf{A}_{2,2}\end{bmatrix}\mbox { , }\mathbf{B} =\begin{bmatrix}\mathbf{B}_{1,1} & \mathbf{B}_{1,2} \\\mathbf{B}_{2,1} & \mathbf{B}_{2,2}\end{bmatrix}\mbox { , }\mathbf{C} =\begin{bmatrix}\mathbf{C}_{1,1} & \mathbf{C}_{1,2} \\\mathbf{C}_{2,1} & \mathbf{C}_{2,2}\end{bmatrix}

\mathbf{A}_{i,j}, \mathbf{B}_{i,j}, \mathbf{C}_{i,j} \in F^{2^{n-1} \times 2^{n-1}}

於是

\mathbf{C}_{1,1} = \mathbf{A}_{1,1} \mathbf{B}_{1,1} + \mathbf{A}_{1,2} \mathbf{B}_{2,1}
\mathbf{C}_{1,2} = \mathbf{A}_{1,1} \mathbf{B}_{1,2} + \mathbf{A}_{1,2} \mathbf{B}_{2,2}
\mathbf{C}_{2,1} = \mathbf{A}_{2,1} \mathbf{B}_{1,1} + \mathbf{A}_{2,2} \mathbf{B}_{2,1}
\mathbf{C}_{2,2} = \mathbf{A}_{2,1} \mathbf{B}_{1,2} + \mathbf{A}_{2,2} \mathbf{B}_{2,2}

引入新矩陣

\mathbf{M}_{1} := (\mathbf{A}_{1,1} + \mathbf{A}_{2,2}) (\mathbf{B}_{1,1} + \mathbf{B}_{2,2})
\mathbf{M}_{2} := (\mathbf{A}_{2,1} + \mathbf{A}_{2,2}) \mathbf{B}_{1,1}
\mathbf{M}_{3} := \mathbf{A}_{1,1} (\mathbf{B}_{1,2} - \mathbf{B}_{2,2})
\mathbf{M}_{4} := \mathbf{A}_{2,2} (\mathbf{B}_{2,1} - \mathbf{B}_{1,1})
\mathbf{M}_{5} := (\mathbf{A}_{1,1} + \mathbf{A}_{1,2}) \mathbf{B}_{2,2}
\mathbf{M}_{6} := (\mathbf{A}_{2,1} - \mathbf{A}_{1,1}) (\mathbf{B}_{1,1} + \mathbf{B}_{1,2})
\mathbf{M}_{7} := (\mathbf{A}_{1,2} - \mathbf{A}_{2,2}) (\mathbf{B}_{2,1} + \mathbf{B}_{2,2})

可得:

\mathbf{C}_{1,1} = \mathbf{M}_{1} + \mathbf{M}_{4} - \mathbf{M}_{5} + \mathbf{M}_{7}
\mathbf{C}_{1,2} = \mathbf{M}_{3} + \mathbf{M}_{5}
\mathbf{C}_{2,1} = \mathbf{M}_{2} + \mathbf{M}_{4}
\mathbf{C}_{2,2} = \mathbf{M}_{1} - \mathbf{M}_{2} + \mathbf{M}_{3} + \mathbf{M}_{6}

其中M_{i,j}的計算也是使用Strassen演算法求得。

假定施特拉斯矩阵分割方案仅用于n>=8的矩阵乘法,而对于小于8的矩阵直接利用公式计算;n的值越大,斯拉特森方法更方便;设T(n)表示斯特拉森分治运算法所需时间,因为大的矩阵会被递归分成小矩阵直到每个矩阵的大小小于或等于k,所以T(n)的递归表达式为T(n)=d(n<=k);T(n)=7*t(n/2)+cn2(n平方)(n>k),其中cn2表示完成18次(n/2)(n/2)接矩阵的加减法,以及把大小为N的矩阵分割成小矩阵所需的时间。

矩阵相乘的快速算法(施特拉森-Strassen算法)

原文作者:赵超 龚敏敏 原文地址:http://dev.gameres.com/Program/Visual/3D/Mxquick.htm 算法介绍 矩阵相乘在进...
  • atupal
  • atupal
  • 2012年09月15日 21:35
  • 3691

Dijkstra(迪杰斯特)算法求单源最短路径

参考博客http://www.cnblogs.com/skywang12345/p/3711514.html http://blog.csdn.net/linux_ever/article/deta...

重新认识决策树系列算法和逻辑斯特回归(一)

一、决策树通俗到深入理解 我们知道决策树可以用来分类,同样可以用来回归,我们主要其应用于分类的情况,回归其实是相似的。 举一个例子,一家银行要确定是否给用户发信用卡,那么它要根据用户的基本信息来确...

德国阿斯特2000c串线机程序

  • 2013年06月12日 19:39
  • 228KB
  • 下载

奈奎斯特稳定判据的推导与理解

先上结论,奈奎斯特稳定判据: 若奈奎斯特曲线不穿过(-1 , j0)点,Z = P - 2N = 0 时系统稳定若奈奎斯特曲线穿过(-1 , j0)点,则系统临界稳定 其中,Z为包围函数的...

51VOIP阿斯特Astgo软交换WAP接口

  • 2017年04月13日 11:19
  • 55KB
  • 下载

曼切斯特编码及模拟冗余检验

  • 2008年04月30日 14:32
  • 43KB
  • 下载

MVC北京络捷斯特第三方物流系统技术解析(六)补录订单运输信息

分享第三方物流补录订单运输信息
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:斯特拉森算法
举报原因:
原因补充:

(最多只允许输入30个字)