ar boles ro joy negro

7
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

Upload: nanti-mantela

Post on 23-Dec-2015

4 views

Category:

Documents


2 download

DESCRIPTION

Árboles

TRANSCRIPT

Page 1: Ar Boles Ro Joy Negro

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

Page 2: Ar Boles Ro Joy Negro

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

Page 3: Ar Boles Ro Joy Negro

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.

Page 4: Ar Boles Ro Joy Negro

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.

Page 5: Ar Boles Ro Joy 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.

Page 6: Ar Boles Ro Joy Negro

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.

Page 7: Ar Boles Ro Joy Negro

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