Seleccione en unión de matrices ordenadas: ¿Ya lo sabe?

12

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 k conjuntos ordenados disjuntos A1,,Ak , de tamaños respectivos n1,,nk , y un número entero t[1..ni] , ¿cuál es el valor t de su unión ordenada iAi ?

Soluciones

O(lgmin{n1,n2,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 tk=2k=2A1[t/2]A2[t/2]A1[t/2..t]A2[1..t/2]A1[1..t/2]A2[t/2..t]t/2n1n2t

Esto se generaliza a un algoritmo un poco más sofisticado que se ejecuta en el tiempo O(klgt) para valores mayores de k , basado en el cálculo de la mediana de los valores Ai[t/k] para i[1..k] : el t/k elementos más pequeños de t / k pueden ignorarse aún más en las matrices k/2 donde Ai[t/k] es más pequeño que la mediana, y los elementos de los rangos en [tt/k..] pueden ignorarse aún más en k/2 otras matrices, lo que resulta en una reducción a la mitad de t en cada recurrencia (y un costo de O(k) 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 ...5

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.

Jeremy
fuente

Respuestas:

2

El algoritmo descrito por Frederickson y Johnson en 1982 considera que todos los conjuntos tienen el mismo tamaño. También describieron en 1980 una solución óptima que aprovecha los diferentes tamaños de los conjuntos ordenados. La complejidad de este algoritmo está dentro de .O(k+i=1klogni)

Referencia

Greg N. Frederickson y Donald B. Johnson. 1980. Selección y clasificación generalizadas (versión preliminar). En Actas del duodécimo simposio anual de ACM sobre Teoría de la computación (STOC '80). ACM, Nueva York, NY, EE. UU., 420-428. DOI = 10.1145 / 800141.804690 http://doi.acm.org/10.1145/800141.804690

Carlos Ochoa
fuente
0

El caso k = 2 aparece en un orden de fusión en paralelo, ya que la fusión de dos matrices ordenadas de diferentes subprocesos debe dividirse entre dos subprocesos para mantener la misma cantidad de paralelismo. Esta solución de tarea es una referencia.

KWillets
fuente