Quiero saber qué algoritmo es más rápido para la multiplicación de dos números de n dígitos. ¡La complejidad del espacio se puede relajar aquí!
21
Quiero saber qué algoritmo es más rápido para la multiplicación de dos números de n dígitos. ¡La complejidad del espacio se puede relajar aquí!
Respuestas:
A partir de ahora, el algoritmo de Fürer de Martin Fürer tiene una complejidad temporal de que utiliza transformadas de Fourier sobre números complejos. Su algoritmo se basa en realidad en el algoritmo de Schönhage y Strassen que tiene una complejidad temporal de Θ ( n log ( n ) log ( log ( n ) ) )nlog(n)2Θ(log∗(n)) Θ(nlog(n)log(log(n)))
Otros algoritmos que son más rápidos que el algoritmo de multiplicación de la escuela primaria son la multiplicación Karatsuba que tiene una complejidad temporal de ≈ y el algoritmo Toom 3 que tiene una complejidad temporal deO ( n 1.585 ) Θ ( n 1.465 )O(nlog23) O(n1.585) Θ(n1.465)
Tenga en cuenta que estos son los algoritmos rápidos. Encontrar el algoritmo más rápido para la multiplicación es un problema abierto en informática.
Referencias
fuente
Tenga en cuenta que los algoritmos FFT enumerados por avi agregan una constante grande, lo que los hace poco prácticos para números menores a miles + bits.
Además de esa lista, hay algunos otros algoritmos interesantes y preguntas abiertas:
fuente