Respuestas:
Al usar la transformada rápida de Fourier, las multiplicaciones en los números de bits se pueden hacer en el tiempo (donde la tilde significa que estamos ignorando los factores polilogarítmicos). Al cuadrar repetidamente, podemos calcular con multiplicaciones, y cada multiplicación no implica un número mayor que , que tiene aproximadamente bits. Entonces, la cantidad de tiempo total requerida es .˜ O ( k ) n n 2 O ( log n ) n n 2 n 2 log 2 n ˜ O ( n 2 ( log n ) 2 ) = ˜ O ( n 2 )
Editado en respuesta a comentarios El tiempo para calcular se puede descomponer en el tiempo requerido para calcular y el requerido para realizar . Asumiré que multiplicar un número de bits por un número de bits requiere exactamente tiempo por el método del libro escolar; adiciones, etc. son tiempo constante. Como resultado, calcular lleva tiempo.
Supongamos que usamos exponenciación binaria para calcular . La exponenciación binaria realiza dos tipos de operaciones al calcular : cuadrar el producto actual y multiplicar el producto actual por , según si el bit actual en la expansión binaria de es 0 o 1. En el peor de los casos , es una potencia de dos, de modo que la exponenciación binaria cuadra repetidamente su producto actual hasta que alcanza la respuesta. Tenga en cuenta que tiene bits, de modo que el número de tales cuadrados es . Este es el caso que analizamos más adelante.
La primera cuadratura lleva tiempo, lo que da como resultado un producto -bit. La segunda cuadratura realiza en dos números de bits y se ejecuta en tiempo, resultando en un producto bits. Continuando, el -ésimo paso lleva tiempo y genera un producto -bit. Este proceso se detiene en el -ésimo paso; Como resultado, lleva tiempo
.
Cuando se incluye el costo inicial de cuadratura, descubrimos que necesitamos tiempo como máximo
Nota