Wikipedia enumera la complejidad temporal de la suma como , donde es el número de bits.
¿Es este un límite inferior teórico rígido? ¿O es solo la complejidad del algoritmo actual más rápido conocido? Quiero saber, porque la complejidad de la suma, subraya todas las demás operaciones aritméticas y todos los algoritmos que las utilizan.
¿Es teóricamente imposible obtener un algoritmo de suma que se ejecute en ? ¿O estamos obligados a la complejidad lineal para la suma.
fuente
Para que el análisis de complejidad tenga algún sentido formal, debe especificar un modelo computacional formal dentro del cual se ejecuta el algoritmo en el objeto, o, al menos, un modelo de costo , que especifica cuáles son las operaciones básicas y sus costos
En la mayoría de los contextos, se supone que las operaciones aritméticas toman tiempo . Esto suele ser razonable, ya que estamos interesados en la complejidad algorítmica independientemente de los números involucrados. Esto se llama el modelo de costo uniforme .Θ(1)
Si los números pueden crecer sin límites, o si estamos interesados en analizar las propias operaciones, se considera que las operaciones aritméticas tienen un costo , proporcional al tamaño de la entrada.Θ(|x|)
Ahora, ¿pueden las operaciones tener un costo menor? Posiblemente, sin embargo, tendrá que definir formalmente un modelo computacional en el que pueda suceder.
fuente
La entrada a la suma es dos números arbitrarios . Como son arbitrarios, debe leer cada bit y, por lo tanto, el algoritmo es .Ω(n)
Imagine que su algoritmo agrega con éxito 1010100110 y 0010010110 sin leer cada bit. Para que su algoritmo pueda agregar entradas arbitrarias , debería poder voltear aleatoriamente cualquiera de estos bits, y el algoritmo aún genera una adición correcta (pero diferente). Pero si su algoritmo no lee cada bit, ¿cómo podría decir que la entrada invertida fue diferente a la entrada original?
fuente