/ / Algoritmo di moltiplicazione della matrice su F_2 in appena O (n ^ 2.81 / (log n) ^ 0.4). Crea algoritmo. Ma come? - algoritmo, matrice, complessità temporale, moltiplicazione matrice, strassen

Algoritmo di moltiplicazione della matrice su F_2 in appena O (n ^ 2.81 / (log n) ^ 0.4). Crea algoritmo. Ma come? - algoritmo, matrice, complessità temporale, moltiplicazione matrice, strassen

Abbiamo una matrice con elementi nel campo degli interi modulo 2 (F_2). Stiamo cercando algoritmi che moltiplicano n x n matrix su F_2 nel giusto O(n^2.81/(log n)^0.4)

Com'è possibile?

Lo so, l'algoritmo di Strassen dà O(n^2.81), ma come possiamo ottenere questo fattore (log n)^0.4?

risposte:

4 per risposta № 1

Puoi fare quanto segue:

Prendi ciascuna matrice possibile con le dimensioni . Ci sono tali matrici ().

Precarica il risultato della moltiplicazione per queste matrici. Questo ti dà una tabella con le dimensioni . Quindi, nella fase di ricorsione dell'algoritmo Strassen, se le matrici richieste per la moltiplicazione sono abbastanza piccole, è possibile utilizzare i valori precalcolati in questa tabella (se inferiore a potresti riempire righe e colonne appropriate con zeri). Permettere . Quindi hai seguito la ricorsione:

Si noti che la profondità di ricorrenza è , quindi hai:

Usando la formula delle serie geometriche: