Você está na página 1de 15

Anlisis de algoritmos

Clase 06: Anlisis temporal (Ejercicios)


Solicitado: Ejercicios 01: Anlisis temporal M. en C. Edgardo Adrin Franco Martnez http://computacion.cs.cinvestav.mx/~efranco
@efranco_escom

edfranco@ipn.mx

Contenido
Casos en el valor de la funcin complejidad temporal Ejemplo 01:Productos Mayores Ejercicios 01: Anlisis temporal
01 Representacin binaria de un entero decimal positivo 02 Elemento menor de una secuencia 03 Ordenamiento burbuja 04 rbol binario de bsqueda
Anlisis de algoritmos Clase 06: Anlisis temporal (Ejercicios) Prof. Edgardo Adrin Franco Martnez

Casos en el valor de la funcin complejidad temporal


Anlisis de algoritmos Clase 04 y 05: Complejidad de algoritmos Prof. Edgardo Adrin Franco Martnez

Sea: I(n)={I1, I2, I3, , Ik} el conjunto de instancias del problema de tamao n. O(n)={O1, O2, O3, , Ok} el conjunto formado por el nmero de operaciones que un algoritmo realiza para resolver cada instancia. Entonces, Oj es el nmero de operaciones ejecutadas para resolver la instancia Ij , para 1 j k. Se distinguen tres casos en el valor de la funcin complejidad temporal Peor caso ft(n) = mx ( { O1, O2, O3, , Ok } ) Mejor caso ft(n) = min( { O1, O2, O3, , Ok } )
= ()

Caso medio ft(n) =

() es la probabilidad de que ocurra la instancia Ii

Ejemplo 01: Productos Mayores


Problema: Dado un arreglo de valores, encontrar el producto de los dos nmeros mayores. Tamao del Problema: n =nmero de elementos en el arreglo. Operacin bsica: Comparacin con los elementos del arreglo y las asignaciones a los elementos mayores.
func Producto2Mayores(A,n) if(A[1] > A[2]) mayor1 = A[1]; mayor2 = A[2]; else mayor1 = 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;
Anlisis de algoritmos Clase 06: Anlisis temporal (Ejercicios) Prof. Edgardo Adrin Franco Martnez

Algoritmo: Producto mayores.

Asignacion Asignacion

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;

n-2 Comparaciones Asignacion Asignacion *Si A[i]mayor2 Asignacion

Anlisis de algoritmos Clase 04 y 05: Complejidad de algoritmos Prof. Edgardo Adrin Franco Martnez

func Producto2Mayores(A,n) if(A[1] > A[2]) mayor1 = A[1]; mayor2 = A[2]; else mayor1 = A[2]; mayor2 = A[1]; i = 3;

Primer comparacin Asignacion Asignacion

Anlisis Temporal
Anlisis de algoritmos Clase 06: Anlisis temporal (Ejercicios) Prof. Edgardo Adrin Franco Martnez

Mejor caso: ocurre cuando el arreglo est ordenado descendentemente (se realiza la primer comparacin y dos asignaciones, posteriormente solo se compara n-2 veces el if y n-2 veces el else if).
Comparaciones 1+(n-2)+(n-2) Asignaciones 2
99 71 23 20 18 n 15 11 5 3 1

ft(n)=1+(n-2)+(n-2)+2=3+2(n-2)=2n-1
func Producto2Mayores(A,n) if(A[1] > A[2]) mayor1 = A[1]; mayor2 = A[2]; else mayor1 = A[2]; mayor2 = A[1];

ft(2)=2(2)-1=3

ft(3)=2(3)-1=5
ft(5)=2(5)-1=9

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;

ft(10)=2(10)-1=19 ft(20)=2(20)-1=39

Comparaciones 1+(n-2)

Asignaciones 2+2(n-2)

11

23

30

38 n

45

61

70

80

90

func Producto2Mayores(A,n) if(A[1] > A[2]) mayor1 = A[1]; mayor2 = A[2]; else mayor1 = A[2]; mayor2 = A[1]; i = 3; while(i<=n)

ft(2)=3(2)-3=3
ft(3)=3(3)-3=6 ft(5)=3(5)-3=12

if(A[i] > mayor1) mayor2 = mayor1; mayor1 = A[i]; else if (A[i] > mayor2) mayor2 = A[i]; i = i + 1;
return = mayor1 * mayor2;

ft(10)=3(10)-3=27 ft(20)=3(20)-3=57

Anlisis de algoritmos Clase 06: Anlisis temporal (Ejercicios) Prof. Edgardo Adrin Franco Martnez

