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 ?
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 .. 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 ).
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 / 2 où A i [ t / k ] est plus petit que la médiane, et les éléments de rangs dans [ 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).
Les références?
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.