No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Recomendaciones para la evaluación de algoritmos

15/18
Recursos

Hasta ahora sabes que un algoritmo con O(1) es mejor que uno con O(n). ¡Genial! Pero, ¿y si ese algoritmo constante en tiempo O(1) se ejecuta en 1000 horas? ¿Y si ese algoritmo constante en espacio O(1) ocupa 1000 GB? La complejidad algorítmica es importante, pero dónde se ejecuta tu algoritmo determina qué tan importante es.

¿El crecimiento siempre importa?

Cuando la Complejidad Algorítmica deja de ser relevante, es donde debemos mejorar nuestro algoritmo para alcanzar nuestro objetivo de eficiencia.

Tal vez tengamos el mejor algoritmo jamás visto, pero si lo ejecutamos en una computadora de hace 20 años con un procesador antiguo, pues no podemos esperar mucha rapidez.

Si tenemos un algoritmo A con O(1) y un algoritmo B con O(1), aún podemos saber cuál tiene un mejor rendimiento midiendo el tiempo en que duran. Ya que no dependen puramente del análisis asintótico.

En este caso, la solución del problema no se trata de buscar el algoritmo con menor complejidad, sino de buscar las mejores opciones o variables de entorno para ejecutar y resolver el problema.

Contribución creada por Marcelo Arias y Andrés Guano (Platzi Contributor).

Aportes 3

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Hey, hasta ahora sabes que un algoritmo con O(1) es mejor que uno con O(n). ¡Genial! Pero, ¿Y si ese algoritmo con O(1) se ejecuta en 1000 horas?

💚 La complejidad algorítmica es importante, pero dónde se ejecuta tu algoritmo determina qué tan importante es.

📉 Cuando la Complejidad Algorítmica deja de ser relevante, es donde debemos mejorar nuestro algoritmo para alcanzar nuestro objetivo de eficiencia.

🚀 Tal vez tengamos el mejor algoritmo jamás visto, pero si lo ejecutamos en una computadora de hace 20 años con Intel Celeron, pues no podemos esperar mucha rapidez.

Yo diría que entonces no simplificar la complejidad puede ayudar a mejorar la decisión entre cuál es mejor entre dos de la misma forma. Por ejemplo si dos algoritmos tienen complejidad espacial de O( 1 ) y temporal de O ( n ) pues cómo elijo?

En cambio si no simplificamos y vemos que:

  • Uno tiene complejidad espacial de O( 6 ) y el otro de O ( 20 )
  • Uno tiene complejidad temporal de O ( n + 5 ) y el otro de O ( n + 50 ) pues ahí si podemos elegir mejor no?

Bajo mi punto de vista la confusión está un poco con el uso de las palabras. Como lo entiendo yo, aquí no hablamos de crecimiento como tal, en realidad estamos hablando de tipo de crecimiento, y es que el crecimiento como tal sería los 10 años. Lo bueno de establecer el tipo de crecimiento es que sabemos como se comportará el algoritmo sin importar otras variables (como el hardware), mientras que el crecimiento dependerá de otros factores variables, por lo que es más difícil de calcular.