Está en la página 1de 17

S.N.E.S.T.

D.G.E.S.T.

S.E.P.

INSTITUTO TECNOLGICO Del Istmo

MATERIA: Estructura de datos TEMA: Unidad 4. Estructuras no lineales PRESENTA: Telma Yael Lpez Lpez Keren Yesenia Mndez Montes Mario Calderon Vasquez ESPECIALIDAD: Ing. En sistemas computacionales SEMESTRE: 3 GRUPO: O
HEROICA CD. DE JUCHITAN DE ZARAGOZA, OAX., SEPTIEMBRE DEL 2011

Pgina 1

Tabla de contenido
Unidad 4. Estructuras no lineales ........................................................................................... 3 4.1 rboles ................................................................................................................................................ 3 4.1.1 rboles generales ...................................................................................................................... 5 4.1.2 rboles binarios ......................................................................................................................... 6 4.1.3 Recorridos en un rbol binario ................................................................................................ 6 4.1.3.1 Preorden (NID) ............................................................................................................. 7 4.1.3.2. Inorden (IND) ............................................................................................................... 7 4.1.3.3 Postorden (IDN) .......................................................................................................... 7 4.1.4 Balanceo de rboles binarios .................................................................................................. 8 4.2 Grafos .................................................................................................................................................. 8 4.2.1. Grafo no dirigido .................................................................................................................... 11 4.2.2. Grafo dirigido ......................................................................................................................... 11 4.2.3. Pseudografo ............................................................................................................................ 12 4.2.4. Pseudografo dirigido ............................................................................................................. 12 4.2.5. Grafos particulares ............................................................................................................... 15 4.2.6. Grafo conexo .......................................................................................................................... 16

Pgina 2

Unidad 4. Estructuras no lineales


4.1 rboles.
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 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). 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 rbol que es, llamado rbol binario, que puede ser implementado fcilmente en la computadora. *Un rbol es una estructura no lineal en la que cada nodo puede apuntar a uno o varios nodos. *Tambin se suele dar una definicin recursiva: un rbol es una estructura en compuesta por un dato y varios rboles.

Pgina 3

* Nodo hijo: cualquiera de los nodos apuntados por uno de los nodos del rbol. En el ejemplo, 'L' y 'M' son hijos de 'G'.

* Nodo padre: nodo que contiene un puntero al nodo actual. En el ejemplo, el nodo 'A' es padre de 'B', 'C' y 'D'. En cuanto a la posicin dentro del rbol: *Nodo raz: nodo que no tiene padre. Este es el nodo que usaremos para referirnos al rbol. En el ejemplo, ese nodo es el 'A'. *Nodo hoja: nodo que no tiene hijos. En el ejemplo hay varios: 'F', 'H', 'I', 'K', 'L', 'M', 'N' y 'O'. *Nodo rama: aunque esta definicin apenas la usaremos, estos son los nodos que no pertenecen a ninguna de las dos categoras anteriores. En el ejemplo: 'B', 'C', 'D', 'E', 'G' y 'J'.

Pgina 4

Un rbol es en el que cada nodo o bien todos o ninguno de los hijos existen, se llama rbol completo. Caractersticas del rbol, en relacin a su tamao *Orden: es el nmero potencial de hijos que puede tener cada elemento de rbol. De este modo, diremos que un rbol en el que cada nodo puede apuntar a otros dos es de orden dos, si puede apuntar a tres ser de orden tres, etc. *Grado: el nmero de hijos que tiene el elemento con ms hijos dentro del rbol. En el rbol del ejemplo, el grado es tres, ya que tanto 'A' como 'D' tienen tres hijos, y no existen elementos con ms de tres hijos. *Nivel: se define para cada elemento del rbol como la distancia a la raz, medida en nodos. El nivel de la raz es cero y el de sus hijos uno. As sucesivamente. En el ejemplo, el nodo 'D' tiene nivel 1, el nodo 'G' tiene nivel 2, y el nodo 'N', nivel 3. *Altura: la altura de un rbol se define como el nivel del nodo de mayor nivel. Como cada nodo de un rbol puede considerarse a su vez como la raz de un rbol, tambin podemos hablar de altura de ramas. El rbol del ejemplo tiene altura 3, la rama 'B' tiene altura 2, la rama 'G' tiene altura 1, la 'H' cero, etc.

