13.04.2013 Views

Algoritmos e complexidade Notas de aula - Arquivo Escolar

Algoritmos e complexidade Notas de aula - Arquivo Escolar

Algoritmos e complexidade Notas de aula - Arquivo Escolar

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

6. Divisão e conquista<br />

uma forma que sabemos resolver:<br />

A(n) =<br />

<br />

0≤i≤log c2 n<br />

f(n/c i 2)<br />

c log c 2 n/c i 2<br />

1<br />

=<br />

1<br />

c log c 2 n<br />

1<br />

<br />

0≤i≤log c2 n<br />

f(n/c i 2)c i 1<br />

Após <strong>de</strong> resolver essa recorrência, po<strong>de</strong>mos re-substituir para obter a solução<br />

<strong>de</strong> T (n).<br />

Exemplo 6.4 (Multiplicação <strong>de</strong> números binários)<br />

Dado dois números p, q <strong>de</strong> n bits, po<strong>de</strong>mos separá-los em duas partes forma<br />

p = pl pr = pl 2 n/2 + pr<br />

q = ql qr = ql 2 n/2 + qr.<br />

Logo o produto possui a representação<br />

Observação:<br />

pq = (pl 2 n/2 + pr)(ql 2 n/2 + qr)<br />

= 2 n plql + 2 n/2 ( plqr + prql ) + prqr.<br />

plqr + prql = (pl + pr)(ql + qr) − plql − prqr.<br />

Portanto a multiplicação <strong>de</strong> dois números binários com n bits é possível com<br />

três multiplicações <strong>de</strong> números binários com aproximadamente n/2 bits.<br />

Algoritmo 6.4 (mult-bin [41])<br />

Entrada Dois números binários p, q com n bits.<br />

130<br />

Saída O produto pq (com ≤ 2n bits).<br />

1 i f n = 1 then return pq<br />

2 else<br />

3 x1 := mult-bin(pl, ql)<br />

4 x2 := mult-bin(pr, qr)<br />

5 x3 := mult-bin(pl + pr, ql + qr)<br />

6 return x12 n + (x3 − x2 − x1)2 n/2 + x2<br />

7 end i f

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!