AccueilđŸ‡«đŸ‡·Chercher

Complexité de la multiplication de matrices

En informatique théorique, la complexité de la multiplication de matrices est le nombre d'opérations requises pour l'opération de produit matriciel. Les algorithmes de multiplication de matrices constituent un sujet central dans les algorithmes théoriques et numériques en algÚbre linéaire numérique et en optimisation, donc déterminer la complexité en temps du produit est d'une importance pratique.

L'application directe de la définition mathématique de la multiplication de matrices donne un algorithme qui nécessite opérations sur le corps de base pour multiplier deux matrices d'ordre . Il existe des algorithmes qui demandent moins d'opérations que le simple « algorithme naïf ». Le premier de ces algorithmes est l'algorithme de Strassen, conçu par Volker Strassen en 1969 et souvent appelé « multiplication matricielle rapide »[1]. Le nombre minimal d'opérations du corps de base nécessaires pour multiplier deux matrices carrées d'ordre est encore inconnu en 2023. Il s'agit là d'une question ouverte majeure en informatique théorique. Toutefois, ce nombre est au moins d'ordre .

En octobre 2022, la meilleure complexitĂ© en temps de multiplication de matrices est , valeur annoncĂ©e par Ran Duan, Hongxun Wu et Renfei Zhou dans une prĂ©publication[2]. Cett borne amĂ©liore la borne de donnĂ©e par Josh Alman et Virginia Vassilevska Williams (en)[3] - [4]. Cependant, cette amĂ©lioration et d'autres amĂ©liorations similaires de l'algorithme de Strassen ne sont pas utilisĂ©es en pratique, car elles sont des « algorithmes galactiques » en ce sens que la constante du est si Ă©levĂ©e qu'ils ne sont utiles que pour les matrices trop grandes pour ĂȘtre traitĂ©es par les ordinateurs actuels.

Algorithmes simples

Si et sont deux matrices d'ordre sur un anneau, leur produit est aussi une matrice d'ordre sur cet anneau, dont les entrées sont :

Algorithme élémentaire

L'approche la plus simple pour calculer le produit de deux matrices et d'ordre consiste à évaluer les expressions arithmétiques issues de la définition de la multiplication matricielle.