Peor caso: el arreglo est ordenado de manera ascendente (se realiza la primer comparacin y dos asignaciones, posteriormente solo se compara n-2 veces el if y siempre se cumplir por lo que har 2(n-2) asignaciones. ft(n)=1+(n-2)+2(n-2)+2=3+3(n-2)=3n-3

Caso medio: en este problema se tienen ! casos, donde U es el conjunto del que se extraen los elementos del arreglo.
Determina el nmero de posibles conjuntos de n elementos del conjunto U. ! Determina el nmero de maneras de acomodar los n elementos Para hacer el clculo se deben de contar las operaciones que se haran en cada caso. (Laborioso y complicado)

Anlisis de algoritmos Clase 06: Anlisis temporal (Ejercicios) Prof. Edgardo Adrin Franco Martnez

El algoritmo hace siempre una comparacin al inicio y dos asignaciones y en el interior del ciclo puede ser que se realice una comparacin con dos asignaciones, dos comparaciones con una asignacin o dos comparaciones y ninguna asignacin; obsrvese que para cada A[i] puede ser cierta una de tres aseveraciones:
A[i] > mayor1: Se hace una comparacin y dos asignaciones A[i]mayor1 && A[i]>mayor2: Se hacen dos comparaciones y una asignacin A[i]mayor1 && A[i]mayor2 : Se hacen dos comparaciones

Caso medio
Caso: A[i] > mayor1
1 3 1 3 1 3
Anlisis de algoritmos Clase 06: Anlisis temporal (Ejercicios) Prof. Edgardo Adrin Franco Martnez

Si cada caso tiene la misma probabilidad de ocurrencia en promedio se harn:


1 + 2 + 2 + 2 2 1 + 2 + 2 2 + 2 1 + 2 + 2 + 2 = (3 + 3 2 ) = (3 3) = (3 + 3 2 ) = (3 3) = (3 + 2 2 ) = (2 1)
ft(2)=3

1 3 1 3

1 3 1 3

Caso: A[i]mayor1 && A[i]>mayor2


Caso: A[i]mayor1 && A[i]mayor2
1 3 1 3

Caso medio: =
1

2 3 3 + (2n-1) =

ft(3)=5.6

8n 7

ft(5)=11 ft(10)=24.3 ft(20)=51

Es importante mencionar que no todos los algoritmos presentan casos, y resulta interesante tener una herramienta para detectar cundo se particionar el anlisis en casos; por el momento la nica ayuda con la que se cuenta es la intuicin y preguntarse: Se puede resolver el problema de manera trivial para alguna instancia especfica?. Si la respuesta es afirmativa el algoritmo tendr casos, por lo que el problema de deteccin se reduce a contestar esta simple pregunta.

Anlisis de algoritmos Clase 06: Anlisis temporal (Ejercicios) Prof. Edgardo Adrin Franco Martnez

10

Ejercicios 01: Anlisis temporal


Anlisis de algoritmos Clase 06: Anlisis temporal (Ejercicios) Prof. Edgardo Adrin Franco Martnez

1. Representacin binaria de un entero decimal positivo El algoritmo encuentra la representacin binaria de un entero decimal positivo. El algoritmo se basa en divisiones sucesivas por 2. As, para un entero positivo N se calcula:
N = 2q0 + r0 q0 = 2q1 + r1 q1 = 2q2 + r2 ... qk-1 = 2qk + rk

Donde cada residuo ri es 0 o 1. El algoritmo se detiene cuando qk=0. La representacin binaria es entonces N2=rkrk1r1r0.

11

Representacin binaria de un entero decimal positivo


proc RepresentacinBinaria(N,N2) { y = N; i = 0; while(y!=0) { if(par(y)) { r[i]=0; } else { r[i]=1; y=y-1; } y=y/2; i=i+1; } k=i-1; N2=r[0...k];
Anlisis de algoritmos Clase 06: Anlisis temporal (Ejercicios) Prof. Edgardo Adrin Franco Martnez

12

Representacin binaria de un entero decimal positivo

a) Definir uno de los parmetros como tamao del problema, justifique su eleccin. b) Elija la o las operaciones bsicas para basar el anlisis temporal y calcule la complejidad temporal.
c) Muestre que si elige el valor del nmero N como el tamao del problema, el nmero de operaciones que requiere el algoritmo es
10 log 3

+ 1.

Anlisis de algoritmos Clase 06: Anlisis temporal (Ejercicios) Prof. Edgardo Adrin Franco Martnez

13

proc BuscaMnimo(X) { b=X[1]; for(j=2;j<=n;j++) { if(X[j] < b) { b = X[j]; //b = min{x1, x2, ... , xn} } } }

a) Sugerir una medida razonable, para el tamao del problema. b) Realice el anlisis temporal y espacial para el algoritmo en todos los casos.

Anlisis de algoritmos Clase 06: Anlisis temporal (Ejercicios) Prof. Edgardo Adrin Franco Martnez

2. Elemento menor de una secuencia Encontrar el elemento menor de una secuencia finita de enteros x1, x2, , xn.

14

4. rbol binario de bsqueda Para el algoritmo de bsqueda dentro de un rbol binario de bsqueda efecte el anlisis temporal y espacial en todos los casos.

*Se entregar antes del da Lunes 18 de Febrero de 2013 (23:59:59 hora limite) con el nombre: "NombreApellido_Ejercicios01". *Incluir la redaccin de cada ejercicio *Portada y encabezados de pagina.
15

Anlisis de algoritmos Clase 06: Anlisis temporal (Ejercicios) Prof. Edgardo Adrin Franco Martnez

3. Ordenamiento burbuja Para el algoritmo de ordenamiento denominado Burbuja, efecte el anlisis temporal y espacial en todos los casos.

Você também pode gostar