Muitas estruturas de árvore balanceadas (árvores vermelhas / pretas, árvores espalhadas etc.) e algumas outras estruturas de dicionário classificadas (skiplists) oferecem suporte a uma operação de junção que realiza dois dicionários em que todas as chaves na primeira estrutura são menores que todas as chaves no segundo, depois combina os dois dicionários em um único dicionário classificado no tempo , onde n é o número total de chaves. No entanto, isso só funciona se não houver sobreposição nos intervalos de chaves armazenados nessas árvores.
Da mesma forma, muitas filas de prioridade (pilhas binomiais, pilhas de Fibonacci, etc.) suportam mesclagens -time. Essas mesclagens funcionam independentemente de quais chaves estão armazenadas, mas, como as estruturas de dados são filas prioritárias, não podemos fazer pesquisas de elementos aleatórios na estrutura resultante.
Existe uma estrutura de dicionário classificado que suporta mesclagens de dicionários arbitrários no tempo ao mesmo tempo, suporta operações normais do dicionário classificado (inserções, exclusões, pesquisas, consultas de sucessores / predecessores, etc.) no tempo O ( log n ) ou uma prova inferior de que tais estruturas não podem existir?
fonte
Respostas:
Agora, suponha que você queira oferecer suporte a inserções, mesclagens destrutivas e pesquisas. Para inserções e pesquisas, basta usar as operações existentes da árvore de pesquisa. Para uma mesclagem, sempre mescle a árvore menor na maior e use uma passagem interna da árvore menor para obter sua ordem classificada em tempo linear. Em seguida, insira os elementos da árvore menor, um de cada vez, na árvore maior nessa ordem de classificação.
fonte