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