Está en la página 1de 11

ESTRUCTURA DE DATOS

Y ALGORÍTMICA
Tiempo de ejecución de un programa, Notación
O grande
La notación Big O define un límite superior de un algoritmo, limita una
función solo desde arriba. Por ejemplo, considere el caso de la ordenación por
inserción. Se necesita tiempo lineal en el mejor de los casos y tiempo
cuadrático en el peor de los casos. Podemos decir con seguridad que la
complejidad temporal de la ordenación por inserción es O (n ^ 2).
Tenga en cuenta que O (n ^ 2) también cubre el tiempo lineal.
La notación asintótica Big-O nos da la idea del límite superior, que
se describe matemáticamente a continuación:

f (n) = O (g (n)) si existe un entero positivo  n0 y una constante positiva c, de modo que f (n) ≤ c . g (n) ∀ n ≥
n0
Básicamente, esta notación asintótica se usa para medir y comparar
los peores escenarios de algoritmos teóricamente. Para cualquier
algoritmo, el análisis Big-O debe ser sencillo siempre que
identifiquemos correctamente las operaciones que dependen de n,
que es el tamaño de entrada.
EnANÁLISIS
casos generales,
DEsolíamos
TIEMPO medirDE y comparar
EJECUCIÓNlas DE
complejidades teóricas del tiempo de ejecución de los algoritmos
ALGORITMOS
para el análisis de rendimiento. El tiempo de ejecución más
rápido posible para cualquier algoritmo es O (1), comúnmente
conocido como tiempo de ejecución constante. En este caso, el
algoritmo siempre tarda la misma cantidad de tiempo en
ejecutarse, independientemente del tamaño de entrada. Este es el
tiempo de ejecución ideal para un algoritmo, pero rara vez se
puede lograr. En casos reales, el rendimiento (tiempo de
ejecución) de un algoritmo depende de n, es decir, el tamaño de
la entrada o la cantidad de operaciones necesarias para cada
elemento de entrada. Los algoritmos se pueden clasificar de la
siguiente manera según el mejor rendimiento (la complejidad del
▪ Un algoritmo logarítmico - O (logn)
El tiempo de ejecución crece logarítmicamente en proporción a
n.
▪ Un algoritmo lineal - O (n)
El tiempo de ejecución crece directamente en proporción a n.
▪ Un algoritmo superlineal - O (nlogn)
El tiempo de ejecución crece en proporción a n.
▪ Un algoritmo polinomial - O (nc)
El tiempo de ejecución crece más rápido que el anterior, todo
basado en n.
▪ Un algoritmo exponencial - O (cn)
El tiempo de ejecución crece incluso más rápido que el algoritmo
polinómico basado en n.
▪ Un algoritmo factorial - O (n!)
El tiempo de ejecución crece más rápido y se vuelve rápidamente
inutilizable incluso
pequeños valores de n.
DONDE, N ES EL TAMAÑO DE ENTRADA Y C ES UNA
CONSTANTE POSITIVA.

Complejidad
del tiempo de
ejecución en
términos de O
grande
Ejemplos algorítmicos de análisis de tiempo
se mencionan a continuación:
de
Algunos de los ejemplos de todos ejecución:
esos tipos de algoritmos (en el peor de los casos)

▪ Algoritmo logarítmico - O (logn) - Búsqueda binaria.


▪ Algoritmo lineal - O (n) - Búsqueda lineal.
▪ Algoritmo superlineal - O (nlogn) - Ordenar montón, Ordenar fusión.
▪ Algoritmo polinómico - O (n ^ c) - Multiplicación matricial de Strassen,
clasificación de burbujas, clasificación de selección, clasificación de inserción,
clasificación de cubetas.
▪ Algoritmo exponencial - O (c ^ n) - Torre de Hanoi.
▪ Algoritmo factorial - O (n!) - Expansión determinante por menores, algoritmo de
búsqueda de fuerza bruta para el problema del vendedor ambulante.
ANÁLISIS DE HUELLA DE MEMORIA DE
Para el análisis de rendimiento de un algoritmo, la medición del tiempo de ejecución no
ALGORITMOS
solo es una métrica relevante, sino que también debemos considerar la cantidad de uso
de memoria del programa. Esto se conoce como la Huella de memoria del algoritmo, en
breve conocida como Complejidad espacial.

Básicamente depende de dos aspectos principales que se describen a continuación:

En primer lugar, la implementación del programa es responsable del uso de la memoria.


Por ejemplo, podemos suponer que la implementación recursiva siempre reserva más
memoria que la implementación iterativa correspondiente de un problema en particular.
Y el otro es n, el tamaño de entrada o la cantidad de almacenamiento requerida para
cada artículo. Por ejemplo, un algoritmo simple con una gran cantidad de tamaño de
entrada puede consumir más memoria que un algoritmo complejo con menos cantidad
de tamaño de entrada.
EJEMPLOS ALGORÍTMICOS DE ANÁLISIS DE HUELLA
DE MEMORIA:

▪ Algoritmoideal - O (1) - Búsqueda lineal, Búsqueda binaria,


Ordenar burbujas, ordenar selección, ordenar inserción, ordenar
montón, ordenar shell.
▪ Algoritmo logarítmico - O (log n) - Ordenar fusión.
▪ Algoritmo lineal - O (n) - Clasificación rápida.
▪ Algoritmo sub-lineal - O (n + k) - Clasificación de base.
Por lo general, existe una compensación entre el uso óptimo de la memoria y el rendimiento
COMPENSACIÓN Y EFICIENCIA
del tiempo de ejecución.
En general, para un algoritmo, ESPACIO-TIEMPO
la eficiencia espacial y la eficiencia en el tiempo alcanzan dos
extremos opuestos y cada punto entre ellos tiene una cierta eficiencia en el tiempo y el
espacio. Por lo tanto, cuanto más eficiencia de tiempo tenga, menos eficiencia de espacio
tendrá y viceversa.
Por ejemplo, el algoritmo Mergesort es extremadamente rápido pero requiere mucho espacio
para realizar las operaciones. Por otro lado, Bubble Sort es extremadamente lento pero
requiere el mínimo espacio.

Al final de este tema, podemos concluir que encontrar un algoritmo que funcione en menos
tiempo de ejecución y que también requiera menos espacio de memoria puede marcar una
gran diferencia en el rendimiento de un algoritmo.

¿Tienes lo que estabas buscando? Aprenda más y sea autosuficiente. Comience a aprender
Data Sructures & Algorithms con la ayuda del curso DSA Self Paced más confiable, y eso

También podría gustarte