A prova de que a multiplicação de matrizes não está em hora

39

Acredita-se que, para todo , é possível multiplicar duas matrizes em . Alguma discussão está aqui .ϵ>0n×nO(n2+ϵ)

Perguntei a algumas pessoas que estão mais familiarizadas com a pesquisa se elas pensam que existe um independente de modo que exista um algoritmo para multiplicação de matrizes, e elas parecem ter intuição de que a resposta é "não", mas não conseguiu explicar o porquê. Ou seja, eles acreditam que podemos fazê-lo no tempo , mas não no tempo .k>0nO(n2logkn)O(n2.001)O(n2log100n)

Que razões existem para acreditar que não há algoritmo em um fixo ?O(n2logkn)k>0

Brian
fonte

Respostas:

29

Existe um algoritmo para multiplicar uma matriz com uma matriz em operações aritméticas . A principal identidade usada para isso vem do artigo de Coppersmith "Multiplicação rápida de matrizes retangulares", mas a explicação de por que leva a vez de está no apêndice do artigo de Williams , "Novos algoritmos e limites inferiores para circuitos com limiares lineares".N×N0.172N0.172×NN2polylog(N)N2polylog(N)N2+ϵ

Isso funciona apenas porque a identidade do Coppersmith possui uma estrutura adicional da qual você pode aproveitar, e os algoritmos MM mais recentes parecem não ter essa estrutura. Dito isto, não sei por que não se pode esperar estender essa abordagem à multiplicação de matrizesN×N×N

Josh Alman
fonte
11

Bem, uma coisa é que acho que todas as construções que conhecemos - e até as famílias de construções potenciais que as pessoas propuseram (por exemplo, abordagens de Cohn-Umans, generalizações de Coppersmith-Winograd) - "simplesmente" produziriam uma família de algoritmos correndo no tempo . Portanto, para ter um único algoritmo executado em , ele teria que ser não apenas assintoticamente melhor do que as abordagens atuais, mas teria que parecer realmente diferente.AϵO(n2+ϵ)O(n2poly(logn))

Grande advertência: eu acho. Eu realmente nunca pensei muito sobre o quanto alguém teria que modificar / adicionar às abordagens existentes para que eles pudessem produzir plausivelmente um único algoritmo executando no tempo .O(n2poly(logn))

Joshua Grochow
fonte
3
Não tenho certeza de como ter uma família não leva plausivelmente a O (n ^ 2poly (log n)), pois, se alguém puder descrever a família suficientemente bem, poderá escolher membros cada vez mais eficientes da família para n maiores. A única razão para que isso não seja plausivelmente O (n ^ 2poly (log N)) é que as constantes envolvidas provavelmente seriam muito grandes, mas não é óbvio que esse seja necessariamente o caso.
JoshuaZ 11/09
1
@ JoshuaZ: Em princípio, não; na prática, cada membro da família que surge dessas abordagens produz um algoritmo com tempo de execução , e a ideia da maioria das abordagens é simplesmente que você tem uma família que, para qualquer , existe um membro da família resultando em um algoritmo com tempo de execução . ε > 0 O ( n 2 + ε )O(n2+x)ε>0O(n2+ε)
Joshua Grochow 11/09
1
@ JoshuaZ Suponho que outra maneira ainda mais estranha de fracassar seria se, de alguma forma, escolher / construir um membro da família levasse mais do que O (n ^ 2 poli (log n)) tempo - por exemplo, talvez o código O (1 / e) seja necessário para implementar o algoritmo O (n ^ (2 + e)) ou algo assim. Isso não seria selvagem?
Daniel Wagner
10

Josh Alman mostrou alguns resultados interessantes de MM, que ganharam o CCC 2019 como melhor trabalho para estudantes! http://drops.dagstuhl.de/opus/volltexte/2019/10834/pdf/LIPIcs-CCC-2019-12.pdf

Rupei Xu
fonte
6
Embora esse seja definitivamente um resultado muito interessante e interessante, eu não o considero uma evidência de que o MM não possa ser feito em . É uma evidência de que a degeneração no estilo CW de potência de alto tensor provavelmente não pode fazer isso por você. Mas existem muitas outras construções possíveis, por exemplo, começando com um tensor de base muito diferente ou a abordagem teórica de grupo de Cohn-Umans (que pode, em princípio, produzir famílias infinitas de algoritmos que não são apenas degenerações de potências tensoras altas). um inicial). O(n2poly(logn))
Joshua Grochow 10/09
4
@JoshuaGrochow Obrigado por apontar esta questão.
Rupei Xu 10/09