Na ciência da computação teórica, a complexidade computacional da multiplicação de matrizes determina quão rapidamente a operação de multiplicação de matrizes pode ser realizada. Algoritmos de multiplicação de matrizes são uma sub-rotina central em algoritmos teóricos e numéricos para álgebra linear numérica e otimização, portanto encontrar o algoritmo mais rápido para multiplicação de matrizes é de grande relevância prática.

Aplicar diretamente a definição matemática de multiplicação de matrizes dá um algoritmo que requer n3 operações de corpo para multiplicar duas matrizes n × n sobre esse corpo (Θ(n3) em notação big O). Surpreendentemente, existem algoritmos que fornecem melhores tempos de execução do que este algoritmo "escolar" direto. O primeiro a ser descoberto foi o algoritmo de Strassen, concebido por Volker Strassen em 1969 e frequentemente chamado de "multiplicação rápida de matrizes".[1] O número ótimo de operações de corpo necessárias para multiplicar duas matrizes quadradas n × n a menos de constantes multiplicativas ainda é desconhecido. Esta é uma importante questão em aberto na ciência da computação teórica.

Desde janeiro de 2024 (2024 -01), a melhor cota na complexidade assintótica de um algoritmo de multiplicação de matrizes é O(n2.371339).[2] No entanto, esta e outras melhorias semelhantes a Strassen não são usadas na prática, porque são algoritmos galácticos: o coeficiente constante escondido pela notação big O é tão grande que eles só valem a pena para matrizes grandes demais para serem manipuladas em computadores atuais.[3][4]

Algoritmos simples

editar

Se A, B são duas matrizes n × n sobre um corpo, então seu produto AB também é uma matriz n × n sobre esse corpo, definida entrada a entrada como

Algoritmo escolar

editar
 Nota: Para técnicas de implementação (em particular algoritmos paralelos e distribuídos), veja Algoritmo de multiplicação de matrizes.

A abordagem mais simples para calcular o produto de duas matrizes n × n A e B é calcular as expressões aritméticas provenientes da definição de multiplicação de matrizes. Em pseudocódigo:

entrada A e B, ambas matrizes n por n
inicialize C como uma matriz n por n de todos os zeros
para i de 1 até n:
    para j de 1 até n:
        para k de 1 até n:
            C[i][j] = C[i][j] + A[i][k]*B[k][j]
saída C (como A*B)

Este algoritmo requer multiplicações e adições de escalares para calcular o produto de duas matrizes quadradas n×n. Sua complexidade computacional é, portanto, , em um modelo de computação onde as operações de corpo (adição e multiplicação) levam tempo constante (na prática, este é o caso para números de ponto flutuante, mas não necessariamente para inteiros).

Algoritmo de Strassen

editar

O algoritmo de Strassen melhora a multiplicação de matrizes ingênua através de uma abordagem de dividir para conquistar. A observação chave é que multiplicar duas matrizes 2 × 2 pode ser feito com apenas sete multiplicações, em vez das oito usuais (à custa de 11 operações de adição e subtração adicionais). Isso significa que, tratando as matrizes de entrada n×n como matrizes em blocos 2 × 2, a tarefa de multiplicar duas matrizes n×n pode ser reduzida a sete subproblemas de multiplicação de duas matrizes n/2×n/2. Aplicando isso recursivamente obtém-se um algoritmo que necessita de operações de corpo.

Ao contrário de algoritmos com complexidade assintótica mais rápida, o algoritmo de Strassen é usado na prática. A estabilidade numérica é reduzida em comparação com o algoritmo ingênuo,[5] mas é mais rápido em casos onde n > 100 aproximadamente[6] e aparece em várias bibliotecas, como BLAS.[7] Algoritmos rápidos de multiplicação de matrizes não podem alcançar estabilidade componente a componente, mas alguns podem ser mostrados como exibindo estabilidade norma a norma.[8] É muito útil para matrizes grandes sobre domínios exatos, como campos finitos, onde a estabilidade numérica não é um problema.

Expoente da multiplicação de matrizes

