Post on 15-Jan-2016
description
Instituto Politécnico Nacional.
Escuela Superior de Cómputo.
Unidad de Aprendizaje:Análisis de algoritmos.
Titular: Edgardo Adrián Franco Martínez.
Grupo: 3CM5.
Alumno: Antonio David Reyna Martínez.
Ejercicios 01: “Complejidad de los algoritmos”.
Análisis de algoritmos. Ejercicios 01: Complejidad de los algoritmos.
Antonio David Reyna Martínez. 3CM5.
Página 2 de 27
A. Para los siguientes 5 algoritmos determine la función de complejidad temporal y espacial.
1.for(i=1;i<n;i++)for(j=0;j<n-1;j++){
temp = A[j];A[j] = A[j+1];A[j+1] = temp;
}
for(i=1;i<n;i++)for(j=0;j<n-1;j++){
temp = A[j];A[j] = A[j+1];A[j+1] = temp;
}
1 [Asignación].(n-1)+1 [Comparaciones].(n-1) [Incrementos]
n-1 [Asignaciones].(n-1)[(n-1)+1] [Comparaciones].(n-1)(n-1) [Incrementos]
(n-1)(n-1) [Asignaciones].(n-1)(n-1) [Asignaciones].(n-1)(n-1) [Asignaciones].
(n-1)[(n-1)+1] [Saltos].
(n-1)+1 [Saltos].
Total: 1+n+n-1+n-1+n2-n+n2-2n+1+ n2-2n+1+ n2-2n+1+ n2-2n+1 +n2-n+n = 6n2-6n+3 instrucciones
Función de complejidad temporal: 6n2-6n+3 ≈O(n2)
nInstrucciones
0 31 310 543100 59403500 14970031000 5994003
Análisis de algoritmos. Ejercicios 01: Complejidad de los algoritmos.
Antonio David Reyna Martínez. 3CM5.
Página 3 de 27
for(i=1;i<n;i++)for(j=0;j<n-1;j++){
temp = A[j];A[j] = A[j+1];A[j+1] = temp;
}
1 [Variable ‘i’].1 [Variable ‘j’].
1 [Variable ‘temp’].
n [Variables del arreglo ‘A’].
Total: 1+1+1+n = n+3 celdas de memoria
Función de complejidad espacial: n+3 ≈O(n)
nCeldas de memoria.
0 31 410 13100 103500 5031000 1003
Análisis de algoritmos. Ejercicios 01: Complejidad de los algoritmos.
Antonio David Reyna Martínez. 3CM5.
Página 4 de 27
2.polinomio=0;for(i=0;i<=n;i++){
polinomio=polinomio*z + A[n-i];}
polinomio=0;
for(i=0;i<=n;i++){
polinomio=polinomio*z + A[n-i];}
1 [Asignación].
1 [Asignación].
(n+2) [Comparaciones].
(n+1) [Incrementos].(n+1) [Asignaciones].
(n+2) [Saltos].
Total: 1+1+n+2+n+1+n+1+n+2 = 4n+8 instrucciones
Función de complejidad temporal: 4n+8 ≈O(n)
nInstrucciones
0 81 1210 48100 408500 20081000 4008
Análisis de algoritmos. Ejercicios 01: Complejidad de los algoritmos.
Antonio David Reyna Martínez. 3CM5.
Página 5 de 27
polinomio=0;
for(i=0;i<=n;i++){
polinomio=polinomio*z + A[n-i];}
1 [Variable ‘polinomio’].
1 [Variable ‘i’].
1 [Variable ‘z’].
n+1 [Variables del arreglo ‘A’].
Total: 1+1+1+n+1 = n+4 celdas de memoria
Función de complejidad espacial: n+4 ≈O(n)
nCeldas de memoria.
0 41 510 14100 104500 5041000 1004
Análisis de algoritmos. Ejercicios 01: Complejidad de los algoritmos.
Antonio David Reyna Martínez. 3CM5.
Página 6 de 27
3.for i = 1 to n dofor j = 1 to n do
C[i,j] = 0;for k = 1 to n do
C[i,j] = C[i,j] + A[i,k]*B[k,j];
for i = 1 to n do
for j = 1 to n doC[i,j] = 0;
for k = 1 to n doC[i,j] = C[i,j] + A[i,k]*B[k,j];
1 [Asignación].n+1 [Comparaciones].
n [Asignaciones].n(n+1) [Comparaciones].n(n) [Asignaciones].
n(n) [Asignaciones].n[n(n+1)] [Comparaciones].
n[n(n)] [Asignaciones].
n[n(n+1)] [Saltos].n[n(n)] [Incrementos].
n(n+1) [Saltos].n(n) [Incrementos].
(n+1) [Saltos].(n) [Incrementos].
Total: 1+n+1+n+n2+n+n2+n2+n3+n2+n3+n3+n3+n2+n2
+n2+n+n+n+1= 4n3+7n2+6n+3 instrucciones
Función de complejidad temporal: 4n3+7n2+6n+3 ≈O(n3)
nInstrucciones
0 31 2010 4763100 4070603500 5017530031000 4007006003
Análisis de algoritmos. Ejercicios 01: Complejidad de los algoritmos.
Antonio David Reyna Martínez. 3CM5.
Página 7 de 27
for i = 1 to n do
for j = 1 to n doC[i,j] = 0;
for k = 1 to n doC[i,j] = C[i,j] + A[i,k]*B[k,j];
1 [Variable “i”].1 [Variable “j”].n2 [Variables de la matriz “C”].1 [Variable “k”].
n2 [Variables de la matriz “B”].
n2 [Variables de la matriz “A”].
Total: 1+1+n2+1+n2+n2= 3n2+3 celdas de memoria.
Función de complejidad espacial: 3n2+3 ≈O(n2)
nCeldas de memoria.
0 31 610 303100 30003500 7500031000 3000003
Análisis de algoritmos. Ejercicios 01: Complejidad de los algoritmos.
Antonio David Reyna Martínez. 3CM5.
Página 8 de 27
4. anterior = 1;actual = 1;while (n>2){
aux = anterior + actual;anterior = actual;actual = aux;n = n - 1;
}
anterior = 1;actual = 1;while (n>2){
aux = anterior + actual;anterior = actual;actual = aux;n = n - 1;
}
1 [Asignación].1 [Asignación].n-1 [Comparaciones].
n-2 [Asignaciones].n-2 [Asignaciones].n-2 [Asignaciones].n-2 [Decrementos].n-1 [Saltos].
Total: 1+1+n-1+n-2+n-2+n-2+n-2+n-2= 6n-8 instrucciones.
Función de complejidad temporal: 6n-8 ≈O(n)
nInstrucciones.
0 -81 -210 52100 592500 29921000 5992
Análisis de algoritmos. Ejercicios 01: Complejidad de los algoritmos.
Antonio David Reyna Martínez. 3CM5.
Página 9 de 27
anterior = 1;actual = 1;while (n>2){
aux = anterior + actual;anterior = actual;actual = aux;n = n - 1;
}
1 [Variable “anterior”].1 [Variable “actual”].
1 [Variable “aux”].
Total: 1+1+1= 3 celdas de memoria.
Función de complejidad espacial: 3 ≈O(3)
nCeldas de memoria.
0 31 310 3100 3500 31000 3
Análisis de algoritmos. Ejercicios 01: Complejidad de los algoritmos.
Antonio David Reyna Martínez. 3CM5.
Página 10 de 27
5. for (i = n - 1,j=0;i>=0;i--,j++)s2[j]= s[i];
for (i = 0,i<n;i++)s[i]= s2[i];
for (i = n - 1,j=0;i>=0;i--,j++)s2[j]= s[i];
for (i = 0,i<n;i++)s[i]= s2[i];
n [Asignaciones].
n [Asignaciones].
1 [Asignación].1 [Asignación].n+1 [Comparaciones].n [Decrementos].n [Incrementos].
1 [Asignación].n+1 [Comparaciones].n [Incrementos].
n+1 [Saltos].
n+1 [Saltos].
Total: 1+1+n+1+n+n+n+n+1+1+n+1+n+n+n+1= 9n+7 instrucciones.
Función de complejidad temporal: 9n+7 ≈O(n)
nInstrucciones.
0 71 1610 97100 907500 45071000 9007
Análisis de algoritmos. Ejercicios 01: Complejidad de los algoritmos.
Antonio David Reyna Martínez. 3CM5.
Página 11 de 27
for (i = n - 1,j=0;i>=0;i--,j++)s2[j]= s[i];
for (i = 0,i<n;i++)s[i]= s2[i];
n [Variables del arreglo “s2”].
1 [Variable “i”].1 [Variable “j”].
n [Variables del arreglo “s”].
Total: 1+1+n+n= 2n+2 celdas de memoria.
Función de complejidad espacial: 2n+2 ≈O(n)
nCeldas de memoria.
0 21 410 22100 202500 10021000 2002
Análisis de algoritmos. Ejercicios 01: Complejidad de los algoritmos.
Antonio David Reyna Martínez. 3CM5.
Página 12 de 27
B. Para los siguientes 3 algoritmos determine las funciones de complejidad temporal y espacial, estableciendo 3 casos de entrada distintos para cada algoritmo, determine de que depende el número de operaciones para cada algoritmo, i.e. cuál es la variable a considerar en cada caso y en que afecta.
1.
Para un arreglo de 10 elementos.
Caso 1: Sea A un arreglo cuyos elementos están ordenados de forma totalmente descendente como se muestra a continuación.
A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] A[10]100 78 56 40 38 25 20 19 8 3
func Producto2Mayores(A,n)if(A[1] > A[2])
mayor1 = A[1];mayor2 = A[2];
elsemayor1 = A[2];mayor2 = A[1];
i = 3;while(i<=n)
if(A[i] > mayor1)mayor2 = mayor1;mayor1 = A[i];
else if (A[i] > mayor2)mayor2 = A[i];
i = i + 1;return = mayor1 * mayor2;fin
func Producto2Mayores(A,n)if(A[1] > A[2])
mayor1 = A[1];mayor2 = A[2];
elsemayor1 = A[2];mayor2 = A[1];
i = 3;while(i<=n)
if(A[i] > mayor1)mayor2 = mayor1;mayor1 = A[i];
else if (A[i] > mayor2)mayor2 = A[i];
i = i + 1;
return = mayor1 * mayor2;fin
1+1 [Comparación+ salto en verdadero].1 [Asignación].1 [Asignación].
1 [Asignación].(n-2)+1 [Comparaciones].(n-2)+n [Comparaciones + saltos en falso].
(n-2)+n [Comparaciones + saltos en falso].n-2 [Incrementos].(n-2)+1 [Saltos en verdadero+ salto en falso ].1 [Asignación].
Total: 2+1+1+1+n-1+2n-2+2n-2+n-2+n-1+1= 7n-2 instrucciones.
Función de complejidad temporal: 7n-2 ≈O(n)
nInstrucciones.
0 -21 510 68100 698500 3498
Análisis de algoritmos. Ejercicios 01: Complejidad de los algoritmos.
Antonio David Reyna Martínez. 3CM5.
Página 13 de 27
Total: 2+1+1+1+n-1+2n-2+2n-2+n-2+n-1+1= 7n-2 instrucciones.
Función de complejidad temporal: 7n-2 ≈O(n)
nInstrucciones.
0 -21 510 68100 698500 3498
func Producto2Mayores(A,n)if(A[1] > A[2])
mayor1 = A[1];mayor2 = A[2];
elsemayor1 = A[2];mayor2 = A[1];
i = 3;while(i<=n)
if(A[i] > mayor1)mayor2 = mayor1;mayor1 = A[i];
else if (A[i] > mayor2)mayor2 = A[i];
i = i + 1;
return = mayor1 * mayor2;fin
n [Variables del arreglo “A” ].1 [Variable “mayor1” ].1 [Variable “mayor2” ].
1 [Variable “i” ].
Total: n+1+1+1= n+3 celdas de memoria.
Función de complejidad espacial: n+3 ≈O(n)
nCeldas de memoria.
0 31 410 13100 103
Análisis de algoritmos. Ejercicios 01: Complejidad de los algoritmos.
Antonio David Reyna Martínez. 3CM5.
Página 14 de 27
Caso 2: Sea A un arreglo cuyos elementos están ordenados de forma totalmente ascendente como se muestra a continuación.
Total: n+1+1+1= n+3 celdas de memoria.
Función de complejidad espacial: n+3 ≈O(n)
nCeldas de memoria.
0 31 410 13100 103
Análisis de algoritmos. Ejercicios 01: Complejidad de los algoritmos.
Antonio David Reyna Martínez. 3CM5.
Página 15 de 27
A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] A[10]1 5 12 27 31 46 58 76 80 93
func Producto2Mayores(A,n)if(A[1] > A[2])
mayor1 = A[1];mayor2 = A[2];
elsemayor1 = A[2];mayor2 = A[1];
i = 3;while(i<=n)
if(A[i] > mayor1)mayor2 = mayor1;mayor1 = A[i];
else if (A[i] > mayor2)mayor2 = A[i];
i = i + 1;
return = mayor1 * mayor2;fin
1 + 1 [Comparación + salto en falso].
1 [Asignación].1 [Asignación].1 [Asignación].(n-2)+1 [Comparaciones].(n-2)+n [Comparaciones + saltos en verdadero].
n-2 [Incrementos].(n-2)+1 [Saltos en verdadero+ salto en falso ].1 [Asignación].
Total: 2+1+1+1+n-1+2n-2+n-2+n-2+n-2+n-1+1= 7n-4 instrucciones.
Función de complejidad temporal: 7n-4 ≈O(n)
nInstrucciones.
0 -41 310 66100 696500 34961000 6996
n-2 [Asignaciones].n-2 [Asignaciones].
func Producto2Mayores(A,n)if(A[1] > A[2])
mayor1 = A[1];mayor2 = A[2];
elsemayor1 = A[2];mayor2 = A[1];
i = 3;
Análisis de algoritmos. Ejercicios 01: Complejidad de los algoritmos.
Antonio David Reyna Martínez. 3CM5.
Página 16 de 27
Caso 3: Sea A un arreglo cuyos elementos tienen el orden siguiente.
func Producto2Mayores(A,n)if(A[1] > A[2])
mayor1 = A[1];mayor2 = A[2];
elsemayor1 = A[2];mayor2 = A[1];
i = 3;
n [Variables del arreglo “A” ].
1 [Variable “mayor1” ].1 [Variable “mayor2” ].1 [Variable “i” ].
nCeldas de memoria.
0 31 410 13100 103500 5031000 1003
Total: n+1+1+1= n+3 celdas de memoria.
Función de complejidad espacial: n+3 ≈O(n)
Análisis de algoritmos. Ejercicios 01: Complejidad de los algoritmos.
Antonio David Reyna Martínez. 3CM5.
Página 17 de 27
A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] A[10]100 5 32 40 50 71 75 80 88 91
func Producto2Mayores(A,n)if(A[1] > A[2])
mayor1 = A[1];mayor2 = A[2];
elsemayor1 = A[2];mayor2 = A[1];
i = 3;while(i<=n)
if(A[i] > mayor1)mayor2 = mayor1;mayor1 = A[i];
else if (A[i] > mayor2)mayor2 = A[i];
i = i + 1;
return = mayor1 * mayor2;fin
1 + 1 [Comparación + salto en verdadero].1 [Asignación].1 [Asignación].
1 [Asignación].(n-2)+1 [Comparaciones].(n-2)+n [Comparaciones + saltos en falso].
n-2 [Incrementos].(n-2)+1 [Saltos en verdadero+ salto en falso].1 [Asignación].
Total: 2+1+1+1+n-1+2n-2+n-2+n-2+n-2+n-1+1= 7n-4 instrucciones.
Función de complejidad temporal: 7n-4 ≈O(n)
nInstrucciones.
0 -41 310 66100 696500 34961000 6996
(n-2) [Comparaciones].n-2 [Asignaciones].
func Producto2Mayores(A,n)if(A[1] > A[2])
mayor1 = A[1];mayor2 = A[2];
elsemayor1 = A[2];mayor2 = A[1];
i = 3;
Análisis de algoritmos. Ejercicios 01: Complejidad de los algoritmos.
Antonio David Reyna Martínez. 3CM5.
Página 18 de 27
2.
func Producto2Mayores(A,n)if(A[1] > A[2])
mayor1 = A[1];mayor2 = A[2];
elsemayor1 = A[2];mayor2 = A[1];
i = 3;
n [Variables del arreglo “A” ].
1 [Variable “mayor1” ].1 [Variable “mayor2” ].1 [Variable “i” ].
nCeldas de memoria.
0 31 410 13100 103500 5031000 1003
Total: n+1+1+1= n+3 celdas de memoria.
Función de complejidad espacial: n+3 ≈O(n)
func OrdenamientoIntercambio(a,n)for (int i=1; i<n; i++)
for (int j=i+1; j<=n;j++)if (a[ j ] < a[ i ]){
temp=a[ i ];a[ i ]=a[ j ];a[ j ]=temp;
Análisis de algoritmos. Ejercicios 01: Complejidad de los algoritmos.
Antonio David Reyna Martínez. 3CM5.
Página 19 de 27
Para un arreglo de 10 elementos.
Caso 1: Sea A un arreglo cuyos elementos están ordenados de forma totalmente ascendente como se muestra a continuación.
A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] A[10]1 5 12 27 31 46 58 76 80 93
func OrdenamientoIntercambio(a,n)for (int i=1; i<n; i++)
for (int j=i+1; j<=n;j++)if (a[ j ] < a[ i ]){
temp=a[ i ];a[ i ]=a[ j ];a[ j ]=temp;
func OrdenamientoIntercambio(a,n)
for (int i=1; i<n; i++)
for (int j=i+1; j<=n;j++)
if (a[ j ] < a[ i ]){
temp=a[ i ];a[ i ]=a[ j ];a[ j ]=temp;
}
fin
1 [Asignación].n [Comparaciones].n-1 [Incrementos].
1 [Asignación].[(n+1)*(n/2)]-1 [Comparaciones].[(n+1)*(n/2)]-2 [Incrementos].
[(n+1)*(n/2)]-2 [Comparaciones].
[(n+1)*(n/2)]-1 [Saltos].n [Saltos].
nInstrucciones.
0 -51 210 245100 20495500 5024951000 2004995
Total: 1+n+n-1+1+[(n2+n)/2]-1+[(n2+n)/2]-2+[(n2+n)/2]-2+[(n2+n)/2]-1+n= 2n2+5n-5 instrucciones.
Función de complejidad temporal: 2n2+5n-5 ≈O(n2)
Análisis de algoritmos. Ejercicios 01: Complejidad de los algoritmos.
Antonio David Reyna Martínez. 3CM5.
Página 20 de 27
func OrdenamientoIntercambio(a,n)
for (int i=1; i<n; i++)
for (int j=i+1; j<=n;j++)
if (a[ j ] < a[ i ]){
temp=a[ i ];a[ i ]=a[ j ];a[ j ]=temp;
}fin
1 [Variable “i”].
n [Variables del arreglo “a”].
nCeldas de memoria.
0 21 310 12100 102500 5021000 1002
Total: 1+1+n = n+2 celdas de memoria.
Función de complejidad espacial: n+2 ≈O(n)
1 [Variable “j”].
Análisis de algoritmos. Ejercicios 01: Complejidad de los algoritmos.
Antonio David Reyna Martínez. 3CM5.
Página 21 de 27
Caso 2: Sea A un arreglo cuyos elementos están ordenados de forma totalmente descendente como se muestra a continuación.
A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] A[10]100 78 56 40 38 25 20 19 8 3
nInstrucciones.
0 -111 -110 404100 35639500 878239
func OrdenamientoIntercambio(a,n)
for (int i=1; i<n; i++)
for (int j=i+1; j<=n;j++)
if (a[ j ] < a[ i ]){
temp=a[ i ];a[ i ]=a[ j ];a[ j ]=temp;
}
fin
1 [Asignación].n [Comparaciones].n-1 [Incrementos].
1 [Asignación].[(n+1)*(n/2)]-1 [Comparaciones].[(n+1)*(n/2)]-2 [Incrementos].
[(n+1)*(n/2)]-2 [Comparaciones].
[(n+1)*(n/2)]-1 [Saltos].n [Saltos].
[(n+1)*(n/2)]-2 [Asignaciones].[(n+1)*(n/2)]-2 [Asignaciones].[(n+1)*(n/2)]-2 [Asignaciones].
Total: 1+n+n-1+1+[(n2+n)/2]-1+[(n2+n)/2]-2+[(n2+n)/2]-2+[(n2+n)/2]-2+[(n2+n)/2]-2+[(n2+n)/2]-2+[(n2+n)/2]-1+n= (7/2)n2+(13/2)n-11 instrucciones.
Función de complejidad temporal: (7/2)n2+(13/2)n-11 ≈O(n2)
Análisis de algoritmos. Ejercicios 01: Complejidad de los algoritmos.
Antonio David Reyna Martínez. 3CM5.
Página 22 de 27
nInstrucciones.
0 -111 -110 404100 35639500 878239
func OrdenamientoIntercambio(a,n)
for (int i=1; i<n; i++)
for (int j=i+1; j<=n;j++)
if (a[ j ] < a[ i ]){
temp=a[ i ];a[ i ]=a[ j ];a[ j ]=temp;
}fin
1 [Variable “i”].
n [Variables del arreglo “a”].
nCeldas de memoria.
0 31 410 13100 103500 5031000 1003
Total: 1+1+n+1 = n+3 celdas de memoria.
Función de complejidad espacial: n+2 ≈O(n)
1 [Variable “j”].
1 [Variable “temp”].
Análisis de algoritmos. Ejercicios 01: Complejidad de los algoritmos.
Antonio David Reyna Martínez. 3CM5.
Página 23 de 27
Caso 3: Sea A un arreglo cuyos elementos están ordenados de la siguiente manera.
A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] A[10]100 78 110 115 137 142 158 169 173 181
nInstrucciones.
0 -21 510 248100 20498500 502498
func OrdenamientoIntercambio(a,n)
for (int i=1; i<n; i++)
for (int j=i+1; j<=n;j++)
if (a[ j ] < a[ i ]){
temp=a[ i ];a[ i ]=a[ j ];a[ j ]=temp;
}
fin
1 [Asignación].n [Comparaciones].n-1 [Incrementos].
1 [Asignación].[(n+1)*(n/2)]-1 [Comparaciones].[(n+1)*(n/2)]-2 [Incrementos].
[(n+1)*(n/2)]-2 [Comparaciones].
[(n+1)*(n/2)]-1 [Saltos].n [Saltos].
1 [Asignación].1 [Asignación].1 [Asignación].
Total: 1+n+n-1+1+[(n2+n)/2]-1+[(n2+n)/2]-2+[(n2+n)/2]-2+1+1+1 +[(n2+n)/2]-1+n= 2n2+5n-2 instrucciones.
Función de complejidad temporal: 2n2+5n-2 ≈O(n2)
Análisis de algoritmos. Ejercicios 01: Complejidad de los algoritmos.
Antonio David Reyna Martínez. 3CM5.
Página 24 de 27
nInstrucciones.
0 -21 510 248100 20498500 502498
func OrdenamientoIntercambio(a,n)
for (int i=1; i<n; i++)
for (int j=i+1; j<=n;j++)
if (a[ j ] < a[ i ]){
temp=a[ i ];a[ i ]=a[ j ];a[ j ]=temp;
}fin
1 [Variable “i”].
n [Variables del arreglo “a”].
nCeldas de memoria.
0 31 410 13100 103500 5031000 1003
Total: 1+1+n+1 = n+3 celdas de memoria.
Función de complejidad espacial: n+2 ≈O(n)
1 [Variable “j”].
1 [Variable “temp”].
Análisis de algoritmos. Ejercicios 01: Complejidad de los algoritmos.
Antonio David Reyna Martínez. 3CM5.
Página 25 de 27
3.
Caso 1: n=m.
Si n=m => Se entra al ciclo una vez. =>k=1
Caso 2: n=25, m=48
Si n=25, m=48 => Se entra al ciclo 3 veces.=>k=3
Caso 3: n=89, m=27
Si n=25, m=48 => Se entra al ciclo 4 veces.=>k=4
Si el ciclo se ejecutará k veces.
func MaximoComunDivisor(m, n){
a=max(n,m);b=min(n,m);residuo=1;mientras (residuo > 0){
residuo=a mod b;a=b;b=residuo;
}MaximoComunDivisor=a;return MaximoComunDivisor;
}
func MaximoComunDivisor(m, n){
a=max(n,m);b=min(n,m);residuo=1;mientras (residuo > 0){
Análisis de algoritmos. Ejercicios 01: Complejidad de los algoritmos.
Antonio David Reyna Martínez. 3CM5.
Página 26 de 27
Si el ciclo se ejecutará k veces.
func MaximoComunDivisor(m, n){
a=max(n,m);b=min(n,m);residuo=1;mientras (residuo > 0){
2 [Asignación + llamada a función].2 [Asignación + llamada a función].1 [Asignación].k+1 [Comparaciones].
k [Asignaciones].k [Asignaciones].k [Asignaciones].k+1 [Saltos].1 [Asignación].
nInstrucciones.
0 81 1310 58100 508500 25081000 5008
Total: 2+2+1+k+1+k+k+k+k+1+1 = 5k+8 instrucciones.
Función de complejidad temporal: 5k+8 ≈O(k)
func MaximoComunDivisor(m, n){
a=max(n,m);b=min(n,m);residuo=1;mientras (residuo > 0){
Análisis de algoritmos. Ejercicios 01: Complejidad de los algoritmos.
Antonio David Reyna Martínez. 3CM5.
Página 27 de 27
func MaximoComunDivisor(m, n){
a=max(n,m);b=min(n,m);residuo=1;mientras (residuo > 0){
1 [Variable “a”].1 [Variable “b”].1 [Variable “residuo”].
1 [Variable “MaximoComunDivisor”].
nCeldas de memoria.
0 41 410 4100 4500 41000 4
Total: 1+1+1+1= 4 celdas de memoria.
Función de complejidad espacial: 4 ≈O(4)