Está en la página 1de 58

Universidad Nacional de

Trujillo
Juan Orlando Salazar Campos
Ing. Informtico
salazarcjo@gmail.com
Complejidad.
Universidad Nacional de
Trujillo
Juan Orlando Salazar Campos
Anlisis de Algoritmos
Es una herramienta para hacer la
evaluacin de un diseo.
Permite establecer la calidad de un
programa y compararlo con otros
programas que resuelven un mismo
problema.
Suponga que existen dos programas P1
y P2 para resolver el mismo problema.
Cul de los dos es mejor?
Juan Orlando Salazar Campos
Anlisis de Algoritmos
Solucin:
Desarrollar (Implementar) ambos
programas y medir el tiempo que
cada uno de ellos consume para
resolver el problema. Modificar los
datos de entrada, promediar al final
su desempeo para establecer su
comportamiento en el caso promedio.
Juan Orlando Salazar Campos
Anlisis de Algoritmos
Problemas:
Pueden existir muchos algoritmos para
resolver el problema.
Costoso y casi imposible implementar
todos los programas.
Modificacin de los datos puede ser
una labor sin sentido.
Juan Orlando Salazar Campos
Anlisis de Algoritmos
Objetivo:
Establecer una medida de la calidad
de los algoritmos, que permita
compararlos sin la necesidad de
implementarlos
Esto implica asociar a cada algoritmo
una funcin matemtica que mida su
eficiencia.
Juan Orlando Salazar Campos
Anlisis de Algoritmos
Adems del tiempo de ejecucin, para
medir la eficiencia se debe considerar
la cantidad de memoria utilizada por
el programa.
Juan Orlando Salazar Campos
Tiempo de Ejecucin en un Algoritmo
Para tener una medida del tiempo de
ejecucin de un programa, se debe
pensar en los factores que tienen
influencia en dicho valor.
Velocidad de procesamiento.
El compilador utilizado (calidad del
cdigo generado).
La estructura del algoritmo.
Juan Orlando Salazar Campos
Tiempo de Ejecucin en un Algoritmo
Adems de la estructura del algoritmo, se
debe tener en cuenta que el nmero de
datos con los cuales trabaja un programa
influye en su tiempo de ejecucin.
Un programa de ordenamiento de un
arreglo, se demora menos en ordenar
100 elementos que 500.
Juan Orlando Salazar Campos
Tiempo de Ejecucin en un Algoritmo
Un programa puede presentar varias
posibilidades para encontrar su solucin:
El mejor caso (Best case)
Caso medio (Average case) y
Peor caso (Worst case).
Juan Orlando Salazar Campos
Tiempo de Ejecucin en un Algoritmo
El tiempo de ejecucin de un
algoritmo debe medirse en funcin al
tamao de los datos de entrada que
debe procesar.
Se define como el tiempo empleado por el
algoritmo A en procesar una entrada de
tamao n y producir una solucin al
problema.
Juan Orlando Salazar Campos
Tiempo de Ejecucin en un Algoritmo
Lo ideal es encontrar una funcin
matemtica que describa de manera
exacta T
A
(n).
Sin embargo, en muchos casos, el
clculo de esta funcin no se puede
realizar, ya que depende de otro factor no
considerado y que es casi imposible de
medir: la cantidad de la entrada.
Juan Orlando Salazar Campos
Tiempo de Ejecucin en un Algoritmo
Ejemplo: Consideremos el algoritmo
utilizado para determinar si un
determinado elemento se encuentra en
un vector de n posiciones.
// elem: es el elemento buscado
i=0;
while ((i<N) && (vec[i] != elem))
i++;
Juan Orlando Salazar Campos
Tiempo de Ejecucin en un Algoritmo
Anlisis terico.
Verificar la influencia que tienen los
datos especficos de la entrada (no
solamente su cantidad).
Supongamos que fijamos N = 6 y
que la evaluacin de cada lnea del
programa toma t microsegundos.
Juan Orlando Salazar Campos
Tiempo de Ejecucin en un Algoritmo
Consideremos el vector siguiente:
0 5
1 6
2 7
3 8
4 9
5 10
Juan Orlando Salazar Campos
Tiempo de Ejecucin en un Algoritmo
Si elem = 5, cuantos microsegundos
consume.
i = 0;
t ms.
((0<6) && (vec[0]
!= 5))
t ms.
i++ ;
----
Total 2 t ms.
Juan Orlando Salazar Campos
Tiempo de Ejecucin en un Algoritmo
Si elem=9, cuantos microsegundos consume.
i = 0;
t ms.
((0<6) && (vec[0] != 9))
t ms.
i++ ;
t ms.
((1<6) && (vec[1] != 9))
t ms.
i++ ;
t ms.
((2<6) && (vec[2] != 9))
t ms.
i++ ;
t ms.
((3<6) && (vec[3] != 9))
t ms.
i++ ;
t ms.
((4<6) && (vec[4] != 9))
t ms.
Total 10 t ms.
Juan Orlando Salazar Campos
Tiempo de Ejecucin en un Algoritmo
Aunque se conozca el tamao de los
datos de entrada, es imposible para
muchos problemas determinar el tiempo
de ejecucin para cada una de las
posibles entradas.
Por esta razn se debe trabajar con el
tiempo utilizado por el algoritmo en el
peor de los casos ya que es mucho ms
fcil definir este peor caso.
Juan Orlando Salazar Campos
Tiempo de Ejecucin en un Algoritmo
Con este antecedente se redefine T
A
(n).
T
A
(n) = Tiempo que se demora el algoritmo A en el
peor de los casos, para encontrar una solucin a
un problema de tamao n.
Juan Orlando Salazar Campos
Notacin Asinttica
Operacin elemental:
Es aquella operacin cuyo tiempo de
ejecucin se puede acotar superiormente
por una constante que solamente
depender de la implementacin
particular usada: de la maquina, del
lenguaje, del compilador, etc.
Juan Orlando Salazar Campos
Notacin Asinttica
Ejemplo de estas operaciones son:
Suma,
Resta,
Multiplicacin,
Asignacin,
Acceso a arreglos, etc.
Aunque en rigor el tiempo de una
multiplicacin no es el mismo que el
tiempo de la suma, pero difieren en una
constante multiplicativa.
Juan Orlando Salazar Campos
Notacin Asinttica
La eficiencia de un algoritmo se mide
mediante las operaciones elementales,
ms especficamente del nmero de
operaciones elementales que se deben
ejecutar.
Anlisis del Peor Caso: se define
como el mximo costo (operaciones
elementales) de aplicar el algoritmo a
un problema de tamao n.
Juan Orlando Salazar Campos
Notacin Asinttica
Este anlisis se suele aplicar para casos
extremos en los que interesa saber
cuanto, como mximo, va a costar la
aplicacin del algoritmo.
Algunas reglas bsicas para realizar
dicho conteo:
Operaciones bsicas (+, -, *, =, ): Una
unidad de tiempo, o alguna constante.
Operaciones de entrada / salida: Otra
unidad de tiempo, o una constante diferente.
Juan Orlando Salazar Campos
Notacin Asinttica
Algunas reglas bsicas para realizar
dicho conteo:
Ciclos Para (for): Se pueden expresar como
la sumatoria, con los lmites del ciclo.
Si y Case: Estudiar lo que puede ocurrir.
Mejor caso y peor caso segn la condicin.
Llamadas a procedimientos: Una constante
de la llamada ms el tiempo del
procedimiento.
Juan Orlando Salazar Campos
Notacin Asinttica
La notacin asinttica nos permite
realizar simplificaciones sustanciales aun
cuando estemos interesados en medir algo
ms tangible que el tiempo de ejecucin,
tal como es el nmero de veces que se
ejecuta una instruccin dentro del
programa.
Juan Orlando Salazar Campos
Notacin Asinttica
Se denomina notacin asinttica porque
trata acerca del comportamiento de
funciones en el lmite, esto quiere decir,
para valores suficientemente grandes de
su parmetro. Esto hace que los valores
pequeos de las entradas no sean
interesantes.
Dicho de otra manera, estamos
interesados en las tasas de crecimientos
en lugar de los valores concretos.
Juan Orlando Salazar Campos
Notacin Asinttica
La notacin (o grande) o cota superior es
la encargada de dar una cota para el peor
caso y determinar las acotaciones
superiores lo ms exactamente posible
para valores crecientes de la entrada.
Juan Orlando Salazar Campos
Notacin Asinttica
Por lo tanto se puede asegurar que
conociendo la cota superior, ningn
tiempo empleado en resolver el
problema dado ser de un orden
superior al de la cota. Se conoce como
el orden del peor caso.
Juan Orlando Salazar Campos
Complejidad
La idea detrs del concepto de
complejidad es tratar de encontrar una
funcin f(n), fcil de calcular y conocida,
que acote el crecimiento de la funcin de
tiempo, para poder decir T
A
(n) crece
aproximadamente como f o, ms exacto
En ningn caso T
A
(n) se comportar peor
que f al aumentar el tamao del
problema.
Juan Orlando Salazar Campos
Complejidad
A modo de ejemplo se pueden mencionar
algunas funciones tpicas de complejidad
de algoritmos (dicho de otra forma que
acotan superiormente el comportamiento
del tiempo de ejecucin).
2
n
, n
3
, n
2
, nlog(n), n
Cul es la grfica de cada una de ellas?
Juan Orlando Salazar Campos
Complejidad
0
5
10
15
20
25
30
0 2 4 6 8
1
0
1
2
1
4
1
6
1
8
2
0
n
f
(
n
)
f(n) = 5
f(n) = log(n)
f(n) = n
f(n) = nlog(n)
Juan Orlando Salazar Campos
Complejidad
f (n) = n^2
0
50
100
150
200
250
300
350
400
450
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
n
f
(
n
)
f (n) = n^2
f(n) = 2 ^ n
0
200000
400000
600000
800000
1000000
1200000
0 2 4 6 8
1
0
1
2
1
4
1
6
1
8
2
0
n
f
(
n
)
f(n) = 2 ^ n
Juan Orlando Salazar Campos
Complejidad
Un problema se denomina Tratable si
existe un algoritmo de complejidad
polinomial para resolverlo. En caso
contrario se denomina Intratable.
Esta clasificacin es importante porque,
cuando el tamao del problema
aumenta, los algoritmos de complejidad
polinomial dejan de ser utilizables de
manera gradual.
Juan Orlando Salazar Campos
Complejidad
Los algoritmos para resolver problemas
intratables, explotan de un momento a
otro, volvindose completamente incapaces
para llegar a una respuesta del problema
planteado.
El caso lmite de los problemas Intratables
son los problemas Indecibles, son
problemas para los cuales no existen
algoritmos que los resuelvan.
Juan Orlando Salazar Campos
Complejidad
Clases P de problemas:
Conjunto de problemas, para los cuales
se conoce un algoritmo Polinomial en
una maquina Determinista.
Clases NP de problemas:
Conjunto de problemas, para los cuales
se toma aleatoriamente una posible
solucin, y se prueba su factibilidad con
un algoritmo Polinomial en una maquina
Determinista.
Juan Orlando Salazar Campos
Complejidad
Clases NP-Completo de problemas
Se dice que un problema de decisin A
pertenece a NP-Completo cuando:
1. A NP.
2. Cada Problema en NP se puede
reducir polinomialmente a A.
Juan Orlando Salazar Campos
Complejidad
Complejidad 20 50 100 200 500 1000
1000n
0.02 s. 0.05 s. 0.1 s. 0.2 s. 0.5 s. 1 s.
1000n*log(n)
0.09 s. 0.3 s. 0.6 s. 1.5 s. 4.5 s. 10 s.
100n
2
0.04 s. 0.25 s. 1 s. 4 s. 25 s. 2 m.
10n
3
0.02 s. 1 s. 10 s. 1 m. 21 m. 2.7 h.
n
log(n)
0.4 s. 1.1 h. 220
das
125
Siglos
XXX XXX
2
n/3
0.001
s.
0.1 s. 2.7 h. 3*10
4
Siglos
XXX XXX
2
n
1 s. 35
Aos
3*10
4
Siglos
XXX XXX XXX
3
n
58 m. 2*10
9
siglos
XXX XXX XXX
Juan Orlando Salazar Campos
Complejidad
Algoritmo:
Solucin problemas Paso a Paso
Caracterizacin de un problema
Algortmico.
- Conjunto de todos los datos de entrada.
- El objetivo del problema.
Juan Orlando Salazar Campos
Complejidad
Un problema se representa por:
- Un dominio que contiene las
posibles soluciones.
- Una pregunta cuya respuesta genera
la solucin al problema .
Juan Orlando Salazar Campos
Complejidad
1. Problemas de Decisin.
Existe una estructura S que satisface
las propiedades de ?
Respuesta : SI o NO
2. Problemas de Localizacin.
Encontrar una estructura S que
satisface las propiedades de
Respuesta : S
Juan Orlando Salazar Campos
Complejidad
3. Problemas de Optimizacin
Encontrar estructura S que satisface las
propiedades de y criterios de optimizacin
Respuesta : S* = optimo (S) , S
Juan Orlando Salazar Campos
Complejidad
Resolucin de un problema.
Se resuelve cuando se aplica el
algoritmo a una entrada de datos
(instancia) y se obtiene una salida que
responde al objetivo.
Juan Orlando Salazar Campos
Complejidad
Ejemplo:
Problema del Agente Viajero (PVV)
Dominio: {
1-2-4-3-1
1-2-3-4-1
1-3-4-2-1
1-3-2-4-1
1-4-2-3-1
1-4-3-2-1
}
= 57
= 29
= 57
= 42
= 42
= 29
1 2
4 3
10
15 20
12
4
3
Juan Orlando Salazar Campos
Complejidad
1. Complejidad NO se refiere a:
- Dificultad de diseo.
- Rebuscado de un algoritmo.
2. SI se refiere a:
- Medidas de desempeo
- Tiempo Complejidad Temporal
- Espacio Complejidad Espacial
Juan Orlando Salazar Campos
Complejidad
Desempeo en tiempo de ejecucin:
O. Insercin C1 * N^2
Merg sort C2 * n * log (n)
n es el tamao de la entrada.
C1, c2 son constantes independientes de n.
Mientras n crece, la ventaja de log(n) sobre
n es ms notoria.
Juan Orlando Salazar Campos
Complejidad
Juan Orlando Salazar Campos
Notacin Asinttica
Ejemplo 1:
Para el siguiente algoritmo, su T(n) = 4n+3
Algoritmo :
(1) suma = 0;
(2) for(i=1;i<=n;i++)
(3) suma = suma + i;
TOTAL 4n+3
Instruccin (1) Ocupa 1 unidad de tiempo. 1
Instruccin (3) Ocupa 2 unidades de tiempo y es
ejecutada n veces. 2n
Instruccin (2) Ocupa 1 unidad de tiempo en la asignacin,
n+1 en las comparaciones y n en los
incrementos. 2n+2
Juan Orlando Salazar Campos
Notacin Asinttica
Ejemplo 2: Para el siguiente algoritmo, su T(n)=5n
2
+4n+3
Algoritmo :
(1) suma = 0;
(2) for(i=1;i<=n;i++)
(3) for(j=1;j<=n;j++)
(4) suma = suma + i*j;
1 1
*
n n
i j
i j

