Sie sind auf Seite 1von 3

Universidad Nacional de Ingeniera

Ciencias de la Computacin
Master Method, Divide and Conquer
Yuri Nuez Medrano *
ynunezm@gmail.com

Resumen Reemplazamos a y b
nlogb a = nlog2 4 = n2
Se analizar el Mtodo Maestro y el Mtodo Divide and luego generamos constantes = {0.5, 1, 1.5, 2, 2.5} que
Conquer para el desarrollo de algortmos recursivos. verifiquen, empezando por el caso1, y verificamos que se
cumple para algun .
1. Introduccin f (n) = O(nlogb a0,5 ) = O(n1,5 )X
f (n) = O(nlogb a1 ) = O(n1 )X
Se resolveran recurrencias con los tres casos del Mtodo f (n) = O(nlogb a1,5 ) = O(n0,5 )
Maestro y utilizara el Mtodo Divide and Conquer con f (n) = O(nlogb a2 ) = O(n0 )
su tres pasos Divide, Conquistar y Combinar. f (n) = O(nlogb a2,5 ) = O(n0,5 )
T (n) = (nlogb a )
T (n) = (n2 )
2. Mtodo Maestro
n2
Ejm: T (n) = 4T (n/2) + |{z}
El Mtodo Maestro se aplicar a las recurrencias que tengan
f (n)
la siguiente forma.
a = 4, b = 2, f (n) = n2
T (n) = aT ( nb ) + f (n)
Reemplazamos a y b
donde a 1 b > 1.
nlogb a = nlog2 4 = n2
f (n) > 0 para n n0
luego generamos constantes = {0.5, 1, 1.5, 2, 2.5} que
comparando con nlogb a .
verifiquen, empezando por el caso1, y verificamos del
ejemplo anterior que no se cumple para algun .
2.1. Casos del Master Method Entonce evaluamos el caso2.
Caso 1: f (n) = O(nlogb a ) donde k=0
para algun > 0 f (n) = (nlogb a lg k n) = (nlog2 4 ) = (n2 )
T (n) = (nlogb a ) si cumple
T (n) = (nlogb a lg k+1 n)
Caso 2: f (n) = (nlogb a lg k n) T (n) = (n2 lgn)
para algun k 0
T (n) = (nlogb a lg k+1 n) n3
Ejm: T (n) = 4T (n/2) + |{z}
f (n)
Caso 3: f (n) = (nlogb a+ )
a = 4, b = 2, f (n) = n3
para algun > 0
de los ejemplos anteriores verificamos que no cumple, el
af (n/b) cf (n)
caso1 y el caso2, entonces evaluamos el caso3, y verificamos
para algun c < 1 y todo n suficientemente grande
que se cumple para algun .
T (n) = (f (n))
f (n) = (nlogb a+0,5 ) = (n2,5 )X
Ejm: T (n) = 4T (n/2) + |{z}
n f (n) = (nlogb a+1 ) = (n3 )X
f (n) f (n) = (nlogb a+1,5 ) = (n3,5 )
a = 4, b = 2 f (n) = (nlogb a+2 ) = (n4 )
* Escuela de Ciencias de la Computacin, 27-08-15
Y que cumpla un c < 1.

1
2

T (n) = 2T (n/2) + (n).


2T(...) numero de subproblemas.
(n/2) tamao de subproblemas.
(n) divide y conquistaras.
caso2 del MM (nlgn)

Ejm: Busqueda Binaria


Encontrar un X en un Array Ordenado
1. Divisin: Comparar X con la mitad.
2. Conquistar: recursivamente en un subarreglo.
3. Combinar: Trivial. T (n) = 1T (n/2) + (1).
(lgn)

Ejm: Potencia de un numero


Encontrar un nmero R, y un entero, n que de el
Figura 1: Mtodo Maestro
resultado X n . Algoritmo ingenuo X.X...X
| {z }. con (n).
n
1. Divisin: evaluar la mitad.
2. Conquistar: multiplicar grupos menores recursivamente.
3. Combinar: Trivial.
 n/2 n/2
af (n/b) cf (n)

X .X es par
Xn = (1)
4(n/2)3 cn3 X n/2 .X n/2 es impar
T (n) = (f (n))
T (n) = (n3 ) T (n) = 1T (n/2) + (1).
(lgn)

Ejm: Multiplicaciones de Matrices


2.2. Prueba del Mtodo Maestro
El algoritmo 1 es el clasico.
Mediante una prueba intuitiva en base a la figura 1 se
veran los tres casos. Algorithm 1: MUTIPLICACION(A,B)
Input: A[ai,j ] y B[bi,j ], i, j = 1, 2, ..., n
Output: C[ci,j ] = A.B
Caso 3: costo decreciente geometricamente. domina-
1 for i = 1 to n do
do por f (n).
2 for j = i to n do
Caso 1: costo incrementa geometricamente. domina- 3 ci,j = 0
do por (nlogb a ). 4 for j = 2 to n do
5 ci,j = ci,j + ai,j bi,j
Caso 2: cada nivel es a igual. costo f (n) |{z}
h .
niveles

Tambien se puede resolver Recursivamente.


3. Divide y Conquer 1. Divisin: evaluar la mitad.
Una matriz n.n = 2 por 2, en bloques de matrices de = n2 . n2
1. Divide: el problema se instancia en uno o mas pro- submatrices.
blemas. 2. Conquistar: tenemos 8 multiplicaciones recursivas de
= n2 . n2 submatrices .
2. Conquistar: en cada subproblema recursivamente.
     
3. Combinar: las soluciones. r s a b e f
= .
t u c d g h
Ejm: Merge_Sort. donde:
1. Divisin: trivial r=ae+bg
2. Conquistar: Ordenamiento recursivo en cada subarreglo. s=af+bh
3. Combinar: tiempo de ejecucin. t=ce+dg
3

u=cf+dh

3. Combinar: Trivial. T (n) = 8T (n/2) + (n2 ).


(n3 )

Ejm: Algoritmo de Strassen


Se puede reducir el nmero de multiplicaciones
P1 =a(f-h)
P2 =(a+b)h
P3 =(c+d)e
P4 =d(g-e)
P5 =(a+d)(e+h)
P6 =(b-d)(g+h)
P7 =(a-c)(e+f)
donde:
r=P5 + P4 P2 + P6
s=P1 + P2
t=P3 + P4
u=P5 + P1 P3 P7
1. Divisin: evaluar la mitad.
Una matriz n.n=2por2 en bloques de matrices de = n2 . n2
submatrices.
2. Conquistar: evaluar recursivamente P1 , P2 , ...P7 .
3. Combinar: r, s, t, u, (n2 ) . T (n) = 7T (n/2) + (n2 ).
(n2,8 )

Referencias
[H.Cormen et al., 2009] H.Cormen, T., Leiserson, C., and
Riverson, R. L. (2009). Algorithms. The MIT Press.

Das könnte Ihnen auch gefallen