Auswahl in Vereinigung von sortierten Arrays: Bereits bekannt?


12

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 k disjunkt sortierten Arrays A1,,Ak , die jeweiligen Größen n1,,nk , und eine ganze Zahl t[1..ni] , was das ist t - ten Wert ihrer sortierten Vereinigung iAi ?

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 2O(lgmin{n1,n2,t})k=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

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).O(klgt)kAi[t/k]i[1..k]t/kk/2Ai[t/k][tt/k..]k/2tO(k)

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 ...5

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.

Antworten:


2

Der von Frederickson und Johnson 1982 beschriebene Algorithmus geht davon aus, dass alle Mengen die gleiche Größe haben. Sie beschrieben 1980 auch eine optimale Lösung, die die unterschiedlichen Größen der sortierten Sätze ausnutzt. Die Komplexität dieses Algorithmus liegt innerhalb von .O(k+i=1klogni)

Referenz

Greg N. Frederickson und Donald B. Johnson. 1980. Allgemeine Auswahl und Rangfolge (Vorläufige Fassung). In Proceedings des zwölften jährlichen ACM-Symposiums für Computertheorie (STOC '80). ACM, New York, NY, USA, 420-428. DOI = 10.1145 / 800141.804690 http://doi.acm.org/10.1145/800141.804690



0

Der Fall k = 2 tritt bei der parallelen Zusammenführungssortierung auf, da das Zusammenführen von zwei sortierten Arrays aus verschiedenen Threads auf zwei Threads aufgeteilt werden muss, um das gleiche Maß an Parallelität aufrechtzuerhalten. Diese Hausaufgabenlösung ist eine Referenz.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.