¿Cuál es la compensación tiempo-espacio en el diseño de algoritmos?

Es simplemente que algunos problemas pueden resolverse de diferentes maneras, a veces tomando menos tiempo, pero otros tomando más tiempo, pero menos espacio de almacenamiento.

Tomemos un ejemplo simple del mundo real: ordenar un mazo de cartas en orden.

Si estaba físicamente encajado en un espacio muy pequeño, sin forma de colocar las cartas, puede intentar sacar una carta de la parte superior del mazo y moverla aproximadamente al lugar correcto en la pila, luego pasar por la fijación del mazo errores, una y otra vez hasta que todo estaba en el orden correcto. Llevaría mucho tiempo, pero si estuviera en un espacio reducido, funcionaría.

Por otro lado, si tuviera una buena mesa grande para trabajar, podría tratar de distribuir todas las cartas, luego simplemente recogerlas en el orden correcto. MUCHO más rápido, pero necesita una gran cantidad de espacio.

Los algoritmos informáticos (¡incluidos los de ordenar las tarjetas en orden!) Tienen “compensaciones” similares.

Puede terminar fácilmente con dos algoritmos, uno más rápido que el otro, pero también necesita más memoria … en ese caso, no hay un algoritmo “Mejor”; todo depende de su contexto. En una pequeña “computadora integrada” con poca memoria que solo tiene que resolver el problema una vez, tal vez no le importe si le toma medio segundo hacer el trabajo. Pero en un videojuego que tiene que hacer absolutamente todo 60 veces por segundo, y su algoritmo no puede usar más del 1% del tiempo disponible, entonces tal vez no le importe perder algo de memoria si hace el trabajo. en la 1/6,000 de segundo tienes que hacerlo.

En informática, una compensación espaciotiempo o memoria temporal es una forma de resolver un problema o cálculo en menos tiempo usando más espacio de almacenamiento (o memoria), o resolviendo un problema en muy poco espacio gastando mucho tiempo . La mayoría de las computadoras tienen una gran cantidad de espacio , pero no espacio infinito.

Compensación espacio-tiempo – Wikipedia

More Interesting

Visión por computadora: ¿Cuáles son algunas técnicas de detección de bordes ultrarrápidas y eficientes en memoria?

¿Los ingenieros de software de Google, Amazon, etc. utilizan estructuras de datos y algoritmos en el desarrollo de aplicaciones en tiempo real?

Si existen múltiples rutas más cortas entre 2 nodos en un gráfico no dirigido, ¿es posible imprimirlas todas utilizando el algoritmo de Dijkstra?

¿Cuál es la complejidad del tiempo para la escalera de palabras?

¿Cuál de los siguientes libros es más adecuado para principiantes y más fácil de entender: CLRS o Algorithms by Sedgewick?

¿Qué tan sofisticados son los algoritmos involucrados en el control de crucero en los automóviles?

¿Por qué los temas 'estructura de datos' y 'algoritmo' siempre están conectados? ¿Hay un curso o libro que solo se ocupe de la estructura de datos?

¿Cuál es el algoritmo predeterminado utilizado para buscar en MapReduce?

¿Por qué utilizar el árbol de búsqueda ternario en lugar de reemplazar cada nodo de Trie a un árbol BST?

Cómo encontrar si un número dado es primo o no

¿Cuál es la lista de MOOC que uno debe mirar en su licenciatura para aprender estructuras y algoritmos de datos C, C ++?

¿En cuánto tiempo puedo ser un profesional en la resolución de problemas en algoritmos y estructuras de datos si empiezo hoy sin ningún conocimiento previo?

¿Cómo funciona el algoritmo de Warnsdorff?

Si F2L se resuelve mejor de forma intuitiva, ¿por qué cada tutorial incluye algoritmos para todos los casos de F2L?

¿Cómo unir y dividir funciona en un Treap al agregar o eliminar un elemento?