4.1.1 rboles generales.


Intuitivamente el concepto de rbol implica una estructura en la que los datos se organizan de modo que los elementos de informacin estn

Pgina 5

relacionados entre s a travs de ramas. El rbol genealgico es el ejemplo tpico ms representativo del concepto de rbol general.

4.1.2 rboles binarios.


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.

4.1.3 Recorridos en un rbol binario.


Recorrido: Requiere que cada nodo del rbol sea procesado (visitado) una vez y slo en una secuencia predeterminada. Existen dos enfoques generales para la secuencia de recorrido, profundidad y anchura. Recorrido en profundidad: El proceso exige un camino desde la raz a travs de un hijo, al descendiente ms lejano del primer hijo antes de proseguir a un segundo hijo. En otras palabras, en el recorrido en profundidad, todos los descendientes de un hijo se procesan antes del siguiente hijo. Recorrido en anchura: El proceso se realiza horizontalmente desde el raz a todos sus hijos, a continuacin a los hijos de sus hijos y as sucesivamente hasta que todos los nodos han sido procesados. En otras palabras, en el recorrido en anchura cada nivel se procesa totalmente antes que comience el siguiente nivel.

Pgina 6

4.1.3.1 Preorden (NID).


Este recorrido conlleva los siguientes pasos: *Recorrer la raz (N) *Recorrer el subrbol izquierdo (I) *Recorrer el subrbol derecho (D) REGLA. derecho. La raz se procesa antes que los subrboles izquierdo y

4.1.3.2 Inorden (IND).


*Recorrer el subrbol izquierdo (I) *Visitar el nodo raz (N) *Recorrer el subrbol derecho (D) El significado in es que la raz se procesa entre los subrboles.

4.1.3.3 Postorden (IDN).


*Recorrer el subrbol izquierdo (I) *Recorrer el subrbol derecho (D) *Recorrer la raz (N) Se comienza situndose en la hoja ms izquierda

Pgina 7

4.1.4 Balanceo de rboles binarios.


Para determinar si un rbol est equilibrado, se calcula su factor de equilibrio. El factor de equilibrio de un rbol binario es la diferencia en altura entre los subrboles izquierdo y derecho. Si definimos la altura del subrbol izquierdo como H1 y la altura del subrbol derecho como HD, entonces el factor de equilibrio del rbol B se determina por la siguiente formula. B= H1 - HD

4.2 Grafos.

Grafo etiquetado con 6 vrtices y 7 aristas. En matemticas y ciencias de la computacin, un grafo o grfica es el principal objeto de estudio de la teora de grafos. Informalmente, un grafo es un conjunto de objetos llamados vrtices o nodos unidos por enlaces llamados aristas o arcos, que permiten representar relaciones binarias entre elementos de un conjunto. Tpicamente, un grafo se representa grficamente como un conjunto de puntos (vrtices o nodos) unidos por lneas (aristas). Desde un punto de vista prctico, los grafos permiten estudiar las interrelaciones entre unidades que interactan unas con otras.
Pgina 8

Por ejemplo, una red de computadoras puede representarse y estudiarse mediante un grafo, en el cual los vrtices representan terminales y las aristas representan conexiones (las cuales, a su vez, pueden ser cables o conexiones inalmbricas).

Ejemplo real de un grafo: Puentes de Konigsberg

Los siete puentes de Konigsberg. El primer artculo cientfico relativo a grafos fue escrito por el matemtico suizo Leonard Euler en 1736. Euler se bas en su artculo en el problema de los puentes de Konigsberg. La ciudad de Kaliningrado, originalmente Konigsberg, es famosa por sus siete puentes que unen ambas mrgenes del ro Pregel con dos de sus islas. Dos de los puentes unen la isla mayor con la margen oriental y otros dos con la margen occidental. La isla menor est conectada a cada margen por un puente y el sptimo puente une ambas islas. El problema planteaba lo siguiente: es posible, partiendo de un lugar arbitrario, regresar al lugar de partida cruzando cada puente una sola vez?

