Академический Документы
Профессиональный Документы
Культура Документы
=
n
i
c
1
1
Para i 1 hasta n hacer
instruccion
finpara
Donde C1 es el costo de la instruccin que
se ejecuta en el ciclo El resultado de la
sumatoria es n * C1 lo cual es evidente
porque la instruccin dentro del ciclo se
ejecuta n veces.
Ejemplo 4
para i 1 hasta n hacer
para j 3 hasta m hacer
instruccion
finpara
finpara
= = =
= =
n
i
n
i
m
j
c m n c m c
1 1 3
1 * ) 2 ( * 1 * ) 2 ( 1
Cuando los ciclos dependen uno
del otro podemos aplicar la
misma tcnica
para i 1 hasta n hacer
para j i hasta n hacer
instruccion
finpara
finpara
Cuando los ciclos dependen uno
del otro podemos aplicar la
misma tcnica
Ejemplo 5
para i 1 hasta n hacer
para j i hasta n hacer
instruccion
finpara
finpara
= = =
+ =
n
i
n
i
n
i j
c i n c
1 1
1 * ) 1 ( 1
=
= + =
n
i
i n c
1
1 * 1
= = =
+ =
n
i
n
i
n
i
i n c
1 1 1
) 1 ( * 1
= = =
+ =
n
i
n
i
n
i
i n c
1 1 1
) 1 ( * 1
)
2
) 1 ( *
* ( * 1 n
n n
n n c +
+
=
)
2
) 1 ( *
* ( * 1 n
n n
n n c +
+
=
)
2
( * 1
2
n n
c
+
=
)
2
( * 1
2
n n
c
+
=
Solucin
Ejercicio 1
funcion buscar(a, c): entero
1. j1
2. mientras (a[j] <c) y (j <n) hacer
3. jj+1
4. finmientras
5. si a[j]= c entonces
6. retornar j
7. sino
8. retornar 0
9. finsi
finbuscar
En la linea 1 se ejecuta 1 OE(asignacion)
En la linea 2 se ejecuta la condicion del bucle con un total de 4 OE (dos
comparaciones, un acceso al vector y un AND )
La linea 3 esta compuesta por un incremento y una asignacion(2 OE)
La linea 5 esta formada por una condicion y un acceso al vector(2 OE)
La linea 6 contiene un retorno(1 OE) si la condicion se cumple
La linea 8 contiene un retorno (1 OE) cuando la condicion del SI anterior
es falsa
Tiempo de ejecucin
OE: operaciones elementales
Caso mejor:
Linea 1: 1
Linea 2(solo la primera mitad): 2
Linea 5 : 2
Linea 6 : 1
T(n)= 1 + 2 + 2+1 = 6
Caso peor:
Linea 1:
Linea 2(bucle se repite n-1 veces hasta que
se cumple la segunda condicion):
Linea 5 hasta la 8:
=
+ = + + + + + =
1
1
2 6 1 2 ) 4 ) 2 4 ( (( 1 ) (
n
i
n n T
funcion buscar(a, c): entero
1. j1
2. mientras (a[j] <c) y (j <n) hacer
3. jj+1
4. finmientras
5. si a[j]= c entonces
6. retornar j
7. sino
8. retornar 0
9. finsi
finbuscar
Caso medio:
En el caso medio el bucle se ejecutara un
numero de veces entre 0 y n-1 y vamos a
suponer que cada una de ellas tiene la
misma probabilidad de suceder.
El numero medio de veces que se
efectuara el bucle es de:
=
1
0
2
1 1
n
i
n
n
i
Tenemos que:
=
+ = + + + + + =
2 / ) 1 (
1
3 3 1 2 ) 4 ) 2 4 ( (( 1 ) (
n
i
n n T
funcion buscar(a, c): entero
1. j1
2. mientras (a[j] <c) y (j <n) hacer
3. jj+1
4. finmientras
5. si a[j]= c entonces
6. retornar j
7. sino
8. retornar 0
9. finsi
finbuscar
Funcion valor (n)
para i1 hasta n hacer
para j1 hasta 20 hacer
auxj*2
auxaux*i+r
finpara
finpara
retornar aux
finvalor
Ejercicio 2
Dado el siguiente algoritmo, determine su caso medio, mejor y peor
caso.
Funcion valor (n)
para i1 hasta n hacer
para j1 hasta 20 hacer
auxj*2
auxaux*i+r
finpara
finpara
retornar aux
finvalor
SOLUCION 2
Dado el siguiente algoritmo, determine su caso medio, mejor y peor
caso.
= = =
+ = + = +
n
i j
n
i
n c c c c c c
1
20
1 1
) 2 1 ( 20 ) 2 1 ( 20 ) 2 1 (
Ejercicio 3
procedimiento valor (n)
k0
para i1 hasta n hacer
para j1 hasta i hacer
kk+1
finpara
finpara
finvalor
Dado el siguiente algoritmo, determine su caso medio, mejor y peor
caso.
el bucle exterior se realiza N veces, mientras que el interior se
realiza 1, 2, 3, ... N veces respectivamente.
En total, 1 + 2 + 3 + ... + N = N*(1+N)/2
Solucin 3
procedimiento valor (n)
k0
para i1 hasta n hacer
para j1 hasta i hacer
kk+1
finpara
finpara
finvalor
Dado el siguiente algoritmo, determine su caso medio, mejor y peor
caso.
2
2
) 1 (
1 ) ( c
n n
c n T
+
+ =
Ejercicio 4
procedimiento algoritmo (n)
k0
para i1 hasta n hacer
para ji hasta n hacer
kk+1
finpara
finpara
finvalor
Dado el siguiente algoritmo, determine su caso medio, mejor y peor
caso.
Solucin 4
procedimiento algoritmo (n)
k0
para i1 hasta n hacer
para ji hasta n hacer
kk+1
finpara
finpara
finvalor
Dado el siguiente algoritmo, determine su caso medio, mejor y peor
caso.
Observacin:
i j # iteraciones
1 1 2 3 4 4
2 2 3 4 3
3 3 4 2
4 4 1
En total, 1 + 2 + 3 + ... + N = N*(1+N)/2
2
2
) 1 (
1 ) ( c
n n
c n T
+
+ =
Ejercicio 5
procedimiento algoritmo (n)
k0
para i1 hasta n hacer
para ji+1 hasta j n hacer
kk+1
finpara
finpara
finvalor
Dado el siguiente algoritmo, determine su caso medio, mejor y peor
caso.
Solucin 5
procedimiento algoritmo (n)
k0
para i1 hasta n hacer
para ji+1 hasta j n hacer
kk+1
finpara
finpara
finvalor
Dado el siguiente algoritmo,
determine su caso medio, mejor y
peor caso.
Observacin: n = 3
i j # iteraciones
1 2 3 2
2 3 1
3
Observacin: n = 4
i j # iteraciones
1 2 3 4 3
2 3 4 2
3 4 1
4
2
2
)) 1 ( 1 )( 1 (
1 ) ( c
n n
c n T
(
+
+ =
2
2
) 1 (
1 ) ( c
n n
c n T
(
+ =
Ejercicio 6
procedimiento algoritmo (n)
k1
para i1 hasta n hacer
para j1 hasta m hacer
kk*m
finpara
para k1 hasta n*m hacer
kk+1
finpara
finpara
finvalor
Dado el siguiente algoritmo, determine su caso medio, mejor y peor
caso.
Ejercicio 6
procedimiento algoritmo (n)
k1
para i1 hasta n hacer
para j1 hasta m hacer
kk*m
finpara
para k1 hasta n*m hacer
kk+1
finpara
finpara
finvalor
Dado el siguiente algoritmo, determine su caso medio, mejor y peor
caso.
= = =
+ + =
n
i
m
j
m n
k
c c c n T
1 1
*
1
) 3 2 ( 1 ) (
)) * ( 3 2 ( 1 ) ( m n c m c n c n T + + =
Ejercicio 7
procedimiento algoritmo (n)
k1
para i1 hasta n hacer
para ji hasta n*n hacer
kk*2
finpara
finpara
finvalor
Dado el siguiente algoritmo, determine su caso medio, mejor y peor
caso.
Solucin 7
procedimiento algoritmo (n)
k1
para i1 hasta n hacer
para ji hasta n*n hacer
kk*2
finpara
finpara
finvalor
Dado el siguiente algoritmo,
determine su caso medio, mejor
y peor caso.
Observacin: n = 3
i j # iteraciones =24
1 19 9
2 29 8
3 3..9 7
para n=3, nxn = 9, # iteraciones =45
1+2+3+4++9 = n*n(n*n+1)/2
2 )
2
) 1 ) * )(( * (
2
) 1 * ( *
( 1 ) ( c
n n n n n n n n n n
c n T
+
+
+ =
2 )
2
2
( 1 ) (
2 3
c
n n n
c n T
+
+ = 2 24 1 2 )
2
3 3 ) 3 ( 2
( 1
2 3
c c c c + =
+
+ =
Ejercicio 8
procedimiento algoritmo (n)
p1
para i1 hasta n hacer
para ji hasta n hacer
para kj hasta n hacer
pp+1
finpara
finpara
finpara
finvalor
Dado el siguiente algoritmo, determine su caso medio, mejor y peor
caso.
Ejercicio 9
Funcion valor (n)
para i1 hasta n hacer
para j1 hasta i hacer
si i < j entonces
aux i + j
si ( i + 2 < j ) entonces
auxaux*2
finsi
finsi
finpara
finpara
retornar aux
finvalor
Dado el siguiente algoritmo, determine su caso medio, mejor y peor
caso.
Solucin 9
Funcion valor (n)
para i1 hasta n hacer
para j1 hasta i hacer
si i < j entonces
aux i + j
si ( i + 2 < j ) entonces
auxaux*2
finsi
finsi
finpara
finpara
retornar aux
finvalor
Dado el siguiente algoritmo,
determine su caso medio,
mejor y peor caso.
Observacin: n = 3
i j # iteraciones =6
1 1 1<1 no
2 1 2 2<1 no
2<2 no
3 1 2 3 3<1 no
3<2 no
3<3 no
2 1
2
) 1 ( *
) ( c c
n n
n T +
+
=
t0
para i1 hasta n
para j1 hasta i
para kj hasta n
t t+1
finpara
finpara
finpara
Ejercicio 10
Halle el tiempo de ejecucin
Solucin 10
t0
para i1 hasta n
para j1 hasta i
para kj hasta n
t t+1
finpara
finpara
finpara
Halle el tiempo de ejecucin
2 *
6
) 1 2 )( 1 (
1 ) (
1
2
c
n n n
c i n T
n
i
+ +
+ = =
=
Para:
n=4, son 30 iteraciones
n=3, son 14 iteraciones
Funcion algoritmo(n ): entero
entero: n, r, i, j
r 0
para i 1 hasta n - 1 hacer
para j i + 1 hasta n hacer
para k 1 hasta j hacer
r r + 1
finpara
finpara
finpara
retornar r
finalgoritmo
Que valores devuelve la siguiente
funcin?
Ejercicio 11
Para
5 .r = 40
50.r = 41650
100..r = 333300
SOLUCION
Solucin 11
funcion algoritmo(n ) : entero
entero: n, r, i, j
r 1
para i 1 hasta n hacer
para j i + 1 hasta n hacer
para k i + j - 1 hasta n hacer
r r * 2
finpara
finpara
finpara
finalgoritmo
Que valores devuelve la siguiente
funcin?
Ejercicio 12
Para
3 .r = 8
5. r = 8192
6. r = 4194304
7.. r = 0
:
n.. r =0
SOLUCION
Solucin 12
p 0
para i 1 hasta n
p p + i*i
para j 1 hasta p
escribir (a[p, j])
finpara
finpara
Ejercicio 13
Halle la cantidad de iteraciones de ejecucin
p 0
para i 1 hasta n
p p + i*i
para j 1 hasta p
escribir (a[p, j])
finpara
finpara
Solucin 13
Observacin: n = 3
i p # iteraciones =6
1 1 1
2 5 5
3 14 14
4 30 30
total 50
1
2
+ (1
2
+2
2
)+( 1
2
+2
2
+3
2
)+( 1
2
+2
2
+3
2
+4
2
)
4(1
2
)+3(2
2
)+2(3
2
)+1(4
2
)
Halle la cantidad de
iteraciones de ejecucin
p 0
para i 1 hasta n
p p + i*i
para j 1 hasta p
escribir (a[p, j])
finpara
finpara
Solucin 13
1
2
+ (1
2
+2
2
)+( 1
2
+2
2
+3
2
)+( 1
2
+2
2
+3
2
+4
2
)
4(1
2
)+3(2
2
)+2(3
2
)+1(4
2
)
n(1
2
)+(n-1)( 2
2
) + (n-2)( 3
2
)..[n-(n-1)]( n
2
)
n(1
2
+2
2
+3
2
++n
2
) - n
2
(n+1)
2
/4 + n(n+1)(2n+1)/6
n(n)(n+1)(2n+1)/6 - n
2
(n+1)
2
/4 + n(n+1)(2n+1)/6
[n
2
(n+1)(2n+1)/6 + n(n+1)(2n+1)/6] - n
2
(n+1)
2
/4
[n(n+1)(2n+1)/6] (n +1) - n
2
(n+1)
2
/4
n(n+1)
2
(2n+1)/6 - n
2
(n+1)
2
/4
iteraciones= n (n+1)
2
[ (2n+1)/6 n/4]
factorizando
Halle la cantidad de
iteraciones de
ejecucin
p 0
para i 1 hasta n
p p + i*i
para j 1 hasta p
escribir (a[p, j])
finpara
finpara
Solucin 13
iteraciones= n (n+1)
2
[ (2n+1)/6 n/4]
iteraciones= 4 (4+1)
2
[ (2(4)+1)/6 4/4]
Iteraciones = 50
Halle la cantidad de iteraciones de ejecucin
PREGUNTA DE LABORATORIO
Pruebe(tome tiempos) los siguientes algoritmos iterativos usando la POO:
1. Bsqueda binaria que divida en tres partes el arreglo siempre
2. Bsqueda secuencial en una lista doble
En java y en C++ (no use colecciones o plantillas)
Luego informe usted de lo siguiente:
1. Pruebe el principio de invarianza, tomando tiempos de las
implementaciones en dos Pcs distintas de distinto fabricante o en dos
sistemas operativos distintos
2. En base a los tiempos calculados En que lenguaje son mas rpidas las
implementaciones?
Observacin
El trabajo puede ser realizado entre dos alumnos como mximo
Enviar al correo zorroculto69@hotmail.com
PREGUNTA DE LABORATORIO
Pruebe(tome tiempos) los siguientes algoritmos iterativos usando la POO:
1. Bsqueda binaria
2. Bsqueda secuencial
En java
usando plantillas
usando arreglos
En C++
usando plantillas
usando arreglos
Luego informe usted de lo siguiente:
1. Los programas en plantillas son mas rpidos que los usan arreglos?
2. Las plantillas en java son mas rpidas que en C++ o al revs?
3. Halle su ecuacin de tiempo de ejecucin en el mejor, peor y caso
promedio para ambos algoritmos.
No interesa tanto nivel de detalle como para
individualizar el costo de cada sentencia. Adems,
esto hara el anlisis dependiente del lenguaje de
programacin y de la plataforma de ejecucin.
Es importante aceptar el principio de invarianza, que
establece que un mismo algoritmo puede ser
implementado con diferencia de factores constantes
en distintos lenguajes o plataformas.
No es superado buscar la eficiencia, puede signicar
la diferencia entre obtener las soluciones del
problema o no. El avance del hardware no tiene tanto
impacto como el avance en los algoritmos.
Se necesitan herramientas matemticas que
cumplan con los criterios anteriores.
CONCLUSION
BRASSARD, G. /
BRATLEY, T. Fundamentos
de Algoritmia. Prentice
Hall. 1997
CAIR,
Osvaldo.Estructuras
de Datos. McGraw-Hill.
1998
KRUSE, Robert L.
Estructura de Datos y
Diseo de Programas.
Prentice Hall.
ALLEN WEISS, Mark
Estructura de Datos y
Algoritmos. Addison Wesley
JOYANES AGUILAR,
Luis Estructura de
Datos - Teora
McGraw-Hill.
AHO, Alfred V.
Estructura de Datos y
algoritmos Addison
Wesley.
BIBLIOGRAFIA
CEVALLOS, Francisco JAVA
2 Curso de programacin
Alfa y Omega
BIBLIOGRAFIA
DEITEL Y DEITEL
Como programar en JAVA.
Prentice Hall. 2004
LIPSCHUTZ, Seymur Ph.D.
Estructura de Datos. Serie
SCHAUM. McGraw-Hill. 1987