editar
Evolução das estimativas do expoente ω ao longo do tempo para a complexidade computacional da multiplicação de matrizes
Detalhe de 1990–2024
Linha do tempo do expoente da multiplicação de matrizes
Ano Cota para ω Autores
1969 2,8074 Strassen[1]
1978 2,796 Pan[9]
1979 2,780 Bini, Capovani, Romani[10]
1981 2,522 Schönhage[11]
1981 2,517 Romani[12]
1981 2,496 Coppersmith, Winograd[13]
1986 2,479 Strassen[14]
1990 2,3755 Coppersmith, Winograd[15]
2010 2,3737 Stothers[16]
2012 2,3729 Williams[17][18]
2014 2,3728639 Le Gall[19]
2020 2,3728596 Alman, Williams[20][21]
2022 2,371866 Duan, Wu, Zhou[22]
2024 2,371552 Williams, Xu, Xu, and Zhou[23]
2024 2,371339 Alman, Duan, Williams, Xu, Xu, and Zhou[2]

O expoente da multiplicação de matrizes, geralmente denotado ω, é o menor número real para o qual quaisquer duas matrizes sobre um corpo podem ser multiplicadas usando operações de corpo. Esta notação é comumente usada em pesquisa de algoritmos, de modo que algoritmos que usam multiplicação de matrizes como uma sub-rotina tenham cotas no tempo de execução que possam ser atualizadas à medida que as cotas para ω melhoram.

Usando uma cota inferior ingênua e a multiplicação de matrizes escolar para a cota superior, pode-se concluir diretamente que 2 ≤ ω ≤ 3. Se ω = 2 é uma importante questão em aberto na ciência da computação teórica, e há uma linha de pesquisa desenvolvendo algoritmos de multiplicação de matrizes para obter melhores cotas para ω.

Todos os algoritmos recentes nesta linha de pesquisa usam o método laser, uma generalização do algoritmo de Coppersmith–Winograd, que foi dado por Don Coppersmith e Shmuel Winograd em 1990 e foi o melhor algoritmo de multiplicação de matrizes até 2010.[24] A ideia conceitual destes algoritmos é semelhante à do algoritmo de Strassen: é concebida uma maneira de multiplicar duas matrizes k × k com menos de k3 multiplicações, e esta técnica é aplicada recursivamente. O método laser tem limitações em seu poder: Ambainis, Filmus e Le Gall provam que ele não pode ser usado para mostrar que ω < 2.3725 analisando potências tensoriais cada vez maiores de uma certa identidade de Coppersmith e Winograd, nem ω < 2.3078 para uma ampla classe de variantes desta abordagem.[25] Em 2022 Duan, Wu e Zhou conceberam uma variante que quebrou a primeira das duas barreiras com ω < 2.37188,[22] eles o fazem identificando uma fonte de otimização potencial no método laser denominada perda de combinação para a qual eles compensam usando uma versão assimétrica do método de hashing no algoritmo de Coppersmith–Winograd.

No entanto, os exemplos acima são exemplos clássicos de algoritmos galácticos. Por outro lado, o algoritmo de Strassen de 1969 e o algoritmo de Pan de 1978, cujos respectivos expoentes estão ligeiramente acima e abaixo de 2,8, têm coeficientes constantes que os tornam viáveis.[26]

Reformulação da teoria dos grupos dos algoritmos de multiplicação de matrizes

editar

Henry Cohn, Robert Kleinberg, Balázs Szegedy e Chris Umans colocaram métodos como os algoritmos de Strassen e Coppersmith–Winograd em um contexto grupoteórico inteiramente diferente, utilizando triplos de subconjuntos de grupos finitos que satisfazem uma propriedade de disjunção chamada propriedade do produto triplo (TPP). Eles também fornecem conjecturas que, se verdadeiras, implicariam que existem algoritmos de multiplicação de matrizes com complexidade essencialmente quadrática. Isso implica que o expoente ótimo da multiplicação de matrizes é 2, o que a maioria dos pesquisadores acredita ser de fato o caso.[4] Uma dessas conjecturas é que famílias de produtos wreath de grupos abelianos com grupos simétricos realizam famílias de triplos de subconjuntos com uma versão simultânea da TPP.[27][28] Várias de suas conjecturas foram desde então refutadas por Blasiak, Cohn, Church, Grochow, Naslund, Sawin e Umans usando o método de posto de fatia.[29] Além disso, Alon, Shpilka e Chris Umans mostraram recentemente que algumas dessas conjecturas que implicam multiplicação rápida de matrizes são incompatíveis com outra conjectura plausível, a conjectura do girassol,[30] que por sua vez está relacionada ao problema do conjunto cap.[29]

