Complejidad de la computación

Respuestas:

12

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 )kO~(k)nn2O(logn)nn2n2log2nO~(n2(logn)2)=O~(n2)

Micah
fuente
3

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.f(n)=nn2f1(n)=n2nf1(n)mnmnn2log22(n)

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.f(n)f(n)nn2n2n2m=2log2(n)m=m1

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 tiempot1=log22(n)o1=2log2(n)o1t2=o12o2=2o1iti=4i1log22noi=2ilog2(n)m

Texp=[1..m]ti=log22(n)[1..m]4i=4m13log22n .

Cuando se incluye el costo inicial de cuadratura, descubrimos que necesitamos tiempo como máximo

Texp+log22n

Nota

  • Omití algunos pisos y techos en los cálculos, con la esperanza de que no afectarían materialmente la respuesta.
  • Deliberadamente omití un análisis basado en a favor de un límite superior exacto solo para ser riguroso. O
  • El razonamiento anterior también deja en claro por qué mi análisis anterior fue defectuoso. La notación se usó de manera rápida y flexible, y convenientemente omitió constantes para que, por ejemplo, se convirtiera mágicamente en . t i O ( log n )OtiO(logn)
  • Las multiplicaciones siempre se pueden acelerar con FFT y otros métodos.
PKG
fuente
1
¿Cómo ha obtenido la complejidad para el cálculo de ? n 2O(1)n2
44
Voy a decir que la multiplicación de dos números de bits requiere tiempo lugar de tiempo , también debe calcular eso en el costo de la exponenciación binaria. O ( log n ) O ( 1 )nO(logn)O(1)
Mark Dominus
2
Tenga en cuenta que el resultado final tiene bits. Es muy difícil calcular bits en el tiempo . n 2 log 2 n O ( log n )n2log2nn2log2nO(logn)
Punto justo, tomaré nota
PKG
1
@ThomasAndrews: Eso depende de la máquina y el modelo de costo. No es inusual suponer un modelo de RAM con un costo constante para las adiciones.
Raphael