Wybierz w połączeniu uporządkowanych tablic: Już znasz?


12

Szukam odniesień bibliograficznych dla następującego algorytmu / problemu: nazwałem go „BiSelect” lub „t-ary Select” lub „Select in Union of Sorted Arrays”, ale myślę, że został wprowadzony wcześniej pod inną nazwą?

Problem

Rozważ następujący problem:

Biorąc pod uwagę k rozłożonych tablic posortowanych , o odpowiednich rozmiarach , oraz liczbę całkowitą , jaka jest -ta wartość ich posortowanego związku ?n 1 , , n k t [ 1 .. n i ] t i A iZA1,,ZAkn1,,nkt[1 ..nja]t jaZAja

Rozwiązania

Istnieje bardzo prosty i elegancki algorytm działający w czasie jeśli k = 2 : jeśli k = 2 , po prostu porównaj A_1 [t / 2] z A_2 [t / 2] i powtórz odpowiednio w A_1 [t / 2..t] i A_2 [1..t / 2] lub A_1 [1..t / 2] i A_2 [t / 2..t] odpowiednio, w obu przypadkach z parametr t / 2 (i kilka drobnych optymalizacji, gdy n_1 lub n_2 są mniejsze niż t ).k = 2O(lgmin{n1,n2),t})k=2)A 1 [ t / 2 ] A 2 [ t / 2 ] A 1 [ t / 2 .. t ] A 2 [ 1 .. t / 2 ] A 1 [ 1 .. t / 2 ] A 2 [ t / 2 .. t ] t / 2 n 1 n 2 tk=2)ZA1[t/2)]ZA2)[t/2)]ZA1[t/2 ..t]ZA2)[1 ..t/2)]ZA1[1 ..t/2)]ZA2)[t/2 ..t]t/2)n1n2)t

Uogólnia to na nieco bardziej wyrafinowany algorytm działający w czasie O(klgt) dla większych wartości k , oparty na obliczeniu mediany wartości ZAja[t/k] dla ja[1 ..k] : Najmniejsze elementy t/k można dalej ignorować w tablicach k/2) gdzie ZAja[t/k] jest mniejsza niż mediana, a elementy rang w [t-t/k..] można dalej ignorować w k/2) inne tablice, co powoduje zmniejszenie o połowę t w każdym nawrocie (i koszt O(k) dla mediany).

Bibliografia?

Jestem zadowolony z moich rozwiązań, ale przypuszczam, że problem (i jego rozwiązanie) był już znany. Jest to związane z algorytmem liniowego czasu obliczania mediany (przez sortowanie grup o rozmiarze i powtarzanie się na środkowej ich środkowej długości), ale jest nieco bardziej ogólne. Poprosiłem kilka uczelni w Madalgo w Aarhus (Dania), a następnie kilka innych w warsztacie Stringology (Rouen), bez powodzenia: Mam nadzieję, że ktoś bardziej kompetentny może pomóc na Stack Exchange ...5

Motywacje

Rozwiązania tego problemu obejmują aplikacje odroczonej struktury danych w tablicach (w rzeczywistości można to postrzegać jako operator w odroczonej strukturze danych dla unii sortowanych tablic); i w bardziej skomplikowany sposób, do adaptacyjnego obliczania optymalnych kodów wolnych od prefiksów.

Odpowiedzi:


2

Algorytm opisany przez Fredericksona i Johnsona w 1982 r. Uważa, że ​​wszystkie zestawy mają ten sam rozmiar. W 1980 r. Opisali również optymalne rozwiązanie, które wykorzystuje różne rozmiary posortowanych zestawów. Złożoność tego algorytmu mieści się w zakresie .O(k+ja=1klognja)

Odniesienie

Greg N. Frederickson i Donald B. Johnson. 1980. Ogólny wybór i ranking (wersja wstępna). W materiałach z dwunastego dorocznego sympozjum ACM na temat teorii obliczeń (STOC '80). ACM, Nowy Jork, NY, USA, 420-428. DOI = 10.1145 / 800141.804690 http://doi.acm.org/10.1145/800141.804690



0

Przypadek k = 2 pojawia się w równoległym sortowaniu scalającym, ponieważ połączenie dwóch posortowanych tablic z różnych wątków musi zostać podzielone na dwa wątki, aby zachować tę samą równoległość. To zadanie domowe jest jednym z odniesień.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.