Vous êtes sur la page 1sur 4

Diseo de Algoritmos

TEMA 1: COMPLEJIDAD COMPUTACIONAL


Un algoritmo es un conjunto de instrucciones claramente especificadas que el ordenador
debe seguir para resolver un problema. Una vez que se ha dado un algoritmo para
resolver un problema y se ha probado que es correcto, el siguiente paso es determinar la
cantidad de recursos, tales como tiempo y espacio, que el algoritmo requerir para su
aplicacin. Este paso se llama anlisis de algoritmos. Un algoritmo que necesita varios
gigabytes de memoria principalmente no es til en la mayora de las maquinas actuales.

1.1 Complejidad de Algoritmos




Algoritmo: Instrucciones I1,I2,.,Ik.

Complejidad de Tiempo: El tiempo que se demora en llevar a cabo todas las


instrucciones.

Complejidad de espacio: Espacio que requiere el algoritmo.

Tiempo: Tiempo de las instrucciones t1,t2,..,tk

Frecuencia: Veces que se ejecuta la instruccin f1,f2,fk

En general, para un algoritmo la complejidad se calcular recorriendo todas las


instrucciones, obteniendo la frecuencia de ella.

CT = f i t i
i =1

Simplificacin: t1=t2=.tk=cte=1
k

CT = f = Nro de pasos
i =1

Para un algoritmo


Entrada : Datos que se ingresan al algoritmo

Instancia: Valor particular de la entrada.

Paso: Instruccin simple

Instruccin simple: calculo de variables simples.

Diseo de Algoritmos
Ejemplo1: Suma de Matrices
Entrada: A, B (m n ), m, n
Salida: C = A + B (m n )

cij = a ij + bij

Para i=1 hasta m hacer


Para j=1 hasta n hacer
Cij=aij+bij
Fin para
Fin para

Complejidad de tiempo: m*n*t1


Ejemplo 2: Multiplicacin de matrices

Entrada: A (m n ), B (n r ), m, n, r
Salida: C = A B (m r )
Para i=1 hasta m hacer
Para j=1 hasta r hacer
cij=ai1*b1j
Para k=2 hasta n hacer
cij=aik*bkj+cij
Fin para
Fin para
Fin para

Complejidad de Tiempo: mrt1+(n-1)rmt2

Diseo de Algoritmos
Ejemplo 3:

Entrada: n
Salida: f(n)
Si n=1 entonces

(1 Comparacin)

f(n)=1

(1 Asignacin)

caso contrario
si n es par entonces

(1 Comparacin)

f(n)=n/2+1

(2 Operaciones, 1 Asignacin)

caso contrario
si n es impar entonces

(1 Comparacin)

f(n)=1

(1 Asignacin)

para k=2 hasta n


f(n)=k+3k2

(n-1 ciclo) (3 Operaciones, 1 Asignacin)

Complejidad de tiempo: 4*n

Complejidad del peor caso: Tiempo necesario para la entrada ms desfavorable


siendo E1, E2,.,Ek todas las posibles entradas al algoritmo.
maxt (E j ) = C PC
1 j k

Complejidad del mejor caso: C MC = min t (E j )


1 j k

Complejidad del Caso Medio: C CM = p j t (E j )


k

j =1

Diseo de Algoritmos
Ejemplo 4: Factorial

Entrada: n
Salida : n!
Si n=0 entonces
Nfactorial=1
Caso contrario
Aux=1
Para i=1 hasta n hacer
Aux=aux * i
Fin para
Nfactorial= aux
Fin si


Complejidad Peor Caso


CPC= 2*n+3

Complejidad Mejor Caso


CMC=2

Complejidad Caso Medio


n

j =0

j =1

CCM = t j p j = 2* p0 + ( 2 j + 3) p j
pj =

1
n +1

j = 0,1, , n

CCM =

2
2 n
1 n
+
j
+
3
n +1
n + 1 n + 1 j =1
j =1

CCM =

2
2 n
n
+
j +3

n + 1 n + 1 j =1
n +1

2
2 n ( n + 1) 3n
+

+
n +1 n +1
2
n +1
1
=
( 2 + 3n ) + n ~ O ( n )
n +1

CCM =
CCM

Vous aimerez peut-être aussi