Você está na página 1de 10

Instituto Politcnico

Nacional.
Escuela Superior de
Cmputo.
Unidad de Aprendizaje:
Anlisis de algoritmos.
Titular:
Edgardo Adrin Franco Martnez.
Grupo:
3CM5.
Alumno:
Antonio David Reyna Martnez.
Ejercicios 2:
Anlisis temporal.

1. Ordenar tres nmeros

Anlisis de algoritmos. Pgina 2 de 10


Ejercicios 02: Anlisis temporal.
Antonio David Reyna Martnez.
3CM5.
Dados tres nmeros enteros de entrada a, b y c, mostrarlos a la salida ordenados
de forma descendente.
a) Definir uno de los parmetros como tamao del problema, justifique su
eleccin.
b) Realice el anlisis temporal para el algoritmo en todos los casos.
Procedimiento Ordena(a,b,c)
{
if(a>b)
if(a>c)
if(b>c)
salida(a,b,c);
else
salida(a,c,b);
else
salida(c,a,b);
else
if(b>c)
if(a>c)
salida(b,a,c);
else
salida(b,c,a);
else
salida(c,b,a);
a) Debido a que este procedimiento
ordena nmeros por comparacin entre ellos, sin
}
importar que nmeros sea por lo que el tamao del problema es n=3 siempre.
b) Por la naturaleza del problema, sabemos que la operacin bsica es la comparacin
entre los elementos.
Mejor caso: Los tres nmeros son ingresados de forma ordenada descendentemente.
Procedimiento Ordena(a,b,c)
{
Una comparacin falsa.
if(a>b)
if(a>c)
if(b>c)
salida(a,b,c);
else
salida(a,c,b);
else
Procedimiento Ordena(a,b,c)
salida(c,a,b);
{
else
if(a>b)
Una comparacin falsa.
if(b>c)
if(a>c)
if(a>c)
if(b>c)
salida(b,a,c);
salida(a,b,c);
ft(n)=2
else else
salida(b,c,a);
salida(a,c,b);
else
else
Peor caso: Los tres
nmeros
son ingresados de forma ascendente
salida(c,b,a);
salida(c,a,b);
}else
if(b>c)
if(a>c)
Una comparacin
salida(b,a,c);
Una
comparacin
verdadera.
else
Una
comparacin
verdadera.
salida(b,c,a);
verdadera.
else
salida(c,b,a);
}

Anlisis de algoritmos. Pgina 3 de 10


Ejercicios 02: Anlisis temporal.
Antonio David Reyna Martnez.
3CM5.

ft(n)=3

Caso medio: Cada caso tiene la misma probabilidad de ocurrencia P=1/3


Si se cumplen las primeras tres comparaciones: ft(n)=3
Si se cumple las dos primeras comparaciones pero la tercera no:
ft(n)=3 (2 verdaderas + 1 falsa).
Si se cumple solo la primera comparacin: ft(n)=2 (1 verdadera + 1 falsa).
Si no se cumple la primera comparacin pero si las ltimas dos:
ft(n)=3 (1 falsa + 2 verdaderas).
Si solo cumple la penltima comparacin:
ft(n)=3 (1 falsa + 1 verdadera + 1 falsa ).
Si no se cumple la primera ni la penltima:
ft(n)=2 (2 falsas).
ft(n)=(1/3) (3+3+2+3+3+2)=16/3=5.33.

2. Elemento menor de una secuencia


Encontrar el elemento menor de una secuencia finita de enteros x1, x2, , xn.
a) Definir uno de los parmetros como tamao del problema, justifique su
eleccin.

Anlisis de algoritmos. Pgina 4 de 10


Ejercicios 02: Anlisis temporal.
Antonio David Reyna Martnez.
3CM5.
b) Realice el anlisis temporal para el algoritmo en todos los casos.
Procedimiento BuscaMnimo(X)
{
minimo=X[1]
para j=2 hasta j>n hacer
si X[j] < minimo hacer
minimo = X[j]
fin si
fin para
}
a) De acuerdo a la definicin del problema, podemos decir que el tamao de este es
n=nmero de elementos de la secuencia de enteros.
b) Las operaciones bsicas son la comparacin entre el elemento del arreglo y la
variable minimo y la asignacin a esa variable.
Mejor caso: El primer elemento del arreglo es el ms pequeo.
Procedimiento BuscaMnimo(X)
{
Una asignacin.
minimo=X[1]
para j=2 hasta j>n hacer
(n-1) comparaciones
si X[j] < minimo hacer
minimo = X[j]
falsas.
fin si
ft(n)=1+(n-1)=n
fin para
}
Peor caso: El ltimo elemento del arreglo es el ms pequeo.
Procedimiento BuscaMnimo(X)
{
Una asignacin.
minimo=X[1]
para j=2 hasta j>n hacer
(n-1) comparaciones
si X[j] < minimo hacer
(n-1)
asignaciones.
minimo = X[j]
verdaderas.
fin si
fin para
ft(n)=1+(n-1)+(n}

1)=2n-1

