Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Asignatura:
Programación aplicada
“COMPLEJIDAD ALGORÍTMICA
Presenta:
JEAN FRANCO PULLA JARAMILLO
Grupo: 1
Maestro Asesor:
Ing. CRISTIAN FERNANDO TIMBI SISALIMA
1|Página
ÍNDICE
I. INTRODUCCIÓN .................................................................................................................................3
II. MARCO TEORICO ..............................................................................................................................3
2.1. DEFINICION DE LA NOTACION BIG-O. ................................................................................3
2.2. FUNCIONES PARA LA NOTACION BIG-O............................................................................4
2.3. USO Y EJEMPLOS .....................................................................................................................6
III. CONCLUSIÓN .................................................................................................................................8
IV. BIBLIOGRAFIAS...........................................................................................................................9
2|Página
I. INTRODUCCIÓN
En este documento se aportará bases de información acerca de la notación Big-O, con
la finalidad de diseñar algoritmos más rápidos. En programación el rendimiento o la
complejidad de un algoritmo se suele medir utilizando una notación denominada Big-O,
y también conocida como Notación Asintótica. El análisis de algoritmos mide la eficiencia
de un algoritmo, conforme crece el tamaño de la entrada. Esto nos permite comparar los
costos relativos de dos o más algoritmos para resolver el mismo problema.
3|Página
2.2. FUNCIONES PARA LA NOTACION BIG-O.
En esta sección veremos diferentes complejidades para los siguientes algoritmos, que se
presentaran a continuación:
4|Página
f(n) Nombre
1 Constante
𝐿𝑜𝑔(𝑛) Logarítmica
𝑛 Lineal
𝑛𝑙𝑜𝑔(𝑛) Log-lineal
𝑛2 Cuadrática
𝑛3 Cúbica
2𝑛 Exponencial
Tabla 1: Funciones comunes para la notación Big-O.
5|Página
Fig.2, Funciones de la notación asíntota.
O(N)
6|Página
for y salir de la función antes, pero ‘Big O notation’ siempre asumirá el límite superior en
el que el algoritmo llevará a cabo el número máximo de iteraciones.
Código:
bool ContainsValue(IList<string> elements, string value)
{
foreach (var element in elements)
{
if (element == value) return true;
}
return false;
}
O(2ᴺ)
O(2ᴺ) denota un algoritmo cuyo crecimiento se duplica con cada adición al conjunto de
datos de entrada. La curva de crecimiento de una función O(2ᴺ) es exponencial -
partiendo muy poco profunda, seguida de un aumento meteórica. Un ejemplo de una
función O(2ᴺ) es el cálculo recursivo de los números de Fibonacci:
Código:
7|Página
(log n)
Cuando escribimos "log", nos referimos al logaritmo binario, o log base 2 (que
escribiremos "log_2"). Como O (log_2 n) = O (log n) (puedes hacer los cálculos) usaremos
"log" en lugar de "log_2".
Código:
a = 0
b = n-1
while True:
h = (a+b)//2 ## // is the integer division, so h is an integer
if L[h] == 0:
return h
elif L[h] > 0:
b = h
elif L[h] < 0:
a = h
III. CONCLUSIÓN
Cabe mencionar, para el desarrollo de la notación Big-O, esta técnica matemática para
tener un mejor acoplamiento en el código de lenguaje de programación, pero por
simplicidad lo he reducido a lo que se usa en el análisis de complejidad de algoritmos:
funciones definidas en los naturales, que tienen valores distintos de cero, y el caso de n
creciente hasta el infinito.
8|Página
IV. BIBLIOGRAFIAS
Dionysis "dionyziz" Zindros, M. R. (s.f.). Introducción al Análisis de Complejidad de
Algoritmos. Obtenido de https://discrete.gr/complexity/?es
Estrada, A. (s.f.). Guía para principiantes a 'Big O notation'. Obtenido de Status /
Posts: https://abeestrada.com/post/big-o-notation/
MUNGUÍA, E. (s.f.). ¿Qué es la notación Big O? Obtenido de Fundamentos,
Programación: https://www.enrique7mc.com/2016/07/que-es-la-notacion-big-o/
9|Página