Académique Documents
Professionnel Documents
Culture Documents
1. Compilador
2. Reconocedor de rostros, firmas, huella digital
3. Estenografía
4. Criptografía
5. Juego
6. Sistema de información
PROYECTO
Tema especifico a elegir
I. Planteamiento metodológico
Antecedentes
Definición del problema
Objetivos
general
especifico
Justificación
Grupo de 5 alumnos
Se utiliza software como java o C++
Evaluación:
PRIMERA PARTE
• Análisis de algoritmos
• Análisis de estructuras de control
• Análisis de estructuras de datos
• Divide y vencerás
• Algoritmos de clasificación y búsqueda
• Métodos de dispersión y colisión
SEGUNDA PARTE
• Algoritmos de retroceso
• Algoritmos voraces
• Programación dinámica
• Algoritmos geométricos
• Programación paralela
• Algoritmos probabilísticos
INTRODUCCION
Número de pasos
Estructuras
N
Suele ser la mas importante en la que
para cada problema determinaremos
una medida N, que llamaremos tamaño
de la entrada o número de datos a
procesar por el programa, intentaremos
hallar respuestas en función de dicha N.
2 8 10 15 24
Arreglo 24 8 2 15 10
n=5
24 15 10 8 2
COMPLEJIDAD TEMPORAL
TIEMPO MEMORIA
0x0000
0x0004
0x0006
0x0010
0x0014
COMPLEJIDAD TEMPORAL
n T(n)
TIEMPO DE
EJECUCION
El tiempo de Ejecución
de un programa se
mide en función de n
Profiling
Consiste en asociar a cada instrucción de un programa un
número que representa la fracción del tiempo total tomada para
ejecutar esa instrucción particular.
Una de las técnicas más conocidas (e informal) es la Regla 90-
10 , que afirma que el 90% del tiempo de ejecución se invierte
en el 10% del código.
METODOS PARA MEDIR EL
TIEMPO DE EJECUCION
Análisis
Análisis de algoritmos
Diseño de algoritmos
PRINCIPIO DE
INVARIANZA
Dado un algoritmo y dos implementaciones I1 y I2
(maquinas distintas o códigos distintos) que tardan
T1(n) y T2(n) respectivamente, el principio de
invarianza afirma que existe una constante real c>0
y un numero natural n0 tales que para todo n ≥ n0
se verifica que T1 (n) ≤ cT2(n).
PRINCIPIO DE
INVARIANZA
Búsqueda
secuencial
Búsqueda n 1000 1700 20000
con arreglos tiempo 2 2.5 40
PRINCIPIO DE INVARIANZA
El comportamiento de un algoritmo
puede variar notablemente para
diferentes secuencias de entrada.
Suelen estudiarse tres casos para
un mismo algoritmo :
Mejor caso
Peor caso
Caso medio
ANALISIS DE
ALGORITMOS
El análisis de un algoritmo analiza casos
extremos: el mejor y el peor.
C ( CM CP ) / 2
ANALISIS DE
ALGORITMOS
Por ejemplo para el algoritmo de clasificación por inserción :
Tipos de Algoritmos
Simple, fácil de codificar y depurar.
(algoritmos pequeños)
Eficiente y robusto. (resolver el problema
con el menor uso de recursos)
Consideramos en su diseño:
Para multiplicar
números de un byte, el
dos
al al * bl
multiplicando esta en el
registro AL y el multiplicador
es un byte en memoria o en
mov al, 5
otro registro.
mov bl,3
mul bl
Para la instrucción MUL BL,
la operación multiplica el
mov ah,02h
contenido del AL por el
mov al ,ax
contenido del BL. El
int 21h
producto generado esta en
el registro AL.
Ejemplo 1
Se calcula x elevado a y donde se requiere que x>0
x, y son enteros
Funcion Potencia(x, y)
si (y = 0) entonces
retornar 1
sino
resultadox
para i1 hasta y-1 hacer
resultadoresultado * x
finpara Cuánto cuesta el algoritmo en
finsi tiempo ?.. La comparación del si se
retornar resultado ejecuta siempre y supongamos que
finPotencia y no es cero (lo cual va a pasar la
mayoría de las veces). Se ejecuta
una asignación y luego y-1 veces
una multiplicación.
Ejemplo 1
Se calcula x elevado a y donde se requiere que x>0
x, y son enteros
Funcion Potencia(x, y)
si (y = 0) entonces
retornar 1
sino T= C1+ C2+(y-1)*(C3+C2)
resultadox
para i1 hasta y-1 hacer
resultadoresultado * x
finpara
finsi
retornar resultado
finPotencia
2 elevado 7=2*2*2*2*2*2*2
Para y = 8
Total = 6 multiplicaciones
Ejemplo 2
Se calcula x elevado a y donde se requiere que x>0
x, y son enteros
1. funcion Potencia2(x, y)
2. si (y = 0) entonces
3. retornar 1
4. sino
5. r1
6. si ( y > 1) entonces
7. rPotencia2(x, y/2)
8. rr* r
9. finsi
10. si ( y modulo 2 = 1 ) entonces
11. r r * x
12. finsi
13. finsi
14. retornar r
15. finPotencia
Ejemplo 2
Se calcula x elevado a y donde se requiere que x>0
x, y son enteros
r1 (5)
rpotencia (2, 3) (7)
1. funcion Potencia2(x, y)
2. si (y = 0) entonces r1 (5)
3. retornar 1 rpotencia(2, 1) (7)
4. sino
5. r1 r1 (5)
6. si ( y > 1) entonces r1x2 (11)
7. rPotencia2(x, y/2) retornar 2 (14)
8. rr* r r2x2 (8)
9. finsi r 4x2 (11)
10. si ( y modulo 2 = 1 ) entonces retornar 8 (14)
11. r r * x
12. finsi r 8x8 (8)
13. finsi r 64 x 2 (11)
14. retornar r retornar 128 (14)
15. finPotencia
Para y = 7
Total = 5 multiplicaciones
Ejemplo 2
Para valores más grandes de y , la
diferencia entre el primer y el
segundo algoritmo se hace mucho
más notoria
y multiplicaciones resultado
1. funcion Potencia2(x, y)
2. si (y = 0) entonces 8 4 256
3. retornar 1 9 5 512
4. sino
5. r1 10 5 1024
6. si ( y > 1) entonces 15 7 32768
7. rPotencia2(x, y/2)
8. rr* r 20 6 1048576
9. finsi
10. si ( y modulo 2 = 1 ) entonces
11. r r * x
12. finsi
13. finsi
14. retornar r
15. finPotencia
ANALISIS DE TIEMPO EN
ALGORITMOS ITERATIVOS
c1
i 1
Ejemplo 4 Cuando
Cuandoloslosciclos
ciclosdependen
dependenuno uno
del
delotro
otropodemos
podemosaplicar
aplicarlala
misma
mismatécnica
técnica
para i 1 hasta n hacer
para j 3 hasta m hacer
instruccion
finpara
finpara
n m n
c1 (m 2) * c1 n * (m 2) * c1
i 1 j 3 i 1
n 1
T (n) 1 (( (4 2) 4) 2 1 6n 2
i 1
funcion buscar(a, c): entero
Caso medio: 1. j1
2. mientras (a[j] <c) y (j <n) hacer
En el caso medio el bucle se ejecutara un 3. jj+1
numero de veces entre 0 y n-1 y vamos a 4. finmientras
suponer que cada una de ellas tiene la 5. si a[j]= c entonces
misma probabilidad de suceder. 6. retornar j
7. sino
El numero medio de veces que se 8. retornar 0
efectuara el bucle es de: 9. finsi
finbuscar
n 1
1 n 1
i
i 0 n
2
Tenemos que:
( n 1) / 2
T (n) 1 (( (4 2) 4) 2 1 3n 5
i 1
Ejercicio 2
Dado el siguiente algoritmo, determine su caso medio, mejor y peor
caso.
n 20 n
n(1 n)
T (n) c1 c2
2
Ejercicio 4
Dado el siguiente algoritmo, determine su caso medio, mejor y peor
caso.
n(1 n)
T (n) c1 c2
2
Ejercicio 5
Dado el siguiente algoritmo, determine su caso medio, mejor y peor
caso.
(n 1)n
T (n) c1 c2
2
Ejercicio 6
Dado el siguiente algoritmo, determine su caso medio, mejor y peor
caso.
1 1……9 9
procedimiento algoritmo (n)
2 2…9 8
k1
3 3..9 7
para i1 hasta n hacer
para ji hasta n*n hacer
kk*2
para n=3, nxn = 9, # iteraciones =45
finpara
finpara
1+2+3+4+…+9 = n*n(n*n+1)/2
finvalor
n * n(n * n 1) (n * n n)(( n * n n) 1)
T (n) c1 ( )c 2
2 2
2n 3 n 2 n 2(3)3 32 3
T (n) c1 ( )c 2 c1 ( )c2 c1 24c2
2 2
Ejercicio 8
Dado el siguiente algoritmo, determine su caso medio, mejor y peor
caso.
t0
para i1 hasta n
para j1 hasta i
para kj hasta n
t t+1
finpara
finpara
finpara
Solución 10
Halle el tiempo de ejecución
t0
para i1 hasta n
para j1 hasta i
para kj hasta n
t t+1
finpara
finpara
finpara
Para:
n
n(n 1)( 2n 1)
T ( n) i 2 n=4, son 30 iteraciones
i 1 6
n=3, son 14 iteraciones
CONCLUSION
No interesa tanto nivel de detalle como para
individualizar el costo de cada sentencia. Además,
esto haría el análisis dependiente del lenguaje de
programación y de la plataforma de ejecución.
DEITEL Y DEITEL
“Como programar en JAVA”.
Prentice Hall. 2004