Sele
c
ao
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
=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
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
Algorithm 1
6.0e+06
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
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
Introduzimos um par
ametro c que pode ser calibrado experimentalmente.
12