Sunteți pe pagina 1din 14

CORPORATIVO INTERNACIONAL UNIVERSITARIO

ASIGNATURA: ORGANIZACIN DE ARCHIVOS Y ESTRUCTURAS DE DATOS

TEMAS: ALGORITMOS PARA MANIPULAR ARBOLES Y GRAFOS

DOCENTE: L.I. GABRIEL FLORES GONZALEZ

ALUMNO: AGUSTIN GARCIA GARCIA

TRABAJO: 2 INVESTIGACION

SEGUNDO CUATRIMESTRE

INTRODUCCION

Hoy en da podemos ver muchas cosas que nos pueden parecer de lo mas cotidianas, carreteras, lneas telefnicas, lneas de televisin por cable, el transporte colectivo metro, circuitos elctricos de nuestras casas, automviles, y tantas cosas mas; lo que no pensamos frecuentemente es que estos forman parte de algo que en matemticas se denomina como grafos. En este trabajo se tratar brevemente de explicar lo que son los grafos, sus tipos, y algunas derivaciones de ellos, as como su representacin grfica y en algunos casos, su representacin en algn programa informtico, as como en la memoria. En este trabajo, trat de ser lo ms breve posible explicando de manera muy sencilla los conceptos y algunas metodologas con un lenguaje no tan rebuscado para su mayor entendimiento. Dada esta pequea introduccin empezar el desarrollo del tema.

INDICE

INTRODUCCION ALGORTMOS PARA MANIPULAR ARBOLES Arboles binarios Tipos de arboles binarios Estructuras generales Aplicaciones de arboles GRAFOS Y SUS APLICACIONES Caminos Clasificacin de grafos Recorrido de grafos Representacin de grafos en programas CONCLUSIONES BIBLIOGRAFIA 4 4 5 6 7 7 8 10 11 12 13

RBOL BINARIO

En ciencias de la computacin, 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. 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. Otra definicin nos da el rbol como un tipo de grafo (ver grafos): un rbol es un grafo acclico, conexo y no dirigido. Es decir, es un grafo no dirigido en el que existe exactamente un camino entre todo par de nodos. Esta definicin permite implementar un rbol y sus operaciones empleando las representaciones que se utilizan para los grafos. Sin embargo, en esta seccin no se tratar esta implementacin.

TIPOS DE RBOLES BINARIOS


y y y

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. ESTRUCTURAS GENERALES Un rbol binario puede declararse de varias maneras. Algunas de ellas son: Estructura con manejo de memoria dinmica, siendo puntA el puntero que apunta al rbol de tipo tArbol: typedef struct nodo { int clave; struct nodo *izdo, *dcho; }Nodo; Estructura con arreglo indexado: typedef struct tArbol { int clave; tArbol hIzquierdo, hDerecho; } tArbol; tArbol rbol[NUMERO_DE_NODOS]; En el caso de un rbol binario casi-completo (o un rbol completo), puede utilizarse un sencillo arreglo de enteros con tantas posiciones como nodos deba tener el rbol. La informacin de la ubicacin del nodo en el rbol es implcita a cada posicin del arreglo. As, si un nodo est en la posicin i, sus hijos se encuentran en las posiciones 2i+1 y 2i+2, mientras que su padre (si tiene), se encuentra en la posicin truncamiento((i-1)/2) (suponiendo que la raz est en la posicin cero). Este mtodo se beneficia de un almacenamiento ms compacto y una mejor localidad de referencia, particularmente durante un recorrido en preorden. La estructura para este caso sera por tanto: int rbol[NUMERO_DE_NODOS];

APLICACIN DE UN ARBOL

