Documentos de Académico
Documentos de Profesional
Documentos de Cultura
=
+
n
i
Algoritmo PROD_INT(n, A, B, z); Inicio
Leer (n, A, B);
z := 0; Proceso
Para i := 1, n hacer
z := z + ai bi; Salida
Escribir (z);
Fin.
UPG FCM Formalismo, Abstraccin y complejidad 2012
Augusto Cortez Vsquez Pag. 14/21
Algoritmos de tiempo polinomico y tiempo exponencial
Un algoritmo es llamado en tiempo polinomial si es de orden O(p(n)) para alguna
funcin polinomial p(n), en caso contrario ser superpolinomial. Esto es exponencial o
peor.
Considrese las siguientes complejidades:
T
1
( n) = 2
n
T
2
( n) = n
3
T
3
( n) = 5 n
2
T
4
( n) = 100 n
Para cuatro algoritmos diferentes. Supongamos que cada operacin es ejecutada en 1
segundo. Tenemos el siguiente comportamiento de las complejidades.
Obsrvese que aquellos que tienen menor complejidad presentan un menor crecimiento
respecto a la variacin del tamao de la instancia (n), esto es, realizan menos
operaciones y por consiguiente debern ser ms eficientes.
Un algoritmo es considerado bueno si posee complejidad polinomial, esto es debido a
que conforme el tamao de la entrada n crece, los tiempos de ejecucin de los
algoritmos de tiempo polinomico se mantienen
Para resolver un problema pueden existir varios algoritmos. Por tanto, es lgico elegir el
mejor. Si el problema es sencillo o no hay que resolver muchos casos se podra elegir el
algoritmo mas fcil, sin embargo , si el problema es complejo o existen muchos casos habra
que elegir el algoritmo que menos recurso utilice.
Los recursos ms importantes son el tiempo de ejecucin y el espacio de almacenamiento.
Generalmente , el ms importante es el tiempo.
Al hablar de eficiencia de un algoritmo nos referimos a lo rpido que se ejecuta.
La eficiencia de un algoritmo depender, en general, del tamao de los valores de entrada N,
en donde N puede significar el numero de elementos de un vector, el numero de nodos de una
lusta enlazada, en numero de nodos de un arbol o un grafo etc.
5 10 15 20
300
0
200
0
100
0
UPG FCM Formalismo, Abstraccin y complejidad 2012
Augusto Cortez Vsquez Pag. 15/21
Una operacin elemental es aquella cuyo tiempo de ejecucin tiene una cota superior
constante que slo depende de su implementacin (por ejemplo: el ordenador o el lenguaje de
programacin utilizado.)
*Las operaciones elementales son consideradas de coste unitario.
*Ala hora de analizar un algoritmo importaran, por tanto, el numero de operaciones elementales
que precisa.
*La decisin de determinar que una operacin determinada es de coste unitario depender de
los ejemplares del problema que la utilice. Por ejemplo: En la mayor parte de los casos la suma
se considera de coste unitario puesto que al operar con los nmeros que se manejan
habitualmente en un ordenador los tiempos que emplea la suma son similares; sin embargo, en
caso de manejar nmeros muy grandes la suma no tendr un coste unitario puesto que tardara
ms cuanto ms sean los nmeros a sumar .
* Explorar el comportamiento de una funcin de una relacin entre
funciones, cuando algn parmetro de la funcin tiende hacia un valor
asinttico.
* Se denomina asinttica pues trata de funciones que tienden al lmite.
* Las notaciones asintticas nos permiten hallar la tasa de crecimiento del
tiempo de ejecucin
* Un algoritmo que sea superior asintticamente es preferible; por que se
considera el mximo lmite que llega una funcin.
*Funciones Conocidas(log
2
n, n ,n log
2
n, n
2
, n
3
, 2
n
)
N log
2
n n n log
2
n n
2
n
3
2
n
5 3 5 15 25 125 32
10 4 10 40 100 1000 1000
100 7 100 700 10000 10
6
10
30
1000 10 1000 10000 10
6
10
9
10
300
Notacin Asinttica O
Sea | , : N R
+
funciones.
Diremos que (n) est en el orden de |(n), si (n) est acotada
superiormente por un mltiplo real positivo de |(n) para todo n bien
grande.
*Sabemos que podemos definir la eficiencia de un algoritmo como una funcin T(n).
*A la hora de analizar un algoritmo nos interesa, principalmente, la forma en que se comporta el
algoritmo al aumentar de tamao de lo datos; es decir; como aumente su tiempo de ejecucin.
*Esto se conoce como eficiencia asinttica de un algoritmo y nos permitir comparar
distintos algoritmos puesto que deberamos elegir aquellos que se compartan mejor al crecer
los datos.
*La notacin Asinttica se describe por medio de una funcin cuyo dominio es el conjunto de
nmeros Naturales, N
*Se describe la notacin O o limite asinttico superior como:
-Existe c y un valor en el umbral n
0
tal que (n) s c | (n) siempre que
n n
0
*La notacin anterior bsicamente nos dice que si tenemos un algoritmo cuyo tiempo de
ejecucin es T(n) podemos encontrar otra funcin f(n) , y un tamao de problema n
0
de tal
forma que f(n) acota superiormente al tiempo de ejecucin para todos los problemas de tamao
superior a n
0
.
UPG FCM Formalismo, Abstraccin y complejidad 2012
Augusto Cortez Vsquez Pag. 16/21
*Esta notacin, como veremos a continuacin, facilitara en las comparaciones de eficiencia
entre algoritmos diferentes.
*Por ejemplo si T(n)= n
2
+ 5n + 100 y f(n) = n
2
entonces f(n) domina a T(n).
En prximas lecciones se ver la forma de calcular complejidad de algoritmos. Sin
embargo, podemos adelantar algunas reglas:
.O(C.g(n)) = O(g(n)) , C es una constante
. O(f(n).g(n)) = O(g(n))* O(f(n)) , y viceversa
.O(f(n)/g(n)) = O(g(n))/ O(f(n)) , y viceversa
. O(f(n)+g(n)) = funcin dominante de O(g(n)) y O(f(n))
.n* log
2
n domina a log
2
n
Dominancia entre funciones
Sea | , : N R
+
funciones.
Se dice que | domina asintoticamente a si se verifica que
- c, n
0
> 0 tal que
( n) s c | (n) n > n
0
obsrvese que a partir de n
0
la funcin c| es siempre mayor que la funcin
Ejemplo 14
n
3
domina asintoticamente a 2n
2
+ n
Para c =1 n
0
= 3 es fcil verificar que 2n
2
+ n s n
3
n > n
0
n
3
domina asintoticamente a 100n
2
log n
Para c =10 n
0
= 40 es fcil verificar que 100n
2
log n s n
3
n > n
0
n
3
domina asintoticamente a 3n
3
+ 2n
2
Para c =5 n
0
= 0 es fcil verificar que 3n
3
+ 2n
2
s n
3
n > n
0
UPG FCM Formalismo, Abstraccin y complejidad 2012
Augusto Cortez Vsquez Pag. 17/21
Ejemplo 15 Evaluar el polinomio P
Incio: O(n)
Este bloque est constituido por dos instrucciones
independientes con complejidades:
Leer(.) n+2 O(n)
p:= 1 O(1)
As por la regla 1, la complejidad asinttica del
bloque inicio ser:
O(mx{n,1}) = O(n)
Proceso:O(n
2
)
Ciclo:
p:=p+a
i
x
i
i + 2 O(i)
Control:
Para i:=1,n 3n 1 O(n)
Usando la regla 2, O(ni)
Desde que i asume en el peor caso el valor de n, entonces la complejidad asinttica
arriba ser: O(n
2
)
Salida: O(1)
Finalmente, la complejidad asinttica del algoritmo POL_E ser:
O(max{n,n
2
,1}) =O(n
2
)
Ejemplo 16
Inicio: O(n)
Proceso: O(n)
Como en el ejemplo
anterior, este est
conformado por un ciclo
de complejidad O(1) que
se repite un nmero de
veces dado por un
control de orden O(n). Esto es, este bloque presenta complejidad asinttica de:
O(1n) = O(n)
Salida: O(1).
La complejidad asinttica del algoritmo POL_P es: O(max{n,n,1}) =O(n)
Algoritmo POL_E(n, B,x)
Inicio
Leer (B,n,x)
p:=a
0
Proceso
Para i=1, n hacer
p:=p+a
i
x
i
Salida
Escribir (p)
Fin.
Algoritmo POL_P()
Leer (A,n,x)
p:=a
0
, y:=1
Proceso
Para i=1, n hacer
y:=y*x , p:=p+a
i
y
Fin-para;
Salida
Escribir (p)
UPG FCM Formalismo, Abstraccin y complejidad 2012
Augusto Cortez Vsquez Pag. 18/21
Reglas sencillas
Los algoritmos estructurados combinan sentencias de tipo
Secuencia
Decisin binaria(if..then...else)
Bucles (do..whhile, Repeat ...Until)
Llamadas a procedimientos o funciones
Sentencias sencillas
Asignacin Id = Expresin
Entrada Leer Lista_Id
Salida Escribir Lista_Id
Llamadas a funciones o procedimientos
Tienen complejidad O(1) , requieren tiempo de ejecucin constante, siempre y cuando no
trabajen sobre variables estructuradas cuyo tamao esta relacionado con el tamao del
problema N
Secuencias
La complejidad de una secuencia esta determinada por la suma de las
complejidades individuales, aplicando las operaciones antes expuestas.
Decisin binaria
La condicin suele ser de orden O(1), a ello se le sumara la complejidad del caso peor
posible, sea ya la rama then o la rama else. EN decisiones mltiples (ELSE IF, CASE Switch... )
se tomara el caso peor posible.
Bucles
Se distinguen dos casos en los bucles con contador en el que el tamao N forme parte
de los limites o que no. Si el bucle se realiza un numero fijo de veces, independientes de N,
entonces la repeticin solo introducir una constante multiplicativa que puede absolverse
Ejemplo 17
S1
Para i desde 1 hasta N
S2
FinPara
T(n) = t1 + t2 * n
T1 : tiempo que lleva ejecutar la serie S1
T2 : tiempo que lleva ejecutar la serie S2
Ejemplo 18
Si (Condicion )
S1
Else
S2
FinSi
Dependiendo de la condicin, si es verdad se ejecuta S1, en caso contrario se ejecuta S2
Esto hace que exista ms de un valor para T(n)
Tmin(n) s T(N) s Tmax(N)
Caso peor caso mejor
UPG FCM Formalismo, Abstraccin y complejidad 2012
Augusto Cortez Vsquez Pag. 19/21
T(n) = t1 + t2 * n
T1 : tiempo que lleva ejecutar la serie S1
T2 : tiempo que lleva ejecutar la serie S2
Ejemplo 19
Para i desde 1 hasta K
Algo de O(1) complejidad K* O(1) = O(1)
FinPara
Para i desde 1 hasta N
Algo de O(1) complejidad N* O(1) = O(N)
FinPara
Ejemplo 20
Para i desde 1 hasta N
Para j desde 1 hasta N
Algo de O(1) complejidad N*N* O(1) = O(N
2
)
FinPara
FinPara
Para i desde 1 hasta N
Para j desde 1 hasta i
Algo de O(1) complejidad N*N* O(1) = O(N
2
)
FinPara
FinPara
El bucle mayor se realiza N veces. Mientras que el bucle menor se realiza, 1, 2, ...n
veces respectivamente. Por tanto se realiza 1+2+3+...n= N*(N+1)/2 O(N
2
)
UPG FCM Formalismo, Abstraccin y complejidad 2012
Augusto Cortez Vsquez Pag. 20/21
Ejercicios propuestos
I Proporcione una especificacin para
1. Hallar el mayor elemento de un vector
2. Comparar si dos matrices son iguales o no
3. Verificar si una matriz tienen dos columnas iguales
4. Verificar si una matriz tiene dos columnas con los mismos elementos
5. Hallar el producto de los elementos de la diagonal principal de una matriz
6. Verificar si un vector esta ordenado o no
7. Hallar la media cuadrtica de una sucesin de nmeros tomados de una
fila secuencial (la media cuadrtica es igual a la raz del cociente entre la
suma de los cuadrados de los nmeros entre la cantidad de nmeros)
8. Especificar una funcin que dado un natural n, decida si es o no un
numero GUAY.
9. Construya un algoritmo para determinar el numero de combinaciones que
se puede hallar con n objetos diferentes tomados de r en r
10. Hallar la media armnica H de los nmeros (x) tomados de una fila
secuencial (1/H = 1/N * 1/x)
11. Los alumnos regulares de la facultad de medicina tienen edades entre 16 y
24 aos. Se quiere hallar el promedio de las edades y la variancia respecto
de la media. No deber considerarse los alumnos con edad fuera del rango
regular.
12. Hallar el elemento mayora de un vector. Un elemento es mayora si se
repite mas de n/2 veces, donde n es la longitud del vector
II Estimase la complejidad espacial, complejidad temporal y orden asinttico
de los ejercicios de pregunta 1
III Especifique la funcin, determine el tiempo de ejecucin y orden asinttico
para los siguientes algoritmos.
Fun SumaImpar()
Inicio
Leer A, N
S=0
Para I desde 1 hasta N
S=S+ I
N
fPara
FinFun
Fun SumaImpar()
Inicio
Leer A, N
M=A
1
Para I desde 2 hasta N
Si (A
i
> M )
M= A
i
FinSi
fPara
Escribir M
FinFun
UPG FCM Formalismo, Abstraccin y complejidad 2012
Augusto Cortez Vsquez Pag. 21/21
IV Proporcione 2 ejemplos de algoritmos de orden lineal. Evale la
complejidad temporal, complejidad espacial
V Proporcione 2 ejemplos de algoritmos de orden cuadrtico. Evalu la
complejidad temporal, complejidad espacial
VI Proporcione 2 ejemplos de algoritmos de orden cbico. Evale la
complejidad temporal, complejidad espacial
R RE EF FE ER RE EN NC CI IA AS S B BI IB BL LI IO OG GR RA AF FI IC CA AS S
1. [HERNANDEZ 2001] Hernandez, R.; Lazaro, J.C.; Dormido, R.; Ros, S.
Estructura de Datos y Algoritmos; Prentice Hall 2001, Madrid Espaa.
2. [BRASSARD 1998] Brassard,G. Bratley,P. Fundamentos de Algoritmia, Prentice
Hall 1998 Madrid
3. [CORTEZ 1999] Cortez Vasquez,Augusto. Matematica Discreta, UNMSM FISI
Lima 1999.
4 [CORTEZ 2002] Cortez Vsquez,Augusto. Algoritmica y Programacin, UCSS
Lima 2002.
5 [CORTEZ 2002] Cortez Vasquez,Augusto. Estructura de datos y algoritmos,
estructuras no lineales, URP Lima 2002.
6 [GRASSMANN 1996] Grasssmann W. ,Tremblay J. Matematica Discreta y
Logica; Prentice Hall 1996.
7 [GRIMALDI 1994] Grimaldi Ralph Matematicas Discreta y Combinatoria;
Addison-Wesley 1994
8 [GUTIERREZ 1993] Gutierrez Xavier Franch Estructuras de datos,
Especificacion, diseo e implementacion; Edicin UPC Barcelona Espaa 19934
9 [JAIME 2002] Jaime, Alberto. Estructuras de datos y Algoritmos; Prentice Hall
2002 Bogota D.C.
10 [JOHNSONBAUGH 1999] Johnsonbaugh Richard Mateamticas Discretas;
Prentice Hall 1999, Pags.
11 [LIPSCHUTZ 1987] Lipschutz Seymour Estructura de datos, Mc Graw-
Hill,1987
12 [CARMONA 1999] Carmona, Poyato Angel y Otros Estructuta de Datos, Caja
Sur Universidad de Cordova Espaa 1999
13 [SEDGEWICK 1993] Stroustrup Bjarne El C++ Lenguaje de programacion;
Addison-Wesley 1993 , Wilmington-Delaware EUA.
14 [TENEMBNAUM 1993] Tenembaum,A.Langsam Y.Augenstein M. Estructuras
de datos en C, Prentice Hall 1993.
15 [WEISS 2000] Weiss, Mark Allen. Estructuras de datos en JAVA; Addison-
Wesley, 2000.