You are on page 1of 12

4.1.1 Concepto de rbol.

Un rbol es una estructura de datos homognea, dinmica y no lineal, en la que cada nodo (elemento) puede tener varios nodos posteriores, pero slo puede tener un nodo anterior.

Un rbol es dinmico porque su estructura puede cambiar durante la ejecucin de un programa. Y no lineal, ya que cada nodo del rbol puede contener varios nodos que dependan de l. La estructura de un rbol se forma de nodos y arcos (lnea que une dos nodos), el primero de los nodos del rbol recibe el nombre de raz, del cual se desprenden los nodos interiores y de stos los nodos llamados hoja, que son los nodos que se encuentran al final del rbol; todos ellos en conjunto forman un rbol. Adems de comprender el concepto y la estructura de un rbol, debemos tomar en cuenta otros conceptos bsicos que pueden ser tiles en el momento de construir o programar un rbol, estos conceptos los clasificaremos en tres rubros: Relacin con otros nodos, Posicin dentro del rbol y Tamao del rbol En relacin con otros nodos: Padre, es el nodo del cual se derivan otros nodos. Hijo, es el nodo que depende de otro. Hermano, es el nodo que se encuentra al lado del nodo hijo y que dependen del mismo nodo padre. En cuanto a la posicin dentro del rbol: Raz, es el primero de los nodos y el nico que no contiene un padre. Hoja, es el nodo que se encuentra al final del rbol. Interior, es un nodo que no es raz ni hijo y se encuentre ellos. En relacin a su tamao: Orden, es el nmero potencial de nodos hijos que tiene un nodo padre (orden 2). Grado, es el nmero mximo de hijos que tiene un nodo (grado 2). Nivel, es el nmero de arcos que deben ser recorridos para llegar a un determinado nodo ms uno (nivel 3). Altura, es el nmero de niveles que deben pasar para llegar al final del rbol o de la ramificacin (altura 3). Peso, es el nmero de nodos del rbol sin contar la raz (peso 6). Camino, es la serie de nodos que tienes que pasar para llegar hasta un nodo.

hoja.

Longitud de camino, es el nmero de arcos ms uno que debe cruzar para llegar a un nodo. Rama, es el camino que se forma desde el nodo raz hasta un nodo

4.1.2 Clasificacin de rboles.

Los rboles se clasifican de la siguiente manera: rboles binarios. o o o o o Distintos Similares Equivalentes Equilibrado Completo rboles Multicaminos. B B+ B* R 2-4

o o o o o

Un rbol binario es una estructura de datos homognea, dinmica y no lineal en donde a cada nodo le pueden seguir como mximo dos nodos hijos (que pueden estar vacos), y cada hijo se designa ya sea como hijo izquierdo o como hijo derecho. Un rbol binario es distinto cuando su estructura es diferente a la de otros rboles binarios.

Un rbol binario es similar cuando su estructura es idntica a la de otros rboles binarios, pero la informacin que guardan los nodos es diferente entre s.

Un rbol binario es equivalente cuando su estructura e informacin de sus nodos es idntica a la de otros rboles binarios.

Un rbol binario es equilibrado es aquel que todos sus nodos cumplen con la propiedad: altura (subrbol izquierdo) altura (subrbol derecho) <= 1

Ejemplo. Si usamos los rboles anteriores para determinar si son o no equilibrados. El primero tiene una altura izquierda de 2 y derecha 1, 2-1 <= 1, la condicin es verdadera, por lo tanto es un rbol equilibrado. El segundo tiene una altura izquierda de 2 y derecha 0, 2-0 <= 1, la condicin es falsa, por lo tanto es un rbol no equilibrado.

Un rbol binario es completo cuando todos sus nodos excepto los del ltimo nivel, tienen dos hijos y todas las hojas estn en el mismo nivel. Para calcular el nmero de nodos de un rbol completo se aplica la formula: Nmero de nodos = 2altura - 1

Ejemplo. La altura de este rbol anterior es 3, aplicando la frmula del nmero de nodos seria.

Nmero de nodos = 23 1 = 8 1 = 7

Un rbol multicamino es una estructura de datos homognea, dinmica y no lineal, en donde a cada nodo le pueden seguir una cantidad n de nodos hijos, y cada hijo se designa por el nmero de hijo que le corresponde.

4.1.3 Operaciones Bsicas sobre rboles binarios.

Las operaciones que se pueden aplicar a un rbol binario son las siguientes:

Creacin de un rbol Insercin de un nodo nuevo. Eliminacin de un nodo. Recorrido del rbol. Balanceo del rbol.