Cotas inferiores para ω

editar

Há uma cota inferior trivial de . Como qualquer algoritmo para multiplicar duas matrizes n × n tem que processar todas as 2n2 entradas, há uma cota inferior assintótica trivial de Ω(n2) operações para qualquer algoritmo de multiplicação de matrizes. Assim . Não se sabe se . A melhor cota inferior conhecida para a complexidade da multiplicação de matrizes é Ω(n2 log(n)), para circuitos aritméticos de coeficientes limitados sobre os números reais ou complexos, e é devida a Ran Raz.[31]

Sabe-se que, sob o modelo de computação tipicamente estudado, não existe algoritmo de multiplicação de matrizes que use precisamente O(nω) operações; deve haver um fator adicional de no(1).[13]

Multiplicação de matrizes retangulares

editar

Técnicas semelhantes também se aplicam à multiplicação de matrizes retangulares. O objeto central de estudo é , que é o menor tal que se pode multiplicar uma matriz de tamanho com uma matriz de tamanho com operações aritméticas. Um resultado em complexidade algébrica afirma que multiplicar matrizes de tamanho e requer o mesmo número de operações aritméticas que multiplicar matrizes de tamanho e e de tamanho e , portanto isso abrange a complexidade da multiplicação de matrizes retangulares.[32] Isso generaliza o expoente da multiplicação de matriz quadrada, uma vez que .

Como a saída do problema de multiplicação de matrizes tem tamanho , temos para todos os valores de . Se alguém puder provar para alguns valores de entre 0 e 1 que , então tal resultado mostra que para esses . O maior k tal que é conhecido como o expoente dual da multiplicação de matrizes, geralmente denotado α. α é referido como o "dual" porque mostrar que é equivalente a mostrar que . Como o expoente da multiplicação de matrizes, o expoente dual da multiplicação de matrizes às vezes aparece na complexidade de algoritmos em álgebra linear numérica e otimização.[33]

A primeira cota para α é de Coppersmith em 1982, que mostrou que .[34] A melhor cota atual revisada por pares para α é , dada por Williams, Xu, Xu e Zhou.[23]

Problemas relacionados

editar

Problemas que têm a mesma complexidade assintótica que a multiplicação de matrizes incluem determinante, inversão de matrizes, eliminação gaussiana (veja a próxima seção). Problemas com complexidade que é expressável em termos de incluem polinômio característico, autovalores (mas não autovetores), forma normal de Hermite e forma normal de Smith.[carece de fontes?]

Inversão de matrizes, determinante e eliminação gaussiana

editar

Em seu artigo de 1969, onde provou a complexidade para computação de matrizes, Strassen provou também que a inversão de matrizes, o determinante e a eliminação gaussiana têm, a menos de uma constante multiplicativa, a mesma complexidade computacional que a multiplicação de matrizes. A prova não faz suposições sobre a multiplicação de matrizes usada, exceto que sua complexidade é para algum .

O ponto de partida da prova de Strassen é usar a multiplicação de matrizes em blocos. Especificamente, uma matriz de dimensão par 2n×2n pode ser particionada em quatro blocos n×n Sob esta forma, sua inversa é desde que A e sejam invertíveis.

Assim, a inversa de uma matriz 2n×2n pode ser computada com duas inversões, seis multiplicações e quatro adições ou inversos aditivos de matrizes n×n. Segue-se que, denotando respectivamente por I(n), M(n) e A(n) = n2 o número de operações necessárias para inverter, multiplicar e somar matrizes n×n, tem-se Se pode-se aplicar esta fórmula recursivamente: Se e obtém-se eventualmente para alguma constante d.