Cet algorithme nĂ©cessite, dans le pire des cas multiplications et additions scalaires pour calculer le produit de deux matrices carrĂ©es d'ordre . Sa complexitĂ© de calcul est dans un modĂšle de calcul oĂč les opĂ©rations Ă©lĂ©mentaires d'addition et de multiplication prennent un temps constant (en pratique, c'est le cas pour les nombres en virgule flottante, mais pas nĂ©cessairement pour les entiers).

Algorithme de Strassen

L'algorithme de Strassen améliore la multiplication matricielle naïve grùce à une approche diviser pour régner.

L'observation clĂ© est que la multiplication de deux matrices de taille 2 peut ĂȘtre effectuĂ©e avec seulement 7 multiplications, au lieu des 8 habituelles, au prix de 11 opĂ©rations d'addition et de soustraction supplĂ©mentaires. Ainsi, en traitant les matrices de taille comme des matrices Ă  entrĂ©es en blocs de taille 2, la multiplication des matrices de taille peut ĂȘtre rĂ©duite Ă  7 sous-problĂšmes de multiplication des matrices de taille . L'application rĂ©cursive de cette dĂ©marche donne un algorithme nĂ©cessitant opĂ©rations scalaires.

Contrairement aux algorithmes qui ont une complexitĂ© asymptotique meilleure, l'algorithme de Strassen est utilisable et utilisĂ© dans la pratique. La stabilitĂ© numĂ©rique est moins bonne que pour l'algorithme naĂŻf[5], mais la multiplication est plus rapide pour [6] et l'algorithme figure dans plusieurs bibliothĂšques de programmes, telles que BLAS[7]. Les algorithmes de multiplication matricielle rapide ne peuvent pas atteindre la « stabilitĂ© par composant , mais certains peuvent afficher une « stabilitĂ© par norme »[8]. L'algorithme est utile pour les grandes matrices sur des domaines exacts tels que les corps finis, oĂč la stabilitĂ© numĂ©rique ne pose pas de problĂšme.

Exposant de la multiplication matricielle

Amélioration successives des estimations de l'exposant de la complexité de calcul de la multiplication matricielle .
Chronologie de l'exposant de multiplication matricielle
Année Oméga Auteurs
19692,8074Strassen[1]
19782,796Pan[9]
19792,780Bini, Capovani, Romani, Lotti[10]
19812,522Schönhage[11]
19812,517Romani[12]
19812,496Coppersmith, Winograd[13]
19862,479Strassen[14]
19902,3755Coppersmith, Winograd[15]
20102,3737Stothers[16]
20132.3729Williams[17] - [18]
20142.3728639Le Gall[19]
20202.3728596Alman, Williams[3]
20222.37188Duan, Wu, Zhou[2]

L'exposant de la multiplication matricielle, gĂ©nĂ©ralement notĂ© ω, est le plus petit nombre rĂ©el pour lequel deux matrices de taille sur un corps peuvent ĂȘtre multipliĂ©es en utilisant opĂ©rations Ă©lĂ©mentaires.

La borne infĂ©rieure naĂŻve et la multiplication Ă©lĂ©mentaire de matrices donnent l'encadrement . Il existe une sĂ©rie d'algorithmes de multiplication matricielle pour amĂ©liorer ces bornes sur ω .

Avant l'algorithme de Duan, Wu et Zhou, la meilleure borne sur ω Ă©tait ω < 2,3728596, due Ă  Josh Alman et Virginia Vassilevska Williams[3]. Cet algorithme, comme tous les autres algorithmes rĂ©cents dans cette direction de recherche, utilise une mĂ©thode dite mĂ©thode laser, qui est une gĂ©nĂ©ralisation de l'algorithme donnĂ© par Don Coppersmith et Shmuel Winograd en 1990 et qui Ă©tait le meilleur algorithme de multiplication matricielle jusqu'en 2010. L'idĂ©e fondamentale de ces algorithmes est similaire Ă  l'algorithme de Strassen : c'est une mĂ©thode pour multiplier deux matrices k × k avec moins de k3 multiplications, et qui applique la technique de maniĂšre rĂ©cursive. La mĂ©thode laser a des limites sur l'exposant et ne peut pas ĂȘtre utilisĂ©e pour montrer que ω < 2.3725[20]. Duan, Wu et Zhou identifient une source d'amĂ©lioration dans la mĂ©thode laser appelĂ©e « perte de combinaison »[2]. Ils l'exploitent dans une variante de la mĂ©thode laser qu'ils utilisent pour montrer ω < 2.37188, amĂ©liorant ainsi la barriĂšre de la mĂ©thode laser conventionnelle. Avec cette nouvelle approche, une autre limite[20] s'applique selon Duan, Wu et Zhou et qui montre qu'Ă  son tour la valeur ω < 2.3078 ne peut ĂȘre franchie uniquement en traitant la perte de combinaison dans la mĂ©thode laser.

Algorithmes de multiplication matricielle et théorie des groupes

Henry Cohn, Robert Kleinberg, BalĂĄzs Szegedy et Chris Umans[21] - [22] placent les mĂ©thodes telles que les algorithmes de Strassen et de Coppersmith–Winograd dans le contexte entiĂšrement diffĂ©rent de thĂ©orie des groupes, en utilisant des triplets de sous-ensembles de groupes finis qui satisfont une propriĂ©tĂ© de disjonction appelĂ©e la propriĂ©tĂ© du triple produit (en) (abrĂ©gĂ©e en PTP). Ils Ă©noncent Ă©galement un ensemble de conjectures qui, si elles sont vraies, impliqueraient qu'il existe des algorithmes de multiplication matricielle avec une complexitĂ© essentiellement quadratique. Cela dĂ©montrerait que l'exposant optimal de la multiplication matricielle est 2, ce qui est effectivement conjecturĂ©. Une de ces conjectures est que les familles de produits en couronne de groupes abĂ©liens avec des groupes symĂ©triques rĂ©alisent des familles de triplets de sous-ensembles avec une version simultanĂ©e du PTP. Plusieurs de leurs conjectures ont depuis Ă©tĂ© rĂ©futĂ©es par Blasiak, Cohn, Church, Grochow, Naslund, Sawin et Umans en utilisant la mĂ©thode dite du Slice Rank[23]. De plus, Alon, Shpilka et Chris Umans ont montrĂ© que certaines de ces conjectures impliquant l'existence d'une multiplication matricielle rapide sont incompatibles avec une autre conjecture plausible, la conjecture du tournesol (en)[24].

Bornes infĂ©rieures pour ω

Il existe une borne infĂ©rieure triviale pour , Ă  savoir . Étant donnĂ© que tout algorithme de multiplication de deux matrices de taille doit traiter toutes les entrĂ©es, il existe une borne infĂ©rieure asymptotique triviale d'opĂ©rations pour tout algorithme de multiplication de matrices. On ne sait pas si . Une borne infĂ©rieure est , et concerne les circuits arithmĂ©tiques Ă  coefficients bornĂ©s sur les nombres rĂ©els ou complexes, et elle est due Ă  Ran Raz[25].

L'exposant est un point d'accumulation, en ce sens qu'il est le minimum de l'exposant, pris sur tout algorithme de multiplication matricielle. On sait que ce point d'accumulation n'est pas atteint. En d'autres termes, dans le modÚle de calcul usuel, il n'y a pas d'algorithme de multiplication matricielle qui utilise exactement opérations : il y au moins un facteur supplémentaire en [13].

Multiplication de matrices rectangulaires

Des techniques similaires s'appliquent Ă  la multiplication de matrices rectangulaires. L'objet d'Ă©tude central est , qui est le plus petit exposant tel que l'on peut multiplier une matrice de taille avec une matrice de taille en opĂ©rations arithmĂ©tiques. Un rĂ©sultat en complexitĂ© algĂ©brique montre que la multiplication des matrices de taille et nĂ©cessite le mĂȘme nombre d'opĂ©rations arithmĂ©tiques que la multiplication de matrices de taille et et de taille et , de sorte que cela englobe la complexitĂ© de la multiplication matricielle rectangulaire[26]. Cela gĂ©nĂ©ralise l'exposant de multiplication de matrice carrĂ©e, puisque .

Comme la sortie du problÚme de multiplication matricielle est de taille , on a pour toutes les valeurs de . Si l'on peut prouver pour certaines valeurs de entre 0 et 1 que , alors un tel résultat montre que pour ces . Le plus grand k tel que est connu sous le nom d' « exposant dual de multiplication de matrices », généralement noté α . α est appelé le « dual » car montrer que équivaut à montrer que . Comme l'exposant de multiplication matricielle, l'exposant dual de multiplication matricielle apparaßt parfois dans la complexité des algorithmes d'algÚbre linéaire numérique et d'optimisation[27].

La premiÚre borne sur α est celle de Coppersmith en 1982, qui a montré que [28]. La meilleure borne connue sur α est , donnée par Le Gall et Urrutia[26]. Cet article contient également des bornes sur .

ProblĂšmes connexes

Les problĂšmes qui ont la mĂȘme complexitĂ© asymptotique que la multiplication matricielle comprennent le dĂ©terminant, l'inversion matricielle, l'Ă©limination gaussienne. Les problĂšmes dont la complexitĂ© s'exprime en termes de comprennent le polynĂŽme caractĂ©ristique, les valeurs propres (mais pas les vecteurs propres).

Inversion de matrice, déterminant et élimination gaussienne

Dans son article de 1969, oĂč il prouve la complexitĂ© pour le calcul matriciel, Strassen a Ă©galement prouvĂ© que l'inversion matricielle, le calcul du dĂ©terminant et l'Ă©limination gaussienne ont, Ă  une constante multiplicative prĂšs, la mĂȘme complexitĂ© de calcul que la multiplication matricielle. La preuve ne fait aucune hypothĂšse sur la multiplication matricielle utilisĂ©e, sauf que sa complexitĂ© est pour certains

Le point de dĂ©part de la preuve de Strassen utilise la multiplication matricielle par blocs. Plus prĂ©cisĂ©ment, une matrice de dimension paire peut ĂȘtre partitionnĂ©e en quatre blocs de taille :

Sous cette forme, son inverse est

pourvu que A et son complément de Schur sont inversibles.

Ainsi, l'inverse d'une matrice de taille peut ĂȘtre calculĂ©e avec deux inversions, six multiplications et quatre additions ou inverses additifs de matrices . En notant respectivement , et le nombre d'opĂ©rations nĂ©cessaires pour inverser, multiplier et additionner de matrices de taille , on obtient

.

Pour on peut appliquer cette formule récursivement,

et pour , et , on obtient finalement

pour une constante d. Ceci prouve la complexitĂ© annoncĂ©e pour les matrices telles que toutes les sous-matrices qui doivent ĂȘtre inversĂ©es sont inversibles. Cette complexitĂ© est donc prouvĂ©e pour presque toutes les matrices, car une matrice avec des entrĂ©es choisies au hasard est inversible avec probabilitĂ© 1.

Le mĂȘme argument s'applique Ă  la dĂ©composition LU, car, si la matrice A est inversible, l'Ă©galitĂ©

dĂ©finit une dĂ©composition LU par blocs qui peut ĂȘtre appliquĂ©e rĂ©cursivement Ă  et Ă  pour obtenir finalement une dĂ©composition LU de la matrice d'origine.

L'argument s'applique également au déterminant, puisqu'il résulte de la décomposition LU par blocs que

.

Minimiser le nombre d'opérations

Le problĂšme de la minimisation du nombre d'opĂ©rations arithmĂ©tiques est liĂ© Ă  la minimisation du nombre de multiplications, qui est gĂ©nĂ©ralement une opĂ©ration plus coĂ»teuse que l'addition, mais ces algorithmes ne sont pas pratiques, notamment pour des petites matrices. On peut amĂ©liorer la mĂ©thode usuelle en multiplications ; ainsi des matrices de taille 4 dans peuvent ĂȘtre multipliĂ©es en 47 multiplications[29] ; des matrices de taille 3 sur un anneau commutatif, peuvent ĂȘtre multipliĂ©es en 21 multiplications [30] - [31] - [32] (23 si l'anneau n'est pas commutatif [33]). La borne infĂ©rieure des multiplications nĂ©cessaires est (multiplication d'une matrice par une matrice , avec ), ce qui signifie que le cas nĂ©cessite au moins 19 multiplications et le cas au moins 34[34]. Pour , les 7 multiplications et 15 additions sont minimales, contre seulement 4 additions avec 8 multiplications[35] - [36] - [37].

Articles liés

Références

  1. (en) Volker Strassen, « Gaussian elimination is not optimal », Numerische Mathematik, vol. 13, no 4,‎ , p. 354-356 (DOI 10.1007/BF02165411, S2CID 121656251, lire en ligne).
  2. (en) Ran Duan, Hongxun Wu et Renfei Zhou, « Faster Matrix Multiplication via Asymmetric Hashing », Arxiv,‎ (arXiv 2210.10173).
  3. (en) Josh Alman et Virginia Vassilevska Williams, « A Refined Laser Method and Faster Matrix Multiplication », 32nd Annual ACM-SIAM Symposium on Discrete Algorithms (SODA 2021),‎ , p. 522-539 (arXiv 2010.05846, lire en ligne)
  4. (en) Hartnett, « Matrix Multiplication Inches Closer to Mythic Goal », Quanta Magazine, (consulté le ).
  5. (en) Webb Miller, « Computational complexity and numerical stability », SIAM News, vol. 4, no 2,‎ , p. 97–107 (DOI 10.1137/0204009, CiteSeerx 10.1.1.148.9947)
  6. (en) Steven Skiena, The Algorithm Design Manual, Springer, (ISBN 978-1-84800-069-8, DOI 10.1007/978-1-84800-070-4_4, lire en ligne), « Sorting and Searching », p. 45–46, 401–403.
  7. (en) William H. Press, Brian P. Flannery, Saul A. Teukolsky et William T. Vetterling, Numerical Recipes: The Art of Scientific Computing, , 3e Ă©d. (ISBN 978-0-521-88068-8), 108.
  8. (en) Grey Ballard, Austin R. Benson, Alex Druinsky, Benjamin Lipshitz et Oded Schwartz, « Improving the numerical stability of fast matrix multiplication », SIAM Journal on Matrix Analysis and Applications, vol. 37, no 4,‎ , p. 1382–1418 (DOI 10.1137/15M1032168, arXiv 1507.00687, S2CID 2853388).
  9. (en) Victor Y. Pan, « Strassen's Algorithm is not Optimal: Trilinear Technique of Aggregating, Uniting and Canceling for Constructing Fast Algorithms for Matrix Operations », Proc. 19th FOCS,‎ , p. 166-176 (DOI 10.1109/SFCS.1978.34, S2CID 14348408).
  10. (en) Dario Andrea Bini, Milvio Capovani, Francesco Romani et Grazia Lotti, « complexity for approximate matrix multiplication », Information Processing Letters, vol. 8, no 5,‎ , p. 234-235 (DOI 10.1016/0020-0190(79)90113-3, lire en ligne).
  11. (en) Arnold Schönhage, « Partial and total matrix multiplication », SIAM Journal on Computing, vol. 10, no 3,‎ , p. 434-455 (DOI 10.1137/0210032).
  12. (en) Francesco Romani, « Some properties of disjoint sums of tensors related to matrix multiplication », SIAM Journal on Computing, vol. 11, no 2,‎ , p. 263-267 (DOI 10.1137/0211020).
  13. (en) Don Coppersmith et Shmuel Winograd, « On the asymptotic complexity of matrix multiplication », Proc. 22nd Annual Symposium on Foundations of Computer Science (FOCS),‎ , p. 82-90 (DOI 10.1109/SFCS.1981.27, S2CID 206558664).
  14. (en) Volker Strassen, « The asymptotic spectrum of tensors and the exponent of matrix multiplication », Proc. 27th Ann. Symp. on Foundation of Computer Science (FOCS),‎ , p. 49-54 (DOI 10.1109/SFCS.1986.52, S2CID 15077423).
  15. (en) Don Coppersmith et Shmuel Winograd, « Matrix multiplication via arithmetic progressions », Journal of Symbolic Computation, vol. 9, no 3,‎ , p. 251-280 (DOI 10.1016/S0747-7171(08)80013-2 AccĂšs libre).
  16. (en) Andrew James Stothers, On the complexity of matrix multiplication (thĂšse Ph.D.), University of Edinburgh, (lire en ligne).
  17. (en) Virginia V. Williams, « Multiplying Matrices Faster than Coppersmith-Winograd », Proc. 44th Symposium on Theory of Computing (STOC), ACM,‎ , p. 887-898 (DOI 10.1145/2213977.2214056, S2CID 14350287).
  18. (en) Virginia Vassilevska Williams, Multiplying matrices in time (Technical Report), Stanford University (lire en ligne).
  19. (en) Jean-François Le Gall, « Algebraic complexity theory and matrix multiplication », Proceedings of the 39th International Symposium on Symbolic and Algebraic Computation - ISSAC '14,‎ , p. 296-303 (DOI 10.1145/2608628.2627493, Bibcode 2014arXiv1401.7714L, arXiv 1401.7714, S2CID 2597483)
  20. (en) Ambainis, Filmus et Le Gall, « Fast Matrix Multiplication: Limitations of the Coppersmith-Winograd Method », Proceedings of the Forty-Seventh Annual ACM Symposium on Theory of Computing (STOC '15), Portland, Oregon, USA, Association for Computing Machinery,‎ , p. 585–593 (ISBN 978-1-4503-3536-2, DOI 10.1145/2746539.2746554, arXiv 1411.5414, S2CID 8332797, lire en ligne).
  21. (en) Henry Cohn, R. Kleinberg, B. Szegedy et Chris Umans, « Group-theoretic Algorithms for Matrix Multiplication », 46th Annual IEEE Symposium on Foundations of Computer Science (FOCS'05),‎ , p. 379 (DOI 10.1109/SFCS.2005.39, S2CID 41278294, lire en ligne).
  22. (en) Henry Cohn et Chris Umans, « A Group-theoretic Approach to Fast Matrix Multiplication », Proceedings of the 44th Annual IEEE Symposium on Foundations of Computer Science, 11–14 October 2003, IEEE Computer Society,‎ , p. 438–449 (DOI 10.1109/SFCS.2003.1238217, arXiv math.GR/0307321, S2CID 5890100).
  23. (en) J. Blasiak, H. Cohn, T. Church, J. Grochow, Naslund, Sawin et Umans, « On cap sets and the group-theoretic approach to matrix multiplication », Discrete Analysis,‎ , p. 1245 (DOI 10.19086/da.1245, S2CID 9687868, lire en ligne).
  24. (en) Alon, Shpilka et Umans, « On Sunflowers and Matrix Multiplication », Electronic Colloquium on Computational Complexity,‎ (lire en ligne).
  25. (en) Ran Raz, « On the complexity of matrix product », Proceedings of the Thirty-Fourth Annual ACM Symposium on Theory of Computing,‎ , p. 144–151 (ISBN 1581134959, DOI 10.1145/509907.509932, S2CID 9582328).
  26. (en) Francois Le Gall et Florent Urrutia, « Improved Rectangular Matrix Multiplication using Powers of the Coppersmith-Winograd Tensor », Proceedings of the 2018 Annual ACM-SIAM Symposium on Discrete Algorithms (SODA), Society for Industrial and Applied Mathematics,‎ , p. 1029–1046 (DOI 10.1137/1.9781611975031.67, arXiv 1708.05622, S2CID 33396059, lire en ligne).
  27. (en) Michael B. Cohen, Yin Tat Lee et Zhao Song, « Solving Linear Programs in the Current Matrix Multiplication Time », Journal of the ACM, vol. 68, no 1,‎ , p. 3:1–3:39 (DOI 10.1145/3424305, arXiv 1810.07896, S2CID 231955576).
  28. (en) D. Coppersmith, « Rapid Multiplication of Rectangular Matrices », SIAM Journal on Computing, vol. 11, no 3,‎ , p. 467–471 (ISSN 0097-5397, DOI 10.1137/0211037, lire en ligne).
  29. (en) Fawzi, A., Balog, M., Huang, A. et al., « Discovering faster matrix multiplication algorithms with reinforcement learning », Nature, no 610,‎ , p. 47–53 (DOI 10.1038/s41586-022-05172-4 AccĂšs libre, lire en ligne).
  30. (en) Andreas Rosowski, « Fast Commutative Matrix Algorithm », Arxiv,‎ (arXiv 1904.07683)
  31. O. M. Makarov, « An algorithm for multiplying 3×3 matrices », U.S.S.R. Comput. Math. Math. Phys., vol. 26, no 1,‎ , p. 179-180.
  32. (en) O. M. Makarov, « A noncommutative algorithm for multiplying 5×5 matrices using 102 multiplications », Inf. Process. Lett., vol. 23, no 3,‎ , p. 115-117 (zbMATH 0614.65037).
  33. (en) Julian D. Laderman, « A noncommutative algorithm for multiplying 3×3 matrices using 23 multiplications », Bulletin of the American Mathematical Society, vol. 82, no 1,‎ , p. 126–128 (DOI 10.1090/S0002-9904-1976-13988-2, lire en ligne).
  34. Markus BlĂ€ser, « On the complexity of the multiplication of matrices of small formats », Journal of Complexity, vol. 19, no 1,‎ , p. 43–60 (DOI 10.1016/S0885-064X(02)00007-9).
  35. (en) Shmuel Winograd, « On multiplication of 2 × 2 matrices », Linear Algebra and Its Applications, vol. 4, no 4,‎ , p. 381–388 (DOI 10.1016/0024-3795(71)90009-7).
  36. (en) Robert L. Probert, On the complexity of matrix multiplication, University of Waterloo, (OCLC 1124200063).
  37. (en) Robert L. Probert et Patrick Carl Fischer, « Decomposition techniques for matrix multiplication problems », Utilitas Mathematica, vol. 18,‎ , p. 257-267.

Liens externes

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.