Você está na página 1de 10

Universidad Andres Bello

Facultad de Ingeniera
Ingeniera en Computacion e Informatica

Diseno de Algoritmos
Ejercicios Resueltos - Analisis
Prof. Catedra: Carlos Contreras Bolton Fecha: 25 de Marzo de 2014
Profs. Laboratorio: Daniela Ubilla Felipe Reyes

Ejercicio 1: Sumatoria
n
X
i = 1 + 2 + 3 + ... + (n 1) + n (1)
i=1

Si invertimos la suma tenemos:

n
X
i = n + (n 1) + ... + 3 + 2 + (2)
i=1

Si sumamos componente a componente (1) y (2) tenemos:

n
X
2 i = (1 + n) + (2 + (n 1)) + (3 + (n 2)) + ... + ((n 1) + 2) + (n + 1) (3)
i=1

Que es lo mismo que:

n
X
2 i = (n + 1) + (n + 1) + (n + 1) + ... + (n + 1) + (n + 1) (4)
i=1

La parte derecha esta compuesta por n sumas de n + 1:

n
X
2 i = n(n + 1) (5)
i=1

Finalmente:

n
X n(n + 1)
i=
i=1
2
Diseno de Algoritmos Ejercicios Resueltos - Analisis

Ejercicio 2: Resolver
Resolver:

T (n) = T ( n) + c; T (1) = d; T (2) = d;
Expandimos:


T (n) = T ( n) + c
1
= T (n 2 ) + c
h  1 i
= T n 22 + c + c
 1
= T n 22 + 2c
h  1 i
= T n 23 + c + 2c
 1
= T n 23 + 3c
..
.
 1
= T n 2k + kc

Expandimos hasta T (2), entonces:


1
n 2k = 2

2k
n=2
k
n = 22
2k = log2 n
k = log2 log2 n

Continuamos:
 1
= T n 2k + kc
= T (2) + kc
= d + c log2 log2 n
= O(log2 log2 n)

Carlos Contreras Bolton


2
Diseno de Algoritmos Ejercicios Resueltos - Analisis

Ejercicio 3: Resolver
n
T (n) = 3 + n2 n; T (1) = 1 (1)
2
Expandimos:

n
T (n) = 3T ( ) + n2 n
2       2 
n n 2 n n n n
= 3 3T + + n2 n = 9T +3 + n2 n
4 2 2 4 4 2
n  2   2 
n n n n
= 27T +9 +3 + n2 n
8 16 4 4 2
..
.
n i1 i1
X 3 j X 3
= 3i T i
+ n 2
( ) + n ( )j
2 j=0
4 j=0
2
i  i n
an+1 1
n  
i 2 3 2 2 X
i
=3T 4n + 4n 2n + 2n por a =
2i 4 3 i=0
a1
..
.
 n   log n  log n
log n 2 3 2 2
=3 T 4n + 4n 2n + 2n
2log n 4 3
= nlog 3 T (1) 4nlog 3 + 4n2 2nlog 3 + 2n
= 4n2 5nlog 3 + 2n
= O(n2 )

Carlos Contreras Bolton


3
Diseno de Algoritmos Ejercicios Resueltos - Analisis

Ejercicio 4: Resolver
Usando el metodo de la sustitucion:
T (n) = 2T n2 + bn log n


Adivinamos que O(n log n).


Probar T (n) cn log n por induccion.

n
T (n) = 2T ( ) + bn log n
 2 n  n
=2 c log + bn log n
2 2
= cn(log n log 2) + bn log n
= cn log n cn + bn log n
= cn log n (cn bn log n)

No se cumple, puesto que no podemos hacer que esta ultima lnea sea menor que cn log n
Entonces, adivinamos que O(n log2 n).
Probar T (n) cn log2 n por induccion.

n
T (n) = 2T ( ) + bn log n
 2 n  n
=2 c log2 + bn log n
2 2
= cn(log n log 2)2 + bn log n
= cn log2 n 2cn log n + cn + bn log n
= cn log2 n (2cn log n cn bn log n)

Si c > b. Por lo tanto, T (n) = n log2 n.

Carlos Contreras Bolton


4
Diseno de Algoritmos Ejercicios Resueltos - Analisis

EjercicioP5: Resolver
1 n1
T (n) = n i=0 T (i) + cn, con T(0)=0.

n1
1X
T (n) = T (i) + cn (1)
n i=0

Multiplicar por n en (1):

