Sélectionner en union de tableaux triés: déjà connu?

12

Je recherche des références bibliographiques pour l'algorithme / problème suivant: je l'ai nommé "BiSelect" ou "t-ary Select" ou "Select in Union of Sorted Arrays", mais je suppose qu'il a été introduit auparavant sous un autre nom?

Problème

Considérez le problème suivant:

Étant donné tableaux triés disjoints A 1 , , A k , de tailles respectives n 1 , , n k et un entier t [ 1 .. n i ] , quelle est la t- ème valeur de leur union triée i A i ?kA1,,Akn1,,nkt[1..ni]t iAi

Solutions

Il existe un algorithme très simple et élégant fonctionnant dans le temps si k = 2 : si k = 2 , il suffit de comparer A 1 [ t / 2 ] avec A 2 [ t / 2 ] et recurse sur A 1 [ t / 2 .. t ] et A 2 [ 1 ..O(lgmin{n1,n2,t})k=2k=2A1[t/2]A2[t/2]A1[t/2..t] ou A 1 [ 1 .. t / 2 ] et A 2 [ t / 2 .. t ] en conséquence, dans les deux cas avec le paramètre t / 2 (et quelques optimisations mineures lorsque n 1 ou n 2 sont plus petits que t ).A2[1..t/2]A1[1..t/2]A2[t/2..t]t/2n1n2t

Cela se généralise à un algorithme légèrement plus sophistiqué fonctionnant dans le temps pour des valeurs plus grandes de k , basé sur le calcul de la médiane des valeurs A i [ t / k ] pour i [ 1 .. k ] : le t / k les plus petits éléments peuvent être davantage ignorés dans les tableaux k / 2A i [ t / k ] est plus petit que la médiane, et les éléments de rangs dans [O(klgt)kAi[t/k]i[1..k]t/kk/2Ai[t/k] peut être davantage ignoré dans lesautres tableaux k / 2 , ce qui entraîne une réduction de moitié de t à chaque récurrence (et un coût de O ( k ) pour la médiane).[tt/k..]k/2tO(k)

Les références?

5

Les motivations

Les solutions à ce problème ont des applications à la structure de données différée sur des tableaux (en effet, il peut être considéré comme un opérateur dans une structure de données différée pour l'union de tableaux triés); et d'une manière plus compliquée, au calcul adaptatif de codes libres de préfixes optimaux.

Jeremy
la source

Réponses:

2

O(k+i=1klogni)

Référence

Greg N. Frederickson et Donald B. Johnson. 1980. Sélection et classement généralisés (version préliminaire). Dans Actes du douzième symposium annuel de l'ACM sur la théorie de l'informatique (STOC '80). ACM, New York, NY, États-Unis, 420-428. DOI = 10.1145 / 800141.804690 http://doi.acm.org/10.1145/800141.804690

Carlos Ochoa
la source
0

Le cas k = 2 apparaît en tri par fusion parallèle, car la fusion de deux tableaux triés à partir de threads différents doit être divisée en deux threads pour maintenir la même quantité de parallélisme. Cette solution de devoirs est une référence.

KWillets
la source