Creacin. Un rbol se forma de una serie de nodos y un nodo se integra de una serie de campos, para este caso, el nodo de un rbol binario debe estar integrado por los siguientes campos: Padre, Dato, Izquierda y Derecha.

Donde los campos padre, izquierdo y derecho son los que permiten la relacin con otros nodos dentro del rbol y el campo de dato es donde se almacena la informacin. Otra estructura que puede tener un nodo para un rbol binario es contar con solo tres de los campos antes mencionados (dato, izquierdo y derecho), dicha estructura se representa de la siguiente manera: Dato, Izquierda y Derecha.

La nica diferencia entre una estructura y la otra, es que en la primera se puede recorrer el rbol de arriba hacia abajo y de abajo hacia arriba; en la segunda solo se puede recorrer de arriba hacia abajo.

Adems debe tomar en cuenta que cada nodo es un objeto creado a partir de una clase auto-referenciada y dicha clase debe contener los campos antes mencionados.

Ejercicio. Construir una clase que permita crear objetos que se comporten como un nodo de un rbol.

public class NodoB { Object elemento; NodoB padre, izquierdo, derecho; //mtodos }

ARBOLES GENERALES En ciencias de la computacin, un rbol es una estructura de datos ampliamente usada que emula la forma de un rbol (un conjunto de nodos conectados). Un nodo es la unidad sobre la que se construye el rbol y puede tener cero o mas 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). Slo puede haber un nico nodo sin padres, que llamaremos raz. Un nodo que no tiene hijos se conoce como hoja. El rbol Tambin se define como una estructura de datos no lineal. Esta estructura se usa principalmente para representar datos con una relacin jerrquica entre sus elementos, como por ejemplo registros, rboles genealgicos y tablas de contenidos. Entre otros tenemos un tipo especial de de rbol que es, llamado rbol binario, que puede ser implementado fcilmente en la computadora.

4.1.2.2 ARBOLES BINARIOS

rboles Binarios Un rbol binario T se define como un conjunto finito de elementos, llamados nodos, de forma que: a. T es vaco ( en cuyo caso se llama rbol nulo o rbol vaci) o b. T contiene un nodo distinguido R, llamado raz de T, y los restantes nodos de T forman un par ordenado de rboles binarios disjuntos T1 y T2. Si T contiene una raz R, los dos rboles T1 y T2 se llaman, respectivamente, subrboles izquierdo y derecho de la raz R. Si T1 no es vaci , entonces su raz se llama sucesor izquierdo de R; y anlogamente, si T2 no es vaci, su raz se llama sucesor derecho de R. Observe que : a. B es un sucesor izquierdo y C un sucesor derecho del nodo A. b. El subrbol izquierdo de la raz A consiste en los nodos B, D, E y F, y el subrbol derecho de A consiste en los nodos C , G, H, J, K y L. Figura (1)

Cualquier nodo N de un rbol binario T tiene 0, 1 2 sucesores. Los nodos A,B,C y H tienen dos sucesores, los nodos R y J slo tienen un sucesor , y los nodos D,F, G,L y K no tienen sucesores. Los nodos sin sucesores se llaman nodos terminales. La definicin anterior del rbol binario T es recursiva, ya que T se define en trminos de los subrboles binarios T1 y T2. Esto significa, en particular, que cada

nodo N de T contiene un subrbol izquierdo y uno derecho. Ms aun, si N es un nodo terminal, ambos rboles estn vacos. Dos rboles binarios T y T se dicen que son similares si tienen la misma estructura o, en otras palabras, si tienen la misma forma. Los rboles se dice que son copias si son similares y tienen los mismos contenidos en sus correspondientes nodos. RECORRIDO EN ARBOL BINARIO EN PREORDEN El recorrido en un rbol binario permite rescatar los datos en formas diferentes. Aunque existen varias maneras de hacerlo, aqu se vern las ms conocidas : inorden , preorden , postorden. Una de los recorridos ms usados (inorden) es el que rescata los datos en forma ordenada (de menor a mayor). La tcnica que usualmente se usa para hacer el recorrido, es ir almacenando los datos en una estructura lineal : Cola , Lista o Pila. El criterio para escoger una de las tres depende del problema , pero generalmente los criterios generales son los siguientes : Cola : los datos quieren ser vistos en el mismo orden en el cual fueron recorridos y la cola pasa a ser un instrumento de almacenamiento de "corto plazo" : (almacenar , ver , vaciar ). Lista : los datos necesitan ser almacenados y se requieren operaciones en donde es necesario acceder a los datos en cualquier posicin. Pila : se necesita que los datos se almacenen en forma de pila, pasando a ser un instrumento de almacenamiento de "corto plazo". De aqu en adelante , las implementaciones de recorrido sern usando una Cola , ya que los problemas que vienen, requieren los datos en forma ordenada.

