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ę 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 i
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 = 2A 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 t
Uogólnia to na nieco bardziej wyrafinowany algorytm działający w czasie dla większych wartości , oparty na obliczeniu mediany wartości dla : Najmniejsze elementy można dalej ignorować w tablicach gdzie jest mniejsza niż mediana, a elementy rang w można dalej ignorować w inne tablice, co powoduje zmniejszenie o połowę w każdym nawrocie (i koszt 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 ...
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.