Tal como está escrito, el problema requiere un tiempo de , donde m es la longitud de entrada (desafortunadamente usó n para otra cosa). De hecho, si, por ejemplo, α es un número entero positivo (dado por su polinomio mínimo x - α ) yn = 0 , el tamaño de la salida es exponencial en el tamaño de la entrada. Este límite es, por supuesto, óptimo, ya que hay varias formas de calcular el resultado en el tiempo 2 O ( m ) .2Ω(m)mnαx−αn=02O(m)
Permítanme intentar reformular la pregunta para que tenga un poco más de sentido. El problema principal es cómo elegir la representación de la entrada y la salida, así como la noción de aproximación, de modo que la exponenciación tenga una gran posibilidad de ser computable en el tiempo polinómico.
Kaveh mencionó una forma en los comentarios: restringir el dominio a un intervalo finito fijo. Si bien esto funciona, es innecesariamente restrictivo; en particular, no hay una buena manera de transformar un número algebraico en uno que esté limitado de modo que sus exponenciales tengan algo que ver entre sí.
Un enfoque más flexible es representar la entrada como un número de punto fijo y la salida como un número de coma flotante . Para ser específicos, una representación de punto fijo es una cadena
denota ± ∑ j a j 2 j , donde a j ∈ { 0 , 1 } , y una representación de coma flotante es
± 2 e ×
±arar−1…a0.a−1…a−s
±∑jaj2jaj∈{0,1}
con una interpretación similar, donde
e es un número entero binario, y
a 0 = 1 . (Como excepción, también permitimos que
0 se represente a sí mismo). Una aproximación de un
x reala
m bits deprecisión
absolutaes un
x ' realtal que
| x - x ′ | < 2 - m , y una aproximación a
m bits deprecisión
relativaes
±2e×a0.a−1…a−s
ea0=10xmx′|x−x′|<2−mm tal que
| 1 - x ′ / x | < 2 - m . Usaremos precisión absoluta para aproximaciones de punto fijo y precisión relativa para aproximaciones de punto flotante. Se deduce que en ambos casos, también podemos suponer
s ≤ m (hasta la pérdida de un bit de precisión).
x′|1−x′/x|<2−ms≤m
Las representaciones de punto fijo y punto flotante de racionales gaussianos diádicos, y las aproximaciones de números complejos, se definen de manera similar, utilizando un par de reales. En todas partes a continuación, denota el tamaño total de la entrada.n
Ahora, dejemos que la exponenciación (real o compleja) sea el siguiente problema: la entrada es una representación de punto fijo de un número un número natural unario m , y la salida es una aproximación de coma flotante de e x a m bits de relativa precisión. Dualmente, el logaritmo toma como entrada un número de coma flotante xy unario m , y la salida es una aproximación de punto fijo de log x (digamos, la rama principal en el caso complejo) a m bits de precisión absoluta.xmexmxmlogxm
Mientras nos atenemos a los límites de tiempo de ejecución que satisfacen algunas condiciones de regularidad leves, e ignoramos los factores multiplicativos constantes, tenemos:
- La complejidad de la exponenciación, el logaritmo o cualquier función analítica similar es, al menos, la complejidad de la multiplicación de enteros: por ejemplo, podemos leer de exp ( a 2 - t ) = a 2 - t + a 2 2 - 2 t - 1 + O ( a 3 2 - 3 t ) para t suficientemente grande , lineal en la longitud de a .a2exp(a2−t)=a2−t+a22−2t−1+O(a32−3t)ta
- La exponenciación y el logaritmo tienen la misma complejidad. La razón es que podemos calcular el inverso de una función agradable mediante la iteración de Newton (o métodos más sofisticados como en Brent ) utilizando la evaluación de la función misma. La iteración generalmente implica multiplicaciones o divisiones, pero podemos permitirnos esto en el punto anterior.
αfc,ρ|c−α|<ραf
αmαm
Reeααmeαm
Realidad: hasta factores lineales, la complejidad de la exponenciación de números algebraicos es la misma que la complejidad de la aproximación de números algebraicos más la complejidad de la exponenciación compleja.
αm+O(1)αeαm
eα
Esto divide la pregunta en dos problemas bastante no relacionados. El límite superior más conocido en exponenciación es
nM(n)O(M(n)logn)
Ω(M(n))M(n)nlogn2O(log∗n)
O~(f(n))O(f(n)polylog(f(n)))
Para una aproximación de raíz real , Pan y Tsigaridas dan:
O~(d2τ+dm)d=deg(f)τf
O~(d3+d2m)f1+1/logd
eαReeαReeα≪Imeαx+iyeαmy2−mxx2−m
Para la exponenciación de racionales exactos, podemos evitar el problema:
α=x+iymx,yReeαmO(M(n)logn)
Reeα=excosyexcosy2−mk2y/πcosy±cosy′±siny′y′=y−kπ2|y′|≤π/4siny′y′siny′mm+log|y′−1|y=u/vu,vy′π
∣∣∣π−2ukv∣∣∣≤2|y′|k.
πν7.6063|y′|≥12kν−1vν,
log|y′−1|y′siny′y′siny′≈y′
αlog|y′|deg(f)