Pgina 9

Abstrayendo este problema y plantendolo con la (entonces an bsica) teora de grafos, Euler consigue demostrar que el grafo asociado al esquema de puentes de Konigsberg no tiene solucin, es decir, no es posible regresar al vrtice de partida sin pasar por alguna arista dos veces. De hecho, Euler resuelve el problema ms general: qu condiciones debe satisfacer un grafo para garantizar que se puede regresar al vrtice de partida sin pasar por la misma arista ms de una vez? Si definimos como "grado" al nmero de lneas que se encuentran en un punto de un grafo, entonces la respuesta al problema es que los puentes de un pueblo se pueden atravesar exactamente una vez s, salvo a lo sumo dos, todos los puntos tienen un grado par. Definiciones Un grafo G es un par ordenado G = (V, E), donde: V es un conjunto de vrtices o nodos, y E es un conjunto de aristas o arcos, que relacionan estos nodos. Normalmente V suele ser finito. Muchos resultados importantes sobre grafos no son aplicables para grafos infinitos. Se llama orden del grafo G a su nmero de vrtices, | V |. El grado de un vrtice o nodo V es igual al nmero de arcos E que se encuentran en l. Un bucle es una arista que relaciona al mismo nodo; es decir, una arista donde el nodo inicial y el nodo final coinciden.

Pgina 10

4.2.1. Grafo no dirigido

Grafo no dirigido Un grafo no dirigido o grafo propiamente dicho es un grafo G = (V, E) dnde:

Es un conjunto de pares no ordenados de elementos de . Un par no ordenado es un conjunto de la forma {a, b}, de manera que {a, b} = {b, a}. Para los grafos, estos conjuntos pertenecen al conjunto potencia de V de cardinalidad 2, el cual se denota por .

4.2.2. Grafo dirigido

Grafo dirigido Un grafo dirigido o digrafo es un grafo G = (V, E) dnde:

Pgina 11

es un conjunto de pares ordenados de elementos de . Dada una arista (a, b), a es su nodo inicial y b su nodo final. Por definicin, los grafos dirigidos no contienen bucles. Un grafo mixto es aquel que se define con la capacidad de poder contener aristas dirigidas y no dirigidas. Tanto los grafos dirigidos como los no dirigidos son casos particulares de este.

4.2.3. Pseudografo
Un pseudografo es un grafo G = (V, E) dnde:

Es ordenados de elementos de .

un

conjunto

de pares

no

Es decir, un pseudografo es un grafo no dirigido que acepta bucles en

4.2.4. Pseudografo dirigido


Un pseudografo dirigido es un grafo G = (V, E) dnde:

Es un conjunto de pares ordenados y etiquetados de elementos de Es decir, un pseudografo dirigido es un grafo dirigido que

acepta bucles en. E


Pgina 12

Variantes sobre las definiciones principales Algunas aplicaciones requieren extensiones ms generales a las dos propuestas clsicas de grafos. Aunque la definicin original los permite, segn la aplicacin concreta pueden ser vlidos o no. A veces V o E pueden ser un multiconjunto, pudiendo haber ms de una arista entre cada par de vrtices. La palabra grafo (a secas) puede permitir o no mltiples aristas entre cada par de vrtices, dependiendo del autor de la referencia consultada. Si se quiere remarcar la inexistencia de mltiples aristas entre cada par de vrtices (y en el caso no dirigido, excluir bucles) el grafo puede llamarse simple. Por otra parte, si se quiere asegurar la posibilidad de permitir mltiples aristas, el grafo puede llamarse multgrafo (a veces se utiliza el trmino pseudografo para indicar que se permiten tanto bucles como mltiples aristas entre cada par de vrtices). Propiedades Adyacencia: dos aristas son adyacentes si tienen un vrtice en comn, y dos vrtices son adyacentes si una arista los une. Incidencia: una arista es incidente a un vrtice si sta lo une a otro. Ponderacin: corresponde a una funcin que a cada arista le asocia un valor (costo, peso, longitud, etc.), para aumentar la expresividad del modelo. Esto se usa mucho para problemas de optimizacin, como el del vendedor viajero o del camino ms corto.