RECORRIDO EN ARBOL BINARIO INORDEN Se declara una funcin que recibe como parmetros un arbol binario y una cola. Las instrucciones de la funcin, siguen el concepto recursivo de la definicin, teniendo en cuenta que el concepto de "visitar el elemento de la raiz" se reemplaza por : obtener la raz e insertar el elemento en la cola y que la condicin de la recursividad es que se encuentre con algn subrbol vaco. *nota : Hay que tener cuidado en verificar que la cola que se pasa como parmetro sea no vaca. Las funciones sern implementadas en el archivo "funcArbin.h".

void inordenArbin(Arbin a,Cola col) { if (!vacioArbin(a)) { inordenArbin(izqArbin(a),col); TipoA raiz = raizArbin(a); adicCola(col,raiz); inordenArbin(derArbin(a),col); } } 4.1.3.3 RECORRIDO EN ARBOL BINARIO POSORDEN

Recorrer el subarbol izquierdo en postorden. Recorrer el subarbol derecho en postorden. Examinar la raz.

BALANCEO ARBOLES BINARIOS En ciencias de la computacin, un rbol binario de bsqueda auto-balanceable 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: 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 rbol rojo-negro Tiempo en cota superior asinttica O(log n) O(log n) O(log n)

Operacin Bsqueda Insercin Eliminacin

Iteracin en orden O(n) 4.1.5 CLASES PARA IMPLEMENTACION DE ARBOLES

Dado que los rboles binarios son de estructura fundamental en la teora de los rboles, ser preciso disponer de algn mecanismo que permita la conversin de un rbol general en rbol binario. Los rboles binarios son ms fciles de programar que los generales. En esto es imprescindible deducir cuntas ramas o caminos se desprenden de un nodo en un momento dado. Por ello, y dado que de los rboles binarios siempre se cuelgan como mximo dos subrboles, su programacin ser ms sencilla. Afortunadamente, existe una tcnica para convertir un rbol general a formato de un rbol binario. Ejemplo: Supongamos que se tiene el rbol A y se quiere convertir en un rbol binario B. El rbol de conversin tiene 3 pasos fciles: 1. - La raz de B es la raz de A 2. a) Enlazar un nodo raz con el camino que conecta el nodo ms a la izquierda (su hijo). ,. b) Enlazar ste nodo con los restantes descendientes del nodo raz en su camino con lo que se forma el nivel 1. c) A continuacin, repetir los pasos a y b con los nodos del nivel 2, enlazando siempre en un mismo camino todos los hermanos (descendientes del mismo nodo). Repetir estos pasos hasta llegar al nivel ms alto. 3.- Girar el diagrama resultante 45 para diferenciar entre los subrboles izquierdos y derecho. Ejem: TT AA BB

CC DD EE

4.2 GRAFOS

Definicion: Un grafo dirigido G consiste en un conjunto de vrtices V y un conjunto de arcos o aristas A. Los vertice se denominan tambin nodos o puntos. Un arco, es un par ordenado de vrtices(V,W) donde V es el vrtice inicial y W es el vrtice terminal del arco. Un arco se expresa como: V>W Los vrtice de un grafo pueden usarse para representar objetos. Los arcos se utilizan para representar relaciones entre estos objetos. Las aplicaciones ms importantes de los grafos son las siguientes: Rutas entre ciudades. Determinar tiempos mximos y mnimos en un proceso. Flujo y control en un programa.

4.2.1 Terminologa de grafos

*.-Al nmero de nodos del grafo se le llama orden del grafo. *.-Un grafo nulo es un grafo de orden 0 (cero). *.-Dos nodos son adyacentes si hay un arco que los une. *.-En un grafo dirigido, si A es adyacente de B, no necesariamente B es adyacente de A *.-Camino es una secuencia de uno o mas arcos que conectan dos nodos.

*.-Un grafo se denomina conectado cuando existe siempre un camino que une dos nodos cualesquiera y desconectado en caso contrario. *.-Un grafo es completo cuando cada nodo est conectado con todos y cada uno de los nodos restantes. *.-El camino de un nodo as mismo se llama ciclo

4.2.2 Operaciones bsicas de los 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