Definição de expoente de multiplicação de matrizes

15

Coloquialmente, a definição do expoente de multiplicação de matrizes é o menor valor para o qual existe um algoritmo conhecido de multiplicação de matrizes . Como não é aceitável como definição matemática formal, acho que a definição técnica é algo como o mínimo em todo tal forma que existe um algoritmo de multiplicação de matrizes em .n ω t n tωnωtnt

Nesse caso, não podemos dizer que existe um algoritmo para multiplicação de matrizes em ou mesmo , apenas que para todo existe um algoritmo em . Muitas vezes, no entanto, trabalhos e resultados que usam multiplicação de matrizes relatam seu custo simplesmente como . n ω + o ( 1 ) ϵ > 0 n ω + ϵ O ( n ω )nωnω+o(1)ϵ>0nω+ϵO(nω)

Existe alguma definição alternativa de que permita esse uso? Existem resultados que garantem que um algoritmo de tempo ou n ^ {\ omega + o (1)} exista? Ou o uso O (n ^ {\ omega}) é simplesmente desleixado?n ω n ω + o ( 1 ) O ( n ω )ωnωnω+o(1)O(nω)

David Harris
fonte
2
Se você deseja apenas usar a multiplicação de matrizes como uma caixa preta, a maneira mais fácil é dizer "Seja ω tal que possamos multiplicar n×n -matrices com operações aritméticas O(nω) ". Obviamente, ω não é o expoente da multiplicação de matrizes, mas pode ser arbitrariamente próximo. Se você deseja declarar o expoente da sua execução final na representação decimal, atualmente você precisa arredondar de qualquer maneira, pois todas as estimativas não triviais para ω quais tenho conhecimento são números irracionais ou seqüências infinitas.
Markus Bläser
2
ω é tipicamente definido como o menor de todos os reais k para n indo para modo que exista um algoritmo de tempo O(nk) que multiplique duas n×n matrizes (onde o tempo é o número de adições, multiplicações e divisões no campo subjacente). Isso também significa que tecnicamente sempre devemos escrever nω+o(1) mas isso fica confuso; portanto, quando você vê O(nω) deve pensar em O(M(n)) onde M(n) é o tempo de execução de um algoritmo de multiplicação de matrizes.
virgi

Respostas:

20

O expoente de multiplicação de matrizes não garante que exista um algoritmo executado no tempo , mas apenas que para cada , existe um algoritmo executado em . De fato, se você puder encontrar um algoritmo que seja executado no tempo , isso mostrará que .ωO(nω)ϵ>0O(nω+ϵ)O(n2polylog(n))ω=2

Você pode encontrar a definição formal no livro Teoria da Complexidade Algébrica de Peter Bürgisser, Michael Clausen, Amin Shokrollahi.

MCH
fonte
7

Um comentário menor que é muito longo para ser um comentário:

Às vezes, quando você tem um problema para o qual existe um algoritmo com tempo de execução para cada ϵ > 0 , existe um algoritmo com tempo de execução n k + o ( 1 ) .O(nk+ϵ)ϵ>0nk+o(1)

Por exemplo, às vezes você obtém algoritmos que funcionam como para alguma função de crescimento rápido f (como 2 2 1 / ϵ ). Se você definir f ( 1 / ϵ ) para (digamos) log n , ϵ será o (1). No exemplo com f ( 1 / ϵ ) sendo 2 2 1 / ϵ , você pode escolher 1 / ϵf(1/ϵ)nk+ϵf221/ϵf(1/ϵ)lognϵf(1/ϵ)221/ϵ1/ϵseja , que fornece ϵ = 1 / ( log log log n ) , que é o (1). Portanto, o tempo de execução final desse algoritmo será n k + o ( 1 ) , uma vez que log n também é n o ( 1 ) .logloglognϵ=1/(logloglogn)nk+o(1)lognno(1)

Robin Kothari
fonte
Eu imagino que o algoritmo Coppersmith-Winograd se enquadra nessa categoria?
David Harris
2
@ DavidHarris: Não sei sobre isso. Talvez alguém que entenda o algoritmo possa esclarecer isso. Eu só queria dizer que frequentemente não é tão ruim quanto parece. O(nk+ϵ)
precisa
5

É bem sabido o resultado de Coppersmith e Winograd que o tempo não pode ser realizado por nenhum algoritmo isolado. Mas eu li que eles se restringiam a algoritmos baseados em identidades bilineares do tipo Strassen, então não tenho certeza, já que o jornal está por trás de um paywall.O(nω)

Diego de Estrada
fonte
3

Não concordo com sua afirmação na pergunta de que não está bem definido pelo "menor valor para o qual existe um algoritmo conhecido de multiplicação de matrizes n ω ". Quando as pessoas estão usando essa constante, é porque seu algoritmo se baseia em uma multiplicação de matrizes e, por uma complexidade n ω , elas significam "a complexidade ideal de nosso algoritmo é dada pelo algoritmo ideal de multiplicação de matrizes".ωnωnω

Não estou dizendo que não seja possível definir outra maneira (por exemplo, dizendo que ω é a melhor complexidade possível).ωω

Aliás, o limite superior mais conhecido para multiplicação de matrizes foi aprimorado para se não me engano. 2.3737

Bruno
fonte
3
Eu não vejo como o conhecimento humano pode ser parte de uma definição matemática
David Harris
2
Mostra a experiência recente que é muito mais fácil de quantificar sobre todos os algoritmos do que sobre todos os algoritmos atualmente conhecidos pela humanidade ;-)
Markus Blaser