¿Por qué se discute la complejidad del tiempo con más frecuencia que la complejidad del espacio?

  • Normalmente queremos algoritmos eficientes. A diferencia del tiempo, podemos reutilizar la memoria. A diferencia de la década de 1960, la memoria es barata ahora, pero las personas esperan respuestas a los problemas a través de la computación aún más rápido.
  • La forma más interesante de clasificar los problemas es haciendo preguntas sobre qué tan eficientes son los algoritmos para los problemas. Por lo tanto, es mucho más frecuente que la gente haga preguntas sobre clases como P, NP, EXP, etc.
  • La computación no tiene ningún beneficio si lleva mucho tiempo resolver un problema. También podría usar personas si ese es el caso. Nos interesa saber cuándo los algoritmos pueden ser eficientes para resolver un problema. Queremos comprobar esto o demostrar que el problema en cuestión es difícil de resolver.
  • En algunas comunidades, la complejidad del espacio no se ignora, por ejemplo, es muy normal encontrarse con una discusión sobre la complejidad del espacio en el área de las estructuras de datos.

Espero que esto ayude, que tengas un hermoso día!

Una de las razones por las cuales, entre otras cosas, la complejidad del tiempo es una pregunta popular de la entrevista: la complejidad del espacio es un poco más difícil de formalizar y cuantificar, especialmente en relación con el tamaño del código, en comparación con la complejidad del tiempo.

Otra razón es la falacia generalizada de que la memoria es barata. No lo es, y deberíamos preocuparnos tanto por el espacio como por el tiempo (siempre y cuando el costo de desarrollo lo justifique, por supuesto).

Hay varios aspectos aquí. En primer lugar, la memoria caché del procesador es muy costosa. Si las áreas de uso frecuente de su código y datos pueden caber en la memoria caché de la CPU, sus ganancias de velocidad pueden ser de orden de magnitud en comparación con cuando no lo hacen. Pero los ingenieros de software rara vez piensan en su código en términos de caché de CPU.

Segundo, RAM: si su aplicación no se ajusta a la memoria del usuario, el intercambio y la desaceleración pueden arruinar toda la experiencia para ellos. Yo mismo soy desarrollador y, con 8 GB de RAM, las herramientas de desarrollo que utilizo pueden ser lentas e incómodas. Esta fue una de las razones, por ejemplo, dejé gcc por clang: este último tiene mucha menos memoria. De lo contrario, tendría que actualizar mi RAM a 16 GB.

Además, ancho de banda de red. Estoy en roaming móvil en este momento con un plan de datos muy limitado, y no hay manera en la Tierra que pueda descargar, por ejemplo, Adobe Photoshop, la madre de todo el bloatware. Incluso pensaría antes de descargar una aplicación de 50 MB, que Adobe Photoshop podría haber sido fácil si los desarrolladores tuvieran limitaciones de espacio en mente.

Finalmente, tenemos las nuevas generaciones de teléfonos móviles y tabletas a las que se aplican restricciones de espacio, casi como en los años 90 nuevamente.

Con todo, a medida que el hardware se hace más pequeño y más barato, lo que siempre hace, tendemos a aprovechar eso en ambas direcciones: diseñando computadoras más potentes por el mismo precio y, por otro lado, haciendo los diseños existentes más compactos . Siempre habrá dispositivos populares que tendrían aproximadamente las mismas limitaciones de memoria y potencia de procesamiento que hace décadas (más o menos). En pocas palabras, debemos aprender a crear código rápido, compacto y hermoso, independientemente de lo que la sabiduría común esté tratando de impulsarnos en un momento dado.

¡Porque el espacio de hoy en día es mucho más barato que el tiempo!

¡Necesitamos un cómputo más rápido, y otras compañías se encargarán de la RAM! Necesitamos optimizar el tiempo, no mucho espacio. Aunque también se discute la complejidad del espacio.

Puede arrojar memoria más fácilmente a una computadora que arrojar “solidez”.

El espacio es algo que uno puede mirar y no es como el tiempo que uno no puede mirar (no se puede decir que viajó a través del tiempo con nuestra tecnología actual, pero lo contrario es cierto para el espacio)

Porque la memoria es barata y abundante, mientras que los procesadores y la electricidad no lo son.