Comparación sobre árboles de búsqueda binarios balanceados

He leído algunas preguntas y respuestas sobre árboles binarios de autoequilibrio, pero no estoy muy familiarizado con todos ellos.

El primero de ellos que conocí es AVL, el segundo es el árbol rojo-negro.

Hay algo que no entiendo del todo: según algunos libros y artículos, AVL puede realizar búsquedas un poco más rápido que el árbol rojo-negro, bueno, esto es comprensible.

  1. Entonces, ¿cuál es el borde del árbol rojo-negro sobre AVL?

  2. En AVL, probablemente después de cada inserción, tenemos que verificar el equilibrio, pero en el árbol Rojo-Negro no tenemos que hacer algo así con frecuencia, ¿verdad?

PD: busco SO para algo similar, pero no obtuve una respuesta satisfactoria. Espero que algunos amigos puedan darme una comparación detallada de los árboles que se autoequilibran.

preguntado el 27 de agosto de 11 a las 15:08

1 Respuestas

Un árbol AVL tiene la siguiente propiedad: de cada nodo, la diferencia de altura del subárbol izquierdo y derecho es como máximo 2.

En un árbol rojo-negro, por otro lado, la altura del subárbol izquierdo o derecho de cualquier nodo es como máximo dos veces la altura del otro árbol. Es decir, difieren como máximo en un factor de 2.

Esto muestra intuitivamente que la búsqueda es de hecho más rápida en un árbol AVL en promedio.

Sin embargo, al insertar o eliminar un nodo, tenemos que reequilibrar el árbol AVL con más frecuencia, para preservar el invariante de altura mucho más estricto (por otro lado, reequilibrar en un árbol rojo-negro es algorítmicamente mucho más complicado). Esto significa que, en la práctica, un árbol rojo-negro puede funcionar mucho mejor que un árbol AVL, en particular cuando se cambia con frecuencia.

Respondido 27 ago 11, 19:08

gracias por tu respuesta. ¿Quiso decir que la única ventaja que rb-tree tiene sobre AVL es que rb-tree realiza menos operaciones de reequilibrio, y debería ser conveniente si hacemos muchas actualizaciones (inserción / eliminación)? - Alcott

@Alcott Esencialmente sí. En la práctica, los árboles rb superan a los árboles AVL para la mayoría de los propósitos. Los árboles AVL funcionan mejor en situaciones en las que construyes el árbol una vezy, a continuación, utilícelo solo para búsquedas. Pero en tales situaciones, no necesita un árbol de autoequilibrio en absoluto: dado que es estático, se puede equilibrar manualmente una vez. - Konrad Rudolph

Sé que el árbol B es popular en las bases de datos, también leí varios artículos sobre la aplicación del árbol B en la base de datos, pero todavía no entiendo bien cómo se organizan los datos en el disco y cómo mantener la estructura del árbol B en ¿el disco? - Alcott

@Alcott => nueva pregunta. Sin embargo, la respuesta corta: los árboles B tienen una mejor localidad de referencia. Todo lo demás es prácticamente igual que para la memoria principal. - Konrad Rudolph

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.