Se tiene un fichero de texto ASCII. Para este propsito puede servir cualquier libro electrnico de la librera Gutenberg o Cervantes, que suelen tener varios cientos de miles de palabras. El objetivo es clasificar todas las palabras, es decir, determinar que palabras aparecen, y cuantas veces aparece cada una. Palabras como 'nio'-'nia', 'vengo'-'vienes' etc, se consideran diferentes por simplificar el problema. Escribir un programa, que recibiendo como entrada un texto, realice la clasificacin descrita anteriormente. Ejemplo: Texto: "a b'a c. hola, adios, hola" La salida que produce es la siguiente: a2 adios 1 b1 c1 hola 2 Ntese que el empleo de una lista enlazada ordenada no es una buena solucin. Si se obtienen hasta 20.000 palabras diferentes, por decir un nmero, localizar una palabra cualquiera puede ser, y en general lo ser, muy costoso en tiempo. Se puede hacer una implementacin por pura curiosidad para evaluar el tiempo de ejecucin, pero no merece la pena. La solucin pasa por emplear un rbol binario de bsqueda para insertar las claves. El valor de log(20.000) es aproximadamente de 14. Eso quiere decir que localizar una palabra entre 20.000 llevara en el peor caso unos 14 accesos. El contraste con el empleo de una lista es simplemente abismal. Por supuesto, como se ha comentado anteriormente el rbol no va a estar perfectamente equilibrado, pero nadie escribe novelas manteniendo el orden lexicogrfico (como un diccionario) entre las palabras, asi que no se obtendr nunca un rbol muy degenerado. Lo que est claro es que cualquier evolucin del rbol siempre ser mejor que el empleo de una lista. Por ltimo, una vez realizada la lectura de los datos, slo queda hacer un recorrido en orden central del rbol y se obtendr la solucin pedida en cuestin de segundos. Una posible definicin de la estructura rbol es la siguiente: typedef struct tarbol { char clave[MAXPALABRA]; int contador; /* numero de apariciones. Iniciar a 0 */ struct tarbol *izq, *der;

} tarbol; GRAFOS

Un grafo, G, es un par ordenado de V y A, donde V es el conjunto de vrtices o nodos del grafo y A es un conjunto de pares de vrtices, a estos tambin se les llama arcos o ejes del grafo. Un vrtice puede tener 0 o ms aristas, pero toda arista debe unir exactamente a dos vrtices. Los grafos representan conjuntos de objetos que no tienen restriccin de relacin entre ellos. Un grafo puede representar varias cosas de la realidad cotidiana, tales como mapas de carreteras, vas frreas, circuitos elctricos, etc. La notacin G = A (V, A) se utiliza comnmente para identificar un grafo. Los grafos se constituyen principalmente de dos partes: las aristas, vrtices y los caminos que pueda contener el mismo grafo. CAMINOS Sean x, y " V, se dice que hay un camino en G de x a y si existe una sucesin finita no vaca de aristas {x,v1}, {v1,v2},..., {vn,y}. En este caso
y y y y

x e y se llaman los extremos del camino El nmero de aristas del camino se llama la longitud del camino. Si los vrtices no se repiten el camino se dice propio o simple. Si hay un camino no simple entre 2 vrtices, tambin habr un camino simple entre ellos. Cuando los dos extremos de un camino son iguales, el camino se llama circuito o camino cerrado. Llamaremos ciclo a un circuito simple Un vrtice a se dice accesible desde el vrtice b si existe un camino entre ellos. Todo vrtice es accesible respecto a si mismo

y y

CLASIFICACION DE GRAFOS

Podemos clasificar los grafos en dos grupos: dirigidos y no dirigidos. En un grafo no dirigido el par de vrtices que representa un arco no est ordenado. Por lo tanto, los pares (v1, v2) y (v2, v1) representan el mismo arco. En un grafo dirigido cada arco est representado por un par ordenado de vrtices, de forma que y representan dos arcos diferentes. Ejemplos G1 = (V1, A1) V1 = {1, 2, 3, 4} A1 = {(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)} G2 = (V2, A2) V2 = {1, 2, 3, 4, 5, 6} A2 = {(1, 2), (1, 3), (2, 4), (2, 5), (3, 6)} G3 = (V3, A3) V3 = {1, 2, 3} A3 = { <1, 2>, <2, 1>, <2, 3> } Grficamente estas tres estructuras de vrtices y arcos se pueden representar de la siguiente manera:

Algunos de los principales tipos de grafos son los que se muestran a continuacin: Grafo regular: Aquel con el mismo grado en todos los vrtices. Si ese grado es k lo llamaremos k-regular. Por ejemplo, el primero de los siguientes grafos es 3-regular, el segundo es 2regular y el tercero no es regular Grafo bipartito: Es aquel con cuyos vrtices pueden formarse dos conjuntos disjuntos de modo que no haya adyacencias entre vrtices pertenecientes al mismo conjunto Ejemplo.- de los dos grafos siguientes el primero es bipartito y el segundo no lo es

Grafo completo: Aquel con una arista entre cada par de vrtices. Un grafo completo con n vrtices se denota Kn. A continuacin pueden verse los dibujos de K3, K4, K5 y K6 Un grafo bipartito regular: se denota Km,n donde m, n es el grado de cada conjunto disjunto de vrtices. A continuacin ponemos los dibujos de K1,2, K3,3, y K2,5 Grafo nulo: Se dice que un grafo es nulo cuando los vrtices que lo componen no estn conectados, esto es, que son vrtices aislados.

Grafos Isomorfos: Dos grafos son isomorfos cuando existe una correspondencia biunvoca (uno a uno), entre sus vrtices de tal forma que dos de estos quedan unidos por una arista en comn.