Para matrizes cuja dimensão não é uma potência de dois, a mesma complexidade é alcançada aumentando a dimensão da matriz para uma potência de dois, preenchendo a matriz com linhas e colunas cujas entradas são 1 na diagonal e 0 em outros lugares.

Isso prova a complexidade afirmada para matrizes tais que todas as submatrizes que precisam ser invertidas são de fato invertíveis. Esta complexidade é, portanto, provada para quase todas as matrizes, pois uma matriz com entradas escolhidas aleatoriamente é invertível com probabilidade um.

O mesmo argumento se aplica à decomposição LU, pois, se a matriz A é invertível, a igualdade define uma decomposição LU em blocos que pode ser aplicada recursivamente a e para eventualmente obter uma verdadeira decomposição LU da matriz original.

O argumento se aplica também ao determinante, pois resulta da decomposição LU em blocos que

Minimizando o número de multiplicações

editar

Relacionado ao problema de minimizar o número de operações aritméticas está o de minimizar o número de multiplicações, que é tipicamente uma operação mais cara do que a adição. Um algoritmo para multiplicação de matrizes deve necessariamente usar apenas operações de multiplicação, mas esses algoritmos são impraticáveis. Melhorando das multiplicações ingênuas para a multiplicação escolar, matrizes em podem ser feitas com 47 multiplicações,[35] a multiplicação de matrizes sobre um anel comutativo pode ser feita em 21 multiplicações[36][37] (23 se não comutativo[38]). A cota inferior de multiplicações necessárias é 2mn+2nm−2 (multiplicação de matrizes n×m com matrizes m×n usando o método de substituição, ), o que significa que o caso n=3 requer pelo menos 19 multiplicações e n=4 pelo menos 34.[39] Para n=2, sete multiplicações e 15 adições ótimas são mínimas, em comparação com apenas quatro adições para oito multiplicações.[40][41]

Ver também

editar

Referências