Instruccin (2)(3) Ocupan 2n+2 unidades de tiempo cada una y se


ejecutan anidadas. (2n+2)*n+(2n+2) = 2n
2
+4n+2
Instruccin (4) Ocupa 1 unidad de tiempo en la asignacin, 2 en la suma
y multiplicacin y se repite n * n veces 3n
2
TOTAL 5n
2
+4n+3
Instruccin (1) Ocupa 1 unidad de tiempo. 1
Juan Orlando Salazar Campos
Notacin Asinttica
1. Para simplificar el estudio de la complejidad
computacional, se adoptan ciertas convenciones en su
notacin.
2. Se define el orden de un algoritmo como el termino de
mayor grado.
Tiempo de ejecucin T(n)= 4n+3 Orden O(n)
Orden Polinomial Lineal.
Tiempo de ejecucin T(n)= 7n
2
+8n+5 Orden O(n
2
)
Orden Polinomial Cuadrtico.
Tiempo de ejecucin T(n)= 2
n
+3 Orden O(2
n
)
Orden Exponencial.
Juan Orlando Salazar Campos
Notacin Asinttica
O(n
x
) Tiempo Polinomial
Algoritmos Eficientes
Problemas Tratables
O(x
n
) Tiempo Exponencial
Algoritmos Ineficientes
Problemas Intratables
Juan Orlando Salazar Campos
Notacin Asinttica
Juan Orlando Salazar Campos
Notacin Asinttica
Juan Orlando Salazar Campos
Notacin Asinttica
Juan Orlando Salazar Campos
Notacin Asinttica
Juan Orlando Salazar Campos
Notacin Asinttica
Juan Orlando Salazar Campos
Notacin Asinttica
Juan Orlando Salazar Campos
Notacin Asinttica
Juan Orlando Salazar Campos
Notacin Asinttica
www.salazar.sisamec.com

También podría gustarte