Вы находитесь на странице: 1из 5

UNIVERSIDAD NACIONAL DE INGENIERIA

ESTRUCTURAS DE DATOS

TEMA:

Y APLICACION
DE
IMPLEMENTACION

ARBOLES
ROJO Y NEGRO

Alumno: Lara Gutierrez, Luis


Antony Miranda Gil
Ariano Cordero
Louiso Acllus
Profesor: Rosulo Perez


ARBOLES
ROJO-NEGRO

Abstract:
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, con la peculiaridad


que cada nodo posee un atributo de color, siendo estos rojo o negro. Una mejor
definici
on como implementacion es la base de este trabajo.

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

usquedas en un conjunto de datos, ya que


su estructura es muy practicada para realizar estos algoritmos. En este artculo
se podr
a encontrar diferentes secciones en las cuales se desarrollara el tema de
arboles rojo-negro, el cual es un tipo de arbol que cuenta con las caractersticas

antes mencionadas y otras mas, propias de el que lo hacen diferente y particular.

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.

Caso 2: Tio negro, nodo x es hijo derecho.

Caso 3: To negro, nodo x es hijo izquierdo.

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.

p es el nodo que se borra, x es el hijo no nulo o uno cualquiera de los hijos si


ambos son nulos, z es el padre del nodo borrado e y es el nodo hermano del nodo
borrado. Para ajustar el
arbol tras el borrado es necesario conocer los nodos x y
z. El nodo x puede ser nulo (al igual que y), pero el nodo z debe existir (es decir,
el caso en que se tenga que borrar el nodo raz se trata como un caso especial ?
simplemente se elimina la raz y si el nuevo nodo raz es de color rojo se cambia
su color a negro). La operacion de ajuste (reestructuracion) consistira en una
3

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:

Los nodos z e y no son nulos y el nodo x puede serlo. Se comprueba en cual


de los cinco casos no triviales estamos, se efect
ua la operacion adecuada y se
decide si se contin
ua a la siguiente iteracion.

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.

Вам также может понравиться