Bahasa sehari-hari, definisi eksponen matriks-perkalian adalah nilai terkecil yang ada algoritma perkalian-matriks . Ini tidak dapat diterima sebagai definisi matematika formal, jadi saya kira definisi teknis adalah sesuatu seperti infimum atas semua seperti bahwa ada algoritma matriks-perkalian dalam .
Dalam hal ini, kita tidak bisa mengatakan ada algoritma untuk perkalian-matriks dalam atau bahkan , hanya saja untuk semua ada algoritma dalam . Namun, sering kali, makalah dan hasil yang menggunakan perkalian matriks akan melaporkan biayanya hanya sebagai .
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?
sumber
Jawaban:
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ω) ϵ>0 O(nω+ϵ) O(n2polylog(n)) ω=2
Anda dapat menemukan definisi formal dalam buku Algebraic Complexity Theory oleh Peter Bürgisser, Michael Clausen, Amin Shokrollahi.
sumber
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+ϵ) ϵ>0 nk+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+ϵ f 221/ϵ 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) logn no(1)
sumber
It is well-known the result of Coppersmith and Winograd thatO(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.
sumber
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 to2.3737 if I am not mistaken.
sumber