Está en la página 1de 18

Análisis de Algoritmos

Jhonny Felípez Andrade

jrfelizamigo@yahoo.es
Contenido

 Complejidades mas usuales.


 Complejidad algorítmica.
 Mejor, peor y caso medio

2
COMPLEJIDADES MAS
USUALES
3
Complejidad de Algoritmos.
Complejidades mas usuales.
 O(1) Complejidad constante.
 O(log n) Complejidad logarítmica.

 O(n) Complejidad lineal.

 O(nlog n)

 O(n2) Complejidad cuadrática.

 O(n3) Complejidad cúbica.

 O(nk) Complejidad polinómica.

 O(2n) Complejidad exponencial.


4
Complejidad de Algoritmos.
Valores de crecimiento de las
funciones.

n log n n n log n n2 n3 2n
1 0 1 0 1 1 2
2 1 2 2 4 8 4
4 2 4 8 16 64 16
8 3 8 24 64 512 256
16 4 16 64 256 4096 65536
32 5 32 160 1024 32768 2.147.483.648
5
Complejidad de Algoritmos.
Promedio de crecimiento de las
funciones.

6
Complejidad de Algoritmos.
Cont.
 O(log n), O(n) y O(n log n) crecen
mas lentamente que los otros.
 Para grandes conjuntos de datos, los
algoritmos con una complejidad
mayor que O(n3) son a menudo no
aplicables.
 Un algoritmo que es exponencial
trabajara solamente con entradas
muy pequeñas.
7
Mejor, peor y caso medio

COMPLEJIDAD ALGORÍTMICA
ORDENACIÓN POR EL
MÉTODO DE INSERCIÓN
9
---
6 | 5 3 1 8 7 2 4
---
6 5 | 3 1 8 7 2 4

5 6 | 3 1 8 7 2 4
---
5 6 3 | 1 8 7 2 4

3 5 6 | 1 8 7 2 4
---
3 5 6 1 | 8 7 2 4

1 3 5 6 | 8 7 2 4
---
1 3 5 6 8 | 7 2 4
---
1 3 5 6 8 7 | 2 4

1 3 5 6 7 8 | 2 4
---
1 3 5 6 7 8 2 | 4

1 2 3 5 6 7 8 | 4
---
1 2 3 5 6 7 8 4 |

1 2 3 4 5 6 7 8 |
10
Complejidad de Algoritmos.
Ejemplo.
Paso Algoritmo Frecuencia
1 void insercion(int[] x) { 1
int i, j, temp;
2 int n = x.length; 1
3 for (i = 1; i < n; i++) { n
4 temp = x[i]; n-1
5 for (j = i; j > 0 && temp < x[j - 1]; j--) { n-1 n
6 x[j] = x[j - 1]; n-1 n-1
}
7 x[j] = temp; n-1
}
}

t(n) = 2n2 + 1

t(n)  O(n2).

11
Complejidad
en el peor de los casos
 La complejidad en el peor de los casos de un algoritmo
es la función definida por el máximo número de pasos
que toma en cualquier instancia de tamaño n.

12
Complejidad
mejor y promedio de los casos
 La complejidad en el mejor de los casos de un
algoritmo es la función definida por el mínimo número
de pasos que toma en cualquier instancia de tamaño n.

 La complejidad en el caso promedio de un algoritmo es


la función definida por el número promedio de pasos
que toma en cualquier instancia de tamaño n.

 En cada una de estas complejidades se define una


función numérica: tiempo vrs tamaño!
13
El análisis exacto es difícil!

 Estas funciones de mejor, peor y de caso


promedio son difíciles de tratar por los detalles
que tienen:

14
Limites superiores e
inferiores
 Es más fácil hablar de los límites superiores
e inferiores de la función del peor caso.

15
Nombres de las funciones
límites
• f (n)  ( g (n)) significa que c x g (n) es el límite
superior de f (n).
• f (n)  ( g (n)) significa que c x g (n) es el límite
inferior de f (n).
• f (n)  ( g (n)) significa que c1 x g (n) es el límite
superior de f (n) y c2 x g (n) es el límite inferior
de f (n).
16
Bibliografía

 Fundamentos de Programación, Jorge


Teran Pomier, 2006.
 Fundamentals of Data Structures, Ellis
Horowitz, 1981.
 Data Structures & Algorithms in Java 2nd
Edition, Robert Lafore, Sams Publishing,
2003.
 Introduction to Algorithms, third edition,
Thomas Cormer, 2009.
17
FIN

18

También podría gustarte