n1
X
nT (n) = T (i) + cn2 (2)
i=0

Desplazando (2) en n 1:

n2
X
(n 1)T (n 1) = T (i) + c(n 1)2 (3)
i=0

Restando (2)-(3):

n1
X n2
X
nT (n) (n 1)T (n 1) = ( T (i) T (i)) + (cn2 c(n 1)2 ) (4)
i=0 i=0

nT (n)(n1)T (n1) = ((T (0)+...+T (n2)+T (n1))(T (0)+...+T (n2)))+(cn2 c(n2 2n+1)) (5)

nT (n) (n 1)T (n 1) = T (n 1) + 2cn c (6)

nT (n) = nT (n 1) + 2cn c (7)

Dividiendo (7) por n:

2cn c
T (n) = T (n 1) + (8)
n
Expandiendo:

2cn c
T (n) = + T (n 1)
n
2cn c 2c(n 1) c
= + + T (n 2)
n n1
2cn c 2c(n 1) c 2c(n 2) c
= + + + T (n 3)
n n1 n2
2cn c 2c(n 1) c 2c(n 2) c 2c(1) c
= + + + ... + + T (0)
n n1 n2 1
   
2cn 2c(n 1) 2c(n 2) 2c(1) c c c c
= + + + ... + + + + ... +
n n1 n2 1 n n1 n2 1
n
!
X 1
= (2c + 2c + 2c + ... + 2c) c
i=1
i
n
!
X 1
= 2cn c
i=1
i
= 2cn cHn
< 2cn

Por lo tanto, T (n) = O(n).

Carlos Contreras Bolton


5
Diseno de Algoritmos Ejercicios Resueltos - Analisis

Ejercicio 6: Resolver
n1
2X
T (n) = n 1 + T (i), n 2. T (1) = 0 (1)
n i=1

Re-escribir la recurrencia para n + 1:

n
2 X
T (n + 1) = (n + 1) 1 + T (i) (2)
n + 1 i=1

Multiplicar (1) por n y (2) por n + 1:

n1
X
nT (n) = n(n 1) + 2 T (i) (3)
i=1

n
X
(n + 1)T (n + 1) = (n + 1)n + 2 T (i) (4)
i=1

Restar (4)-(3):

n
X n1
X
(n + 1)T (n + 1) nT (n) = (n + 1)n n(n 1) + 2( T (i) T (i)) (5)
i=1 i=1

(n+1)T (n+1)nT (n) = 2n+2((T (0)+T (1)+...+T (n1)+T (n))(T (0)+T (1)+...+T (n1))) (6)

(n + 1)T (n + 1) nT (n) = 2n + 2T (n) (7)

n+2 2n
T (n + 1) = T (n) + (n 2) (8)
n+1 n+1
Podemos simplificar 2n/(n + 1) como cota inferior 2.

n+2
T (n + 1) T (n) + 2 (9)
n+1

n+1
T (n) T (n 1) + 2 (10)
n
Expandiendo (10):

n+1
T (n) 2 + T (n 1)
n  
n+1 n
=2+ 2+ T (n 2)
n n1
  
n+1 n n1
=2+ 2+ 2+ T (n 3)
n n1 n2
   
n+1 n n1 n2
=2+ 2+ 2+ 2+ T (n 4)
n n1 n2 n3

Hasta donde llega la expansion? hasta llegar a T (3) 34 T (2) + 2 = 2 + 43 ( 32 T (1) + 2), como T (1) = 0,
entonces T (3) 2 + 43 (2) (este es el motivo del 4/3 visto en el ejercicio en clases).
Continuando con la expansion:

Carlos Contreras Bolton


6
Diseno de Algoritmos Ejercicios Resueltos - Analisis

    
n+1 n n1 n2 4
T (n) 2 + 2+ 2+ 2+ ..,2 + (2)
n n1 n2 n3 3
 
n+1 n+1 n n+1 n n1 n+1 n n1 4
=2 1+ + + + ... + ...
n n n1 n n1n2 n n1n2 3
 
n+1 n+1 n+1 n+1
=2 1+ + + + ... +
n n1 n2 3
 
1 1 1 1
= 2(n + 1) + + + ... +
n+1 n n1 3
  
1 1 1 1 1 1
= 2(n + 1) + + + ... + + + 1 +1
n+1 n n1 3 2 2
= 2(n + 1)(H(n + 1) 1, 5)

