Me gusta la frase “complejidad del tiempo y sus 3 anotaciones”. Sin embargo, definitivamente no hay solo 3 anotaciones, así que lo olvidaré ahora.
No creo que sea un buen enfoque tratar de comprender una visión simplificada de un problema complejo. Especialmente en las ciencias, los detalles son lo que realmente importa. Su objetivo debe ser comprender la complejidad computacional por completo, no solo “rápidamente”.
Dicho esto, me gusta una visión general amplia como marco mental. Entonces, hablemos ampliamente.
- Para verificar que la lista vinculada es circular, ¿cuál será la condición del bucle? Conozco un proceso adicional como tomar dos punteros. Por favor sugiérame
- ¿Qué es un promedio móvil y, algorítmicamente, cómo se calcula dicho conjunto?
- Cómo instalar accesorios de compresión en tubos de plástico
- ¿Cuál es la forma más eficiente de recoger pelotas de tenis en una cancha?
- ¿Qué significa <K extiende comparables > en Java en el contexto de hacer árboles de búsqueda binarios?
- La complejidad es lo “difícil” que es un algoritmo.
- Podemos clasificar los algoritmos por “dificultad” usando la notación matemática (Big O, little 0, Big Theta, etc.)
- La notación de complejidad considera un algoritmo en función de sus entradas. “Dado N input, ¿qué tan difícil es este algoritmo?”
La teoría de la complejidad computacional está tratando de comprender los límites y la naturaleza de la computación. Como estudiante de CS, vas a pensar en algoritmos. Queremos poder tomar cualquier algoritmo y comprender sus límites en relación con los recursos de la computadora. Específicamente, el tiempo y el espacio (en la memoria) que requerirá el algoritmo para ser calculado. Puede pensarlo como cuán “difícil” será un problema para una computadora para calcular. Tomar más recursos es más difícil, necesitar menos recursos es más fácil.
Una vez que comprenda cómo analizar un algoritmo y determine la complejidad, debe comprender cómo clasificar un algoritmo por complejidad. La clasificación le permite hablar sobre la complejidad, comparar algoritmos por complejidad y comprender algo sobre un algoritmo simplemente haciendo referencia a su clasificación de complejidad.
No entraré en otra notación que Big O, porque creo que hemos dejado el área donde podemos hablar sin detalles. Big O clasifica el algoritmo por lo “difícil” que es el algoritmo para una entrada en el peor de los casos. O, ¿qué tan difícil es este algoritmo cuando la entrada más difícil hace que crezca? Un algoritmo con una gran entrada de O de N – – O (N) – – por ejemplo, es MUCHO más difícil que otros algoritmos de O (N) , y no más difícil.
Esto es SUPER generalizado y solo es útil para comenzar. El siguiente paso es profundizar en los detalles.