editar
  1. a b Volker Strassen (Agosto de 1969). «Gaussian elimination is not optimal». Numerische Mathematik. 13 (4): 354–356. doi:10.1007/BF02165411 
  2. a b Alman, Josh; Duan, Ran; Williams, Virginia Vassilevska; Xu, Yinzhan; Xu, Zixuan; Zhou, Renfei (2024). «More Asymmetry Yields Faster Matrix Multiplication». arXiv:2404.16349Acessível livremente [cs.DS] 
  3. Iliopoulos, Costas S. (1989). «Worst-case complexity bounds on algorithms for computing the canonical structure of finite abelian groups and the Hermite and Smith normal forms of an integer matrix» (PDF). SIAM Journal on Computing. 18 (4): 658–669. doi:10.1137/0218045. Consultado em 16 de janeiro de 2015. Arquivado do original (PDF) em 5 de março de 2014. O algoritmo de Coppersmith–Winograd não é prático, devido à constante oculta muito grande no limite superior do número de multiplicações necessárias. 
  4. a b Robinson (Novembro de 2005). «Toward an Optimal Algorithm for Matrix Multiplication» (PDF). SIAM News. 38 (9). Mesmo que alguém consiga provar uma das conjecturas — demonstrando assim que ω = 2 — a abordagem do produto wreath é improvável de ser aplicável aos grandes problemas de matrizes que surgem na prática. [...] as matrizes de entrada devem ser astronomicamente grandes para que a diferença no tempo seja aparente. 
  5. Miller, Webb (1975). «Computational complexity and numerical stability». SIAM News. 4 (2): 97–107. doi:10.1137/0204009 
  6. Skiena, Steven (2012). «Sorting and Searching». The Algorithm Design Manual. [S.l.]: Springer. pp. 45–46, 401–403. ISBN 978-1-84800-069-8. doi:10.1007/978-1-84800-070-4_4 
  7. Press, William H.; Flannery, Brian P.; Teukolsky, Saul A.; Vetterling, William T. (2007). Numerical Recipes: The Art of Scientific Computing 3rd ed. [S.l.]: Cambridge University Press. p. 108. ISBN 978-0-521-88068-8 
  8. Ballard, Grey; Benson, Austin R.; Druinsky, Alex; Lipshitz, Benjamin; Schwartz, Oded (2016). «Improving the numerical stability of fast matrix multiplication». SIAM Journal on Matrix Analysis and Applications. 37 (4): 1382–1418. arXiv:1507.00687Acessível livremente. doi:10.1137/15M1032168 
  9. Victor Yakovlevich Pan (Outubro de 1978). Strassen's Algorithm is not Optimal: Trilinear Technique of Aggregating, Uniting and Canceling for Constructing Fast Algorithms for Matrix Operations. pp. 166–176. doi:10.1109/SFCS.1978.34 
  10. Dario Andrea Bini; Milvio Capovani; Francesco Romani; Grazia Lotti (Junho de 1979). « complexity for approximate matrix multiplication». Information Processing Letters. 8 (5): 234–235. doi:10.1016/0020-0190(79)90113-3 
  11. A. Schönhage (1981). «Partial and total matrix multiplication». SIAM Journal on Computing. 10 (3): 434–455. doi:10.1137/0210032 
  12. Francesco Romani (1982). «Some properties of disjoint sums of tensors related to matrix multiplication». SIAM Journal on Computing. 11 (2): 263–267. doi:10.1137/0211020 
  13. a b D. Coppersmith; S. Winograd (1981). On the asymptotic complexity of matrix multiplication. pp. 82–90. doi:10.1109/SFCS.1981.27 
  14. Volker Strassen (Outubro de 1986). The asymptotic spectrum of tensors and the exponent of matrix multiplication. Proc. 27th Ann. Symp. on Foundation of Computer Science (FOCS). pp. 49–54. ISBN 0-8186-0740-8. doi:10.1109/SFCS.1986.52 
  15. D. Coppersmith; S. Winograd (Março de 1990). «Matrix multiplication via arithmetic progressions». Journal of Symbolic Computation. 9 (3): 251–280. doi:10.1016/S0747-7171(08)80013-2Acessível livremente 
  16. Stothers, Andrew James (2010). On the complexity of matrix multiplication (Ph.D. thesis). University of Edinburgh 
  17. Howard J. Karloff; Toniann Pitassi, eds. (2012). Multiplying Matrices Faster than Coppersmith-Winograd. ACM. pp. 887–898. ISBN 978-1-4503-1245-5. doi:10.1145/2213977.2214056 
  18. Williams, Virginia Vassilevska. Multiplying matrices in time (PDF) (Technical Report). Stanford University 
  19. Le Gall, François (2014). «Algebraic complexity theory and matrix multiplication». In: Katsusuke Nabeshima. Proceedings of the 39th International Symposium on Symbolic and Algebraic Computation - ISSAC '14. pp. 296–303. Bibcode:2014arXiv1401.7714L. ISBN 978-1-4503-2501-1. arXiv:1401.7714Acessível livremente. doi:10.1145/2608628.2627493 
  20. Alman, Josh; Williams, Virginia Vassilevska (2024). «A Refined Laser Method and Faster Matrix Multiplication». Theoretics. arXiv:2010.05846Acessível livremente. doi:10.46298/theoretics.24.21 
  21. Hartnett, Kevin (23 de março de 2021). «Matrix Multiplication Inches Closer to Mythic Goal». Quanta Magazine (em inglês). Consultado em 1 de abril de 2021 
  22. a b Duan, Ran; Wu, Hongxun; Zhou, Renfei (2022). «Faster Matrix Multiplication via Asymmetric Hashing». arXiv:2210.10173Acessível livremente [cs.DS] 
  23. a b Vassilevska Williams, Virginia; Xu, Yinzhan; Xu, Zixuan; Zhou, Renfei. New Bounds for Matrix Multiplication: from Alpha to Omega. Proceedings of the 2024 Annual ACM-SIAM Symposium on Discrete Algorithms (SODA). pp. 3792–3835. arXiv:2307.07970Acessível livremente. doi:10.1137/1.9781611977912.134 
  24. Coppersmith, Don; Winograd, Shmuel (1990). «Matrix multiplication via arithmetic progressions» (PDF). Journal of Symbolic Computation. 9 (3). 251 páginas. doi:10.1016/S0747-7171(08)80013-2Acessível livremente 
  25. Ambainis, Andris; Filmus, Yuval; Le Gall, François (14 de junho de 2015). «Fast Matrix Multiplication». Proceedings of the forty-seventh annual ACM symposium on Theory of Computing. Col: STOC '15. Portland, Oregon, EUA: Association for Computing Machinery. pp. 585–593. ISBN 978-1-4503-3536-2. arXiv:1411.5414Acessível livremente. doi:10.1145/2746539.2746554 
  26. Laderman, Julian; Pan, Victor; Sha, Xuan-He (1992). «On practical algorithms for accelerated matrix multiplication». Linear Algebra and Its Applications. 162-164: 557–588. doi:10.1016/0024-3795(92)90393-O 
  27. Cohn, H.; Kleinberg, R.; Szegedy, B.; Umans, C. (2005). «Group-theoretic Algorithms for Matrix Multiplication». 46th Annual IEEE Symposium on Foundations of Computer Science (FOCS'05). [S.l.: s.n.] 379 páginas. ISBN 0-7695-2468-0. arXiv:math/0511460Acessível livremente. doi:10.1109/SFCS.2005.39 
  28. Cohn, Henry; Umans, Chris (2003). «A Group-theoretic Approach to Fast Matrix Multiplication». Proceedings of the 44th Annual IEEE Symposium on Foundations of Computer Science, 11–14 October 2003. [S.l.]: IEEE Computer Society. pp. 438–449. ISBN 0-7695-2040-5. arXiv:math.GR/0307321Acessível livremente. doi:10.1109/SFCS.2003.1238217 
  29. a b Blasiak, J.; Cohn, H.; Church, T.; Grochow, J.; Naslund, E.; Sawin, W.; Umans, C. (2017). «On cap sets and the group-theoretic approach to matrix multiplication». Discrete Analysis. [S.l.: s.n.] p. 1245. doi:10.19086/da.1245 
  30. Alon, N.; Shpilka, A.; Umans, C. (Abril de 2011). Noga Alon. «On Sunflowers and Matrix Multiplication». Electronic Colloquium on Computational Complexity. TR11-067 
  31. Raz, Ran (2002). «On the complexity of matrix product». Proceedings of the thiry-fourth annual ACM symposium on Theory of computing. [S.l.: s.n.] pp. 144–151. ISBN 1581134959. doi:10.1145/509907.509932 
  32. Gall, Francois Le; Urrutia, Florent (2018). Czumaj, Artur, ed. Improved rectangular matrix multiplication using powers of the Coppersmith-Winograd tensor. Proceedings of the Twenty-Ninth Annual ACM-SIAM Symposium on Discrete Algorithms, SODA 2018, New Orleans, LA, EUA, January 7–10, 2018. Society for Industrial and Applied Mathematics. pp. 1029–1046. ISBN 978-1-61197-503-1. arXiv:1708.05622Acessível livremente. doi:10.1137/1.9781611975031.67 
  33. Cohen, Michael B.; Lee, Yin Tat; Song, Zhao (5 de janeiro de 2021). «Solving Linear Programs in the Current Matrix Multiplication Time». Journal of the ACM. 68 (1): 3:1–3:39. ISSN 0004-5411. arXiv:1810.07896Acessível livremente. doi:10.1145/3424305 
  34. Coppersmith, D. (1 de agosto de 1982). «Rapid Multiplication of Rectangular Matrices». SIAM Journal on Computing. 11 (3): 467–471. ISSN 0097-5397. doi:10.1137/0211037 
  35. Veja Dados Estendidos Fig. 1: Algoritmo para multiplicar matrizes 4 × 4 em aritmética modular () com 47 multiplicações em Fawzi, A.; Balog, M.; Huang, A.; Hubert, T.; Romera-Paredes, B.; Barekatain, M.; Novikov, A.; r Ruiz, F. J.; Schrittwieser, J.; Swirszcz, G.; Silver, D.; Hassabis, D.; Kohli, P. (2022). «Discovering faster matrix multiplication algorithms with reinforcement learning». Nature (em inglês). 610 (7930): 47–53. Bibcode:2022Natur.610...47F. PMC 9534758Acessível livremente. PMID 36198780. doi:10.1038/s41586-022-05172-4 
  36. Rosowski, Andreas (2023). «Fast commutative matrix algorithms». Journal of Symbolic Computation. 114: 302–321. arXiv:1904.07683Acessível livremente. doi:10.1016/j.jsc.2022.05.002 
  37. Makarov, O. M. (1986). «An algorithm for multiplying 3×3 matrices». Zhurnal Vychislitel'noi Matematiki I Matematicheskoi Fiziki. 26 (2): 293–294. Consultado em 5 de outubro de 2022 
    Também em Makarov, O. M. (1986). «An algorithm for multiplying 3×3 matrices». USSR Computational Mathematics and Mathematical Physics. 26: 179–180. doi:10.1016/0041-5553(86)90203-X 
  38. Laderman, Julian D. (1976). «A noncommutative algorithm for multiplying 3×3 matrices using 23 multiplications». Bulletin of the American Mathematical Society (em inglês). 82 (1): 126–128. ISSN 0002-9904. doi:10.1090/S0002-9904-1976-13988-2Acessível livremente 
  39. Bläser, Markus (Fevereiro de 2003). «On the complexity of the multiplication of matrices of small formats». Journal of Complexity (em inglês). 19 (1): 43–60. doi:10.1016/S0885-064X(02)00007-9Acessível livremente 
  40. Winograd, S. (1 de outubro de 1971). «On multiplication of 2 × 2 matrices». Linear Algebra and Its Applications (em inglês). 4 (4): 381–388. ISSN 0024-3795. doi:10.1016/0024-3795(71)90009-7Acessível livremente 
  41. L., Probert, R. (1973). On the complexity of matrix multiplication. [S.l.]: University of Waterloo. OCLC 1124200063 

Ligações externas

editar

📚 Artikel Terkait di Wikipedia

Algoritmo Schönhage-Strassen

Schönhage-Strassen's Large Integer Multiplication Algorithm» (PDF). p. 2  Lüders, Christoph (2014). «Fast Multiplication of Large Integers: Implementation

Algoritmo de Coppersmith-Winograd

|arquivodata= (ajuda) 🔗  Robinson, Sara (2005), «Toward an Optimal Algorithm for Matrix Multiplication» (PDF), SIAM News, 38 (9), consultado em 15 de outubro de

Complexidade computacional de operações matemáticas

factorials". Journal of Algorithms 6, 376-380 (1985) Davie, A.M.; Stothers, A.J. (2013), «Improved bound for complexity of matrix multiplication», Proceedings of

Algoritmo de multiplicação de matrizes

Optimal Algorithm for Matrix Multiplication» (PDF). SIAM News. 38 (9)  Laderman, Julian; Pan, Victor; Sha, Xuan-He (1992). «On practical algorithms for accelerated

Siang Wun Song

and PLA folding: a graph theoretic approach. 1994: SIMD algorithms for matrix multiplication on the hypercube. 1995: Efficient Embeddings into the Hypercube

Algoritmo de Shor

1034  Harvey, David; van der Hoeven, Joris (março de 2021). «Integer multiplication in time O (n log n)» (PDF). Annals of Mathematics. 193 (2). doi:10.4007/annals

Victor Pan

implicit canceling for a new acceleration of matrix multiplication. 1998: Fast rectangular matrix multiplication and applications. 2000: Multivariate polynomials

David Archibald Cox

{\displaystyle x^{2}+n\cdot y^{2}} : Fermat, class field theory, and complex multiplication, Wiley 1989 com John Little, Henry Schenck: Toric Varieties, American