Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porMaría Josefa Mercedes Villalba Torregrosa Modificado hace 8 años
1
Oscar F. Bedoya L. oscarbed@eisc.univalle.edu.co Fundamentos de análisis y diseño de algoritmos
2
Algoritmos en la computación Un algoritmo es un procedimiento computacional que toma un valor o conjunto de valores como entrada y produce un valor o conjunto de valores como salida Algoritmo Entrada Salida “Un algoritmo se puede ver como una herramienta para resolver un problema computacional bien especificado”
3
Algoritmos en la computación Un algoritmo es un procedimiento computacional que toma un valor o conjunto de valores como entrada y produce un valor o conjunto de valores como salida Algoritmo Entrada Salida “Un algoritmo se puede ver como una herramienta para resolver un problema computacional bien especificado” Entrada/Salida especifican los problemas
4
Algoritmos en la computación Problema 1: Cambio de monedas Entrada: A={a 1, a 2, …, a n } tal que a 1 <a 2 < …<a n, P N Salida: tal que y es mínimo
5
Algoritmos en la computación Problema 2: ??? Entrada: n Z + Salida: 1, si n=2 1, si n=1 1, si n>2 n mod i 0 i {2, …., n-1} 0, si n>2 x | n mod x=0 x {2, …., n-1}
6
Algoritmos en la computación Problema 3: ??? Entrada: S= Salida: una permutación de S, S’= tal que a 1 ’<a 2 ’<…,<a n ’
7
Algoritmos en la computación Instancia de un problema (instancia del problema) Una instancia es una entrada válida para el algoritmo Algoritmo de ordenamiento
8
Algoritmos en la computación Correctitud Se dice que un algoritmo es correcto, si para cada instancia, el algoritmo termina con la salida correcta Algoritmo Entrada 1 Salida 1 Entrada 2 Entrada n Salida 2 Salida n
9
Algoritmos en la computación primo(int n){ if (n==1) return 1; if (n%2==0) return 0; else return 1; } Para cada instancia, el algoritmo termina con la salida correcta ¿Es el algoritmo primo correcto?
10
Algoritmos en la computación primo(int n){ if (n==1) return 1; else{ int c=0; for (int i=2; i<n; i++) if (n%i==0) c++; if (c==0) return 1; else return 0; } Para cada instancia, el algoritmo termina con la salida correcta ¿Es el algoritmo primo correcto?
11
Algoritmos en la computación primo(int n){ if (n==1) return 1; else{ int c=0; for (int i=3; i<n; i++) if (n%i==0) c++; if (c==0) return 1; else return 0; } Para cada instancia, el algoritmo termina con la salida correcta ¿Es el algoritmo primo correcto?
12
Algoritmos en la computación Tipos de problemas solucionados utilizando algoritmos: Proyecto del genoma humano: Identificar genes en secuencias de ADN que llegan hasta los 10000pb. Se almacena la información observada hasta el momento en bases de datos y se analizan con algoritmos que debe ser eficientes Búsquedas en Internet: Dada la cantidad de información indexada, responder de forma correcta la solicitud de una búsqueda en Internet
13
Algoritmos en la computación Tipos de problemas solucionados utilizando algoritmos: Tratamiento de colisiones de objetos: Detectar una colisión entre dos cuerpos en un espacio 3D Búsquedas sobre videos: En un biblioteca, un usuario desea encontrar todos los videos donde aparezca JFK
14
Algoritmos en la computación Análisis de algoritmos Meta: Comparar algoritmos que resuelven un mismo problema Correctitud Eficiencia Tiempo Espacio Estructuras de datos utilizadas Modelo computacional El tipo y número de datos con los cuales trabaja (escalabilidad)
15
Análisis del algoritmo Insertion sort
16
Algoritmos en la computación Insertion sort
17
Algoritmos en la computación Insertion sort
18
Algoritmos en la computación Insertion sort
19
Algoritmos en la computación Insertion sort
20
Algoritmos en la computación Insertion sort Se recorre de derecha a izquierda buscando el lugar que debe ocupar
21
Algoritmos en la computación Insertion sort
22
Algoritmos en la computación Insertion sort
23
Algoritmos en la computación Insertion sort
24
Algoritmos en la computación Insertion sort
25
Algoritmos en la computación Insertion sort
26
Algoritmos en la computación Insertion sort
27
Algoritmos en la computación Insertion sort
28
Algoritmos en la computación Insertion sort
29
Algoritmos en la computación Insertion sort
30
Algoritmos en la computación Insertion sort
31
Algoritmos en la computación Insertion sort
32
Algoritmos en la computación Insertion sort
33
Algoritmos en la computación Insertion sort
34
Algoritmos en la computación Insertion sort 103269 A:
35
Algoritmos en la computación Insertion sort Desarrolle el algoritmo INSERTION-SORT(A) 103269 A:
36
Algoritmos en la computación INSERTION-SORT(A) 1 for j 2 to length[A] 2 do key A[j] 3 i j-1 4 while i >0 and A[i] > key 5do A[i+1] A[i] 6 i i-1 7 A[i+1] key
37
Algoritmos en la computación INSERTION-SORT(A) 1 for j 2 to length[A] 2 do key A[j] 3 i j-1 4 while i >0 and A[i] > key 5do A[i+1] A[i] 6 i i-1 7 A[i+1] key 103269
38
Algoritmos en la computación INSERTION-SORT(A) 1 for j 2 to length[A] 2 do key A[j] 3 i j-1 4 while i >0 and A[i] > key 5do A[i+1] A[i] 6 i i-1 7 A[i+1] key 103269 j=2 Key=A[2]=3
39
Algoritmos en la computación INSERTION-SORT(A) 1 for j 2 to length[A] 2 do key A[j] 3 i j-1 4 while i >0 and A[i] > key 5do A[i+1] A[i] 6 i i-1 7 A[i+1] key 103269 j=2 Key=A[2]=3 i=1
40
Algoritmos en la computación INSERTION-SORT(A) 1 for j 2 to length[A] 2 do key A[j] 3 i j-1 4 while i >0 and A[i] > key 5do A[i+1] A[i] 6 i i-1 7 A[i+1] key 10 269 j=2 Key=A[2]=3 i=0
41
Algoritmos en la computación INSERTION-SORT(A) 1 for j 2 to length[A] 2 do key A[j] 3 i j-1 4 while i >0 and A[i] > key 5do A[i+1] A[i] 6 i i-1 7 A[i+1] key 310269 A[1]=3
42
Algoritmos en la computación INSERTION-SORT(A) 1 for j 2 to length[A] 2 do key A[j] 3 i j-1 4 while i >0 and A[i] > key 5do A[i+1] A[i] 6 i i-1 7 A[i+1] key 310269 j=3 Key=A[3]=2
43
Algoritmos en la computación INSERTION-SORT(A) 1 for j 2 to length[A] 2 do key A[j] 3 i j-1 4 while i >0 and A[i] > key 5do A[i+1] A[i] 6 i i-1 7 A[i+1] key 310269 j=3 Key=A[3]=2 i=2
44
Algoritmos en la computación INSERTION-SORT(A) 1 for j 2 to length[A] 2 do key A[j] 3 i j-1 4 while i >0 and A[i] > key 5do A[i+1] A[i] 6 i i-1 7 A[i+1] key 310 69 j=3 Key=A[3]=2 i=2
45
Algoritmos en la computación INSERTION-SORT(A) 1 for j 2 to length[A] 2 do key A[j] 3 i j-1 4 while i >0 and A[i] > key 5do A[i+1] A[i] 6 i i-1 7 A[i+1] key 310 69 j=3 Key=A[3]=2 i=1
46
Algoritmos en la computación INSERTION-SORT(A) 1 for j 2 to length[A] 2 do key A[j] 3 i j-1 4 while i >0 and A[i] > key 5do A[i+1] A[i] 6 i i-1 7 A[i+1] key 331069 j=3 Key=A[3]=2 i=0
47
Algoritmos en la computación INSERTION-SORT(A) 1 for j 2 to length[A] 2 do key A[j] 3 i j-1 4 while i >0 and A[i] > key 5do A[i+1] A[i] 6 i i-1 7 A[i+1] key 231069 j=3 Key=A[3]=2 i=0
48
Algoritmos en la computación INSERTION-SORT(A) 1 for j 2 to length[A] 2 do key A[j] 3 i j-1 4 while i >0 and A[i] > key 5do A[i+1] A[i] 6 i i-1 7 A[i+1] key 231069 j=4 Key=A[4]=6 i=3
49
Algoritmos en la computación INSERTION-SORT(A) 1 for j 2 to length[A] 2 do key A[j] 3 i j-1 4 while i >0 and A[i] > key 5do A[i+1] A[i] 6 i i-1 7 A[i+1] key 2310 9 j=4 Key=A[4]=6 i=3
50
Algoritmos en la computación INSERTION-SORT(A) 1 for j 2 to length[A] 2 do key A[j] 3 i j-1 4 while i >0 and A[i] > key 5do A[i+1] A[i] 6 i i-1 7 A[i+1] key 2310 9 j=4 Key=A[4]=6 i=2
51
Algoritmos en la computación INSERTION-SORT(A) 1 for j 2 to length[A] 2 do key A[j] 3 i j-1 4 while i >0 and A[i] > key 5do A[i+1] A[i] 6 i i-1 7 A[i+1] key 236109 j=4 Key=A[4]=6 i=2
52
Algoritmos en la computación INSERTION-SORT(A) 1 for j 2 to length[A] 2 do key A[j] 3 i j-1 4 while i >0 and A[i] > key 5do A[i+1] A[i] 6 i i-1 7 A[i+1] key 236109 j=5 Key=A[5]=9 i=4
53
Algoritmos en la computación INSERTION-SORT(A) 1 for j 2 to length[A] 2 do key A[j] 3 i j-1 4 while i >0 and A[i] > key 5do A[i+1] A[i] 6 i i-1 7 A[i+1] key 23610 j=5 Key=A[5]=9 i=4
54
Algoritmos en la computación INSERTION-SORT(A) 1 for j 2 to length[A] 2 do key A[j] 3 i j-1 4 while i >0 and A[i] > key 5do A[i+1] A[i] 6 i i-1 7 A[i+1] key 23610 j=5 Key=A[5]=9 i=3
55
Algoritmos en la computación INSERTION-SORT(A) 1 for j 2 to length[A] 2 do key A[j] 3 i j-1 4 while i >0 and A[i] > key 5do A[i+1] A[i] 6 i i-1 7 A[i+1] key 236910 j=5 Key=A[5]=9 i=3
56
Algoritmos en la computación ¿Qué es hacer análisis de algoritmos? Calcular tiempo de computación Espacio (memoria) Analizar las estructuras de datos utilizadas Identificar el tipo y número de datos de entrada al algoritmo + medidas de análisis (tiempo de ejecución) medidas experimentales
57
Algoritmos en la computación ¿Qué es hacer análisis de algoritmos? Calcular tiempo de computación* Espacio (memoria) Analizar las estructuras de datos utilizadas Identificar el tipo y número de datos de entrada al algoritmo + medidas de análisis (tiempo de ejecución) medidas experimentales
58
Algoritmos en la computación primo(int n){ if (n==1) return 1; else{ int c=0; for (int i=2; i<n; i++) if (n%i==0) c++; if (c==0) return 1; else return 0; } ¿De qué depende la cantidad de operaciones básicas que realizará el algoritmo para un llamado específico?
59
Algoritmos en la computación El tiempo de computo depende del tamaño de la entrada, los tiempos serán diferentes si se ordenan 10 números que si se ordenan 10000. Además, es posible que para dos entradas de igual tamaño, el tiempo sea diferente. Esto depende, de qué tan ordenado ya se encontraba la secuencia de entrada
60
Algoritmos en la computación El tiempo de computo T de un algoritmo depende del tamaño de la entrada, T(n)=f(n), donde n es el tamaño de la entrada
61
Algoritmos en la computación El tiempo de computo T de un algoritmo depende del tamaño de la entrada, T(n)=f(n), donde n es el tamaño de la entrada T 1 (n)=3n 2 T 2 (n)=6n 3 por ejemplo, para n=100, se tiene: T 1 (n)=3*100 2 =30.000 T 2 (n)=6*100 3 =6.000.000
62
Algoritmos en la computación El tiempo de computo T de un algoritmo depende del tamaño de la entrada, T(n)=f(n), donde n es el tamaño de la entrada T 1 (n)=3n 2 T 2 (n)=6n 3 por ejemplo, para n=100, se tiene: T 1 (n)=3*100 2 =30.000 T 2 (n)=6*100 3 =6.000.000 Operaciones primitivas Pasos Instrucciones
63
Algoritmos en la computación Note que los pasos ejecutados se calculan independientemente de la máquina y de la implementación
64
Algoritmos en la computación InstrucciónCostoVeces que se repite 1 for j 2 to length[A] 2 do key A[j] 3 i j-1 4 while i >0 and A[i] > key 5do A[i+1] A[i] 6 i i-1 7 A[i+1] key
65
Algoritmos en la computación InstrucciónCostoVeces que se repite 1 for j 2 to length[A]c1c1 2 do key A[j]c2c2 3 i j-1c3c3 4 while i >0 and A[i] > keyc4c4 5do A[i+1] A[i]c5c5 6 i i-1c6c6 7 A[i+1] keyc7c7
66
Algoritmos en la computación InstrucciónCostoVeces que se repite 1 for j 1 to length[A]c1c1 2 print A[j]c2c2
67
Algoritmos en la computación for j 1 to 3for (int j=1; j<=3; j++) j=1 j=2 j=3 j=4
68
Algoritmos en la computación for j 1 to 3for (int j=1; j<=3; j++) j=1 j=2 j=3 j=4 La cantidad de comparaciones en un for es: cantidad de números válidos + 1
69
Algoritmos en la computación for j 1 to 3for (int j=1; j<=3; j++) j=1 j=2 j=3 j=4 La cantidad de comparaciones en un for es: cantidad de números válidos + 1 Cantidad de comparaciones: 3 + 1
70
Algoritmos en la computación for j 1 to n ¿Cuántas veces se repite?
71
Algoritmos en la computación InstrucciónCostoVeces que se repite 1 for j 1 to length[A]c1c1 n+1 2 print A[j]c2c2 n
72
Algoritmos en la computación InstrucciónCostoVeces que se repite 1 for j 2 to length[A]c1c1 ? 2 print A[j]c2c2 ?
73
Algoritmos en la computación for j 2 to 4for (int j=2; j<=4; j++) j=2 j=3 j=4 j=5 La cantidad de comparaciones en un for es: cantidad de números válidos + 1
74
Algoritmos en la computación for j 2 to 4for (int j=2; j<=4; j++) j=2 j=3 j=4 j=5 La cantidad de comparaciones en un for es: (4-2+1) + 1
75
Algoritmos en la computación for j 2 to 6for (int j=2; j<=6; j++) ???
76
Algoritmos en la computación for j 2 to n La cantidad de comparaciones en el for es:
77
Algoritmos en la computación for j 2 to n La cantidad de comparaciones en el for es: (n-2+1) + 1 = n
78
Algoritmos en la computación InstrucciónCostoVeces que se repite 1 for j 2 to length[A]c1c1 ??? 2 do key A[j]c2c2 3 i j-1c3c3 4 while i >0 and A[i] > keyc4c4 5do A[i+1] A[i]c5c5 6 i i-1c6c6 7 A[i+1] keyc7c7
79
Algoritmos en la computación InstrucciónCostoVeces que se repite 1 for j 2 to length[A]c1c1 n 2 do key A[j]c2c2 3 i j-1c3c3 4 while i >0 and A[i] > keyc4c4 5do A[i+1] A[i]c5c5 6 i i-1c6c6 7 A[i+1] keyc7c7
80
Algoritmos en la computación InstrucciónCostoVeces que se repite 1 for j 2 to length[A]c1c1 n 2 do key A[j]c2c2 ??? 3 i j-1c3c3 4 while i >0 and A[i] > keyc4c4 5do A[i+1] A[i]c5c5 6 i i-1c6c6 7 A[i+1] keyc7c7
81
Algoritmos en la computación InstrucciónCostoVeces que se repite 1 for j 2 to length[A]c1c1 n 2 do key A[j]c2c2 n-1 3 i j-1c3c3 4 while i >0 and A[i] > keyc4c4 5do A[i+1] A[i]c5c5 6 i i-1c6c6 7 A[i+1] keyc7c7
82
Algoritmos en la computación InstrucciónCostoVeces que se repite 1 for j 2 to length[A]c1c1 n 2 do key A[j]c2c2 n-1 3 i j-1c3c3 n-1 4 while i >0 and A[i] > keyc4c4 5do A[i+1] A[i]c5c5 6 i i-1c6c6 7 A[i+1] keyc7c7
83
Algoritmos en la computación InstrucciónCostoVeces que se repite 1 for j 2 to length[A]c1c1 n 2 do key A[j]c2c2 n-1 3 i j-1c3c3 n-1 4 while i >0 and A[i] > keyc4c4 5do A[i+1] A[i]c5c5 6 i i-1c6c6 7 A[i+1] keyc7c7 Depende de qué tan ordenados se encuentran los datos en A
84
Algoritmos en la computación InstrucciónCostoVeces que se repite 1 for j 2 to length[A]c1c1 n 2 do key A[j]c2c2 n-1 3 i j-1c3c3 n-1 4 while i >0 and A[i] > keyc4c4 5do A[i+1] A[i]c5c5 6 i i-1c6c6 7 A[i+1] keyc7c7 Para cada j, se puede repetir una cantidad diferente de veces
85
Algoritmos en la computación InstrucciónCostoVeces que se repite 1 for j 2 to length[A]c1c1 n 2 do key A[j]c2c2 n-1 3 i j-1c3c3 n-1 4 while i >0 and A[i] > keyc4c4 5do A[i+1] A[i]c5c5 6 i i-1c6c6 7 A[i+1] keyc7c7 Sea t j, la cantidad de comparaciones que se hacen en el while para cada valor de j Por ejemplo, t 2,es un número que indica cuántas veces se cumple la condición cuando j=2
86
Algoritmos en la computación InstrucciónCostoVeces que se repite 1 for j 2 to length[A]c1c1 n 2 do key A[j]c2c2 n-1 3 i j-1c3c3 n-1 4 while i >0 and A[i] > keyc4c4 t 2 + t 3 + t 4 + … + t n 5do A[i+1] A[i]c5c5 6 i i-1c6c6 7 A[i+1] keyc7c7 Por ejemplo, t 2,es un número que indica cuántas veces se cumple la condición cuando j=2 Sea t j, la cantidad de comparaciones que se hacen en el while para cada valor de j
87
Algoritmos en la computación InstrucciónCostoVeces que se repite 1 for j 2 to length[A]c1c1 n 2 do key A[j]c2c2 n-1 3 i j-1c3c3 n-1 4 while i >0 and A[i] > keyc4c4 t 2 + t 3 + t 4 + … + t n 5do A[i+1] A[i]c5c5 (t 2 -1)+(t 3 -1)+(t 4 -1)+ … + (t n -1) 6 i i-1c6c6 7 A[i+1] keyc7c7
88
Algoritmos en la computación InstrucciónCostoVeces que se repite 1 for j 2 to length[A]c1c1 n 2 do key A[j]c2c2 n-1 3 i j-1c3c3 n-1 4 while i >0 and A[i] > keyc4c4 t 2 + t 3 + t 4 + … + t n 5do A[i+1] A[i]c5c5 (t 2 -1)+(t 3 -1)+(t 4 -1)+ … + (t n -1) 6 i i-1c6c6 (t 2 -1)+(t 3 -1)+(t 4 -1)+ … + (t n -1) 7 A[i+1] keyc7c7
89
Algoritmos en la computación InstrucciónCostoVeces que se repite 1 for j 2 to length[A]c1c1 n 2 do key A[j]c2c2 n-1 3 i j-1c3c3 n-1 4 while i >0 and A[i] > keyc4c4 t 2 + t 3 + t 4 + … + t n 5do A[i+1] A[i]c5c5 (t 2 -1)+(t 3 -1)+(t 4 -1)+ … + (t n -1) 6 i i-1c6c6 (t 2 -1)+(t 3 -1)+(t 4 -1)+ … + (t n -1) 7 A[i+1] keyc7c7 n-1
90
Algoritmos en la computación InstrucciónCostoVeces que se repite 1 for j 2 to length[A]c1c1 n 2 do key A[j]c2c2 n-1 3 i j-1c3c3 n-1 4 while i >0 and A[i] > keyc4c4 5do A[i+1] A[i]c5c5 6 i i-1c6c6 7 A[i+1] keyc7c7 n-1 T(n)=???
91
Algoritmos en la computación InstrucciónCostoVeces que se repite 1 for j 2 to length[A]c1c1 n 2 do key A[j]c2c2 n-1 3 i j-1c3c3 n-1 4 while i >0 and A[i] > keyc4c4 5do A[i+1] A[i]c5c5 6 i i-1c6c6 7 A[i+1] keyc7c7 n-1 En el mejor de los casos, cuánto vale t j ?
92
Algoritmos en la computación INSERTION-SORT(A) 1 for j 2 to length[A] 2 do key A[j] 3 i j-1 4 while i >0 and A[i] > key 5do A[i+1] A[i] 6 i i-1 7 A[i+1] key 23101619 j=2 t 2 =?
93
Algoritmos en la computación INSERTION-SORT(A) 1 for j 2 to length[A] 2 do key A[j] 3 i j-1 4 while i >0 and A[i] > key 5do A[i+1] A[i] 6 i i-1 7 A[i+1] key 23101619 j=3 t 3 =?
94
Algoritmos en la computación InstrucciónCostoVeces que se repite 1 for j 2 to length[A]c1c1 n 2 do key A[j]c2c2 n-1 3 i j-1c3c3 n-1 4 while i >0 and A[i] > keyc4c4 5do A[i+1] A[i]c5c5 6 i i-1c6c6 7 A[i+1] keyc7c7 n-1 En el mejor de los casos, t j =1. T(n)=???
95
Algoritmos en la computación InstrucciónCostoVeces que se repite 1 for j 2 to length[A]c1c1 n 2 do key A[j]c2c2 n-1 3 i j-1c3c3 n-1 4 while i >0 and A[i] > keyc4c4 5do A[i+1] A[i]c5c5 0 6 i i-1c6c6 0 7 A[i+1] keyc7c7 n-1 En el mejor de los casos, t j =1. T(n)=???
96
Algoritmos en la computación InstrucciónCostoVeces que se repite 1 for j 2 to length[A]c1c1 n 2 do key A[j]c2c2 n-1 3 i j-1c3c3 n-1 4 while i >0 and A[i] > keyc4c4 5do A[i+1] A[i]c5c5 6 i i-1c6c6 7 A[i+1] keyc7c7 n-1 En el peor de los casos, cuánto vale t j ?
97
Algoritmos en la computación INSERTION-SORT(A) 1 for j 2 to length[A] 2 do key A[j] 3 i j-1 4 while i >0 and A[i] > key 5do A[i+1] A[i] 6 i i-1 7 A[i+1] key 32169 j=2 t 2 =?
98
Algoritmos en la computación INSERTION-SORT(A) 1 for j 2 to length[A] 2 do key A[j] 3 i j-1 4 while i >0 and A[i] > key 5do A[i+1] A[i] 6 i i-1 7 A[i+1] key 32169 j=2 t 2 =? i=1
99
Algoritmos en la computación INSERTION-SORT(A) 1 for j 2 to length[A] 2 do key A[j] 3 i j-1 4 while i >0 and A[i] > key 5do A[i+1] A[i] 6 i i-1 7 A[i+1] key 23169 j=2 t 2 =? i=0
100
Algoritmos en la computación INSERTION-SORT(A) 1 for j 2 to length[A] 2 do key A[j] 3 i j-1 4 while i >0 and A[i] > key 5do A[i+1] A[i] 6 i i-1 7 A[i+1] key 23169 j=3 t 3 =?
101
Algoritmos en la computación InstrucciónCostoVeces que se repite 1 for j 2 to length[A]c1c1 n 2 do key A[j]c2c2 n-1 3 i j-1c3c3 n-1 4 while i >0 and A[i] > keyc4c4 5do A[i+1] A[i]c5c5 6 i i-1c6c6 7 A[i+1] keyc7c7 n-1 En el peor de los casos, t j =j. T(n)=???
102
Algoritmos en la computación InstrucciónCostoVeces que se repite 1 for j 2 to length[A]c1c1 n 2 do key A[j]c2c2 n-1 3 i j-1c3c3 n-1 4 while i >0 and A[i] > keyc4c4 5do A[i+1] A[i]c5c5 6 i i-1c6c6 7 A[i+1] keyc7c7 n-1 En el caso promedio, se supone que se necesitan j/2 comparaciones, esto es, t j =j/2. T(n)=???
103
Algoritmos en la computación InstrucciónCosto 1 i=1c1c1 2 while i<=len(mat1)c2c2 3 j 1c3c3 4 while j<=len(mat2)c4c4 5 mat3[i][j] mat1[i][j]+mat2[i][j]c5c5 6 j j+1c6c6 7 i i+1c7c7 Calcule el tiempo de computo para el algoritmo def programa1(mat1, mat2) # suponga que len(mat1)=len(mat2)=n
104
Algoritmos en la computación InstrucciónCosto 1 s 0 c1c1 2 i 1 c2c2 3 while i<=n c3c3 4 t 0 c4c4 5 j 1 c5c5 6 while j<=i c6c6 7 t t+1 c7c7 8 j j+1c8c8 9 s s+tc9c9 10 i i+1c 10 Calcule el tiempo de computo para el algoritmo def programa2(n)
105
Algoritmos en la computación InstrucciónCosto 1 i 1 c1c1 2 while i<=n c2c2 3 k i c3c3 4 while k<=n c4c4 5 k k+1 c5c5 6 k 1 c6c6 7 while k<=i c7c7 8 k k+1c8c8 9 i i+1c9c9 Calcule el tiempo de computo para el algoritmo def programa3(n)
106
Algoritmos en la computación Diseño de algoritmos Otras alternativas para el diseño de algoritmos son: Aproximación incremental Dividir y conquistar Programación dinámica Técnicas voraces
107
Algoritmos en la computación Dividir y conquistar Considera recursividad Dividir el problema en subproblemas Conquistar los subproblemas (solucionarlos recursivamente) Combinar las soluciones de los subproblemas para crear la solución al problema original
108
Algoritmos en la computación Merge Sort 52461326 5246 1326 5246 1326 52461326 Dividir
109
Algoritmos en la computación Merge Sort 12234566 2456 1236 2546 1326 52461326 Combinar
110
Algoritmos en la computación Merge sort Entrada: Dividir: Conquistar: a’ 1 a’ 2 … a’ q y a’ q+1 a’ q+2 … a’ n Combinar: si a’ 1 a’ q+1 y a’ 2 >a’ q+1 entonces sino …
111
Algoritmos en la computación Merge sort T(n)= 1n=1 Dividir(n) + Conquistar(n) + Combinar(n)
112
Algoritmos en la computación Merge sort T(n)= 1n=1 1 + 2T(n/2) + nn>1 al resolver la recurrencia, T(n) = n lg n
113
Algoritmos en la computación Análisis de algoritmos Insertion sort y Merge sort Computador 1Computador 2 10 8 instrucciones/seg10 6 instrucciones/seg Implementación 1(Insertion)Implementación 2(Merge) 2n 2 50n*lg n
114
Algoritmos en la computación Analisis de algoritmos Insertion sort y Merge sort Computador 1Computador 2 10 8 instrucciones/seg10 6 instrucciones/seg Implementación 1(Insertion)Implementación 2(Merge) 2n 2 50n*lg n Tiempo 1(Insertion)Tiempo 2(Merge) 2(10 6 ) 2 /10 8 =20.000segs=5.56horas50*10 6 lg 10 6 /10 6 =1.000segs=16.67 mins Ordenar un arreglo de 10 6 números
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.