Caso medio: Cada caso tiene la misma probabilidad de ocurrencia P=1/2

ft(n)=1/2(n+2n-2)=1/2(3n-2)=1.5n-1

3. Ordenamiento burbuja simple


Para el algoritmo
de ordenamiento burbuja simple, efecte el anlisis temporal en
Procedimiento
BurbujaSimple(A,n)
todos
los
casos.
para i=1 hasta (i<n) hacer
para j=0 hasta (j<n-1) hacer
si (A[j]>A[j+1]) hacer
temp = A[j]
A[j] = A[j+1]
A[j+1] = temp
fin si
fin para
fin para
fin Procedimiento

Anlisis de algoritmos. Pgina 5 de 10


Ejercicios 02: Anlisis temporal.
Antonio David Reyna Martnez.
3CM5.

El tamao del problema n= nmero de elementos del arreglo.


La comparacin entre los elementos y las asignaciones a temp y A[ ] son las
operaciones bsicas.
Mejor caso: Los elementos estn ordenados ascendentemente.
Procedimiento BurbujaSimple(A,n)
para i=1 hasta (i<n) hacer
para j=0 hasta (j<n-1) hacer
(n-1)2 comparaciones
si (A[j]>A[j+1]) hacer
temp = A[j]
falsas
A[j] = A[j+1]
A[j+1] = temp
fin si
fin para
fin para
ft(n)=(n-1)2
fin Procedimiento
Peor caso: Los elementos estn ordenados de forma descendente.
Procedimiento BurbujaSimple(A,n)
para i=1 hasta (i<n) hacer
para j=0 hasta (j<n-1) hacer
si (A[j]>A[j+1]) hacer
temp = A[j]
A[j] = A[j+1]
A[j+1] = temp
fin si
fin para
fin para
fin Procedimiento

(n-1)2 comparaciones
verdaderas
3(n-1)2 asignaciones.

ft(n)= (n-1)2 + 3(n-1)2=4(n1)2

Caso medio: Ambos casos tiene la misma posibilidad de pasar P=1/2.

ft(n)= ((n-1)2+4(n-1)2)=2.5(n-1)2

4. Ordenamiento burbuja mejorado


Para el algoritmo de ordenamiento burbuja mejorado, efecte el anlisis temporal en
Procedimiento BurbujaMejorada(A,n)
todos los
casos.
para
i=1 hasta (i<n) hacer
para j=0 hasta (j<i) hacer
si(A[i] < A[j]) hacer
temp = A[j]
A[j] = A[i]
A[i] = temp
fin si
fin para
fin para
fin Procedimiento

Anlisis de algoritmos. Pgina 6 de 10


Ejercicios 02: Anlisis temporal.
Antonio David Reyna Martnez.
3CM5.

El tamao del problema n= nmero de elementos del arreglo.


La comparacin entre los elementos y las asignaciones a temp y A[ ] son las
operaciones bsicas.
Mejor caso: Los elementos estn ordenados de forma ascendente.
Procedimiento BurbujaMejorada(A,n)
para i=1 hasta (i<n) hacer
para j=0 hasta (j<i) hacer
[(n-1)+1][(n-1)/2]
si(A[i] < A[j]) hacer
temp = A[j]
comparaciones falsas
A[j] = A[i]
A[i] = temp
fin si
fin para
fin para
ft(n)=n(n-1)/2
fin Procedimiento
Peor caso: Los elementos estn ordenados de forma descendente.
Procedimiento BurbujaMejorada(A,n)
para i=1 hasta (i<n) hacer
para j=0 hasta (j<i) hacer
n(n-1)/2 comparaciones
si(A[i] < A[j]) hacer
temp = A[j]
verdaderas
A[j] = A[i]
3n(n-1)/2 asignaciones.
A[i] = temp
fin si
fin para
ft(n)=n(n-1)/2+ 3n(n-1)/2= 4n(n-1)/2= 2n(nfin para
fin Procedimiento
1)
Caso medio: Si ambos casos tienen la misma probabilidad de ocurrir P=1/2.

