Matrix multiplication is an important operation commonly used in computer science with applications such as graph theory, linear algebra, pattern matching and more. Strassen’s matrix multiplication algorithm is one of the most efficient methods to perform the multiplication of two matrices, and is an important part of many algorithms in computing and research. This article provides an overview of matrix multiplication and the Strassen algorithm, its benefits and limitations, examples of its use, strategies for optimizing its algorithm and applications of its use.

Overview of Matrix Multiplication

Matrix multiplication involves the multiplication of two matrices, A and B, of size ‘m’ and ‘n’ respectively. The result is a new matrix, C, of size ‘m’. The process of matrix multiplication involves multiplying the entries of each row in the first matrix with the entries of each column in the second matrix, and adding the results. Therefore, matrix multiplication is a type of linear mapping whereby vectors in one vector space transform into vectors in another.

Matrix multiplication is an important operation in linear algebra and is used in many applications, such as solving systems of linear equations, calculating the inverse of a matrix, and computing the determinant of a matrix. It is also used in many areas of mathematics, such as calculus, statistics, and numerical analysis. Additionally, matrix multiplication is used in computer graphics, image processing, and machine learning.

The Strassen Algorithm

The Strassen algorithm was invented by German mathematician Volker Strassen in 1969. It is an algorithm that reduces the time complexity of matrix multiplication to ncubed – 7, which is significantly lower than the standard O(n^3) time complexity for matrix multiplication. The algorithm does this by dividing matrices into sub-matrices and then recursively computing the resulting sub-matrices by combining the multiplications of several minor sub-matrices. This is done by taking advantage of mathematical properties such as distributive and associative laws that allow certain sub-matrix multiplications to be combined.

Benefits of Strassen’s Matrix Multiplication

The primary benefit of Strassen’s matrix multiplication is its time complexity. In comparison to brute-force algorithms and their standard O(n^3) time complexity, Strassen’s method achieves ncubed – 7 which is an improvement in run time and makes algorithms computationally more efficient and faster. This improved efficiency makes Strassen’s algorithm well suited for use in large-scale applications such as those involving big data sets.

Limitations of Strassen’s Matrix Multiplication

Despite its benefits, there are some limitations of Strassen’s matrix multiplication. First, it is not always the most suitable for all matrix sizes. Because the algorithm relies on dividing matrices into sub-matrices and then multiplying those sub-matrices, it sometimes proves inefficient for matrix sizes below 16×16. Similarly, any values with large numbers of bits may result in overflow errors when using the Strassen algorithm. Additionally, since this algorithm only works with matrices with whole numbers, values with decimal points, such as fractions or decimals, cannot be used with Strassen’s matrix multiplication.

Examples of Strassen’s Matrix Multiplication

To illustrate an example of using Strassen’s algorithm, consider the two matrices below:

Matrix A: [1, 2, 3; 4, 5, 6; 7, 8, 9]
Matrix B: [9, 8, 7; 6, 5, 4; 3, 2, 1]

Using the Strassen algorithm, we can first split these matrices into two equal groups of three rows and three columns:

A1: [1 2 3; 4 5 6]
A2: [7 8 9]
B1: [9 8 7; 6 5 4]
B2: [3 2 1]

We then use the complex mathematical equations provided by the Strassen algorithm to calculate the multiplications needed to obtain the result – in this case four multiplications are needed. Finally, we sum all the sub-matrix results together to get our final result. In the example above this would be:

[30 24 18; 84 69 54; 138 114 90].

Strategies for Optimizing Strassen’s Algorithm

The already impressive efficiency gains from using Strassen’s algorithm can be further improved through optimisation. One common strategy is to use alternative forms of multiplying two matrices rather than the complex mathematical equation presented in the original Strassen Algorithm. Additionally, it is possible to improve cache utilization through initially sorting the matrices in descending order so that each element is accessed consecutively. Finally, finding symmetries within each matrix can be used to reduce the number of computations needed – something that is often referred to as block algorithm.

Applications of Strassen’s Matrix Multiplication

Strassen’s matrix multiplication has a wide variety of applications. In addition to its use in computer science applications such as graph theory, linear algebra and pattern matching, it can also be used in image processing and machine learning applications to optimise run-time complexity. Its improved efficiency makes it particularly well suited for use in large-scale applications such as those involving big data sets.

Conclusion

Strassen’s matrix multiplication is an important algorithm in computing and research due to its improved run time compared to brute-force algorithms. It can be used in a variety of applications across different industries from computer science and engineering to image processing and machine learning. Despite some limitations such as being unsuitable for smaller matrices, optimizations can be done to further reduce run times significantly.