Grafos Platnicos: Son los Grafos formados por los vrtices y aristas de los cinco slidos regulares (Slidos Platnicos), a saber, el tetraedro, el cubo, el octaedro, el dodecaedro y el icosaedro.

GRAFOS EULERIANOS. Para definir un camino euleriano es importante definir un camino euleriano primero. Un camino euleriano se define de la manera ms sencilla como un camino que contiene todos los arcos del grafo. Teniendo esto definido podemos hablar de los grafos eulerianos describindolos simplemente como aquel grafo que contiene un camino euleriano. Como ejemplos tenemos las siguientes imgenes: El primer grafo de ellos no contiene caminos eulerianos mientras el segundo contiene al menos uno. GRAFOS CONEXOS. Un grafo se puede definir como conexo si cualquier vrtice V pertenece al conjunto de vrtices y es alcanzable por algn otro. Otra definicin que dejara esto ms claro sera: un grafo conexo es un grafo no dirigido de modo que para cualquier par de nodos existe al menos un camino que los une.

RBOLES.

Un rbol se define como un tipo de grafo que no contiene ciclos, es decir es un grafo tambin acclico, pero a su vez es conexo. Tal es el caso de los siguientes dos grafos en donde se puede notar que ninguno de los dos contiene repeticiones (ciclos). BOSQUES DE RBOLES. Los bosques de rboles son un caso similar a los rboles, son acclicos, pero no son conexos. Como ejemplo tenemos la siguiente figura.

RECORRIDO DE UN GRAFO. Recorrer un grafo significa tratar de alcanzar todos los nodos que estn relacionados con uno que llamaremos nodo de salida. Existen bsicamente dos tcnicas para recorrer un grafo: el recorrido en anchura; y el recorrido en profundidad.
y

Recorrido en anchura: El recorrido en anchura supone recorrer el grafo, a partir de un nodo dado, en niveles, es decir, primero los que estn a una distancia de un arco del nodo de salida, despus los que estn a dos arcos de distancia, y as sucesivamente hasta alcanzar todos los nodos a los que se pudiese llegar desde el nodo salida. Recorrido en profundidad: el recorrido en profundidad trata de buscar los caminos que parten desde el nodo de salida hasta que ya no es posible avanzar ms. Cuando ya no puede avanzarse ms sobre el camino elegido, se vuelve atrs en busca de caminos alternativos, que no se estudiaron previamente.

REPRESENTACIN DE GRAFOS EN PROGRAMAS. Hay tres maneras de representar un grafo en un programa: mediante matrices, mediante listas y mediante matrices dispersas.
y

Representacin mediante matrices: La forma ms fcil de guardar la informacin de los nodos es mediante la utilizacin de un vector que indexe los nodos, de manera que los arcos entre los nodos se pueden ver como relaciones entre los ndices. Esta relacin entre ndices se puede guardar en una matriz, que llamaremos de adyacencia. Representacin mediante listas: En las listas de adyacencia lo que haremos ser guardar por cada nodo, adems de la informacin que pueda contener el propio nodo, una lista dinmica con los nodos a los que se puede acceder desde l. La informacin de los nodos se puede guardar en un vector, al igual que antes, o en otra lista dinmica. Representacin mediante matrices dispersas: Para evitar uno de los problemas que tenamos con las listas de adyacencia, que era la dificultad de obtener las relaciones inversas, podemos utilizar las matrices dispersas, que contienen tanta informacin como las matrices de adyacencia, pero, en principio, no ocupan tanta memoria como las matrices, ya que al igual que en las listas de adyacencia, slo representaremos aquellos enlaces que existen en el grafo.

CONCLUCIONES

Como ya sabemos los diferentes tipos de arboles binarios son casi iguales pero no contienen lo mismo aunque vallan enlazados entre si. Como tambin ya se dijo en los apartados anteriores en ciencias de la computacin, 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 Hoffman. 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 subrbols. Si dicho nmero de estructuras es inferior o igual a 2, se tiene un rbol binario.

BIBLIOGRAFA Matemtica discreta N.L. Biggs (Ed. Vincens Vives) Matemticas discreta y combinatoria R.P. Grimaldi (Ed. Addison Westley) Matemticas Discretas K.A. Ross y R.B. Wrigth (Ed. Prentice Hall) www.rincondelvago.com www.google.com www.redes.com.mx http://www.ucema.edu.ar/u/rst/Algoritmos_y_Estructura_de_Datos/Teoria/5._Arbol es_binarios.pdf http://es.wikipedia.org/wiki/%C3%81rbol_binario

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