ft(n)=1/2[n(n-1)/2+ 2n(n-1)]=5n(n-1)/4

5. Ordenamiento por Insercin


Para el algoritmo de ordenamiento por insercin, efecte el anlisis temporal en
todos los casos.
Procedimiento Insercion(A,n)
{
para i=1 hasta i<n hacer
temp=A[i]
j=i-1
mientras((A[j]>temp)&&(j>=0)) hacer
A[j+1]=A[j]
j-fin mientras
A[j+1]=temp
fin para
fin Procedimiento

Anlisis de algoritmos. Pgina 7 de 10


Ejercicios 02: Anlisis temporal.
Antonio David Reyna Martnez.
3CM5.

El tamao del problema n= nmero de elementos del arreglo.


La comparacin entre los elementos y las asignaciones a temp y A[ ] son las
operaciones bsicas.
Mejor caso: Los elementos estn ordenados de forma ascendente.
Procedimiento Insercion(A,n)
{
para i=1 hasta i<n hacer
temp=A[i]
n-1 asignaciones.
j=i-1
n(n-1)/2 comparaciones
mientras((A[j]>temp)&&(j>=0)) hacer
A[j+1]=A[j]
falsas
j-fin mientras
n-1 asignacines.
A[j+1]=temp
fin para
fin Procedimiento
ft(n)=[n(n-1)/2]+2(n-1)=(n-1)(n/2+2)
Peor caso: Los elementos estn ordenados de forma descendente.
Procedimiento Insercion(A,n)
{
para i=1 hasta i<n hacer
temp=A[i]
n-1 asignaciones.
j=i-1
n(n-1)/2 comparaciones
mientras((A[j]>temp)&&(j>=0)) hacer
n(n-1)/2
A[j+1]=A[j]
verdaderas
j-asignaciones
fin mientras
n-1 asignaciones.
A[j+1]=temp
fin para
ft(n)=[2n(n-1)/2]+2(n-1)=n(n-1)+2(n-1)=(nfin Procedimiento

1)(n+2)

Caso medio: Si ambos casos tienen la misma probabilidad de ocurrir P=1/2.

ft(n)=1/2{(n-1)(n/2+2)+(n-1)(n+2)}=(1/2)(n-1)(n/2+2+n+2)=(1/2)(n-1)
(3n/2+4)
6. Ordenamiento por seleccin.
Para el algoritmo
de ordenamiento por seleccin, efecte el anlisis temporal en
Procedimiento
Seleccion(A,n)
todos
los casos.
para
k=0 hasta k<n-1 hacer
p=k;
para i=k+1 hasta i>n-1 hacer
si A[i]<A[p] hacer
p = i
fin si
si p!=k hacer
temp = A[p]
A[p] = A[k]
A[k] = temp
fin si
fin para
fin para
fin Procedimiento

Anlisis de algoritmos. Pgina 8 de 10


Ejercicios 02: Anlisis temporal.
Antonio David Reyna Martnez.
3CM5.

El tamao del problema n= nmero de elementos del arreglo.


La comparacin entre los elementos del arreglo y entre p y k y las asignaciones a
p,temp y A[ ] son las operaciones bsicas.
Mejor caso: Todos los elementos estn ordenados de forma ascendente.
Procedimiento Seleccion(A,n)
para k=0 hasta k<n-1 hacer
n-1 asignaciones
p=k;
para i=k+1 hasta i>n-1 hacer
n(n-1)/2 comparaciones
si A[i]<A[p] hacer
p = i
falsas
fin si
n(n-1)/2 comparaciones
si p!=k hacer
temp = A[p]
falsas
A[p] = A[k]
A[k] = temp
fin si
fin para
ft(n)=2n(n-1)/2+(n-1)=n(n-1)+(n-1)=(n-1)
fin para
fin Procedimiento
(n+1)=n2-1
Peor caso: Todos los elementos del arreglo estn ordenados de forma descendente.
Procedimiento Seleccion(A,n)
para k=0 hasta k<n-1 hacer
n-1 asignaciones
p=k;
para i=k+1 hasta i>n-1 hacer
n(n-1)/2 comparaciones
si A[i]<A[p] hacer
n(n-1)/2
asignaciones
p = i
verdaderas
fin si
n(n-1)/2 comparaciones
si p!=k hacer
temp = A[p]
verdaderas
3n(n-1)/2 asignaciones
A[p] = A[k]
A[k] = temp
fin si
Caso medio: fin
Si ambos
la misma probabilidad
de ocurrir P=1/2.
ft(n)=(n-1)+
2n(n-1)/2+2n(n-1)/2+2n(n-1)/2+3n(npara casos tienen
2
2
ft(n)=1/2(3n
1)/2 2-2n-2)= 2n2-n-1
fin para-2n-1+n -1)=1/2(4n
fin Procedimiento
=3n(n-1)+(n-1)=(n-1)(3n+1)=3n2-2n-1
7. Ordenamiento por intercambio
Para el algoritmo de ordenamiento por intercambio, efecte el anlisis temporal en
todos los casos.
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;
}
}

Anlisis de algoritmos. Pgina 9 de 10


Ejercicios 02: Anlisis temporal.
Antonio David Reyna Martnez.
3CM5.

El tamao del problema n= nmero de elementos del arreglo.


La comparacin entre los elementos del arreglo y las asignaciones a temp y a[ ]
son las operaciones bsicas.
Mejor caso: Todos los elementos estn ordenados de forma ascendente.
func OrdenamientoIntercambio(a,n)
{
for (int i=1; i<n; i++)
for (int j=i+1; j<=n;j++)
(n(n+1)/2)-1 comparaciones
if (a[ j ] < a[ i ])
{
falsas
temp=a[ i ];
a[ i ]=a[ j ];
a[ j ]=temp;
}
ft(n)=n2/2+n/2-1
}
Peor caso: Todos los elementos del arreglo estn ordenados de forma descendente.
func OrdenamientoIntercambio(a,n)
{
for (int i=1; i<n; i++)
for (int j=i+1; j<=n;j++)
(n(n+1)/2)-1 comparaciones
if (a[ j ] < a[ i ])
{
verdaderas
temp=a[ i ];
3[(n(n+1)/2)-1]
a[ i ]=a[ j ];
a[ j ]=temp;
asignaciones
}
ft(n)= 4[(n(n+1)/2)-1]= 2n2+2n-4
}
Caso medio: Si ambos casos tienen la misma probabilidad de ocurrir P=1/2.
2
ft(n)=1/2
( n2/2+n/2-1+2n
+2n-4)
=1/2(5n2/2+5n/2-5)= (5n2/4)+(5n/4)-(5/2)=
8. Obtencin
del
mximo
comn
divisor.
2
1.25n
+1.25n-2.5
Para
el algoritmo de obtencin del mximo comn divisor, efecte el anlisis

temporal en todos los casos.


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;
}