Pgina 13

Etiquetado: distincin que se hace a los vrtices y/o aristas mediante una marca que los hace unvocamente distinguibles del resto. Ejemplos

La imagen es una representacin del siguiente grafo: V:={1, 2, 3, 4, 5, 6} E:={{1,2}, {1,5}, {2,3}, {2,5}, {3,4}, {4,5}, {4,6}} El hecho que el vrtice 1 sea adyacente con el vrtice 2 puede ser denotado como 1 ~ 2. En la Teora de las categoras una categora puede ser considerada como un multgrafo dirigido, con los objetos como vrtices y los morfismos como aristas dirigidas. En ciencias de la computacin los grafos dirigidos son usados para representar mquinas de estado finito y algunas otras estructuras discretas. Una relacin binaria R en un conjunto X es un grafo dirigido simple. Dos vrtices a, b en X estn conectados por una arista dirigida ab si aRb.

Pgina 14

4.2.5. Grafos particulares


Existen grafos que poseen propiedades destacables. Algunos ejemplos bsicos son: Grafo nulo: aquel que no tiene vrtices ni aristas. Ntese que algunas personas exigen que el conjunto de vrtices no sea vaco en la definicin de grafo. Grafo vaco: aquel que no tiene aristas. Grafo trivial: aquel que tiene un vrtice y ninguna arista. Grafo simple: aquel que no posee bucles o lazos. Grafo completo: grafo simple en el que cada par de vrtices estn unidos por una arista, es decir, contiene todas las posibles aristas. Grafo bipartito completo: sea (W, X) una particin del conjunto de vrtices V, es aquel donde cada vrtice en W es adyacente slo a cada vrtice en X, y viceversa. Grafo bipartito: sea (W, X) una particin del conjunto de vrtices V, es aquel donde cada arista tiene un vrtice en W y otro en X. Grafo plano: aquel que puede ser dibujado en el plano cartesiano sin cruce de aristas. rbol: grafo conexo sin ciclos. Una generalizacin de los grafos son los llamados hipergrafos.

Pgina 15

4.2.6. Grafo conexo


En teora de grafos, un grafo G se dice conexo, si para cualquier par de vrtices a y b en G, existe al menos una trayectoria (una sucesin de vrtices adyacentes que no repita vrtices) de a b. Definiciones Relacionadas Un grafo dirigido tal que para cualesquiera dos vrtices a y b existe un camino dirigido de ida y de regreso se dice grafo fuertemente conexo. Un conjunto de corte de vrtices U en un grafo G, es un conjunto de vrtices de G, tal que G-U no es conexo o trivial. Similarmente, un conjunto de corte de aristas F es un conjunto de aristas tal que G-F no es conexo. Solucin Computacional El problema computacional de determinar si un grafo es conexo, puede ser resuelto con algunos algoritmos como el MFMC (max-flow, min-cut). Algoritmo Ejemplo de algoritmo iterativo implementado en C++ para determinar si un grafo es conexo utilizando Bsqueda en profundidad.

bool Graph::is_connected() { if( _n <= 1 ) return true;

Pgina 16

vector<bool> visit(_n); vector<bool>::iterator iter; for(iter=visit.begin();iter!= visit.end();iter++) *iter=false; set<int> forvisit; set<int>::iterator actual; forvisit.insert(0); while( !forvisit.empty() ) { actual = (forvisit.begin()); if( visit[*actual] == false ) { for(int i=0;i<_n;i++) { if( _graph[*actual][i] == 1 && !visit[i]) forvisit.insert(i); } } visit[*actual]= true; forvisit.erase(actual); } bool result; for(iter=visit.begin();iter!= visit.end();iter++) result = result && *iter; return result; }

Pgina 17

También podría gustarte