Viele ausgeglichene Baumstrukturen (rot / schwarze Bäume, Spreizbäume usw.) und einige andere sortierte Wörterbuchstrukturen (Skiplisten) unterstützen eine Verknüpfungsoperation, die zwei Wörterbücher umfasst, in denen alle Schlüssel in der ersten Struktur kleiner sind als alle Schlüssel in der zweiten. kombiniert dann die beiden Wörterbücher zu einem einzigen sortierten Wörterbuch in der Zeit , wobei n die Gesamtzahl der Schlüssel ist. Dies funktioniert jedoch nur, wenn sich die in diesen Bäumen gespeicherten Schlüsselbereiche nicht überschneiden.
In ähnlicher Weise unterstützen viele Prioritätswarteschlangen (Binomial-Heaps, Fibonacci-Heaps usw.) -Zeit-Zusammenführungen. Diese Zusammenführungen funktionieren unabhängig davon, welche Schlüssel gespeichert sind. Da es sich bei den Datenstrukturen jedoch um Prioritätswarteschlangen handelt, können wir in der resultierenden Struktur keine Suche nach zufälligen Elementen durchführen.
Gibt es eine sortierte Wörterbuchstruktur, die das Zusammenführen beliebiger Wörterbücher in der Zeit und gleichzeitig normale sortierte Wörterbuchoperationen (Einfügungen, Löschungen, Suchvorgänge, Nachfolger- / Vorgängerabfragen usw.) in der Zeit O ( log n ) oder unterstützt ? ein untergeordneter Beweis dafür, dass solche Strukturen nicht existieren können?
quelle
Antworten:
Angenommen, Sie möchten Einfügungen, destruktive Zusammenführungen und Suchen unterstützen. Verwenden Sie für die Einfügungen und Suchen einfach die vorhandenen Suchbaumoperationen. Führen Sie für eine Zusammenführung immer den kleineren Baum mit dem größeren zusammen und verwenden Sie eine Inorder-Durchquerung des kleineren Baums, um seine sortierte Reihenfolge in linearer Zeit zu erhalten. Fügen Sie dann die Elemente des kleineren Baums einzeln in dieser sortierten Reihenfolge in den größeren Baum ein.
quelle