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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

6. Divisão e conquista<br />

Entrada<br />

Medianos<br />

Mediano<br />

Partição<br />

x1 x2 x3 x4 x5 x6<br />

M(k, n)<br />

m<br />

· · ·<br />

xi < m m<br />

xi ≥ m<br />

Recursão k < i : k = i : k > i :<br />

M(k, i − 1) Encontrado M(k − i, n − i)<br />

Figura 6.2.: Funcionamento do algoritmo recursivo para seleção.<br />

13 Sejam y ′ 1, . . . , y ′ 14<br />

k os pontos or<strong>de</strong>nados por y<br />

com d i s t â n c i a em x menos que δ para xm .<br />

15 for i ∈ [k] do<br />

16 for j ∈ {i, . . . , i + 13} ∩ [k] do<br />

17 i f ||yi − yj|| < ||p − q|| then (p, q) := (yi, yj)<br />

18 end for<br />

19 end for<br />

20 return (p, q)<br />

Observação 6.2<br />

O pré-processamento garante que po<strong>de</strong>mos obter os pontos dos subproblemas<br />

or<strong>de</strong>nados por x e por y em tempo linear. Or<strong>de</strong>nar os pontos na rotina leva a<br />

recorrência Tn = T ⌊n/2⌋ + T ⌈n/2⌉ + O(n log n) com solução O(n log 2 n). ♦<br />

6.3.3. Seleção<br />

Dado um conjunto <strong>de</strong> números, o problema da seleção consiste em encontrar<br />

o k-ésimo maior elemento. Com or<strong>de</strong>nação o problema possui solução em<br />

tempo O(n log n). Mas existe um outro algoritmo mais eficiente. Po<strong>de</strong>mos<br />

<strong>de</strong>terminar o mediano <strong>de</strong> grupos <strong>de</strong> cinco elementos, e <strong>de</strong>pois o recursivamente<br />

o mediano m <strong>de</strong>sses medianos. Com isso, o algoritmo particiona o conjunto<br />

<strong>de</strong> números em um conjunto L <strong>de</strong> números menores que m e um conjunto R<br />

<strong>de</strong> números maiores que m. O mediano m é na posição i := |L| + 1 <strong>de</strong>sta<br />

144<br />

i<br />

xn

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

Saved successfully!

Ooh no, something went wrong!