You are on page 1of 15

4.1.

1 DEFINICION DE RBOL Un rbol es un conjunto de n registros (n>0, rbol vaco no est definido), tales que, hay un registro especial llamado RAIZ y los dems registros estn particionados en conjuntos disjuntos, cada uno de los cuales es un rbol. Un rbol es una estructura recursiva por definicin, adems cada registro que tenga hijos se podr considerar como la raz de un sub-rbol.

Las ramificaciones de cada nodo o registro suelen llamarse hijos y los nodos de los cuales salen las ramificaciones se llaman padres. Los registros que tienen un mismo padre se denominan hermanos. En ciencias de la informtica, un rbol es una estructura de datos ampliamente usada que imita la forma de un rbol (un conjunto de nodos conectados). Un nodoes la unidad sobre la que se construye el rbol y puede tener cero o ms nodos hijos conectados a l. Se dice que un nodo a es padre de un nodo b si existe un enlace desde a hasta b (en ese caso, tambin decimos que b es hijo de a). Solo que puede haber un nico nodo sin padres, que llamaremos raz. Un nodo que no tiene hijos se conoce como hoja. Los dems nodos (tienen padre y uno o varios hijos) se les conoce como rama.

4.1.2 CLASIFICACIN DE RBOLES rboles Binarios Ejemplo de rbol (binario) 1

Un rbol binario es una estructura de datos en la cual cada nodo siempre tiene un hijo izquierdo y un hijo derecho. No pueden tener ms de dos hijos (de ah el nombre "binario"). Si algn hijo tiene como referencia a null, es decir que no almacena ningn dato, entonces este es llamado un nodo externo. En el caso contrario el hijo es llamado un nodo interno. Usos comunes de los rboles binarios son los rboles binarios de bsqueda, los montculos binarios y Codificacin de Huffman. Tipos de rboles binarios Un rbol binario es un rbol con raz en el que cada nodo tiene como mximo dos hijos. Un rbol binario lleno es un rbol en el que cada nodo tiene cero o dos hijos. Un rbol binario perfecto es un rbol binario lleno en el que todas las hojas (vrtices con cero hijos) estn a la misma profundidad (distancia desde la raz, tambin llamada altura). A veces un rbol binario perfecto es denominado rbol binario completo. Otros definen un rbol binario completo como un rbol binario lleno en el que todas las hojas estn a profundidad n o n-1, para alguna n. Un rbol binario es un rbol en el que ningn nodo puede tener ms de dos subrboles. En un rbol binario cada nodo puede tener cero, uno o dos hijos (subrboles). Se conoce el nodo de la izquierda como hijo izquierdo y el nodo de la derecha como hijo derecho.

rbol de bsqueda binario auto-balanceable En ciencias de la computacin, un rbol binario de bsqueda autobalanceable o equilibrado es un rbol binario de bsqueda que intenta mantener su altura, o el nmero de niveles de nodos bajo la raz, tan pequeos como sea posible en todo momento, automticamente. Esto es importante, ya que muchas operaciones en un rbol de bsqueda binaria tardan un tiempo proporcional a la altura del rbol, y los rboles binarios de bsqueda ordinarios pueden tomar alturas muy grandes en situaciones normales, como cuando las claves son insertadas en orden. Mantener baja la altura se consigue habitualmente realizando transformaciones en el rbol, como la rotacin de rboles, en momentos clave.

Tiempos para varias operaciones en trminos del nmero de nodos en el rbol n:

Las rotaciones internas en rboles binarios son operaciones internas comunes utilizadas para mantener el balance perfecto (o casi perfecto del rbol binario. Un rbol balanceado permite operaciones en tiempo logartmico

Para algunas implementaciones estos tiempos son el peor caso, mientras que para otras estn amortizados. Estructuras de datos populares que implementan este tipo de rbol: rbol AVL Los rboles AVL estn siempre equilibrados de tal modo que para todos los nodos, la altura de la rama izquierda no difiere en ms de una unidad de la altura de la rama derecha o viceversa. El factor de equilibrio puede ser almacenado directamente en cada nodo o ser computado a partir de las alturas de los subrboles. Para conseguir esta propiedad de equilibrio, la insercin y el borrado de los nodos se ha de realizar de una forma especial. Si al realizar una operacin de

insercin o borrado se rompe la condicin de equilibrio, hay que realizar una serie de rotaciones de los nodos. Los rboles AVL ms profundos son los rboles de Fibonacci.

Un ejemplo de rbol binario no equilibrado(no es AVL)

es AVL es AVL Definicin de rbol AVL Un rbol vaco es un rbol AVL Si es un rbol no vaco y y sus subrboles, entonces es AVL si y solo si:

rboles Rojo-Negro Un rbol rojo-negro es un tipo abstracto de datos. Concretamente, es un rbol binario de bsqueda equilibrado, una estructura de datos utilizada en informtica y ciencias de la computacin. Es complejo, pero tiene un buen peor caso de tiempo de ejecucin para sus operaciones y es eficiente en la prctica. Puede buscar, insertar y borrar en un tiempoO(log n), donde n es el nmero de elementos del rbol.

Un rbol rojo-negro es un rbol binario de bsqueda en el que cada nodo tiene un atributo de color cuyo valor es rojo o negro. En adelante, se dice que un nodo es rojo o negro haciendo referencia a dicho atributo. Adems de los requisitos impuestos a los rboles binarios de bsqueda convencionales, se deben satisfacer las siguientes reglas para tener un rbol rojo-negro vlido:

1. 2. 3. 4. 5.

Todo nodo es o bien rojo o bien negro. La raz es negra. Todas las hojas (NIL) son negras. Todo nodo rojo debe tener dos nodos hijos negros. Cada camino desde un nodo dado a sus hojas descendientes contiene el mismo nmero de nodos negros. rbol AA Un rbol AA es un tipo de rbol binario de bsqueda auto-balanceable utilizado para almacenar y recuperar informacin ordenada de manera eficiente. Los rboles AA son una variacin del rbol rojo-negro, que a su vez es una mejora del rbol binario de bsqueda. A diferencia de los rboles rojo-negro, los nodos rojos en un rbol AA slo pueden aadirse como un hijo derecho. En otras palabras, ningn nodo rojo puede ser un hijo izquierdo. De esta manera se simula un rbol 2-3 en lugar de un rbol 2-3-4, lo que simplifica las operaciones de mantenimiento. Los algoritmos de mantenimiento para un rbol rojo-negro necesitan considerar siete diferentes formas para balancear adecuadamente el rbol:

En un rbol AA, al cumplirse el estricto requisito de que slo los enlaces derechos pueden ser rojos, slo es necesario considerar dos formas:

rboles Multicamino Los rboles multicamino o rboles multirrama son estructuras de datos de tipo rbol usadas en computacin. Un rbol multicamino posee un grado g mayor a dos, donde cada nodo de informacin del rbol tiene un mximo de g hijos. Sea un rbol de m-caminos A, es un rbol m-caminos si y solo si:

A est vaco Cada nodo de A muestra la estructura: [nClaves,Enlace0,Clave1,...,ClavenClaves,EnlacenClaves]

siguiente

nClaves es el nmero de valores de clave de un nodo, pudiendo ser: 0 <= nClaves <= g-1 Enlacei, son los enlaces a los subrboles de A, pudiendo ser: 0 <= i <= nClaves Clavei, son los valores de clave, pudiendo ser: 1 <= i <= nClaves Clavei < Clavei+1 Cada valor de clave en el subrbol Enlacei es menor que el valor de Clavei+1 Los subrboles Enlacei, donde 0 <= i <= nClaves, son tambin rboles mcaminos. La principal ventaja de este tipo de rboles consiste en que existen ms nodos en un mismo nivel que en los rboles binarios con lo que se consigue que, si el rbol es de bsqueda, los accesos a los nodos sean ms rpidos. rboles B (rboles de bsqueda multicamino autobalanceados) los rboles-B o B-rboles son estructuras de datos de rbol que se encuentran comnmente en las implementaciones de bases de datos y sistemas de archivos. Son rboles balanceados de bsqueda en los cuales cada nodo puede poseer ms de dos hijos. Los rboles B mantienen los datos ordenados y las inserciones y eliminaciones se realizan en tiempo logartmico amortizado.

La

idea

tras

los

rboles-B es que los nodos internos deben tener un nmero variable de nodos hijo dentro de un rango predefinido. Cuando se inserta o se elimina un dato de la estructura, la cantidad de nodos hijo vara dentro de un nodo. Para que siga

mantenindose el nmero de nodos dentro del rango predefinido, los nodos internos se juntan o se parten. La idea tras los rboles-B es que los nodos internos deben tener un nmero variable de nodos hijo dentro de un rango predefinido. Cuando se inserta o se elimina un dato de la estructura, la cantidad de nodos hijo vara dentro de un nodo. Para que siga mantenindose el nmero de nodos dentro del rango predefinido, los nodos internos se juntan o se parten.

rbol-B+ Un rbol B+ es un tipo de estructura de datos de rbol, representa una coleccin de datos ordenados de manera que se permite una insercin y borrado eficientes de elementos. Es un ndice, multinivel, dinmico, con un lmite mximo y mnimo en el nmero de claves por nodo. Un rbol B+ es una variacin de un rbol B. En un rbol B+, toda la informacin se guarda en las hojas. Los nodos internos slo contienen claves y punteros. Todas las hojas se encuentran en el mismo nivel, que corresponde al ms bajo. Los nodos hoja se encuentran unidos entre s como una lista enlazada para permitir bsqueda secuencial.

Las estructuras de rbol B+ renen las siguientes caractersticas: El nmero mximo de claves en un registro es llamado el orden del rbol B+. El mnimo nmero de claves por registro es la mitad del mximo nmero de claves. Por ejemplo, si el orden de un rbol B+ es n, cada nodo (exceptuando la raz) debe tener entre n/2 y n claves. El nmero de claves que pueden ser indexadas usando un rbol B+ est en funcin del orden del rbol y su altura.

rbol-B* Un rbol-B* es una estructura de datos de rbol, una variante de rbolB utilizado en los sistemas de ficheros HFS y Reiser4, que requiere que los nodos no raz estn por lo menos a 2/3 de ocupacin en lugar de 1/2. Para mantener esto los nodos, en lugar de generar inmediatamente un nodo cuando se llenan, comparten sus claves con el nodo adyacente. Cuando ambos estn llenos, entonces los dos nodos se transforman en tres. Tambin requiere que la clave ms a la izquierda no sea usada nunca. No se debe confundir un rbol-B* con un rbol-B+, en el que los nodos hoja del rbol estn conectados entre s a travs de una lista enlazada, aumentando el coste de insercin para mejorar la eficiencia en la bsqueda.

4.1.3 OPERACIONES BASICAS CON ARBOLES BINARIOS Las rotaciones en rboles binarios son operaciones internas comunes utilizadas para mantener el balance perfecto (o casi perfecto) del rbol binario. Un rbol balanceado permite operaciones en tiempo logartmico.

Las operaciones comunes en rboles son: Enumerar todos los elementos. Buscar un elemento. Dado un nodo, listar los hijos (si los hay). Borrar un elemento. Eliminar un subrbol (algunas veces llamada podar). Aadir un subrbol (algunas veces llamada injertar). Encontrar la raz de cualquier nodo. Por su parte, la representacin puede realizarse de diferentes formas. Las ms utilizadas son: Representar cada nodo como una variable en el heap, con punteros a sus hijos y a su padre. Representar el rbol con un array donde cada elemento es un nodo y las relaciones padre-hijo vienen dadas por la posicin del nodo en el array.

4.1.4 APLICACIONES Los rboles representan las estructuras no lineales y dinmicas de datos ms importantes en Computacin. Dinmicas porque las estructuras de rbol pueden cambiar durante la ejecucin de un programa. No lineales, puesto que a cada elemento del rbol pueden seguirle varios elementos. La definicin de rbol es la siguiente: es una estructura jerrquica aplicada sobre una coleccin de Elementos u objetos llamados nodos; uno de los cuales es conocido como raz. Adems se crea una relacin o parentesco entre los nodos dando lugar a trminos como padre, hijo, hermano, antecesor, sucesor, ancestro, etc. Los rboles tienen una gran variedad de aplicaciones. Por ejemplo, se pueden utilizar para representar frmulas matemticas, para organizar adecuadamente la informacin, para construir un rbol genealgico, en la toma de decisiones, para el anlisis de circuitos elctricos y para numerar los captulos y secciones de un libro. A los rboles ordenados de grado dos se les conocen como rboles binarios ya que cada nodo del rbol no tendr ms de dos descendientes directos. Las aplicaciones de los rboles binarios son muy variadas ya que se les puede utilizar para representar una estructura en la cual es posible tomar decisiones con dos opciones en distintos puntos.

4.1.5 RBOLES BALANCEADO (AVL) Denicin. Un rbol AVL es un rbol binario de bsqueda que cumple con la condicin de que la diferencia entre las alturas de los subrboles de cada uno de sus nodos es, como mucho 1. La denominacin de rbol AVL viene dada por los creadores de tal estructura (Adelson-Velskii y Landis). Recordamos que un rbol binario de bsqueda es un rbol binario en el cual cada nodo cumple con que todos los nodos de su subrbol izquierdo son menores que la raz y todos los nodos del subrbol derecho son mayores que la raz. Recordamos tambin que el tiempo de las operaciones sobre un rbol binario de bsqueda son O(log n) promedio, pero el peor caso es O(n), donde n es el nmero de elementos. La propiedad de equilibrio que debe cumplir un rbol para ser AVL asegura que la profundidad del rbol sea O(log(n)), por lo que las operaciones sobre estas estructuras no debern recorrer mucho para hallar el elemento deseado. Como se ver, el tiempo de ejecucin de las operacin es sobre estos rboles es, a lo sumo O(log(n)) en el peor caso, donde n es la cantidad de elementos del rbol. Sin embargo, y como era de esperarse, esta misma propiedad de equilibrio de los rboles AVL implica una dicultad a la hora de insertar o eliminar elementos: estas operaciones pueden no conservar dicha propiedad.

Figure 1. rbol AVL de enteros

A modo de ejemplicar esta dicultad, supongamos que al rbol AVL de enteros de Figure 1 le queremos agregar el entero 3. Si lo hacemos con el procedimiento normal Mde insercin de rbols binarios de bsqueda el resultado sera el rbol de Figure 2 el cual ya no cumple con la condicin de equilibrio de los rboles AVL dado que la altura del subrbol izquierdo es 3 y la del subrbol derecho es 1.

Figure 2. rbol que no cumple con la condicin de equilibrio de los rboles AVL. 2rboles AVL

En Section 5 se pasar a explicar una serie de operaciones sobre los nodos de un rbol AVL con las cuales poder restaurar la propiedad de equilibrio de un rbol AVL luegode agregar o eliminar elementos.

4.2 GRAFOS Un grafo es una estructura de datos no lineal con la siguiente caracterstica: un nodo puede apuntar a varios y a su vez ser apuntado por otro. Consiste de un conjunto de nodos o vrtices y un conjunto de ejes o aristas. Usualmente se lo denota = (). Las aristas son pares de vrtices () con 2. Si () 2, se dice que y estn conectados o son adyacentes. Un trazado o dibujo de un grafo = () usando segmentos de 1 recta para las aristas es una asignacin de una posicin en el plano a cada vrtice en V. En las versiones ms simples, los vrtices son dibujados como puntos y las aristas como segmentos entre vrtices. De aqu en ms supondremos que el trazado usa segmentos para las aristas, excepto cuando se aclare lo contrario. Tambin se supondr que el grafo es conexo, ya que si el grafo a trazar no lo es, se puede trazar cada componente conexa por separado.

Los grafos slo contienen informacin relacional entre los vrtices, as que en principio no tienen ninguna forma \natural" de ser dibujados. Sin embargo, de las infinitas formas de trazar un grafo en el plano, algunas son claramente peores que otras, siempre teniendo en cuenta que el objetivo es visualizar el grafo.

4.2.1 TERMINOLOGA DE GRAFOS Un grafo se compone por un conjunto de V vrtices y un conjunto de A aristas. Cada arista se identifica con el par de vrtices que une. Los vrtices de una arista son entre si nodos adyacentes. Grado de un nodo: Numero de aristas que contiene ese nodo. Si el grado de un nodo es 0, se dice que es un nodo aislado. Grado de un grafo: Nmeros de vrtices de ese grafo. Camino: Un camino C de longitud N de un nodo V1 a un nodo V2, se define como la secuencia de nodos por los que hay que pasar para llegar del nodo V1 a V2. La longitud es el nmero de aristas que comprende el camino. El camino es cerrado si empieza y termina en el mismo nodo. El camino es simple si todos los nodos de dicho camino son distintos a excepcin de los de los extremos que pueden ser iguales.

Bucles: Aristas cuyos extremos son idnticos. Aristas mltiples: Dos o ms aristas que conectan los mismos nodos

Tipos de grafos: Grafo conectado o conexo: Existe un camino simple entre dos cualquiera de sus nodos.

Grafo desconectado: Aquel en que existen nodos que no estn unidos por ningn camino Grafo dirigido: Cada arista tiene asignada una direccin (identificada por un par ordenado).

Grafo no dirigido: La arista est definida por un par no ordenado.} Grafo sencillo: Aquel que no tiene ni bucles ni aristas mltiples.-

