Ejercicios1-Complejidad de Los Algoritmos

30
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”.

description

Algunos ejercicios sobre complejidad de algoritmos

Transcript of Ejercicios1-Complejidad de Los Algoritmos

Page 1: Ejercicios1-Complejidad de Los Algoritmos

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”.

Page 2: Ejercicios1-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

Page 3: Ejercicios1-Complejidad de Los Algoritmos

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

Page 4: Ejercicios1-Complejidad de Los Algoritmos

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

Page 5: Ejercicios1-Complejidad de Los Algoritmos

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

Page 6: Ejercicios1-Complejidad de Los Algoritmos

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

Page 7: Ejercicios1-Complejidad de Los Algoritmos

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

Page 8: Ejercicios1-Complejidad de Los Algoritmos

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

Page 9: Ejercicios1-Complejidad de Los Algoritmos

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

Page 10: Ejercicios1-Complejidad de Los Algoritmos

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

Page 11: Ejercicios1-Complejidad de Los Algoritmos

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

Page 12: Ejercicios1-Complejidad de Los Algoritmos

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

Page 13: Ejercicios1-Complejidad de Los Algoritmos

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

Page 14: Ejercicios1-Complejidad de Los Algoritmos

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

Page 15: Ejercicios1-Complejidad de Los Algoritmos

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;

Page 16: Ejercicios1-Complejidad de Los Algoritmos

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)

Page 17: Ejercicios1-Complejidad de Los Algoritmos

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;

Page 18: Ejercicios1-Complejidad de Los Algoritmos

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;

Page 19: Ejercicios1-Complejidad de Los Algoritmos

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)

Page 20: Ejercicios1-Complejidad de Los Algoritmos

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”].

Page 21: Ejercicios1-Complejidad de Los Algoritmos

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)

Page 22: Ejercicios1-Complejidad de Los Algoritmos

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”].

Page 23: Ejercicios1-Complejidad de Los Algoritmos

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)

Page 24: Ejercicios1-Complejidad de Los Algoritmos

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”].

Page 25: Ejercicios1-Complejidad de Los Algoritmos

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){

Page 26: Ejercicios1-Complejidad de Los Algoritmos

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){

Page 27: Ejercicios1-Complejidad de Los Algoritmos

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)