Qual è la struttura più generale su cui è possibile eseguire la verifica del prodotto matrice in tempo?


18

Nel 1979, Freivalds mostrò che la verifica dei prodotti della matrice su qualsiasi campo poteva essere effettuata in tempi randomizzati . Più formalmente, date tre matrici A, B e C, con voci da un campo F, il problema di verificare se AB = C ha un algoritmo temporale randomizzato .O ( n 2 )O(n2)O(n2)

Questo è interessante perché l'algoritmo più veloce conosciuto per la moltiplicazione delle matrici è più lento di così, quindi controllare se AB = C è più veloce del calcolo C.

Voglio sapere qual è la struttura algebrica più generale su cui la verifica del prodotto matrice ha ancora un algoritmo tempo (randomizzato). Poiché l'algoritmo originale funziona su tutti i campi, suppongo che funzioni anche su tutti i domini integrali.O(n2)

La migliore risposta che ho potuto trovare a questa domanda è stata nelle equivalenze subcubiche tra problemi di percorso, matrice e triangolo , in cui si dice che "la verifica del prodotto matriciale su anelli può essere eseguita in tempo randomizzato [BK95]". ([BK95]: M. Blum e S. Kannan. Progettazione di programmi che controllano il loro lavoro. J. ACM, 42 (1): 269–291, 1995.)O(n2)

Innanzitutto, gli anelli sono la struttura più generale su cui questo problema ha un algoritmo randomizzato ? In secondo luogo, non sono riuscito a vedere come i risultati di [BK95] mostrano un algoritmo temporale su tutti gli anelli. Qualcuno può spiegare come funziona?O ( n 2 )O(n2)O(n2)


Una domanda stupida: è ovvio che la verifica deterministica è dura quanto la moltiplicazione? Che cosa succede se ti viene dato non solo A, B e C ma anche un certificato compatto; aiuta qualcosa?
Jukka Suomela,

@Jukka: credo che il miglior algoritmo deterministico per questo problema non sia più veloce della moltiplicazione matriciale, ma non so se c'è un motivo per cui questo dovrebbe essere il caso. Per quanto riguarda la seconda domanda, se AB non è uguale a C, esiste un breve certificato che funziona: la voce di C non è corretta e la riga corrispondente di A e la colonna di B.
Robin Kothari

Risposte:


14

Ecco un rapido argomento per il motivo per cui funziona su anelli. Date le matrici , B , C , verifichiamo A B = C selezionando un vettore di bit casuale v , quindi controllando se A B v = C v . Questo passa chiaramente se A B = C .ABCAB=CvABv=CvAB=C

Supponiamo che e A B v = C v . Lasciate D = A B - C . D è una matrice diversa da zero per cui D v = 0 . Qual è la probabilità che ciò accada? Sia D [ i , j ] una voce diversa da zero. Per ipotesi, j D [ i , j ] v [ j ] = 0ABCABv=CvD=ABCDDv=0D[i,j]jD[i,j]v[j]=0. Con probabilità , v [ j ' ] = 1 , quindi abbiamo1/2v[j]=1

.D[i,j]+jjD[i,j]v[j]=0

Qualsiasi anello sotto la sua operazione di addizione è un gruppo additivo, quindi esiste un inverso univoco di , cioè, - D [ i , j ] . Ora, la probabilità che l'evento negativo - D [ i ' , j ' ] = Σ j j ' D [ i ' , j ] v [ j ] è al massimo 1 / 2D[i,j]D[i,j]D[i,j]=jjD[i,j]v[j]1/2. (Un modo per vedere questo è il "principio delle decisioni differite": affinché la somma sia uguale a , almeno un altro D [ i , j ] deve essere diverso da zero. Quindi considera v [ j ] corrispondente a queste altre voci diverse da zero. Anche se impostiamo tutte queste v [ j ] tranne una in modo ottimale , esiste comunque la stessa probabilità che l'ultima sia 0 o 1D[i,j]D[i,j]v[j]v[j]01, Ma ancora solo uno di questi valori potrebbero rendere la somma finale pari a .) Quindi, con probabilità di almeno 1 / 4 , siamo riusciti a scoprire che D v 0 , quando D è diverso da zero. (Nota v [ j ] e v [ j ] sono scelti indipendentemente per j j .)D[i,j]1/4Dv0Dv[j]v[j]jj

Come vedi, l'argomento sopra dipende dalla sottrazione. Quindi non funzionerà (ad esempio) su semirazioni commutative arbitrarie. Forse potresti rilassare le proprietà moltiplicative della struttura algebrica e ottenere ancora il risultato?


Bene grazie. Vedo il tuo punto in merito alla possibilità di ridurre i vincoli sulla struttura moltiplicativa. Solo per mia informazione, non è questo lo stesso algoritmo di quello nel documento originale di Freivalds?
Robin Kothari,

L'algoritmo di Freivalds seleziona un vettore casuale con componenti in {-1,1}. Anche questo funziona. Se siete più attenti è possibile ottenere la probabilità di successo di essere di almeno . 1/2
Ryan Williams,
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.