Search results
Results From The WOW.Com Content Network
In linear algebra, the Strassen algorithm, named after Volker Strassen, is an algorithm for matrix multiplication. It is faster than the standard matrix multiplication algorithm for large matrices, with a better asymptotic complexity , although the naive algorithm is often better for smaller matrices.
The definition of matrix multiplication is that if C = AB for an n × m matrix A and an m × p matrix B, then C is an n × p matrix with entries = =. From this, a simple algorithm can be constructed which loops over the indices i from 1 through n and j from 1 through p, computing the above using a nested loop:
Strassen's algorithm improves on naive matrix multiplication through a divide-and-conquer approach. The key observation is that multiplying two 2 × 2 matrices can be done with only 7 multiplications, instead of the usual 8 (at the expense of 11 additional addition and subtraction operations).
The Schönhage–Strassen algorithm is based on the fast Fourier transform (FFT) method of integer multiplication. This figure demonstrates multiplying 1234 × 5678 = 7006652 using the simple FFT method. Base 10 is used in place of base 2 w for illustrative purposes. Schönhage (on the right) and Strassen (on the left) playing chess in ...
Matrix multiplication shares some properties with usual multiplication. However, matrix multiplication is not defined if the number of columns of the first factor differs from the number of rows of the second factor, and it is non-commutative, [10] even when the product remains defined after changing the order of the factors. [11] [12]
A well-known example is Strassen's algorithm for matrix product. The straightforward way for computing the product of two matrices requires a circuit of size order . Strassen showed that we can, in fact, multiply two matrices using a circuit of size roughly .
This was the first improvement over the Strassen algorithm after nearly a decade, and kicked off a long line of improvements in fast matrix multiplication that later included the Coppersmith–Winograd algorithm and subsequent developments.
Graphs of functions commonly used in the analysis of algorithms, showing the number of operations versus input size for each function. The following tables list the computational complexity of various algorithms for common mathematical operations.