ar boles ro joy negro
DESCRIPTION
ÁrbolesTRANSCRIPT
ARBOLES ROJO Y NEGRO
Mario Hernando nieto serrano 1150237
Diego Mauricio Cortés Quiroga 1150209
Juan Carlos Rivera Ortega 1150050
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER
CUCUTA
2011
Un árbol rojo negro es un
binario de búsqueda equilibrado
en informática y ciencias de la com
por Rudolf Bayer en 1972
pero tomó su nombre moderno en un trabajo de
Sedgewickrealizado en
de tiempo de ejecución para sus operaciones y es eficiente
buscar, insertar y borrar en un tiempo
del árbol.
Sería ideal exponer la especificación alg
datos (TAD) escrita en algún lenguaje de especificación de
ser Maude; sin embargo, la complejidad de la estructura hace que la
especificación quede bastante ilegible, y no aportaría nada. Por tant
explicaremos su funcionamiento con palabras, esquemas e implementaciones de
funciones en el lenguaje de programación
Propiedades
Un árbol rojo-negro es unatributo de color cuyo valor es o bienimpuestos a los árboles binarios de búsqueda convencionales, se deben satisfacer los siguientes para tener un árbol rojo
ARBOLES ROJO Y NEGRO
es un tipo abstracto de datos, concretamente es un
binario de búsqueda equilibrado, una estructura de datos
ciencias de la computación. La estructura original fue creada
1972, que le dio el nombre de “árboles-B binarios simétricos”,
pero tomó su nombre moderno en un trabajo de Leo J.
1978. Es complejo, pero tiene un buen peor caso
para sus operaciones y es eficiente en la práctica. Puede
buscar, insertar y borrar en un tiempo O(log n), donde nes el número de elementos
Sería ideal exponer la especificación algebraica completa de este
escrita en algún lenguaje de especificación de TADs
; sin embargo, la complejidad de la estructura hace que la
especificación quede bastante ilegible, y no aportaría nada. Por tant
explicaremos su funcionamiento con palabras, esquemas e implementaciones de
funciones en el lenguaje de programación C.
negro es un árbol binario de búsqueda en el que cadar cuyo valor es o bien rojo o bien negro . Además de los requisitos
impuestos a los árboles binarios de búsqueda convencionales, se deben satisfacer los siguientes para tener un árbol rojo-negro válido:
, concretamente es un árbol
estructura de datos utilizada
. La estructura original fue creada
binarios simétricos”,
Leo J. Guibas y Robert
. Es complejo, pero tiene un buen peor caso
en la práctica. Puede
es el número de elementos
ebraica completa de este tipo abstracto de
TADs como podría
; sin embargo, la complejidad de la estructura hace que la
especificación quede bastante ilegible, y no aportaría nada. Por tanto,
explicaremos su funcionamiento con palabras, esquemas e implementaciones de
en el que cada nodo tiene un . Además de los requisitos
impuestos a los árboles binarios de búsqueda convencionales, se deben satisfacer
1. Todo nodo es o bien rojo o bien negro.
2. La raíz es negra.
3. Todas las hojas son negras (las hojas son los hijos nulos).
4. Los hijos de todo nodo rojo son negros (también llamada "Propiedad del
rojo").
5. Cada camino simple desde un nodo a una hoja descendiente contiene el
mismo número de nodos negros, ya sea contando siempre los nodos
negros nulos, o bien no contándolos nunca (el resultado es equivalente).
También es llamada "Propiedad del camino", y al número de nodos negros
de cada camino, que es constante para todos los caminos, se le denomina
"Altura negra del árbol", y por tanto el cámino no puede tener dos rojos
seguidos.
6. El camino más largo desde la raíz hasta una hoja no es más largo que 2
veces el camino más corto desde la raíz del árbol a una hoja en dicho
árbol. El resultado es que dicho árbol está aproximadamente equilibrado.
Dado que las operaciones básicas como insertar, borrar y encontrar valores tienen
un peor tiempo de búsqueda proporcional a la altura del árbol, esta cota superior
de la altura permite a los árboles rojo-negro ser eficientes en el peor caso, de
forma contraria a lo que sucede en los árboles binarios de búsqueda. Para ver que
estas propiedades garantizan lo dicho, basta ver que ningún camino puede tener 2
nodos rojos seguidos debido a la propiedad 4. El camino más corto posible tiene
todos sus nodos negros, y el más largo alterna entre nodos rojos y negros. Como
todos los caminos máximos tienen el mismo número de nodos negros, por la
propiedad 5, esto muestra que no hay ningún camino que pueda tener el doble de
longitud que otro camino.
En muchas presentaciones de estructuras arbóreas de datos, es posible para un
nodo tener solo un hijo y las hojas contienen información. Es posible presentar los
árboles rojo-negro en este paradigma, pero cambian algunas de las propiedades y
se complican los algoritmos. Por esta razón, este artículo utilizan “hojas nulas”,
que no contienen información y simplemente sirven para indicar dónde el árbol
acaba, como se mostró antes. Habitualmente estos nodos son omitidos en las
representaciones, lo cual da como resultado un árbol que parece contradecir los
principios expuestos antes, pero que realmente no los contradice. Como
consecuencia de esto todos los nodos internos tienen dos hijos, aunque uno o
ambos nodos podrían ser una hoja nula.
Otra explicación que se da del árbol rojo-negro es la de tratarlo como un árbol
binario de búsqueda cuyas aristas, en lugar de nodos, son coloreadas de color
rojo o negro, pero esto no produce ninguna diferencia. El color de cada nodo en la
terminología de este artículo corresponde al color de la arista que une el nodo a su
padre, excepto la raíz, que es siempre negra (por la propiedad 2) donde la
correspondiente arista no existe.
Ventajas
� Todas las operaciones son O(log n).
� Se mantienen mas balanceados que otras estructuras.
� Permite organizar un listado de números de manera sencilla.
Desventajas:
� Su costo espacial es mayor que el de otros arboles por el uso de nodos centinelas.
Rotación
Para conservar las propiedades que debe cumplir todo árbol rojo-negro, en ciertos
casos de la inserción y la eliminación será necesario reestructurar el árbol, si bien
no debe perderse la ordenación relativa de los nodos. Para ello, se llevan a cabo
una o varias rotaciones, que no son más que reestructuraciones en las relaciones
padre-hijo-tío-nieto.
Las rotaciones que se consideran a continuación son simples; sin embargo,
también se dan las rotaciones dobles.
En las imágenes pueden verse de forma simplificada cómo se llevan a cabo las
rotaciones simples hacia la izquierda y hacia la derecha en cualquier árbol binario
de búsqueda, en particular en cualquier árbol rojo-negro.
Rotación derecha y Rotación izquierda
Búsqueda: se hace de igual manera que en un árbol binario de búsqueda.
Inserción: la inserción se hace como en un árbol binario de búsqueda el nuevo nodo se le asigna el color rojo probablemente se incumpla alguna de las propiedades por lo cual se deben hacer las respectivas rotaciones según ciertos casos específicos, si el árbol tiene n nodos el costo de la inserción será del О(log n).
Casos de inserción : caso 1 : el nuevo nodo es raíz del árbol se pinta de negro. caso 2 : el nuevo nodo es hijo de un padre negro. caso 3: El padre y el tío del nuevo nodo son rojos. Se pintan de negro, y al abuelo se pinta de rojo. Luego se repite el ciclo con el abuelo, si la raíz al final queda roja, se corrige estableciendo que la raíz siempre debe ser negra. caso 4: El nuevo nodo y su padre son rojos, y el abuelo es negro. Lo que se hace es pintar de negro al padre y pintar de rojo al abuelo y luego rotar a la derecha del abuelo. caso 5: El tío del nodo nuevo es negro y el nodo nuevo es el hijo derecho de su padre. En este caso se realiza una rotación a la izquierda para transformar este caso en el caso anterior (Caso 4). una vez se roten los nodos, el nodo nuevo va a ser el antiguo padre.
Eliminación: Al hacer una eliminación también es necesario hacer rotaciones y cambios de color según los casos que se especificaran después.
El costo del algoritmo de eliminación es de О(log n) e incluyendo el costo de las rotaciones que en el peor de los casos, será de tres rotaciones el costo total será de О(log n).
Casos de eliminación:
caso 1: Caso 1: el nodo es una hoja, se elimina fácilmente.
caso 2: El nodo hermano y sus dos hijos son negros: el negro adicional se mueve arriba del árbol.
caso 3: : El nodo tiene dos hijos, nos encontramos con el sucesor que lo sustituirá. El Sucesor es el nodo mas a la izquierda en el subárbol derecho - lo cambiamos y procedemos al borrado esto tiene como máximo un hijo y lo podemos borrar.
caso 4: Nodo hermano y su hijo más cercano al nodo es de color negro, el otro es de color rojo: Al cambiar el color de algunos y la rotación que podemos sacar el extra negro.
caso 5: El nodo tiene un hijo hoja, cambia el nodo por el hijo y se borra.
Referencias:
[1]” árboles rojo y negro”,[en línea], Disponible en:
http://es.wi ki pedi a.org/wi ki/A rbol _roj o-negro
[2],Applet, ”Red /Black Tree Demostration”,[en línea], Disponible en :
http://secs.ceas.uc.edu/~franco/C321/html/RedBlack/redblack.html
[3]”practical applicaction of red black tree of data structure”,[en línea], Disponible en:
http://wiki.answers.com/Q/Practical_application_of_red_black_tree_of_data_structure
[4]” Completely Fair Scheduler” ,[en linea] ,Disponible en : http://en.wikipedia.org/wiki/Completely_Fair_Scheduler
[5] L. Silva, “Árboles Desplegados. Splay Trees”, 2010. [En Línea]. Disponible: http://www2.elo.utfsm.cl/~lsb/elo320/clases/c13.pdf
[6] “Splay Trees”. [En Línea]. Disponible: http://www.dirinfo.unsl.edu.ar/~eda/EsDaAl/teorias/splay-trees.pdf
[7] J. Iacono, “Alternatives to splay trees with O(log n) worst-case access times”, 2001. [En Línea]. Disponible: http://portal.acm.org/citation.cfm?id=365411.365522&coll=DL&dl=ACM&CFID=28159461&CFTOKEN=66290908
[8] D. Grinberg et al., “Splay trees for data compression”, 1995. [En Línea]. Disponible: http://portal.acm.org/citation.cfm?id=313651.313812&coll=DL&dl=ACM&CFID=28159461&CFTOKEN=66290908
[9] D. Sleator y R. Tarjan, “Self-adjusting binary search trees”, 1985. [En Línea]. Disponible:http://portal.acm.org/citation.cfm?id=3828.3835&coll=DL&dl=ACM&CFID=28159461&CFTOKEN=66290908