Wybór k-tego elementu

Transkrypt

Wybór k-tego elementu
Notatki z AiSD. Nr X.
5 maja 2014
Wybór
k -tego
elementu
Opracowaª: Krzysztof Lory±
IIUWr. II rok informatyki.
1 Denicja problemu
Dane:
Wynik:
T [1..n] - ci¡g elementów nale»¡cych do
k - liczba z przedziaªu h1, ni.
k -ty co do wielko±ci element ci¡gu T
zbioru liniowo uporz¡dkowanego
Zaªo»enie (nie zmniejszaj¡ce ogólno±ci): wszystkie elementy w
Model oblicze«: na elementach ci¡gu
T
T
s¡ ró»ne.
dokonujemy jedynie porówna«.
2 Szczególne przypadki
• k = 1.
n − 1.
Konieczna i wystarczaj¡ca liczba porówna« =
• k = 2.
W tym przypadku potrzeba i wystarcza
Twierdzenie 1
n − 2 + dlog ne porówna«.
Dowód(szkic)
⇒
dlog ne rundach: w 1-szej rundzie porównywane s¡ pary
hT [2k −1], T [2k]i (dla k = 1, b n2 c). Zwyci¦zcy tych porówna« (oraz element T [n] - w
przypadku nieparzystego n) przechodz¡ do nast¦pnej rundy. W kolejnych rundach post¦pujemy
Konstruujemy algorytm, dziaªaj¡cy w
elementów
analogicznie.
Oczywi±cie ostatnia runda wyznaczy element najwi¦kszy w
n−1
T.
Do tej pory algorytm wykona
porówna«. Mo»na to ªatwo udowodni¢, je±li na dziaªanie tego algorytmu popatrze¢ jako
na drzewo binarne o
n
li±ciach: li±cie tego drzewa etykietujemy elementami
choªek wewn¦trzny - wi¦ksz¡ spo±ród etykiet jego synów.
T [i],
a ka»dy wierz-
Tak wi¦c wierzchoªki wewn¦trzne
odpowiadaj¡ porównaniom wykonanym przez algorytm.
Znalezienie 2-ego co do wielko±ci elementu sprowadza si¦ teraz do znalezienia najwi¦kszego elementu po±ród tych, które byªy porównywane z elementem najwi¦kszym. Poniewa» elementów
tych jest
dlog ne,
wystarczy teraz
dlog ne − 1
porówna«.
⇐
Rozwa»my dowolny algorytm
A
wyznaczaj¡cy
2-gi
przez
A.
Elementem najwi¦kszym jest ten, z którym
musi istnie¢ (w przeciwnym razie
w których
T [j]
A
podaªby
n−1
jako rozwi¡zanie tak»e dla takich danych,
zwi¦kszyliby±my dowolnie, a pozostaªe elementy pozostawiliby±my bez zmian)
i to dokªadnie jeden (w przeciwnym razie
wykona¢
T [j]
A wyX = T [j] b¦dzie rozwi¡zaniem podanym
X przegraª porównanie. Element taki
co wielko±ci element. Zauwa»my, »e
znacza jednocze±nie element najwi¦kszy. Niech bowiem
X
nie byªby drugim elementem). Tak wi¦c
A
musi
porówna«, by wyznaczy¢ element najwi¦kszy. Porównania te nie wnosz¡ »adnej
informacji o wzajemnej relacji pomi¦dzy elementami, które jedynie z nim przegraªy porównanie
(a
X
jest najwi¦kszym z tych elementów). Tak wi¦c nasz dowód sprowadza si¦ do pokazania, »e
w najgorszym przypadku element najwi¦kszy bierze udziaª w co najmniej
wykonywanych przez
A.
dlog ne
porównaniach
To b¦dzie tre±ci¡ zadania na ¢wiczenia (rozwi¡zanie mo»esz znale¹¢ w
([7], s.212).
1
3 Przypadek ogólny
3.1
Algorytm deterministyczny
Idea
Stosujemy metod¦ Dziel i Zwyci¦»aj.
takie »e wszystkie elementy
U
U
Rozdzielamy
T
U
na dwa podzbiory:
s¡ mniejsze od wszystkich elementów
V.
i
V = T \ U,
k z moc¡
Teraz porównanie
pozwala okre±li¢, w którym ze zbiorów znajduje si¦ szukany element. W ten sposób redukujemy
problem do problemu szukania elementu w zbiorze mniejszym.
Procedure
1.
SELECTION(k,T)
if |T | maªe then
return
sort(T ) &
(T [k])
2. p ← jaki± element z T
3. U ← elementy T mniejsze od p
4.
if k ≤ |U | then return ( SELECT ION (k, U ))
else return (SELECT ION (k − |U |, T \ U ))
Uwaga: W powy»szej procedurze zbiory
T
U
i
wygodnie jest pami¦ta¢ w tablicach.
Aby algorytm byª efektywny, musimy zagwarantowa¢, »e zbiory
od zbioru
T.
W tym celu zbiór
T
5-cioelementowe
dzielimy na
U
i
T \U
s¡ istotnie mniej liczne
grupy. W ka»dej grupie wybieramy
median¦ (tj. ±rodkowy element) a nast¦pnie rekurencyjnie wybieramy median¦ tych median.
function
med(T)
1. Podziel T na rozª¡czne podzbiory 5-cioelementowe Cj (j = 1, . . . , d|T |/5e)
{je±li |T | nie dzieli sie przez 5, to Cd|T |/5e zawiera mniej ni» 5 elementów }
2.
for i ← 1 to
d|T |/5e
do si ← adhocmed(Ci )
3. S ← {si | i = 1, . . . , d|T |/5e}
4.
return
e, S))
(SELECT ION (d |S|
2
Je±li w procedurze SELECT ION wybór elementu p dokonywany jest funkcj¡ P seudomed, to procedura SELECT ION wyznacza k−ty element ci¡gu T w czasie O(n).
Twierdzenie 2
Pomijamy dowód poprawno±ci procedury
Selection. W oszacowaniu jej kosztu kluczowym punktem
jest nast¦puj¡cy lemat:
Lemat 1 Je±li element p zostaª wybrany funkcj¡ Pseudomed, to ka»dy ze zbiorów
3
nie mniej ni» 10
n − 4 elementy.
U i T \ U zawiera
T s¡ ró»ne - dokªadnie)
1
dn/5e
grup, których mediana jest nie mniejsza od p. W ka»dej z tych grup, poza t¡, która zawiera
2
najwi¦ksz¡ z median si znajduj¡ si¦ co najmniej 3 elementy nie mniejsze od p (takimi s¡ na pewno
Dowód: Istnieje co najmniej (a przy zaªo»eniu, »e wszystkie elementy w
elementy wi¦ksze od mediany w danej grupie).
najmniej
3( 12 dn/5e − 1).
W tym wliczony jest
wi¦c elementów wi¦kszych od
p
p.
jest co najmniej
Tak wi¦c elementów nie mniejszych od
3
10 n
Niech
»e
T
T
jest co
− 4.
W podobny sposób pokazujemy, »e co najmniej tyle samo jest elementów mniejszych od
Koszt Procedury
p
Poniewa» zakªadamy, »e wszystkie elementy s¡ ró»ne,
p.
2
Selection
b¦dzie funkcj¡ ograniczaj¡c¡ z góry ten koszt. Bez zmniejszenia ogólno±ci mo»emy zaªo»y¢,
jest monotoniczn¡ funkcj¡ niemalej¡c¡.
nymi wywoªaniami
Poniewa» koszt wszystkich operacji poza rekurencyj-
Selection mo»na ograniczy¢ funkcj¡ liniow¡ otrzymujemy nast¦puj¡c¡ nierówno±¢
rekurencyjn¡:
T (n) ≤ T (dn/5e) + T (7n/10 + 4) + O(n)
2
dla odpowiednio du»ych
n.
Mo»na ªatwo sprawdzi¢, »e
T (n)
jest
O(n).
Uwagi:
•
Staª¡ ukryt¡ w Twierdzeniu 2 pod du»ym O mo»na oszacowa¢ z góry przez
•
Obecnie najszybszy asymptotycznie algorytm wykonuje
•
Dolna granica - ka»dy algorytm deterministyczny wykonuje co najmniej
3.2
3.2.1
2.9442n + o(n)
5.43.
porówna« ([3]).
2n
porówna«.
Algorytmy zrandomizowane
Algorytm Hoare'a
W procedurze
Selection element p wybieramy w sposób losowy.
W ten sposób otrzymujemy algorytm
o maªej ±redniej liczbie porówna« (cho¢ oczywi±cie nadal liniowej) ([5],[2]).
Zauwa» podobie«stwo tego algorytmu do zrandomizowanego
Quicksortu.
Podobnie jak w tamtym
algorytmie element rozdzielaj¡cy mo»na wybiera¢ inaczej, np. jako median¦ spo±ród losowej próbki
kilku elementów zbioru
3.2.2
Algorytm
([4]).
LazySelect
R. Próbka powinna by¢ niezbyt liczna, by mo»na byªo
R dwa elementy L i H , takie »e z du»ym prawdopodobie«stwem
podzbiór P ⊆ S , elementów wi¦kszych od L i mniejszych od H , jest niedu»y oraz szukany element
nale»y do P (mo»emy go wówczas ªatwo znale¹¢ po posortowaniu P ).
Idea
Ze zbioru
S
T
wybieramy losowo próbk¦
szybko j¡ posortowa¢. Znajdujemy w
Algorytm
LazySelect
3
1. Wybierz losowo, niezale»nie, z powtórzeniami próbk¦ R zªo»on¡ z n 4 elementów zbioru S .
3
2. Posortuj R w czasie O(n 4 log n).
1
3. x ← kn− 4 ;
L ← R[l];
gdzie l = max{bx −
H ← R[h]
√
√
3
nc, 1} oraz h = min{bx + nc, n 4 }
4. Porównuj¡c L i H ze wszystkimi elementami z S oblicz:
- rS (L) = #{y ∈ S | y < L}
- P ← {y ∈ S | L ≤ k ≤ H}
5. Sprawd¹ czy:
• k-ty element zbioru S znajduje si¦ w P , tj. czy rS (L) < k ≤ rS (L)+ | P |,
3
• | P |≤ 4n 4 + 2.
Je±li nie, to powtórz kroki 1-4.
6. Posortuj P .
return
Twierdzenie 3
kroków
1-4
(P(k−rS (L)+1) ).
Z prawdopodobie«stwem
do znalezienia
= 1−O
1
√
4
n
LazySelect potrzebuje tylko jednej iteracji
k -tego elementu zbioru S. Tak wi¦c z prawdopodobie«stwem 1 − O
1
√
4
n
LazySelect zatrzymuje si¦ po wykonaniu 2n+o(n) porówna«.
Dowód tego twierdzenia nie jest trudny, ale wykracza poza zakres wykªadu.
Mo»na go znale¹¢ w
ksi¡»ce [8] (str. 47-50). Zainteresowani b¦d¡ mogli go pozna¢ na wykªadzie Algorytmy Zrandomizowane.
Teraz ograniczymy si¦ do podania szkicu:
3
1. pokazujemy, »e
1
kn− 4
jest warto±ci¡ oczekiwan¡ liczby elementów w
R
nie wi¦kszych od szuka-
nego,
2. pokazujemy, »e wariancja tej liczby jest mniejsza od
√
n,
3. korzystamy z poni»szej Nierówno±ci Czebyszewa.
Je±li X jest zmienn¡ losow¡ (o warto±ciach rzeczywiµX i odchyleniu standardowym σX . Wówczas
Twierdzenie 4 (nierówno±¢ Czebyszewa)
stych) o warto±ci oczekiwanej
∀t∈R+
h
i
1
P |X − µX | ≥ tσX ≤ 2
t
Literatura
[1] M.Blum, R.W.Floyd, V.Pratt, R.L.Rivest, R.E.Tarjan, Time bounds for selection,
Journal of
Computer and System Sciences, 7(1973), 448461.
[2] T.Cormen, C.Leiserson, R.L.Rivest,
Introduction to Algorithms, The MIT Press, 1990.
[3] D.Dor, U.Zwick, Median selection requires
O(2+)n comparisions, Proceedings of the 37th FOCS,
1996, 125-134.
[4] R.W.Floyd, R.L.Rivest, Expected time bounds for selection,
Communication of the ACM,
18(1975), 165172.
[5] C.A.R.Hoare, Algorithm 63 (partition) and 65 (nd),
Communication of the ACM, 4(1961), 321
322.
[6] R.M.Karp, Probabilistic recurrence relations, w:
[7] D.E.Knuth,
Proceedings of the 23rd STOC, 1991, 190197.
The Art of Computer Programming, vol. 3, Addison-Weslay, 1973.
[8] R.Motwani, P.Raghavan,
Randomized Algorithms, Cambridge University Press, 1995.
4

Podobne dokumenty