Estou procurando referências bibliográficas para o seguinte algoritmo / problema: Chamei de "BiSelect" ou "t-ary Select" ou "Selecionar na união de matrizes classificadas", mas acho que foi introduzido anteriormente com outro nome?
Problema
Considere o seguinte problema:
Dado disjuntos ordenada matrizes , dos respectivos tamanhos , e um inteiro , qual é o valor -ésimo de sua união ordenada ?Um 1 , ... , A k n 1 , ... , n k t ∈ [ 1 .. Σ n i ] t ∪ i A i
Soluções
Existe um algoritmo muito simples e elegante em execução no tempo se k = 2 : se k = 2 , basta comparar A_1 [t / 2] com A_2 [t / 2] e recorra a A_1 [t / 2..t] e A_2 [1..t / 2] ou A_1 [1..t / 2] e A_2 [t / 2..t] de acordo, nos dois casos com parâmetro t / 2 (e algumas otimizações menores quando n_1 ou n_2 são menores que 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 t
Isso generaliza para um algoritmo um pouco mais sofisticado, executando no tempo para valores maiores de , com base no cálculo da mediana dos valores para : o menores podem ser ignorados ainda mais nas matrizes que é menor que a mediana e os elementos das classificações em podem ser ignorados ainda mais no outras matrizes, resultando em uma metade de em cada recorrência (e um custo de para a mediana).
Referências?
Estou feliz com minhas soluções, mas suponho que o problema (e sua solução) já era conhecido. Está relacionado ao algoritmo de tempo linear para calcular a mediana (classificando grupos de tamanho e recursando na mediana de seus médios), mas é um pouco mais geral. Perguntei a várias faculdades em Madalgo, em Aarhus (Dinamarca), e depois a outras no workshop Stringology (Rouen), sem sucesso: Espero que alguém com mais conhecimento possa ajudar no Stack Exchange ...
Motivações
As soluções para esse problema têm aplicativos para a Estrutura de dados adiados em matrizes (na verdade, pode ser visto como um operador em uma estrutura de dados adiada para a união de matrizes classificadas); e de uma maneira mais complicada, ao cálculo adaptativo dos códigos livres de prefixos ideais.