Definisi eksponen matriks-perkalian

15

Bahasa sehari-hari, definisi eksponen matriks-perkalian ω adalah nilai terkecil yang ada algoritma perkalian-matriks nω . Ini tidak dapat diterima sebagai definisi matematika formal, jadi saya kira definisi teknis adalah sesuatu seperti infimum atas semua t seperti bahwa ada algoritma matriks-perkalian dalam nt .

Dalam hal ini, kita tidak bisa mengatakan ada algoritma untuk perkalian-matriks dalam nω atau bahkan nω+o(1) , hanya saja untuk semua ϵ>0 ada algoritma dalam nω+ϵ . Namun, sering kali, makalah dan hasil yang menggunakan perkalian matriks akan melaporkan biayanya hanya sebagai O(nω) .

Apakah ada beberapa definisi alternatif yang mengizinkan penggunaan ini? Apakah ada hasil yang menjamin bahwa algoritma waktu n ω atau n ω + o ( 1 ) harus ada? Atau apakah penggunaan O ( n ω ) hanya ceroboh?ωnωnω+o(1)O(nω)

David Harris
sumber
2
Jika Anda hanya ingin menggunakan perkalian matriks sebagai kotak hitam, cara termudah adalah dengan mengatakan "Biarkan menjadi sedemikian rupa sehingga kita dapat melipatgandakan n × n-nilai dengan operasi aritmatika O ( n ω ) ". Tentu saja, ω bukan eksponen dari perkalian matriks, tetapi dapat ditutup secara sewenang-wenang. Jika Anda ingin menyatakan eksponen menjalankan final Anda dalam representasi desimal, saat ini Anda harus tetap melakukannya, karena semua perkiraan nontrivial untuk ω yang saya tahu adalah bilangan irasional atau urutan tak terbatas. ωn×nO(nω)ωω
Markus Bläser
2
biasanya didefinisikan sebagai infimum atas semua real k untuk n akan sehingga ada O ( n k ) algoritma saat itu mengalikan dua n × n matriks (di mana waktu adalah jumlah penambahan, perkalian dan divisi di bidang yang mendasarinya). Ini juga berarti bahwa secara teknis kita harus selalu menulis n ω + o ( 1 ) tetapi menjadi berantakan, jadi ketika Anda melihat O ( n ω ) Anda harus berpikir O ( M ( n)ωknO(nk)n×nnω+o(1)O(nω) mana M ( n ) adalah runtime dari algoritma perkalian matriks. O(M(n))M(n)
virgi

Jawaban:

20

Eksponen perkalian matriks menjadi tidak menjamin bahwa ada algoritma yang berjalan dalam waktu O ( n ω ) , tetapi hanya untuk setiap ϵ > 0 , ada algoritma yang berjalan di O ( n ω + ϵ ) . Memang jika Anda dapat menemukan algoritma yang berjalan dalam waktu O ( n 2 p o l y l o g ( n ) ) , maka ini menunjukkan bahwa ω = 2 .ωO(nω)ϵ>0O(nω+ϵ)O(n2polylog(n))ω=2

Anda dapat menemukan definisi formal dalam buku Algebraic Complexity Theory oleh Peter Bürgisser, Michael Clausen, Amin Shokrollahi.

KIA
sumber
7

Komentar minor yang terlalu panjang untuk dijadikan komentar:

Kadang-kadang ketika Anda memiliki masalah yang ada algoritma dengan berjalan waktu untuk setiap ε > 0 , ada sebuah algoritma dengan berjalan waktu n k + o ( 1 ) .O(nk+ϵ)ϵ>0nk+o(1)

Misalnya, terkadang Anda mendapatkan algoritme yang mirip dengan untuk beberapa fungsi yang tumbuh cepat f (seperti 2 2 1 / ϵ ). Jika Anda mengatur f ( 1 / ϵ ) menjadi (katakanlah) log n , maka ϵ akan menjadi o (1). Dalam contoh dengan f ( 1 / ϵ ) menjadi 2 2 1 / ϵ , Anda dapat memilih 1 / ϵf(1/ϵ)nk+ϵf221/ϵf(1/ϵ)lognϵf(1/ϵ)221/ϵ1/ϵ menjadi , yang memberikan εlogloglogn , yaitu o (1). Jadi waktu berjalan akhir dari algoritma ini akan n k + o ( 1 ) , karena log n juga n o ( 1 ) .ϵ=1/(logloglogn)nk+o(1)lognno(1)

Robin Kothari
sumber
I imagine that the Coppersmith-Winograd algorithm falls into this category?
David Harris
2
@DavidHarris: Don't know about that. Maybe someone who understands the algorithm might be able to shed some light on that. I just meant to say that often O(nk+ϵ) isn't as bad as it looks.
Robin Kothari
5

It is well-known the result of Coppersmith and Winograd that O(nω)-time cannot be realized by any single algorithm. But I've read that they restricted to algorithms based on Strassen-like bilinear identities, so I don't know for sure since the paper is behind a paywall.

Diego de Estrada
sumber
3

I do not agree with your statement in the question that ω is not well-defined by "the smallest value for which there is a known nω matrix-multiplication algorithm." When people are using this constant, it is because their algorithm relies on a matrix multiplication, and by a complexity nω, they mean "the optimal complexity of our algorithm is given by the optimal algorithm for matrix multiplication."

I am not saying that it is not possible to define ω otherwise (e.g. saying that ω is the best achievable complexity).

Btw, the best known upper bound for matrix multiplication has just been improved to 2.3737 if I am not mistaken.

Bruno
sumber
3
I don't see how human knowledge can be part of a mathematical definition
David Harris
2
Recent experience shows that it is much easier to quantify over all algorithms than over all algorithms currently known by humankind ;-)
Markus Bläser