1. A R I T M E T I C A
N O T A C I O N
D E L A
B I G - 0
2. I N T R O D U C C I Ó N
La notación Big O es una notación matemática que
nos sirve para poner nota a la velocidad de
procesamiento de un algoritmo atendiendo a cómo
se comporta conforme aumenta el tamaño del
trabajo a procesar, por lo que nos sirve para
clasificar la eficacia de los mismos
4. Sean f(n) y g(n) dos funciones de enteros positivos a
reales positivos.
f=O(g) significa: f no crece más rápido que g, g es el
límite superior asintótico de f(n)
f = O(g) si existe una constante c>0 tal que para todo
n
BIG-O
La mayoría de los libros utilizan notaciones
donde O(g) denota el conjunto de todas las funciones
T(n) para las que existe una constante c>0, tal que:
5. BIG-Ω
Sean f(n) y g(n) dos funciones de inters positivos a
reales positivos.
f=Ω(g) significa: f no crece más despacio que g, g es el
límite inferior asintótico de f.
f = Ω(g) si y sólo si g=O(f) o, si y sólo si existe una
constante c,tal que para todo n,
7. BIG-θ
f=θ(g) significa: f no crece ni más lento ni más
rápido que g, f crece al mismo ritmo que g
asintóticamente
f=θ(g) sólo si f=O(g) y f=Ω(g) es decir, hay
constantes c1, c2>0, s.t.
La función f puede intercalarse entre g
mediante dos factores constantes.
9. FUN CIO N ES TÍPICAS DE TIEM PO DE EJECUCIÓ N
(constant running time):
Significa que el tiempo de ejecución no depende del tamaño de la
entrada. Es común en operaciones básicas como la asignación de
variables o el acceso a un elemento de una matriz.
O(1 )
·Esta función de tiempo de ejecución se utiliza comúnmente en
algoritmos de búsqueda binaria y divide y vencerás. El tiempo deO(Log(n))
ejecución aumenta ligeramente con el tamaño de la entrada.
(logarítmico), por ejemplo, búsqueda binaria:
Esta función de tiempo de ejecución lineal es común en
algoritmos de búsqueda y recorrido de datos. El tiempo de
ejecución es proporcional al tamaño de la entrada.
(lineal): búsqueda lineal:
Un problema se resuelve dividiéndolo en problemas más
pequeños, resolviéndolos independientemente y
combinando la solución.
Ordenar por fusión
O(n)
O(n log(n))
10. El tiempo de ejecución de ciertos algoritmos, como la multiplicación de matrices
y la programación dinámica, puede aumentar cuadráticamente con el tamaño
de n y proporcionalmente con k. Es importante tener en cuenta esta
complejidad computacional al evaluar el rendimiento de los algoritmos y su
escalabilidad en diferentes escenarios de uso.
FUN CIO N ES TÍPICAS DE TIEM PO DE EJECUCIÓ N
Típico de algoritmos que procesan todos los
pares de datos (bucles anidados dobles)
(cuadrático): ordenación burbuja
O(n )
2
O(n3
)
Procesamiento de triples de datos (bucles
anidados triples)
(cúbico)
(exponencial):
Se utiliza en problemas de búsqueda de subconjuntos y otros
problemas combinatorios. El tiempo de ejecución aumenta
exponencialmente con el tamaño de la entrada.
O(n )
O(2 )
n
k
n! El crecimiento de las funciones con tiempo factorial es casi
vertical, cada elemento de ntrada incrementa de forma
considerable el tiempo de ejecución. Solo se suele dar en
algoritmos que tratan de resolver algo por la mera fuerza bruta.
(factorial):
11. Esta notación se representa mediante una función que representa
el tiempo de ejecución máximo esperado para un algoritmo con
un tamaño de entrada dado.
Esta notación mide el crecimiento masivo de tiempo de ejecución o
espacio de almacenamiento de un algoritmo respecto al tamaño de la
entrada. Esto significa que mide cuánto tiempo y espacio se necesita para
que el algoritmo funcione con el tamaño dado de entrada.
En el análisis Big-O, sólo nos importa cómo cambia el tiempo de ejecución
a medida que aumenta el tamaño de la entrada.
Por ejemplo, una vez que hemos hecho el análisis Big-O, podemos
predecir.
12. C R E A C I O N D E L A G R Á F I C A B I G O
G R Á F I C A B I G O D e n t r o d e l a f u n c i o n B l o q u e a r C a b a l l o ( ) , s e
e n c u e n t r a l a f u n c i o n
g r a f i c a r B i g T i e m p o L i n e a l ( ) q u e s e p r e s e n t a
e l B i g ( O ) .
13. c r e a r A r c h i v o ( ) : g u a r d a d e n t r o d e u n a r c h i v o d e
t e x t o l a m a t r i z d e l a l f i l y s u t r a y e c t o r i .
L i n e a A ( ) : g r a f i c a l a l i n e a q u e r e p r e s e n t a B i g
( 1 )
C O M P L E J I D A D E N L A S F U N C I O N E S D E L T A B L E R O D E
A J E D R E Z
f u n c i ó n e n c e r a r T a b l e r o ( ) , e x i s t e l a
E n l a
f u n c i ó n d i b u j a r B i g O E x p o n e n c i a l A z u l : d i b u j a
l a c u r v a q u e r e p r e s e n t a B i g ( N ^ 2 )
D e n t r o d e l a f u n c i o n B l o q u e a r C a b a l l o ( ) , s e
e n c u e n t r a l a f u n c i o n g r a f i c a r B i g T i e m p o L i n e a l ( )
q u e s e p r e s e n t a e l B i g ( O ) .
14. C O N C L U S I O N E S Y
R E C O M E N D A C IO N E S
La notación Big O proporciona
un límite superior a la tasa de
crecimiento de la complejidad
temporal de un algoritmo, lo
un análisis
de su
que permite
simplificado
escalabilidad.
Elegir el algoritmo y la estructura
de datos con una
Big O
complejidad
óptima
adecuados
temporal
puede mejorar
enormemente el rendimiento y la
eficiencia de un programa.
Para el análisis del tiempo de
ejecución
empezar
tiempo
de un algoritmo
con la función de
de ejecución, que
expresa el número de pasos
del ordenador en función del
tamaño de la entrada
15. B I B L I O G R A F Í A
X. Zhang. (s.f.). Algorithm Analysis, Asymptotic notations CISC4080
CIS, Fordham Univ.CISC4080. Recuperado de
https://storm.cis.fordham.edu/zhang/cs4080/slides/BigO.pptx
Ronald L. Rivest, and Clifford Stein. Introduction to Algorithms, 3rd
Edition. The MIT Press, 2009.Recuperado de:
https://web.mit.edu/16.070/www/lecture/big_o.pdf