Matrix Multiplication: Difference between revisions

From Algorithm Wiki
Jump to navigation Jump to search
(Created page with "== Problem Description== Matrix multiplication or multiplication of matrices is one of the operations that can be performed on matrices in linear algebra. Multiplication of matrix A with matrix B is possible when both the given matrices, A and B are compatible. Matrix multiplication is a binary operation, that gives a matrix from two given matrices. Matrix multiplication was first introduced in 1812 by French mathematician Jacques Philippe Marie Binet, in order to repre...")
 
No edit summary
Line 1: Line 1:
== Problem Description==
{{DISPLAYTITLE:Matrix Multiplication (Matrix Product)}}
Matrix multiplication or multiplication of matrices is one of the operations that can be performed on matrices in linear algebra. Multiplication of matrix A with matrix B is possible when both the given matrices, A and B are compatible. Matrix multiplication is a binary operation, that gives a matrix from two given matrices.
== Description ==  


Matrix multiplication was first introduced in 1812 by French mathematician Jacques Philippe Marie Binet, in order to represent linear maps using matrices. Let us understand the rule for multiplication of matrices and matrix multiplication formula in detail in the following sections.
Matrix Multiplication or Matrix Product is a binary operation that produces a matrix from two matrices with entries in a field; or; more generally; in a ring or even a semiring.  


== Bounds Chart ==
== Related Problems ==  
[[File:Matrix_MultiplicationBoundsChart.png|1050px]]


== Step Chart ==
Subproblem: [[Boolean Matrix Multiplication]], [[ Matrix Product Verification]]
[[File:Matrix_MultiplicationStepChart.png|1050px]]


