Você está na página 1de 15

Algoritmo CGM para o Problema de

Sele
c
ao

Baseado em artigos de Einar Saukas e Siang Song

O Problema da Sele
c
ao
Considere um conjunto de n elementos.
Dado um inteiro k (1 k n) deseja-se selecionar o k-
esimo menor elemento do conjunto.
Casos particulares:

k = 1: obter o mnimo
k = n: obter o m
aximo
k = dn/2e: obter a mediana

Trabalhos Anteriores
O problema de sele
c
ao pode ser resolvido em
tempo linear no modelo sequencial.
No modelo PRAM o problema
e extensivamente estudado.
H
a poucos trabalhos no modelo de mem
oria
distribuda:
[Santoro, Sidney e Sidney 1992]: algoritmo probabilstico usando O(log log k+
log p) rodadas de comunica
c
ao, onde p

e o no. de processadores.
[Bader e J
aJ
a 1996]: algoritmo determinstico usando O(log(n/p2)) rodadas
de comunica
c
ao.
Apresentamos um algoritmo determinstico que
requer O(log p) rodadas de comunica
c
ao.
2

T
ecnica de Redu
c
ao do Tamanho do
Problema

Procurar reduzir a entrada de n elementos


para n/p, que cabem ent
ao num u
nico processador. Pode-se ent
ao usar um algoritmo
sequencial de sele
c
ao, em tempo O(n/p).

Mostramos como a entrada pode ser reduzida


de n para n/p em O(log p) rodadas de comunica
c
ao.

Como Reduzir o Tamanho do Problema


Cada processador calcula a mediana de seus
dados (inicialmente n/p n
umeros).
Cada processador envia a mediana para o processador 1.
O processador 1 calcula a mediana M das p
medianas. Prova-se que M tem rank entre n/4
e 3n/4.
Sabendo-se a quantidade total de n
umeros <
M , = M e > M , pode-se descartar n
umeros
que n
ao podem ser resposta procurada:
<M

=M

>M

No exemplo, o n
umero procurado deve estar
entre os n
umeros < M . Os = M e > M podem
ser descartados. Temos:
Quantidade de n
umeros que sobram 3n/4.
4

Uso da Mediana Ponderada das Medianas


Cada tamanho original N
e reduzida a no m
aximo
3N/4 em um passo de redu
c
ao. Em O(log p)
passos, reduziremos os n inciais para O(n/p).
Importante: A quantidade de n
umeros que sobram em cada processador pode variar. Uma
redistribui
c
ao de dados seria necess
aria em cada passo.
Para evitar essa redistri
c
ao, usamos a mediana
ponderada M 0 das medianas calculdas em cada
processador.
Dados p n
umeros distintos m1 , m2, . . . , mp com
corresp. pesos positivos w1, w2, . . . , wp tais que
P
ponderada
e o ele1ip wi = 1, a mediana
P
mento mk que satisfaz i,mi<mk wi 1
2 e
P
1
i,mi>mk wi 2 .
Prova-se que o rank de M 0 tamb
em est
a entre
n/4 e 3n/4, portanto teremos o mesmo efeito
desejado.
5

Algoritmo CGM proposto


Algorithm 1 Select the kth smallest element.
Input: Set A of n elements distributed among
the p processors, each processor i with ni =
n/p elements, and an integer k, 1 k n.
Output: An element ai of A such that rank(ai, A) =
k.
(1) Set N := n
(2) Repeat until N n/(cp)
(2.1) Each processor i computes the median
mi of its ni elements
(2.2) Each processor i sends mi and ni to processor 1
6

(2.3) Processor 1 computes the weighted median M


(2.4) Processor 1 broadcasts M to all other
processors
(2.5) Each processor i computes li, ei , gi, respectively the numbers of its local elements less than, equal to, or greater
than M
(2.6) Each processor i sends li, ei , gi to processor 1
P

(2.7) Processor 1 computes L =


1ip li,
P
P
E = 1ip ei, G = 1ip gi, respectively the total numbers of elements less
than, equal to, or greater than M
(2.8) Processor 1 broadcasts L, E, G to all other
processors
(2.9) One of the following:

if L < k L + E then return solution


M and stop
if k L then each processor i discards
all but those elements less than M and
set N := L
if k > L + E then each processor i
discards all but those elements greater
than M and set N := G and k := k
(L + E)

(3) All the remaining N elements are sent to


processor 1

(4) Processor 1 solves the remaining problem


sequentially

End of Algorithm

Par
ametro c
Cada rodada de comunica
c
ao, exceto a u
ltima,
envolve a transmiss
ao de O(p) n
umeros.
Au
ltima rodada
e a mais custosa pois todos os
n
umeros que sobram devem ser transmitidos.
Note que o comando Repeat until N n/(cp).
O par
ametro c pode ser escolhido para obter o melhor tempo de execu
c
ao numa dada
m
aquina. O seu efeito
e o seguinte:
O n
umero de rodadas de comunica
c
ao
e O(log cp).
A quantidade de dados transmitidos na u
ltima
rodada: O(n/(cp)).
Portanto: maior o valor de c implica mais rodadas de comunica
c
ao mas menos dados transmitidos na u
ltima rodada.
7

Implementa
c
ao
Parsytec PowerXplorer de 16 n
os cada n
o com:
. um processador PowerPC601 e um processador de comunica
c
ao T805
. 32 Mbytes de mem
oria local
Usamos PVM e interface nativa Parix (dando
resultados semelhantes).
Testamos com dois tipos de entradas:
Entrada uniforme: os dados de entrada s
ao
alocados nos processadores de maneira aleat
oria.
Entrada pior caso: os dados s
ao alocados nos
processadores de forma a produzir o pior desbalanceamento de carga.
Nessa m
aquina, ap
os experimentar v
arios valores, achamos que o melhor
e adotar o valor
c = 20.
8

Resultados
Tempos de execu
c
ao (em micro-segundos):
n
1024
2048
4096
8192
16384
32768
65536
131072
262144
524288

p = 1
8727
18896
39032
78618
155944
308148
613099
1223813
2429358
4840124

p = 2
5767
11665
23901
47190
95979
189749
375037
746283
1496103
2968610

p = 4
3372
5887
11730
23654
46693
93867
185122
365247
727908
1457379

p = 8
3080
3885
6457
12358
24191
47397
94915
187116
369437
736184

p = 16
4714
4794
5903
8077
14005
25552
48508
95927
187960
369990

Curvas dos Tempos

Algorithm 1
6.0e+06

Time (in clock ticks)

Uniform distribution
Worst-case distribution

4.0e+06

2.0e+06

0.0e+00
0.0

4.0

8.0

12.0

16.0

P (number of processors)

10

Curvas dos Speedups

Algorithm 1
8.0

Uniform distribution
Worst-case distribution

Speedup

6.0

4.0

2.0

0.0
0.0

4.0

8.0

12.0

16.0

P (number of processors)

11

Conclus
ao

Houve uma preocupa


c
ao de minimizar a quantidade de dados transmitidos
em cada rodada de comunica
c
ao.

Introduzimos um par
ametro c que pode ser calibrado experimentalmente.

12

Você também pode gostar