Академический Документы
Профессиональный Документы
Культура Документы
ESTRUCTURAS DE DATOS
TEMA:
Y APLICACION
DE
IMPLEMENTACION
ARBOLES
ROJO Y NEGRO
ARBOLES
ROJO-NEGRO
Abstract:
El
arbol rojo-negro es una estructura de dato abstracto el cual es un tipo de
arbol binario de b
1.
Introducci
on
En la actualidad existen diferentes tipos de estructuras de datos, que se pueden utilizar seg
un lo que nesecitamos. Una de estas estructuras son los arboles
los cuales sirven para el ordenamiento de informacion. Los arboles son u
tiles a
la hora de tener que acomodar datos de una manera jerarquica donde alguno de
estos datos tienen mayor importancia que otros. Estos cuentan con un conjunto
de nodos conectados, donde estos pueden tener mas nodos(hijos) conectados.
El nodo que se encuentra de primero en el arbol se le conoce como raz. Los
arboles son comunes para realizar b
2.
Fundamento Te
orico
El
arbol rojo-negro es una estructura de dato abstracto el cual es un tipo
de
arbol binario de b
usqueda que se se encuentra equilibrado. Suele ser utilizado para organizar datos y es frecuentemente usados por las personas para
guardar n
umeros. En estos
arboles las hojas no son importantes y no contienen
informaci
on, s
olo valores. En el es posible moverse de una forma ordenada y
eficiente a traves de los datos, por supuesto, si existe alguna manera de localizar
el padre de uno de los nodos. El tiempo que se dura en desplazarse desde la
raz hasta una de las hojas del arbol, el cual, debe de estar equilibrado y tener
la mnima altura posible, sera de O(log n) donde n es la cantidad de nodos
del
arbol. El nombre de
arbol rojo-negro se debe a los colores de sus nodos,
ya que estos son de color negro o rojo. Existen una serie de propiedades que
seguir a la hora de de ponerle color a cada uno de los nodos. Entre ellas estan:
la raz del
arbol siempre es de color negro, todas las hojas de valor NULL van
de color negro (llamadas tambien nodos externos), el nodo de color rojo (llamado tambien nodo interno) debe tener obligatoriamente dos hijos de color negro,
cada camino desde cualquier nodo a sus hojas va a contener la misma cantidad de nodos negros, y por u
ltimo, ning
un nodo de color rojo puede tener un
padre de color rojo. Las ventajas de que este arbol sea de estos colores es que
nos facilita a la hora de tener que buscar el camino mas corto para llegar de
de un nodo a otro. El camino mas corto va a ser aquel que cuenta con todos
sus nodos de color negro, y el mas largo sera el que alterna sus nodos entre
rojo y negro. Adem
as, este arbol va a tener una caracterstica muy especial y
es que ning
un camino va a tener mayor longitud que la del doble de otro camino.
3.
Operaciones
Inserci
on de un nodo
La inserci
on de un nodo se realiza inicialmente igual que en un arbol binario
de b
usqueda. Al nuevo nodo se le da el color rojo. De esta manera no se viola la
segunda condici
on (altura negra), aunque se puede violar la primera (el padre
del nodo insertado puede ser rojo). Caso Trivial: Si el padre del nodo insertado
es negro, no se realiza ning
un ajuste (el arbol es correcto). En caso contrario
se entra en un bucle donde x representa el nodo que se esta comprobando. x
es un nodo rojo, y los casos se refieren a situaciones en que su padre existe y
es tambien rojo: Cuando el padre no exista, simplemente se cambia el color de
x (que es la raz) a negro y se termina el bucle, y si el padre existe y es negro
se termina directamente el bucle. Dependiendo del caso, se realizaran una serie
de operaciones y o bien continuara el bucle (x pasa a ser otro nodo) o bien se
terminar
a. En cada caso se supone que el nodo que se comprueba (x) es rojo,
su padre (y) existe y es rojo, y su abuelo (z) existe (no puede ser raz un nodo
rojo). El nodo hermano del padre se denomina to (t).
Caso 1: To rojo, nodo x izquierdo o derecho.
Borrado de un nodo
La operaci
on se lleva a cabo de la misma manera que en los arboles binarios
de b
usqueda:
1. Se busca el nodo a borrar (como los nodos hojas son nodos nulos, en caso
de existir el nodo a borrar debe tener siempre dos hijos).
2. Si es un nodo con dos hijos no nulos, se busca el mayor nodo (el mas a
la derecha) de su sub
arbol izquierdo (lo llamamos x), se intercambia sus
datos con el nodo a borrar y se pasa a borrar el nodo x. Como es el nodo
m
as a la derecha, su hijo derecho sera nulo.
comprobaci
on de los casos triviales (ver a continuacion). Si no se esta en un caso
trivial se entra en un bucle, en cada iteracion x y z apuntan a nodos del arbol
con la siguiente estructura:
4.
Aplicaci
on
Los
arboles rojo-negro son utilizados en el kernel de Linux. El proceso de utilizar un
arbol rojo-negro comienza al incluir ?linux / rbtree.h?. Esta es una de las
estructuras de datos del n
ucleo mas difciles de utilizar, sin embargo, en el dise
no
de una estructura de datos general para un lenguaje como C, el desarrollador
siempre debe decidir c
omo incluir tipos arbitrarios dentro de la estructura, y la
forma de hacer comparaciones entre ellos. La persona que implemento los arboles rojo-negro Linux fue Andrea Arcangeli.1 Los arboles rojo-negro ofrecen un
peor caso como una estructura en tiempo real. De hecho, es muy difcil predecir
si la base de la operaci
on de actualizacion se hara en equilibrio o cuanto sera su
costo, aunque aun es posible calcular un costo de rendimiento cuando el arbol
se encuentra en el peor estado de equilibrio. Los arboles rojo-negro son particularmente valiosos en programacion funcional, donde son una de las estructuras
de datos persistentes m
as com
unmente utilizadas en la construccion de arreglos
asociativos y conjuntos que pueden retener versiones previas tras mutaciones.
La versi
on persistente del
arbol rojo-negro requiere un espacio O(log n) para
cada inserci
on o borrado, ademas del tiempo.