Sunteți pe pagina 1din 10

INSTITUTO TECNOLGICO SUPERIOR DE VALLADOLID

Estructura de datos: Arboles y Grafos


Lorenzo Eduardo May Mex

12

ndice
1 Arboles. 1.1 Concepto de rbol. 1.2 Clasificacin de rboles. 1.3 Operaciones bsicas sobre rboles binarios. 1.4 Aplicaciones. 1.5 Arboles balanceados (AVL)

2 Grafos. 2.1 Definicin 2.2 Terminologa de grafos. 2.3 Operaciones bsicas sobre grafos.

Arboles binarios
CONCEPTO Un rbol es una estructura de datos, que puede definirse de forma recursiva como: - Una estructura vaca o - Un elemento o clave de informacin (nodo) ms un nmero finito de estructuras tipo rbol, disjuntos, llamados subrboles. Si dicho nmero de estructuras es inferior o igual a 2, se tiene un rbol binario. Es, por tanto, una estructura no secuencial.

CLASIFICACION Existen cuatro tipos de arboles binario


A. B. Distinto. A. B. Similares. A. B. Equivalentes. A. B. Completos.

A continuacin se har una breve descripcin de los diferentes tipos de rbol binario as como un ejemplo de cada uno de ellos. A. B. DISTINTO Se dice que dos rboles binarios son distintos cuando sus estructuras son diferentes. Ejemplo: A. B. SIMILARES Dos arboles binarios son similares cuando sus estructuras son idnticas, pero la informacin que contienen sus nodos es diferente. Ejemplo: A. B. EQUIVALENTES Son aquellos arboles que son similares y que adems los nodos contienen la misma informacin. Ejemplo: A. B. COMPLETOS Son aquellos arboles en los que todos sus nodos excepto los del ultimo nivel, tiene dos hijos; el subrbol izquierdo y el subrbol derecho.

OPERACINES BASICAS Creacin. Implementacin. Se deben crear nodos donde cada uno de ellos tenga campos estructurados de la siguiente forma:

El campo informacin: que almacenar los datos del nodo N. El campo izquierda: que tendr la localizacin del hijo izquierdo del nodo N. El campo derecha: que tendr la localizacin del hijo derecho del nodo N.

Adems necesitamos una variable llamada raz que nos permita acceder a la estructura desde ella como el nodo principal. Insercin de nodos al rbol. Con la informacin alimentada se tiene un nuevo nodo y se generan las direcciones para el subrbol izquierda y der del nodo. Si es el primer nodo que se crea automticamente pasara a ser la raz del rbol, si no dependiendo del valor de la informacin se creara el hijo izquierda si el valor es menor que el de la raz, o el hijo derecho si el valor es mayor que el de la raz. Recorridos sistemticos A) Recorrido Preorden: Visitar la raz, Recorre el subrbol izquierdo y Recorre el subrbol derecho. B) Recorrido Inorden: Recorrer el subrbol izquierdo, Visitar la raz. Y Recorrer el subrbol derecho. Aplicaciones de arboles Un rbol binario es una estructura de datos til cuando se trata de hacer modelos de procesos en donde se requiere tomar decisiones en uno de dos sentidos en cada parte del proceso. Por ejemplo, supongamos que tenemos un arreglo en donde queremos encontrar todos los duplicados. Esta situacin es bastante til en el manejo de las bases de datos, para evitar un problema que se llama redundancia. Una manera de encontrar los elementos duplicados en un arreglo es recorrer todo el arreglo y comparar con cada uno de los elementos del arreglo. Esto implica que si el arreglo tiene elementos, se deben hacer comparaciones,

claro, no es mucho problema si es un nmero pequeo, pero el problema se va complicando ms a medida que aumenta. Si usamos un rbol binario, el nmero de comparaciones se reduce bastante, veamos cmo. El primer nmero del arreglo se coloca en la raz del rbol (como en este ejemplo siempre vamos a trabajar con rboles binarios, simplemente diremos rbol, para referirnos a un rbol binario) con sus subrboles izquierdo y derecho vacos. Luego, cada elemento del arreglo se compara son la informacin del nodo raz y se crean los nuevos hijos con el siguiente criterio:

Si el elemento del arreglo es igual que la informacin del nodo raz, entonces notificar duplicidad. Si el elemento del arreglo es menor que la informacin del nodo raz, entonces se crea un hijo izquierdo. Si el elemento del arreglo es mayor que la informacin del nodo raz, entonces se crea un hijo derecho.

Una vez que ya est creado el rbol, se pueden buscar los elementos repetidos. Si x el elemento buscado, se debe recorrer el rbol del siguiente modo: Sea k la informacin del nodo actual p. Si entonces cambiar el nodo actual a right (p), en caso contrario, en caso de que informar una ocurrencia duplicada y en caso de que El siguiente algoritmo leer numero buscado >> n tree=makeTree(n) while(hay numeros en el arreglo){ leeSiguienteNumero >> k p=q=tree; while(k!=info(p)&&q!=NULL){ p=q if(k<info(p)) q=left(p) else q=right(p) } if(k==info(p)) despliega<<" el numero es duplicado"; else if (k<info(p)) setLeft(p,k) else setRight(p,k) } cambiar el nodo actual a left (p).