Recuerden que H(n) = 1 + 1/2 + 1/3 + ... + 1/n es la serie harmonica, la cual tiene una aproximacion
a H(n) = ln n + + O(1/n), donde = 0, 577.. es la constante de Euler. Entonces la solucion a T (n) es:

T (n) 2(n + 1)(ln n + 1, 5) + O(1) = O(n log n)

Carlos Contreras Bolton


7
Diseno de Algoritmos Ejercicios Resueltos - Analisis

Ejercicio 7: Resolver
(
a if n = 1;
T (n) =
2T (n/4) + log n if n > 1.

n
T (n) = 2T + log n
 4 n   n  n n
2
= 2 2T 2
+ log + log n = 2 T + 2 log + log n
  4 n  4  42  4 
n  n 
3
 n 2
 n n
= 2 2 2T + log + log + log n = 2 T + 2 log + 2 log + log n
43 42 4 43 42 4
= ...
n X i1 n n i1
X i1
X
= 2i T + log = 2i
T + log n 2k
2k log 4k
4i 4k 4i
k=0 k=0 k=0

Considerando n como potencia de 4 y todos los logaritmos en base 4 (la base no importa tanto, lo
importante es que es logaritmo) tenemos:

n i1
X i1
X
T (n) = 2i T + log4 n 2k 2k log4 4k
4i
k=0 k=0
= ...
i1
X i1
X
= 2i T (1) + log4 n 2k 2k k
k=0 k=0
= a2i + log4 n(2i 1) (i 2)2i 2

Considerando que n es potencia de 4, entonces n = 4i e i = log4 n. Tambien podemos obtener que


i
n=2.

T (n) = a2i + log4 n(2i 1) (i 2)2i 2



= a n + log4 n( n 1) (log4 n 2) n 2

= (a + 2) n log4 n 2

Por lo tanto T (n) = ( n).

Carlos Contreras Bolton


8
Diseno de Algoritmos Ejercicios Resueltos - Analisis

Ejercicio 8: Resolver
(
1 n=1
T (n) = Pn1
i=1 T (i) + n2 n2

Si restamos T (n 1) a T (n) tenemos:

n1
! n2
!
X X
T (n) T (n 1) = T (i) + n2 T (i) + (n 1)2
i=1 i=1
n2
! n2
!
X X
2 2
= T (i) + T (n 1) + n T (i) + n 2n + 1
i=1 i=1
= T (n 1) + 2n 1

Si despejamos tenemos:

T (n) = 2T (n 1) + 2n 1

Expandiendo la recurrencia:

T (n) = 2T (n 1) + 2n 1
= 2(2T (n 2) + 2(n 1) 1) + 2n 1
= 22 T (n 2) + 22 (n 1) 2 + 2n 1
= 22 (2T (n 3) + 2(n 2) 1) + 22 (n 1) 2 + 2n 1
= 23 T (n 3) + 23 (n 2) 22 + 22 (n 1) 2 + 2n 1
= 23 T (n 3) + (23 (n 2) + 22 (n 1) + 2n) (22 + 2 + 1)
= 23 T (n 3) + (23 (n 2) + 22 (n 1) + 21 (n 0)) (22 + 21 + 20 )
...
i1
X i1
X
= 2i T (n i) + 2j+1 (n j) 2j
j=0 j=0
i1
X i1
X i1
X
= 2i T (n i) + n 2j+1 j2j+1 2j
j=0 j=0 j=0
i1
X i1
X i1
X
= 2i T (n i) + 2n 2j 2 j2j 2j
j=0 j=0 j=0

...
i1
X i1
X
= 2i T (n i) + (2n 1) 2j 2 j2j
j=0 j=0

Al caso base se llega cuando n i = 1, entonces i = n 1:

n2
X n2
X
n1 j
T (n) = 2 T (1) + (2n 1) 2 2 j2j
j=0 j=0

Considerando que:

Carlos Contreras Bolton


9
Diseno de Algoritmos Ejercicios Resueltos - Analisis

n2
X
2j = 2n1 1
j=0
n2
X
j2j = (n 3)2n1 + 2
j=0

Reemplazando en la recurrencia:

T (n) = 2n1 + (2n 1)(2n1 1) 2((n 3)2n1 + 2)


= (1 + 2n 1 2n + 6)2n1 2n + 1 4
= 6 2n1 2n 3
= 3 2n 2n 3
(2n )

Carlos Contreras Bolton


10

Você também pode gostar