Anlisis de algoritmos. Pgina 10 de 10


Ejercicios 02: Anlisis temporal.
Antonio David Reyna Martnez.
3CM5.
El tamao del problema n= nmero de mdulos que se requieren calcular para
encontrar el MCD.
La comparacin del valor del residuo, la asignacin a esa variable y a las variables a
y b son las operaciones bsicas.
Mejor caso: Los dos nmeros ingresados son mltiplos (m es mltiplo de n o
viceversa) o el nmero mayor es 0.
func MaximoComunDivisor(m, n)
{
a=max(n,m);
b=min(n,m);
1 asignacin
residuo=1;
1
comparacin verdadera
mientras (residuo > 0)
{
residuo=a mod b;
3 asignaciones
a=b;
b=residuo;
}
MaximoComunDivisor=a;
ft(n)=
return MaximoComunDivisor;
5
}
Peor caso: El menor de los dos nmeros es 0
func MaximoComunDivisor(m, n)
{
a=max(n,m);
b=min(n,m);
1 asignacin
residuo=1;
comparaciones
mientras (residuo > 0)
{
residuo=a mod b;
asignaciones
a=b;
b=residuo;
}
ft(n)= El algoritmo se cicla
MaximoComunDivisor=a;
de forma indefinida.
Caso medio:
cuatro casos:
return Tenemos
MaximoComunDivisor;
El nmero mayor es 0.
}
El nmero menor es 0.
Un nmero es mltiplo del otro.
Los nmeros no son mltiplos.
Cuando el nmero mayor es 0 y ambos nmeros son mltiplos, ft(n)=5, cuando 0 es el
menor de los nmeros, ft(n) es indefinida, cuando no son mltiplos, ft(n) >=5.
Suponiendo que los cuatro casos tienen la misma probabilidad de suceder P=1/4, y ya
que en dos de los caso la funcin no est definida, podemos decir que para el caso
medio, la funcin de complejidad temporal es indefinida, por lo que se aproxima o
incluso es igual al peor caso.

Você também pode gostar