¿Existe un algoritmo para fusionar dos árboles rojo-negros con una complejidad menor que O (n + m)?

Definitivamente no, ya que hacer eso requeriría NO mirar ciertos elementos. Y si su algoritmo no mira cada elemento en este caso, es fácil construir una entrada donde fallaría.

Editar:

Existe la posibilidad de hacer un algoritmo, que funcione mejor en caso de que m << ny también tenga complejidad O (m + n) cuando myn tienen una magnitud similar.

Comience con el primer elemento del árbol más pequeño y encuéntrelo en un árbol más grande.

Luego, para cada elemento siguiente, comienza a buscarlo desde una posición anterior en un árbol más grande. Está haciendo un recorrido en orden del árbol más grande, pero en algunos casos va directamente al elemento padre, lo que ahorra tiempo. Más específicamente, si está insertando el nodo X desde un árbol más pequeño y comienza en el nodo Y en un árbol más grande, puede ir hacia arriba o hacia la derecha. Miras a Y padre Z y vas a la derecha solo si X <Z.

El recorrido “en orden” garantiza que no exceda el tiempo O (n + m).

Y tampoco realiza más de dos veces el número de pasos si simplemente estaba insertando elementos ingenuamente en el árbol, que son pasos O (m log (n + m)), por lo que obtiene lo mejor de ambos mundos.

Si mueve cada elemento del árbol M al árbol N directamente, entonces la complejidad del tiempo debería ser O (m log (m + n)), que sería considerablemente menor que O (m + n) si m << n.

No, tienes que pasar por todas las entradas.

More Interesting

¿Qué ocupa más bytes: un DVD de Windows 7 o el índice del primer decimal en pi en el que se encuentra un DVD de Windows 7?

¿Cuáles son algunas aplicaciones del mundo real de min-cut en la teoría de grafos?

¿Cuáles son las aplicaciones de las matemáticas en la programación?

¿Cuáles son las habilidades matemáticas esenciales necesarias para ser un buen programador?

¿Dónde puedo conocer y salir con profesores que trabajan en la intersección de algoritmos de aproximación y teoría de números algebraicos?

¿Cómo se determinan las probabilidades de relación de probabilidad logarítmica para los códigos LDPC?

Cómo resolver la relación de recurrencia T (n + 1) = T (n) + ceil (n + 1) usando la sustitución para hacer un análisis asintótico

¿Quiénes son las estrellas en ascenso en la informática teórica?

¿Un bucle siempre tiene un punto de partida?

Informática teórica: ¿Cuáles son las funciones aparte de la función de Ackermann que solo se pueden resolver de forma recursiva y no se pueden resolver de forma iterativa?

¿Por qué la máquina de Turing se llama la mejor máquina si no puede resolver el problema de detención?

¿Cómo puede la informática teórica informar el estudio del origen de la vida?

¿Cómo fueron procesadas las tiras de cinta por modelos posteriores de la Máquina Turing y por qué usar cinta?

¿Qué es la lógica formal en informática?

En términos simples, ¿qué es SOCP (programación de cono de segundo orden / programación semi-definida) y en qué se diferencia la optimización convexa de otros tipos de optimizaciones?