You are on page 1of 25

Complejidad

Computacional

Elaborado por: Martn Ibarra Romero

Introduccin
Por qu requerimos del anlisis de
algoritmo?
- Estimar el tiempo de ejecucin
- Estimar la memoria que utilizar

Factores que complican el clculo


del tiempo
CPU, memoria y chache, tamao y/o velocidad

del bus.
Compilador, interprete, depurador, recolector

de basura, etc.
La red, el sistema operativo, etc.

Ejemplo:

Acumula nmeros en un arreglo


Programa
Cos Veces que se
to
ejecuta
int datos[N];
C1
1
datos[0]=0;
C2
1
for (i=1;i<=N;i++) C3
N veces
{
C4
N veces
cin >> datos[i]; C5
N veces
datos[i]
F(n)
= C1+C2+ (C3+C4+C5) N
+=datos[i-1];
Polinomio
que calcula el trabajo realizado por
}
el algoritmo. Recuerde que las contantes
C1,C2,C3,C4 y C5
Dependen del CPU que se este utilizando.
4

Notacin Asinttica
Para cualquier polinomio la tendencia de crecimiento esta dada
por el termino de mayor exponente. La Notacin asinttica ,
equivale al termino de mayor exponente.

Notacin Asinttica
Programa

Cos Veces que se


to
ejecuta
int datos[N];
C1
1
datos[0]=0;
C2
1
for (i=1;i<=N;i++) C3
N veces
{
C4
N veces
cin >> datos[i]; C5
N veces
datos[i]
F(n)
= C1+C2+ (C3+C4+C5) N
+=datos[i-1];
Notacin
asinttica: Tmanos el termino
}
de mayor exponente y eliminamos las
constantes, En nuestro ejemplo O(n)
6

Complejidad de un algoritmo
Determina la cantidad de trabajo
(operaciones) que realiza un algoritmo.
En otras palabra determina la eficiencia del
algoritmo
Se nombra en base a la notacin asinttica.
7

Grfica de cuotas

Tiempo real de ejecucin

Cuota Superior O(n) Suponga

para nuestro
seudocdigo:
T(n) =tiempo que tarda el algoritmo
n *(10n + 3n) = 10+3=13
Agregamos lectura e
inicializaciones
=13
=p Sustituyendo variables
Note que :
q
Por tanto:
T(n)= p<= p
=(p+q+r)
Cambio de variable
C=p+q+r
7n = lectura de la entrada,
21=inicializaciones

Por tanto
T(n)= p<= c()

Cuota Superior O(n)


T(n) tiempo que tarda el algoritmo

T(n) es O(f(n)), se lee T(n) es de orden f(n)


Para una n muy grande.
T(n) posee una cuota superior para una mltiplo (constante
C) de f(n)
T(n) es O(f(n)) si existe una constate c>0 y N>=0 para
toda n >
donde t(n)<= c*f(n)
O(n) expresa una cuota superior, no el crecimiento exacto
de la funcin.
Como nuestro ejemplo el tiempo de ejecucin:
T(n)= p<= O()
Otra cuota superior podra ser O() porque O() < O() .

10

Cuota Inferior
T(n)

(n)

tiempo que tarda el algoritmo

T(n) es (f(n)
Para una n muy grande.
T(n) es (f(n)) si existe una constate C>0 y n>=0 para
toda n >
donde t(n)> =c*f(n).
En nuestro ejemplo decimos que : T(n)= p= ()
Vea que:

T(n)= p= -> p es la constante C

Si O(f(n)) = (f(n)) Se dice que el algoritmo es (f(n))

11

Ejemplos
Funcin
de
crecimien
to

Ejemplo de algoritmo

Frmula

log

Bsqueda Binaria

Fusionar 2 arreglos ordenados en un 3 arreglo


ordenado

N x log N

Merge sort

Cuadrtica

Doble loop (comparar todos los elementos de un


arreglo)

Cbica

Triple loop (encontrar todos las tercias de n


nmeros)

Exponencia Bsqueda exhaustiva

12

Complejidad logartmica

Debemos adivinar un numero entre 1 y 100,


nosotros decimos el nmero y se nos contesta
es mayor, es menor o eureka. Suponga que el
nmero a adivinar es 75 veamos un posible
ejemplo.
Intent
o

Respuest
a

64

es mayor

96

es menor

80

es menor

72

es mayor

76

es menor

74

es mayor

75

eureka

Elimino

75

128

Log n.- significa a que potencia se eleva la base para que nos de n (base 2)
13

Complejidad N
Queremos fusionar 2 arreglos a y b
ordenados en un tercer arreglo ordenado.

.
Nueva lista

1 1
0
1 1
0 2

1 15
2
1 20
4

Complejidad N log N merge sort


Separa los datos en listas, las lista de un
elemento esta ordenadas, mezcla listas de
tamao de potencia de 2

1
0

1
1

1 1
1 2
1
2

1
1

1
2

10 11 12

9 1
0

7 8

1
0

5 6
7

Complejidad

cuadrtica

Dado un conjunto de puntos en un plano


encontrar la pareja de puntos mas cercano.

Para este problema existen mejores soluciones

Complejidad

cbica

Encontrar todos las tercias de n nmeros)

Complejidad Exponencial
Dado

un conjunto de nmeros determinar si


podemos obtener un X valor. Los valores pueden
ser desde 0 hasta
3
2
3
T

5
NT

T
T

0
NT

NT

NT

8
5
6
3

5
NT
T
NT

2
3
0

T=Tomo, lo
considero para
suma.
NT= No lo
tomo , no lo
considero para
suma.

Las complejidades ms comunes


N
Nx
N*N
N 1 log Lineal log(N) Cuadrtica

N*N*N
Cubica

Exp.

10

10

30

100

1,000

1,024

100

100

700

10,000

1,000,000

grande

1,000,000,000

grande

1,000

1 10 1,000

10,000

1,000,000

10,00
Log
N
significa
a que valor hay que elevar la
10,000 1 13
0 130,000 100,000,000 1,000,000,000,000 grande
base para obtener el valor N.

100,0 1,700,0 10,000,000,0 1,000,000,000,000,0


100,000 1 17
00
00
00
00

grande
19

Ejemplos resueltos

Ejemplo 1
Se tiene una lista de N nmeros y sobre

esa lista se pueden realizar P preguntas


de la forma suma del elemento A al
elemento B. Donde A<=B. De un
algoritmo para contestar las preguntas de
una mejor manera.
Ejemplo de una entrada de 6:
4
6
3
2
P1 suma de 1 al 3 = 13
P2 Suma de 2 al 4=11
21

Solucin
Se hace un pre clculo
4

10

13

15

Para contestar suma de


A a B sobre el arreglo
su marizado hago lo
siguiente Suma=
arr[B]- arr[A-1]
La funcin de crecimiento esta dada por el nmero de
veces que suma un dato
22

Ejemplo de tazas
Se tiene una escalera de n escalones y tiene una
cantidad k de tazas y se quiere saber cual es el
escaln ms alto en el que puedo soltar la taza sin
que se rompa.
Por ejemplo si tuviera solo una taza, tendra que
soltarla a partir del primer escaln y mientras no se
rompa ir subiendo de escaln al momento de
romperse, me fijo en el escaln anterior y esa es la
respuesta.
A)Encuentre un algoritmo eficiente para 2 jarras
23

Dos Tazas

funcin de crecimiento basada en cuantas veces tiro

la taza

Hay raz(n)
intervalos.
La
complejidad
asinttica es
raz(n)

Por tanto
cada
intervalo

24

Elaborado por: Martn Ibarra Romero

Fin

25

You might also like