Grafo mltiple o multgrafo: Permite la existencia de aristas mltiples o bucles. Grafo completo: Cada nodo del grafo es adyacente a todos los dems. Grafo etiquetado con peso ponderado: Cada arista tiene asociado un valor denominado peso. Se usa para indicar algn criterio de evaluacin como la longitud o la importancia de la arista respecto a un parmetro. Peso de un camino: La suma de los pesos de las aristas del camino.

Representacin de los grafos: Existen dos formas de representar un grafo: - Con memoria esttica (Matriz adyacente): Matriz de N*N elementos donde N es el nmero de nodos del grafo. Cada posicin M (i, j) indica si hay una conexin o no entre los nodos que estn asociados a la posicin i y j de la matriz.

- Con memoria dinmica. Se utilizan 2 listas enlazadas: *Lista de nodos: Formada por todos los vrtices. *Lista de adyacentes: Contiene las aristas del grafo.

4.2.2 OPERACIONES BASICAS CON GRAFOS En los grafos, como en todas las estructuras de datos, las dos operaciones bsicas son insertar y borrar. En este caso, cada una de ellas se desdobla en dos, para insertar/eliminar vrtices e insertar/eliminar aristas. Insertar vrtice La operacin de insercin de un nuevo vrtice es una operacin muy sencilla, nicamente consiste en aadir una nueva entrada en la tabla de vrtices (estructura de datos que almacena los vrtices) para el nuevo nodo. A partir de ese momento el grafo tendr un vrtice ms, inicialmente aislado, ya que ningna arista llegar a l. Insertar arista Esta operacin es tambin muy sencilla. Cuando se inserte una nueva arista en el grafo, habr que aadir un nuevo nodo a la lista de adyacencia (lista que almacena los nodos a los que un vrtice puede acceder mediante una arista) del nodo origen, as si se aade la arista (A,C), se deber incluir en la lista de adyacencia de A el vrtice C como nuevo destino. Eliminar vrtice Esta operacin es inversa a la insercin de vrtice. En este caso el procedimiento a realizar es la eliminacin de la tabla de vrtices del vrtice en s. A continuacin habr que eliminar las aristas que tuviesen al vrtice borrado como origen o destino. Eliminar arista Mediante esta operacin se borra un arco del grafo. Para llevar a cabo esta accin es necesario eliminar de la lista de adyacencia del nodo origen el nodo correspondiente al nodo destino. Otras operaciones Las operaciones adicionales que puede incluir un grafo son muy variadas. Adems de las clsicas de bsqueda de un elemento o recorrido del grafo, tambin podemos encontrarnos con ejecucin de algoritmos que busquen caminos ms cortos entre dos vrtices, o recorridos del grafo que ejecuten alguna operacin sobre todos los vrtices visitados, por citar algunas operaciones de las ms usuales.

You might also like