expo arboles rojinegros

16
Árboles Rojinegros Nestor Ortega P. Víctor Nazar F.

Upload: nestorortega

Post on 27-Jun-2015

609 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Expo Arboles Rojinegros

Árboles RojinegrosNestor Ortega P.Víctor Nazar F.

Page 2: Expo Arboles Rojinegros

Historia

es un tipo abstracto de datos, concretamente es un árbol binario de búsqueda equilibrado, una estructura de datos utilizada en informática y ciencias de la computación. La estructura original fue creada por Rudolf Bayer en 1972, que le dio el nombre de “árbolesB binarios simétricos”, pero tomó su nombre moderno en un trabajo de Leo J. Guibas y Robert Sedgewick realizado en 1978. Es complejo, pero tiene un buen peor caso de tiempo de ejecución para sus operaciones y es eficiente en la práctica. Puede buscar, insertar y borrar en un tiempo O(log n), donde n es el número de elementos del árbol.

Page 3: Expo Arboles Rojinegros

Tipología

Un árbol rojo-negro es un tipo especial de árbol binario usado en informática para organizar información compuesta por datos comparables (como por ejemplo números).

En los árboles rojo-negro las hojas no son relevantes y no contienen datos. A la hora de implementarlo en un lenguaje de programación, para ahorrar memoria, un único nodo (nodo-centinela) hace de nodo hoja para todas las ramas. Así, todas las referencias de los nodos internos a las hojas van a parar al nodo centinela

Page 4: Expo Arboles Rojinegros

Propiedades de los Árboles Rojinegros

Un Árbol rojinegro es un Árbol de búsqueda binaria con un bit extra de almacenamiento por nodo: su color, el cual puede ser rojo o negro.

Lo anterior indica que cada nodo del Árbol contiene los campos: color, key, left, right, y p.

Page 5: Expo Arboles Rojinegros

Propiedades de los Árboles Rojinegros

Un árbol de búsqueda binaria es rojinegro si satisface las siguientes propiedades:1. Todo nodo es rojo o negro.

2. Toda hoja (nil) es negra.

3. La raíz es negra.

4. Si un nodo es rojo, entonces sus hijos son negros.

5. Cada ruta simple de un nodo a un hoja descendiente contiene el mismo numero de nodos negros.

Estas propiedades hacen que un árbol rojinegro sea balanceado.

Page 6: Expo Arboles Rojinegros

Propiedades de los Árboles Rojinegros

La siguiente figura es un ejemplo de un árbol rojinegro.

Page 7: Expo Arboles Rojinegros

Propiedades de los Árboles Rojinegros

Se denomina altura negra del nodo x, bh(x), al numero de nodos negros en cualquier camino desde el nodo x (sin incluirlo) hasta una hoja.

Lema 1Un árbol rojinegro con n nodo internos tiene una altura de 2 log (n + 1), como máximo.

Page 8: Expo Arboles Rojinegros

Usos y Ventajas

Los árboles rojo-negro ofrecen un peor caso con tiempo garantizado para la inserción, el borrado y la búsqueda. No es esto únicamente lo que los hace valiosos en aplicaciones sensibles al tiempo como las aplicaciones en tiempo real, sino que además son apreciados para la construcción de bloques en otras estructuras de datos que garantizan un peor caso

El árbol AVL es otro tipo de estructura con O(log n) tiempo de búsqueda, inserción y borrado. Está equilibrado de forma más rígida que los árboles rojo-negro, lo que provoca que la inserción y el borrado sean más lentos pero la búsqueda y la devolución del resultado de la misma más veloz.

Page 9: Expo Arboles Rojinegros

Operaciones

Las operaciones de sólo lectura en un árbol rojo-negro no requieren modificación alguna con respecto a las utilizadas en los árboles binarios de búsqueda, ya que cada árbol rojo-negro es un caso especial de árbol binario de búsqueda.

in embargo, el resultado inmediato de una inserción o la eliminación de un nodo utilizando los algoritmos de un árbol binario de búsqueda normal podría violar las propiedades de un árbol rojo-negro.

Page 10: Expo Arboles Rojinegros

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

Page 11: Expo Arboles Rojinegros

Código Rotas Izquierda

void rotar_izda( struct node *p)

{ struct node *aux;

aux = p;

p = p->dcho;

aux-> dcho = p->izdo;

p->izdo = aux;

}

Page 12: Expo Arboles Rojinegros

Ejemplo

Page 13: Expo Arboles Rojinegros

Eliminación

En un árbol binario de búsqueda normal, cuando se borra un nodo con dos nodos internos como hijos, tomamos el máximo elemento del subárbol izquierdo o el mínimo del subárbol derecho, y movemos su valor al nodo que es borrado.

Page 14: Expo Arboles Rojinegros

Inserción

La inserción comienza añadiendo el nodo como lo haríamos en un árbol binario de búsqueda convencional y pintándolo de rojo. Lo que sucede después depende del color de otros nodos cercanos. El término tío nodo será usado para referenciar al hermano del padre de un nodo, como en los árboles familiares humanos.

Page 15: Expo Arboles Rojinegros

Complejidad

En el código del árbol hay un bucle donde la raíz de la propiedad rojo-negro que hemos querido devolver a su lugar, x, puede ascender por el árbol un nivel en cada iteración Como la altura original del árbol es O(log n), hay O(log n) iteraciones. Así que en general la inserción tiene una complejidad de O(log n).

Page 16: Expo Arboles Rojinegros

Gracias =)