Académique Documents
Professionnel Documents
Culture Documents
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
ndice
3.1 Complejidad computacional y asinttica
3.2 Ejemplos de complejidad asinttica
3.3 La notacin O
3.4 Anlisis del caso mejor, peor y medio
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
Complejidad computacional y
asinttica
Entrada
Algoritmo
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
Salida
Complejidad computacional y
asinttica
Clculo de divisores
Descomponer en factores primos
Utilizar el Algoritmo de Euclides
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
Complejidad computacional y
asinttica
Ejemplos:
Mito:
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
Complejidad computacional y
asinttica
COMPLEJIDAD COMPUTACIONAL
Indica el esfuerzo que hay que realizar para aplicar un
algoritmo y lo costoso que ste resulta.
Dicho coste que se puede medir de diversas formas (espacio,
tiempo...)
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
Complejidad computacional y
asinttica
Un algoritmo es ms eficiente cuanto menos complejo
sea
La eficiencia suele medirse en trminos de consumo de
recursos:
Espaciales: cantidad de memoria que un algoritmo consume o
utiliza durante su ejecucin Complejidad espacial
Temporales: tiempo que necesita el algoritmo para ejecutarse
Complejidad temporal
Otros: utilizacin de CPU, utilizacin de perifricos, tiempo y
coste de implementacin...
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
Complejidad computacional y
asinttica
Objetivo: encontrar algoritmos con la menor
complejidad espacial y temporal
Menor complejidad espacial suele implicar mayor
complejidad temporal
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
Complejidad computacional y
asinttica
Factores que influyen en la complejidad
Tamao del problema
Naturaleza de los datos de entrada
Recursos hardware y software
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
Complejidad computacional y
asinttica
Factores que influyen en la complejidad
Tamao del problema: magnitud(es) que al
aumentar incrementan la complejidad del algoritmo.
Ejemplos:
Ordenacin de un vector: nmero de elementos
Factorizar un nmero en sus factores primos: valor del
nmero
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
10
Complejidad computacional y
asinttica
Factores que influyen en la complejidad
Naturaleza de los datos de entrada: en funcin de
cules sean los datos del problema se ejecutarn o
no determinadas instrucciones de decisin y ser
distinto el nmero de iteraciones de los bucles el
problema se resolver en ms o en menos tiempo.
Ejemplo:
buscar en un vector el valor que est almacenado en la primera
celda resulta trivial en la bsqueda lineal.
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
11
Complejidad computacional y
asinttica
Factores que influyen en la complejidad
Naturaleza de los datos de
entrada:
120
Tiempo de ejecucin
caso mejor
caso medio
caso peor
100
80
60
40
20
0
1000
2000
3000
4000
Tamao de Entrada
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
12
Complejidad computacional y
asinttica
Enfoques para medir la complejidad de un
algoritmo:
Enfoque empricos o a posteriori
Enfoque terico o a priori.
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
13
Complejidad computacional y
asinttica
Enfoque empricos o a posteriori
9000
8000
7000
Tiempo (ms)
6000
5000
4000
3000
2000
1000
0
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
50
Tamao Entrada
100
14
Complejidad computacional y
asinttica
1.
2.
3.
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
15
Complejidad computacional y
asinttica
Ventajas e inconvenientes
1.
2.
3.
4.
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
16
Complejidad computacional y
asinttica
Principio de invarianza:
Dos implementaciones de un mismo algoritmo no diferirn
ms que en una constante multiplicativa.
Si f1(n) y f2(n) son los tiempos consumidos por dos
implementaciones de un mismo algoritmo, se verifica que:
c, d R,
f1(n) cf2(n)
f2(n) df1(n)
17
Complejidad computacional y
asinttica
COMPLEJIDAD ASINTTICA
Consiste en el clculo de la complejidad temporal a
priori de un algoritmo en funcin del tamao del
problema, n, prescindiendo de factores constantes
multiplicativos y suponiendo valores de n muy
grandes
No sirve para establecer el tiempo exacto de
ejecucin, sino que permite especificar una cota
(inferior, superior o ambas) para el tiempo de
ejecucin de un algoritmo
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
18
Ejemplo en pseudocdigo:
Buscar el mximo valor de un array
maximoArray(A)mximo
Entrada A array de n enteros
Salida elemento mximo de A
INICIO
maxActual A[0]
PARA i 1 HASTA n 1 HACER
SI A[i] maxActual
ENTONCES maxActual A[i]
DEVOLVER maxActual
FIN
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
19
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
Ejemplos:
Evaluar una
expresin
Asignar un valor a
una variable
Indexar un array
Llamar a un
mtodo
Retornar un valor
20
operaciones
2
2+n
2(n 1)
2(n 1)
2(n 1)
1
FIN
Total
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
7n 1
21
22
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
23
En un diagrama
logartmico, la
pendiente de la
lnea corresponde a
la tasa de
crecimiento de la
funcin
T (n )
Lineal n
Cuadrtica n2
Cbica n3
1E+30
1E+28
1E+26
1E+24
1E+22
1E+20
1E+18
1E+16
1E+14
1E+12
1E+10
1E+8
1E+6
1E+4
1E+2
1E+0
1E+0
Cbica
Cuadrtica
Lineal
1E+2
1E+4
1E+6
1E+8
1E+10
n
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
24
factores constantes
trminos de orden
menor
Ejemplos
102n + 105 es una
funcin lineal
105n2 + 108n es una
funcin cuadrtica
T (n )
La tasa de
crecimiento no se
ve afectada por:
1E+26
1E+24
1E+22
1E+20
1E+18
1E+16
1E+14
1E+12
1E+10
1E+8
1E+6
1E+4
1E+2
1E+0
1E+0
Cuadrtica
Cuadrtica
Lineal
Lineal
1E+2
1E+4
1E+6
1E+8
1E+10
n
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
25
La notacin O
Dadas las funciones f(n)
y g(n), se dice que f(n)
es O(g(n)) si existen
constantes positivas
c y n0 tales que
f(n) cg(n) para n n0
Ejemplo: 2n + 10 es
O(n)
2n + 10 cn
(c 2) n 10
n 10/(c 2)
Elegir c = 3 y n0 = 10
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
10,000
3n
2n+10
1,000
100
10
1
1
10
100
1,000
n
26
La notacin O
Ejemplo:
5n3 + 3n2 +1 O(n3)
tomando n0= 3, c= 6 tenemos que:
5n3 + 3n2 +1 6n3
Nota: Tambin pertenecera a O(n4), pero no a O(n2).
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
27
La notacin O
Existen diferentes notaciones para la complejidad
asinttica
Una de ellas es la notacin O, que permite especificar
la cota superior de la ejecucin de un algoritmo
La sentencia f(n) es O(g(n)) significa que la tasa de
crecimiento de f(n) no es mayor que la tasa de
crecimiento de g(n)
La notacin O sirve para clasificar las funciones de
acuerdo con su tasa de crecimiento
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
28
La notacin O
Ejemplo: la funcin n2 1,000,000
no es O(n)
n^2
100n
100,000
cn
nc
10,000
La desigualdad anterior
no puede satisfacerse
1,000
porque c debe ser una
100
constante
n2
10n
n
10
1
1
10
100
1,000
n
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
29
La notacin O
La notacin O proporciona una cota superior para la
tasa de crecimiento de una funcin
f(n) es O(g(n))
g(n) es O(f(n))
S
No
S
No
S
S
g(n) crece ms
f(n) crece ms
Igual crecimiento
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
30
La notacin O
Sea {g(n)} la clase (conjunto) de funciones que son
O(g(n))
Se tiene:
{n} {n2} {n3} {n4} {n5}
donde la inclusin es estricta
{n3}
{n2}
{n}
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
31
La notacin O
Propiedades de O(f(n)):
Reflexiva: f(n)O(f(n))
Transitiva: si f(n) O(g(n)) y g(n) O(h(n)),
entonces f(n) O(h(n))
Eliminacin de constantes: O(cf(n)) = O(f(n)),
para todo c.
O(logan) = O(logbn), para todo a y b.
Suma de rdenes: O(f(n)+g(n)) =
O(max(f(n),g(n))
Producto de rdenes: O(f(n))O(g(n)) = O(f(n)
g(n))
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
32
La notacin O
O(1)
Constante
O(log n)
Logartmica
Bsqueda binaria
O(n)
Lineal
Bsqueda lineal
O(nlog n)
Casi lineal
Quick-sort
O(n2)
Cuadrtica
Algoritmo de la burbuja
O(n3)
Cbica
Producto de matrices
O(nk) k>3
Polinmica
O(kn) k>1
Exponencial
O(n!)
Factorial
Algunos algoritmos de
grafos
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
Eficiente
Tratable
Intratable
33
La notacin O
T (n )
1E+21
1E+18
Cbica
Cuadrtica
Lineal
1E+15
1E+12
1E+9
1E+6
1E+3
1E+0
1E+0
1E+2
1E+4
1E+6
1E+8
1E+10
n
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
34
La notacin O
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
35
La notacin O
El anlisis asinttico de algoritmos determina el
tiempo de ejecucin en notacin O
Para realizar el anlisis asinttico
Buscar el nmero de operaciones primitivas ejecutadas en
el peor de los casos como una funcin del tamao de la
entrada
Expresar esta funcin con la notacin O
Ejemplo:
Se sabe que el algoritmo maximoArray ejecuta como
mucho 7n 1 operaciones primitivas
Se dice que maximoArray ejecuta en un tiempo O(n)
36
La notacin O
Reglas:
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
37
La notacin O
Reglas prcticas:
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
38
La notacin O
Reglas prcticas:
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
39
La notacin O
Ejemplo de anlisis asinttico para
dos algoritmos de clculo de medias
prefijas
35
30
X
A
25
20
15
10
5
0
1 2 3 4 5 6 7
40
La notacin O
Medias prefijas (Cuadrtico)
mediasPrefijas1(vector,n) vector
INICIO
A nuevo Array de n enteros
i0
MIENTRAS (i < n)
s X[0]
j1
MIENTRAS (j <= i)
s s + X[j]
jj+1
FIN-MIENTRAS
A[i] s / (i + 1)
ii+1
FIN-MIENTRAS
DEVOLVER A
FIN
OPERACIONES
n
1
n+1
n
n
1,2,3,4,,n
1,2,3,,n-1
1,2,3,,n-1
n
n
n
1
41
La notacin O
Medias prefijas (Lineal)
mediasPrefijas2(vector,n) vector
INICIO
A nuevo Array de n enteros
s0
i0
MIENTRAS (i < n)
s s + X[j]
A[i] s / (i + 1)
ii+1
FIN-MIENTRAS
DEVOLVER A
FIN
OPERACIONES
n
1
1
n+1
n
n
n
n
1
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
42
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
43
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
44
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
45
Estructura de Datos
Ingeniera en Informtica. Universidad Carlos III de Madrid
46