== Improvement Table ==
Related: [[Boolean Matrix Multiplication (Combinatorial)]], [[Matrix Product Verification]], [[Distance Product]], [[$(\min, \leq)$ Product]]
{| class="wikitable" style="text-align:center;" width="100%"
!width="20%" | Complexity Classes !! width="40%" | Algorithm Paper Links !! width="40%" | Lower Bounds Paper Links
|-
| rowspan="1" | Exp/Factorial
|
|
|-
| rowspan="1" | Polynomial > 3
|
|
|-
| rowspan="1" | Cubic
| [- Naive algorithm (1940)]


[https://link.springer.com/article/10.1007%2FBF02165411 Strassen's algorithm (1969) (1969)]
== Parameters ==


[https://ieeexplore.ieee.org/document/4567976 Pan's algorithm (1978)]
<pre>n: dimension of square matrix</pre>


[https://link.springer.com/article/10.1007/BF01395989 Bini's algorithm (1979)]
== Table of Algorithms ==


[https://epubs.siam.org/doi/abs/10.1137/0210032 Schonhage's algorithm (1980)]
{| class="wikitable sortable"  style="text-align:center;" width="100%"


[https://www.sciencedirect.com/science/article/pii/0304397583900543 Romani's algorithm (1980)]
! Name !! Year !! Time !! Space !! Approximation Factor !! Model !! Reference


[https://ieeexplore.ieee.org/document/4568320 Coppersmith–Winograd algorithm (1981)]
|-


[ Strassen's algorithm (1986) (1986)]
| [[Naive algorithm (Matrix Multiplication Matrix Product)|Naive algorithm]] || 1940 || $O(n^{3})$ || $O({1})$ auxiliary || Exact || Deterministic || 
 
|-
[http://www.cs.umd.edu/~gasarch/TOPICS/ramsey/matrixmult.pdf Coppersmith–Winograd algorithm (1990) (1990)]
| [[Strassen's algorithm (Matrix Multiplication Matrix Product)|Strassen's algorithm]] || 1969 || $O(n^{(log7/log2)}) ~ O(n^{2.{80}7})$ || $O(n^{2})$ || Exact || Deterministic || [https://link.springer.com/article/10.1007%2FBF02165411 Time] & [http://www.cs.cmu.edu/afs/cs/academic/class/15750-s17/ScribeNotes/lecture1.pdf Space]
 
|-
[http://theory.stanford.edu/~virgi/matrixmult-f.pdf Williams 2014 (2014)]
| [[Pan's algorithm (Matrix Multiplication Matrix Product)|Pan's algorithm]] || 1978 || $O(n^{(log({143640})/log({70}))}) ~ O(n^{2.{79}5})$ || $O(n^{2})$ || Exact || Deterministic || [https://ieeexplore.ieee.org/document/4567976 Time]
 
|-
[https://arxiv.org/abs/1401.7714 François Le Gall 2014 (2014)]
| [[Romani's algorithm (Matrix Multiplication Matrix Product)|Romani's algorithm]] || 1981 || $O(n^{2.{5166}5})$ || $O(n^{2})$ || Exact || Deterministic || [https://epubs.siam.org/doi/abs/10.1137/0211020 Time]
|
|-
| [[Coppersmith–Winograd algorithm (Matrix Multiplication Matrix Product)|Coppersmith–Winograd algorithm]] || 1981 || $O(n^{2.{49554}8})$ || $O(n^{2})$ || Exact || Deterministic || [https://epubs.siam.org/doi/abs/10.1137/0211038 Time]
|-
| [[Strassen's algorithm (Matrix Multiplication Matrix Product)|Strassen's algorithm]] || 1986 || $O(n^{(log54/log5)}) ~ O(n^{({2.4785})})$ || $O(n^{2})$ || Exact || Deterministic || [https://ieeexplore.ieee.org/abstract/document/4568194 Time]
|-
| [[Coppersmith–Winograd algorithm (Matrix Multiplication Matrix Product)|Coppersmith–Winograd algorithm]] || 1990 || $O(n^{2.{375}5})$ || $O(n^{2})$ || Exact || Deterministic || [http://www.cs.umd.edu/~gasarch/TOPICS/ramsey/matrixmult.pdf Time]
|-
| [[Vassilevska Williams (Matrix Multiplication Matrix Product)|Vassilevska Williams]] || 2014 || $O(n^{2.{37287}3})$ || $O(n^{2})$ || Exact || Deterministic || [http://theory.stanford.edu/~virgi/matrixmult-f.pdf Time]
|-
|-
| rowspan="1" | Quadratic
| [[François Le Gall (Matrix Multiplication Matrix Product)|François Le Gall]] || 2014 || $O(n^{2.{372863}9})$ || $O(n^{2})$ || Exact || Deterministic || [https://arxiv.org/abs/1401.7714 Time]
|
|
|-
|-
| rowspan="1" | nlogn
| [[Bini's algorithm (Matrix Multiplication Matrix Product)|Bini's algorithm]] || 1979 || $O(n^{2.{779}9})$ || $O(n^{2})$ || $O(n logn)$ error || Deterministic || [https://doi.org/10.1016/0020-0190(79)90113-3 Time]
|
|
|-
|-
| rowspan="1" | Linear
| [[Schonhage's algorithm (Matrix Multiplication Matrix Product)|Schonhage's algorithm]] || 1980 || $O(n^{({3}*log52/log110)}) ~ O(n^{2.{521}8})$ || $O(n^{2})$ || ? || Deterministic || [https://epubs.siam.org/doi/abs/10.1137/0210032 Time]
|
|
|-
|-
| rowspan="1" | logn
|}
|
 
|
== Time Complexity graph ==  
|-|}
 
[[File:Matrix Product - Matrix Multiplication - Time.png|1000px]]
 
== Space Complexity graph ==
 
[[File:Matrix Product - Matrix Multiplication - Space.png|1000px]]
 
== Pareto Decades graph ==
 
[[File:Matrix Product - Matrix Multiplication - Pareto Frontier.png|1000px]]
 
== References/Citation ==
 
https://arxiv.org/pdf/2010.05846.pdf

Revision as of 11:18, 15 February 2023

Description

Matrix Multiplication or Matrix Product is a binary operation that produces a matrix from two matrices with entries in a field; or; more generally; in a ring or even a semiring.

Related Problems

Subproblem: Boolean Matrix Multiplication, Matrix Product Verification

Related: Boolean Matrix Multiplication (Combinatorial), Matrix Product Verification, Distance Product, $(\min, \leq)$ Product

Parameters

n: dimension of square matrix

Table of Algorithms

Name Year Time Space Approximation Factor Model Reference
Naive algorithm 1940 $O(n^{3})$ $O({1})$ auxiliary Exact Deterministic
Strassen's algorithm 1969 $O(n^{(log7/log2)}) ~ O(n^{2.{80}7})$ $O(n^{2})$ Exact Deterministic Time & Space
Pan's algorithm 1978 $O(n^{(log({143640})/log({70}))}) ~ O(n^{2.{79}5})$ $O(n^{2})$ Exact Deterministic Time
Romani's algorithm 1981 $O(n^{2.{5166}5})$ $O(n^{2})$ Exact Deterministic Time
Coppersmith–Winograd algorithm 1981 $O(n^{2.{49554}8})$ $O(n^{2})$ Exact Deterministic Time
Strassen's algorithm 1986 $O(n^{(log54/log5)}) ~ O(n^{({2.4785})})$ $O(n^{2})$ Exact Deterministic Time
Coppersmith–Winograd algorithm 1990 $O(n^{2.{375}5})$ $O(n^{2})$ Exact Deterministic Time
Vassilevska Williams 2014 $O(n^{2.{37287}3})$ $O(n^{2})$ Exact Deterministic Time
François Le Gall 2014 $O(n^{2.{372863}9})$ $O(n^{2})$ Exact Deterministic Time
Bini's algorithm 1979 $O(n^{2.{779}9})$ $O(n^{2})$ $O(n logn)$ error Deterministic Time
Schonhage's algorithm 1980 $O(n^{({3}*log52/log110)}) ~ O(n^{2.{521}8})$ $O(n^{2})$ ? Deterministic Time

Time Complexity graph

Matrix Product - Matrix Multiplication - Time.png

Space Complexity graph

Matrix Product - Matrix Multiplication - Space.png

Pareto Decades graph

Matrix Product - Matrix Multiplication - Pareto Frontier.png

References/Citation

https://arxiv.org/pdf/2010.05846.pdf