Contenido principal
Ciencias de la computación
Curso: Ciencias de la computación > Unidad 1
Lección 3: Notación asintóticaFunciones en notación asintótica
Cuando usamos notación asintótica para expresar la tasa de crecimiento del tiempo de ejecución de un algoritmo en términos del tamaño de la entrada n, es bueno tener algunas cosas en mente.
Empecemos con algo sencillo. Supón que el algoritmo se tardó una cantidad constante de tiempo, sin importar el tamaño de su entrada. Por ejemplo, si te dieron un arreglo que ya está ordenado en orden ascendente y tienes que encontrar el elemento mínimo, te tomaría un tiempo constante, ya que el elemento mínimo debe estar en el índice 0. Como queremos usar una función de n en notación asintótica, podrías decir que este algoritmo se ejecuta en un tiempo \Theta, left parenthesis, n, start superscript, 0, end superscript, right parenthesis. ¿Por qué? Porque n, start superscript, 0, end superscript, equals, 1 y el tiempo de ejecución del algoritmo está dentro del rango de un factor constante de 1. Sin embargo, en la práctica, no escribimos \Theta, left parenthesis, n, start superscript, 0, end superscript, right parenthesis; escribimos \Theta, left parenthesis, 1, right parenthesis.
Ahora supón que un algoritmo tardó un tiempo \Theta, left parenthesis, log, start base, 10, end base, n, right parenthesis. También podrías decir que tardó un tiempo \Theta, left parenthesis, log, start base, 2, end base, n, right parenthesis. Siempre que la base del logaritmo sea una constante, no importa qué base usemos en la notación asintótica. ¿Por qué no? Porque hay una fórmula matemática que dice:
para todos los números positivos a, b y n. Por lo tanto, si a y b son constantes, entonces log, start base, a, end base, n y log, start base, b, end base, n difieren solo por un factor de log, start base, b, end base, a y ese es un factor constante que podemos ignorar en la notación asintótica.
Por lo tanto, podemos decir que el peor tiempo de ejecución de la búsqueda binaria es \Theta, left parenthesis, log, start base, a, end base, n, right parenthesis para cualquier constante positiva a. ¿Por qué? El número de intentos es a lo más log, start base, 2, end base, n, plus, 1, generar y probar cada intento tarda un tiempo constante y configurar y regresar tarda un tiempo constante. Sin embargo, como cuestión de práctica, a menudo escribimos que esa búsqueda binaria tarda \Theta, left parenthesis, log, start base, 2, end base, n, right parenthesis porque en ciencias de la computación nos gusta pensar en potencias de 2.
Hay un orden en las funciones que a menudo vemos cuando analizamos algoritmos usando notación asintótica. Si a y b son constantes y a, is less than, b, entonces un tiempo de ejecución de \Theta, left parenthesis, n, start superscript, a, end superscript, right parenthesis crece más despacio que un tiempo de ejecución de \Theta, left parenthesis, n, start superscript, b, end superscript, right parenthesis. Por ejemplo, un tiempo de ejecución de \Theta, left parenthesis, n, right parenthesis, que es \Theta, left parenthesis, n, start superscript, 1, end superscript, right parenthesis, crece más despacio que un tiempo de ejecución de \Theta, left parenthesis, n, squared, right parenthesis. Los exponentes tampoco tienen que ser enteros. Por ejemplo, un tiempo de ejecución de \Theta, left parenthesis, n, squared, right parenthesis crece más despacio que un tiempo de ejecución de \Theta, left parenthesis, n, squared, square root of, n, end square root, right parenthesis, que es \Theta, left parenthesis, n, start superscript, 2, point, 5, end superscript, right parenthesis.
La siguiente gráfica comparas el crecimiento de n,n, squared y n, start superscript, 2, point, 5, end superscript:
Los logaritmos crecen más despacio que los polinomios. Eso es, \Theta, left parenthesis, log, start base, 2, end base, n, right parenthesis crece más despacio que \Theta, left parenthesis, n, start superscript, a, end superscript, right parenthesis para cualquier constante positiva a. Pero como el valor de log, start base, 2, end base, n crece a medida que n crece, \Theta, left parenthesis, log, start base, 2, end base, n, right parenthesis crece más rápido que \Theta, left parenthesis, 1, right parenthesis.
La siguiente gráfica compara el crecimiento de 1, n y log, start base, 2, end base, n:
Aquí hay una lista de funciones en notación asintótica que a menudo encontramos cuando analizamos algoritmos, ordenadas de la que crece más despacio a la que crece más rápido:
- \Theta, left parenthesis, 1, right parenthesis
- \Theta, left parenthesis, log, start base, 2, end base, n, right parenthesis
- \Theta, left parenthesis, n, right parenthesis
- \Theta, left parenthesis, n, log, start base, 2, end base, n, right parenthesis
- \Theta, left parenthesis, n, squared, right parenthesis
- \Theta, left parenthesis, n, squared, log, start base, 2, end base, n, right parenthesis
- \Theta, left parenthesis, n, cubed, right parenthesis
- \Theta, left parenthesis, 2, start superscript, n, end superscript, right parenthesis
- \Theta, left parenthesis, n, !, right parenthesis
Observa que la función exponencial a, start superscript, n, end superscript, donde a, is greater than, 1, crece más rápido que cualquier función polinomial n, start superscript, b, end superscript, donde b es cualquier constante.
La lista anterior no es exhaustiva, hay muchas funciones más con tiempos de ejecución que no están listadas aquí. Con suerte te las encontrarás en tu viaje por las ciencias de la computación.
Este contenido es una colaboración de los profesores de Dartmouth Computer Science Thomas Cormen y Devin Balkcom, con el equipo de contenidos de computación de Khan Academy. El contenido está bajo licencia CC-BY-NC-SA.
¿Quieres unirte a la conversación?
- Es de practica, cuanto mas lo practiques mejor te volveras :)(9 votos)
- La notación asintótica es algo complicado pero esto es lo que entiendo:
La notación asintótica se utiliza para 'medir la eficiencia' (velocidad de ejecución) de un algoritmo, sin importar, la máquina, el software o lenguaje de programación utilizado, esto se logra midiendo qué tan rápido crece una función con el tamaño de su entrada que se denomina n.
Esto se toma en cuenta para saber si existe una mejor forma de hacerlo; estudiando la eficiencia, complejidad y/o calidad de un algoritmo con respecto a otros.(8 votos) - no entiendo el tema deberia tener mejor explicacion(5 votos)
- tampoco entendi... tendré que repasarlo unas 3 veces mas luego de ver todo el material.(3 votos)
- Lo que entiendo de todo esto es lo siguiente: La notacion asintotica se utiliza para medir el tiempo de una ejecucion, don de (n) seria la cantidad del tiempo en que se toma para ejecutarse, pero bien, hay muchas maneras de ejecutar una accion, utilizando metodos que harian del proceso mas rapido. por eso vemos que se utilizan los metodos logaritmicos.(3 votos)
- Los logaritmos crecen más despacio que los polinomios?(2 votos)
- Correcto. En la tabla los tienes indicados(1 voto)
- por que se necesitan diversos algoritmos para cada constante?(2 votos)
- por que si fghtfjtyhytjhft ntyht f ht thr tyr(2 votos)
- por que los logaritmos crecen mas despacio que los polinomios ?(1 voto)
- tengo como hambre me consignan al nequi?(1 voto)
- ¿Crecen Mas Los Polinomios Que Los Algoritmos?(1 voto)
- Quizá la pregunta debería ser: ¿Crecen más rápido los polinomios que los logaritmos?(1 voto)