Estoy buscando referencias bibliográficas para el siguiente algoritmo / problema: lo llamé "BiSelect" o "t-ary Select" o "Select in Union of Sorted Arrays", pero supongo que se introdujo antes con otro nombre.
Problema
Considere el siguiente problema:
Dados conjuntos ordenados disjuntos , de tamaños respectivos , y un número entero , ¿cuál es el valor de su unión ordenada ?
Soluciones
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
Esto se generaliza a un algoritmo un poco más sofisticado que se ejecuta en el tiempo para valores mayores de , basado en el cálculo de la mediana de los valores para : el elementos más pequeños de t / k pueden ignorarse aún más en las matrices donde es más pequeño que la mediana, y los elementos de los rangos en pueden ignorarse aún más en otras matrices, lo que resulta en una reducción a la mitad de en cada recurrencia (y un costo de para la mediana).
Referencias
Estoy contento con mi (s) solución (es), pero supongo que el problema (y su solución) ya se conocía. Está relacionado con el algoritmo de tiempo lineal para calcular la mediana (al ordenar grupos de tamaño y recurrir a la mediana de sus medios), pero es un poco más general. Le pregunté a varias universidades en Madalgo en Aarhus (Dinamarca), y luego a otras en el taller Stringology (Rouen), sin éxito: espero que alguien más conocedor pueda ayudar en Stack Exchange ...
Motivaciones
Las soluciones a este problema tienen aplicaciones para la Estructura de datos diferidos en matrices (de hecho, puede verse como un operador en una estructura de datos diferidos para la unión de matrices ordenadas); y de una manera más complicada, al cálculo adaptativo de códigos libres de prefijos óptimos.
fuente