Ich suche bibliografische Referenzen für den folgenden Algorithmus / das folgende Problem: Ich habe es "BiSelect" oder "t-ary Select" oder "Select in Union of Sorted Arrays" genannt, aber ich denke, es wurde zuvor unter einem anderen Namen eingeführt?
Problem
Betrachten Sie das folgende Problem:
Gegeben disjunkt sortierten Arrays , die jeweiligen Größen , und eine ganze Zahl , was das ist - ten Wert ihrer sortierten Vereinigung ?
Lösungen
k = 2 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
Dies verallgemeinert sich auf einen etwas komplexeren Algorithmus, der in der Zeit für größere Werte von läuft , basierend auf der Berechnung des Medians der Werte für : the kleinste Elemente können in den Arrays weiter ignoriert werden, wobei kleiner als der Median ist, und die Elemente von Rängen in können in weiter ignoriert werden andere Arrays, was zu einer Halbierung von bei jeder Wiederholung führt (und zu Kosten von für den Median).
Verweise?
Ich bin mit meinen Lösungen zufrieden, aber ich nehme an, dass das Problem (und seine Lösung) bereits bekannt war. Es ist verwandt mit dem linearen Zeitalgorithmus zur Berechnung des Medians (durch Sortieren von Gruppen der Größe und Rückgriff auf den Median ihrer Mitten), ist jedoch etwas allgemeiner. Ich habe mehrere Colleges bei Madalgo in Aarhus (Dänemark) und einige andere beim Workshop Stringology (Rouen) erfolglos befragt: Ich hoffe, dass jemand, der sich besser auskennt, bei Stack Exchange helfen kann ...
Motivationen
Lösungen für dieses Problem haben Anwendungen für die verzögerte Datenstruktur auf Arrays (in der Tat kann dies als Operator in einer verzögerten Datenstruktur für die Vereinigung sortierter Arrays angesehen werden). und auf eine kompliziertere Art und Weise zur adaptiven Berechnung von freien Codes mit optimalen Präfixen.