rbol binario para encontrar nmeros duplicados Para saber el contenido de todos los nodos en un rbol es necesario recorrer el rbol. Esto es debido a que solo tenemos conocimiento del contenido de la direccin de un nodo a la vez. Al recorrer el rbol es necesario tener la direccin de cada nodo, no necesariamente todos al mismo tiempo, de hecho normalmente se tiene la direccin de uno o dos nodos a la vez; de manera que cuando se tiene la direccin de un nodo, se dice que se visita ese nodo. Aunque hay un orden preestablecido (la enumeracin de los nodos) no siempre es bueno recorrer el rbol en ese orden, porque el manejo de los apuntadores se vuelve ms complejo. En su lugar se han adoptado tres criterios principales para recorrer un rbol binario, sin que de omita cualquier otro criterio diferente. Los tres criterios principales para recorrer un rbol binario y visitar todos sus nodos son, recorrer el rbol en: Preorden: Se ejecutan las operaciones: 1. Visitar la raz 2. recorrer el subrbol izquierdo en preorden 3. recorrer el subrbol derecho en preorden Entreorden: Se ejecutan las operaciones: 1. recorrer el subrbol izquierdo en entreorden 2. Visitar la raz 3. recorrer el subrbol derecho en entreorden Postorden: Se ejecutan las operaciones: 1. recorrer el subrbol izquierdo en postorden 2. recorrer el subrbol derecho en postorden 3. Visitar la raz

Al considerar el rbol binario que se muestra en la figura usando cada uno de los tres criterios para recorrer el rbol se tienen las siguientes secuencias de nodos:

En preorden:

En entreorden:

En postorden: Esto nos lleva a pensar en otra aplicacin, el ordenamiento de los elementos de un arreglo. Para ordenar los elementos de un arreglo en sentido ascendente, se debe construir un rbol similar al rbol binario de bsqueda, pero sin omitir las coincidencias. El arreglo usado para crear el rbol binario de bsqueda fue <14,15,4,9,7,18,3,5,16,4,20,17,9,14,5> El rbol de ordenamiento es el que se muestra en la figura

rbol binario para ordenar una secuencia de nmeros

Arboles balanceados (AVL). Para mejorar el acceso a la informacin, los rboles binarios ordenados deben buscar tener en sus subrboles el mismo nmero de componentes, garantizndose de esta manera que en cada paso de la bsqueda se descarte aproximadamente la mitad de los elementos del conjunto. Los rboles con dicha caracterstica reciben el nombre de balanceados.

BALANCE: de un nodo en un nodo en un rbol binario, se define como la altura de su subrbol izquierdo menos la altura de su rbol derecho. Cada nodo en un rbol binario balanceado tiene balance igual a 1, -1 o 0, dependiendo si la altura de su subrbol izquierdo es mayor que, menor que o igual a la altura de su subrbol derecho. TIPOS DE BALANCE: Existen bsicamente dos tipos de balance de rboles binarios.

rbol balanceado por altura: en dnde todos los hijos o nodos hoja se intentan mantener a la misma distancia de la raz. rbol balanceado por peso: en dnde los nodos ms visitados o utilizados se mantienen a poca distancia de la raz.

GRAFOS Un grafo est formado por un conjunto de nodos(o vrtices) y un conjunto de arcos. Cada Arco en un grafo se especifica por un par de nodos. El conjunto de nodos es {A, B, C, D, F, G, H} y el conjunto de arcos {(A, B), (A, D), (A, C), (C, D), (C, F), (E, G), (A, A)} para el siguiente grafo

TERMINOLOGA *.-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 ms 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. La terminologa principal asociada con la teora de grafos por tanto advertimos al lector de que nuestras definiciones pueden ser ligeramente diferentes de las definiciones usadas en otros textos de estructuras de datos y teora de grafos.

GRAFOS Y MULTIGRAFOS Un grafo G consiste en dos cosas: (1) Un conjunto V de elementos llamados nodos (o puntos o vrtices) (2) Un conjunto E de aristas tales que cada arista e de E esta identificada por un nico (desordenado) par [u,v] de nodos de V, denotado por e-[v,u]. A veces denotamos un grafo escribiendo G=(V,E) Suponga que e =[u,v]. entonces los nodos u y v se llaman extremos de e, y u y v se dice que son

nodos adyacentes o vecinos. El grado de un nodo u, escrito grad(u), es el nmero de artistas que contienen a u. si grad(u)= 0, o sea, si u no pertenece a ninguna arista--- entonces se dice que u es un nodo aislado. Un camino P de longitud n desde un nodo u se define como la secuencia de n +1 nodos. P= ( v 0 i , v 1 i , v 2 i , . . . . v m )

Un grafo G se dice que es conexo si existe un camino entre cualesquiera dos de sus nodos.

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 ninguna 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.

Conclusin: Se puede observar que las estructuras no lineales se pueden utilizar para enlazar los nodos que contienen informacin a la cual se le puede aadir una secuencia la cual es muy til en la implementacin de operaciones bsicas de la como son a las aadir en o incluso en decidir cuntos niveles se quiere en dicho rbol para mejorar las funciones.

Bibliografa
Aguilar, L. J. estructura de datos en java. Machill. computacion.cs.cinvestav.mx/. (s.f.). Obtenido de computacion.cs.cinvestav.mx/: http://computacion.cs.cinvestav.mx/~acaceres/courses/estDatosCPP/node53.html

S-ar putea să vă placă și