Definizione di esponente della moltiplicazione di matrici


15

Colloquialmente, la definizione dell'esponente di moltiplicazione di matrici è il valore più piccolo per il quale esiste un noto algoritmo di moltiplicazione di matrici . Ciò non è accettabile come definizione matematica formale, quindi immagino che la definizione tecnica sia qualcosa di simile all'infimo su tutto tale che esiste un algoritmo di moltiplicazione di matrici in .n ω t n tωnωtnt

In questo caso, non possiamo dire che esiste un algoritmo per la moltiplicazione di matrici in o addirittura , semplicemente che per tutti esiste un algoritmo in . Spesso, tuttavia, documenti e risultati che utilizzano la moltiplicazione di matrici riporteranno il loro costo semplicemente come . n ω + o ( 1 ) ϵ > 0 n ω + ϵ O ( n ω )nωnω+o(1)ε>0nω+εO(nω)

Esiste una definizione alternativa di che consente questo utilizzo? Ci sono risultati che garantiscono l'esistenza di un algoritmo di tempo o ? O l'uso semplicemente trascurato?n ω n ω + o ( 1 ) O ( n ω )ωnωnω+o(1)O(nω)


2
Se vuoi semplicemente usare la moltiplicazione della matrice come una scatola nera, il modo più semplice è dire "Lascia che sia tale che possiamo moltiplicare -matrici con operazioni aritmetiche "). Naturalmente, non è quindi l'esponente della moltiplicazione di matrici, ma può essere arbitrariamente vicino. Se vuoi dichiarare l'esponente della tua corsa finale in rappresentazione decimale, attualmente devi comunque arrotondare, poiché tutte le stime non banali per cui sono a conoscenza sono numeri irrazionali o sequenze infinite. n × n O ( n ω ) ω ωωn×nO(nω)ωω
Markus Bläser,

2
ω è in genere definito come l'informazione su tutti i reali per andando a tale che esiste un algoritmo temporale che moltiplica due matrici (dove il tempo è il numero di aggiunte, moltiplicazioni e divisioni nel campo sottostante). Questo significa anche che tecnicamente dovremmo sempre scrivere ma che diventa disordinato, quindi quando vedi dovresti pensare dove M (n ) è il runtime di un algoritmo di moltiplicazione di matrici. n O ( n k ) n × n n ω + o ( 1 ) O ( n ω ) O ( M ( n ) ) M ( n )KnO(nK)n×nnω+o(1)O(nω)O(M(n))M(n)
Virgi,

Risposte:


20

L'esponente della moltiplicazione di matrici essendo non garantisce l'esistenza di un algoritmo che gira nel tempo , ma solo che per ogni , esiste un algoritmo che gira in . Infatti, se riesci a trovare un algoritmo che gira nel tempo , allora questo mostra che .O ( n ω ) ϵ > 0 O ( n ω + ϵ ) O ( n 2 p o l y l o g ( n ) ) ω = 2ωO(nω)ε>0O(nω+ε)O(n2polylog(n))ω=2

Puoi trovare la definizione formale nel libro Algebraic Complexity Theory di Peter Bürgisser, Michael Clausen, Amin Shokrollahi.


7

Un commento secondario troppo lungo per essere un commento:

A volte, quando si verifica un problema per il quale esiste un algoritmo con tempo di esecuzione per ogni , esiste un algoritmo con tempo di esecuzione .ϵ>0 n k + o ( 1 )O(nk+ϵ)ϵ>0nk+o(1)

Ad esempio, a volte ottieni algoritmi che vanno come per alcune funzioni in rapida crescita (come ). Se si imposta su (diciamo) , allora sarà o (1). Nell'esempio con essendo , puoi scegliere come , che dà , che è o (1). Quindi il tempo di esecuzione finale di questo algoritmo sarà , poiché anche è . f 2 2 1 / ϵ f ( 1 / ϵ ) log n ϵ f ( 1 / ϵ ) 2 2 1 / ϵ 1 / ϵ log log log n ϵ = 1 / ( log log log n ) n k + o ( 1 )f(1/ϵ)nk+ϵf221/εf(1/ϵ)lognεf(1/ε)221/ϵ1/ϵlogloglognϵ=1/(logloglogn)nk+o(1)lognno(1)


Immagino che l'algoritmo Coppersmith-Winograd rientri in questa categoria?
David Harris,

2
@DavidHarris: Non lo so. Forse qualcuno che capisce l'algoritmo potrebbe essere in grado di far luce su questo. Volevo solo dire che spesso non è così brutto come sembra. O(nk+ϵ)
Robin Kothari,

5

È noto il risultato di Coppersmith e Winograd che il tempo non può essere realizzato da nessun singolo algoritmo. Ma ho letto che si sono limitati agli algoritmi basati su identità bilineari simili a Strassen, quindi non lo so per certo dal momento che il documento è dietro un paywall.O(nω)


3

Non sono d'accordo con la tua affermazione nella domanda che non è ben definito dal "valore più piccolo per il quale esiste un noto algoritmo di moltiplicazione di matrice ". Quando le persone usano questa costante, è perché il loro algoritmo si basa su una moltiplicazione di matrice e, per una complessità , significano "la complessità ottimale del nostro algoritmo è data dall'algoritmo ottimale per la moltiplicazione di matrice".ωnωnω

Non sto dicendo che altrimenti non è possibile definire (es. Dire che è la migliore complessità raggiungibile).ωω

A proposito, il limite superiore più noto per la moltiplicazione della matrice è stato appena migliorato a se non sbaglio. 2,3737


3
Non vedo come la conoscenza umana possa far parte di una definizione matematica
David Harris,

2
L'esperienza recente dimostra che è molto più facile quantificare su tutti gli algoritmi rispetto a tutti gli algoritmi attualmente conosciuti dall'umanità ;-)
Markus Bläser,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.