L'algoritmo di Schönhage-Strassen è un algoritmo di moltiplicazione rapido per grandi numeri interi, sviluppato da Arnold Schönhage e Volker Strassen nel 1971.[1] La sua complessità, nella notazione O-grande, è O(n log n log log n). L'algoritmo usa ricorsivi Trasformate di Fourier veloci negli anelli con 22n + 1 elementi.

L'algoritmo di Schönhage-Strassen era asintoticamente il più veloce metodo di moltiplicazione conosciuto tra il 1971 ed il 2007, finché non è stato annunciato l'algoritmo di Fürer che ha complessità asintotica minore,[2] però al momento raggiunge il vantaggio solo per numeri astronomicamente grandi e non è utilizzato praticamente.

In pratica, l'algoritmo di Schönhage-Strassen è più veloce di metodi vecchi come quello di Karatsuba e di Toom-Cook per i numeri da 2215 a 2217 (10.000 a 40.000 cifre decimali). La GNU Multi-Precision Library lo utilizza per valori di almeno 1728 a 7808 word a 64 bit (33.000 a 150.000 cifre decimali), a seconda dell'architettura.[3] C'è una realizzazione in Java dell'algoritmo di Schönhage-Strassen che lo usa per i numeri con più di 74.000 cifre decimali.[4]

Applicazioni dell'algoritmo di Schönhage-Strassen includono empirismo matematico come il GIMPS e calcolo di π, così come applicazioni pratiche quali la fattorizzazione con le curve ellittiche in cui la moltiplicazione di polinomi con coefficienti interi può essere efficientemente ridotta alla moltiplicazione di grandi numeri interi.[5]

Note

modifica
  1. ^ A. Schönhage, V. Strassen, "Schnelle Multiplikation großer Zahlen", Computing 7 (1971), pp. 281–292.
  2. ^ Martin Fürer, "Faster integer multiplication (PDF) (archiviato dall'url originale il 25 aprile 2013).", STOC 2007 Proceedings, pp. 57–66.
  3. ^ MUL_FFT_THRESHOLD, in GMP developers' corner. URL consultato il 14 aprile 2013 (archiviato dall'url originale il 24 novembre 2010).
  4. ^ An improved BigInteger class which uses efficient algorithms, including Schönhage-Strassen..
  5. ^ Pierrick Gaudry, Alexander Kruppa, Paul Zimmermann, A GMP-based Implementation of Schönhage–Strassen's Large Integer Multiplication Algorithm (PDF), su loria.fr, pp. 167-174.

📚 Artikel Terkait di Wikipedia

Moltiplicazione di matrici

Matrix multiplication via arithmetic progressions, J. Symbolic Comput. 9, p. 251-280, 1990. (EN) Robinson, Sara, Toward an Optimal Algorithm for Matrix

Algoritmo di Karatsuba

Eric W. Weisstein, Karatsuba Multiplication, su MathWorld, Wolfram Research. Algorithme de Karatsuba pour la multiplication Rapide, su gersoo.free.fr. URL

Competizione NIST per funzioni hash

consultato il 6 novembre 2008. (EN) NIST Selects Winner of Secure Hash Algorithm (SHA-3) Competition, su nist.gov, NIST, 2 ottobre 2012. URL consultato

Rolling hash

dati usando come hash una somma mobile. ^ M. Fürer, Faster integer multiplication, in: STOC ’07, 2007, pp. 57–66. Daniel Lemire, Owen Kaser: Recursive