Está en la página 1de 32

UNIDAD 6 Teora de Grafos

Matemticas Discretas.
Profr.: Juan Carlos Gmez Ramrez. Saln: 701
Integrantes del equipo:

Jess Moreno Garzn Ricardo Jacob Olivares Sols Alejandro Organista Mongoy Sergio Arturo Padilla Ignacio Brian Rodrguez Serrano

Grafos Desafortunadamente no existe una terminologa estandarizada en la teora de los grafos, por lo tanto es oportuno aclarar que las presentes definiciones pueden variar ligeramente entre diferentes publicaciones de estructura de datos y de teora de grafos, pero en general se puede decir que un grafo como indica su nombre lo indica es la representacin (para nuestro caso) grfica de los datos de una situacin particular, ejemplo: Los datos contienen, en algunos casos, relaciones entre ellos que no es necesariamente jerrquica. Por ejemplo, supongamos que unas lneas areas realizan vuelos entre las ciudades conectadas por lneas como se ve en la figura anterior (ms adelante se presentaran grafos con estructuras de datos); la estructura de datos que refleja esta relacin recibe el nombre de grafo. 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.

6.1 Elementos y Caractersticas de los Grafos La teora de grafos juega un papel importante en la fundamentacin matemtica de las ciencias de la computacin. Los grafos constituyen una herramienta bsica para modelizar fenmenos discretos y son fundamentales para la compresin de las estructuras de datos y el anlisis del algoritmo. Definicin: Un grafo G = (N, A) consta de un conjunto de nodos N y un conjunto de aristas A, en donde a cada arista es un par no ordenado de nodos (vrtices o puntos). Una arista en general se representa por { a, b }. Alas aristas tambin se le llaman segmentos. Una forma de representar grafos es mediante crculos para los nodos, conectados por lneas para las aristas. Ejemplo 1: El Grafo G que consta de los nodos N y segmentos se denota como: G(N,S) donde: N = {n1, n2, n3, n4, n5, n6, n7, n8}A= {{n1, n2}, {n1, n5}, {n3, n4}, {n4, n7}, {n2, n6},{n6, n2}} Notacin: Una arista es un conjunto, pero puede haber dos aristas que conecte los mismos nodos, por lo que se le puede anteponer un nombre, por ejemplo la arista 1 puede nombrarse como a 1= {n2, n6}, la arista 2 como a 2={n2, n6}, estas dos aristas unen los nodos n2y n6. Tambin puede ser que en una arista importe el orden de los nodos por lo que podemos en este caso utilizar la notacin de par ordenado (n1, n2) cambiando las llaves por parntesis y orientando el sentido de la arista. La terminologa que manejaremos regularmente para el uso de grafos es el siguiente:

CAMINO. Es una secuencia alternada de vrtices y segmentos de la for maV1,S1,V2,S2,V3,S3,V4.Secuencia de vrticesV1,V2,V3,V4o secuencia de segmentosS1,S2,S3. Para la siguiente figura un camino puede representarse como:6,4,5,1,2 otro ejemplo es3,2,5,4,6 El siguiente NO es un camino vlido: 6,5,3,1 pues no hay un segmento entre los nodos 6 y 5, ni entre 5 y 3, ni entre 3 y 1..175864132

LONGITUD DE CAMINO. Es el nmero de segmentos en ese camino. Para el camino 6, 4, 5, 1,2 la longitudes 4 pues hay 4 segmentos. SENDERO. Es un camino en el cual todos los segmentos son diferentes. El camino 6, 4, 5, 1,2 es un sendero. El camino 6, 4, 5, 2, 5, 1 no lo es pues un mismo segmento es recorrido 2 veces. TRAYECTORIA. Es un camino en el cual todos los nodos son diferentes; as toda trayectoria debe ser un sendero. El camino 6, 4, 5, 1, 2 es una trayectoria, el camino 6, 4, 5, 2, 3, 4 no lo es pues se repite el nodo 4. CAMINO SIMPLE. Es cuando todos sus vrtices, excepto tal vez el primero y el ltimo, son distintos. CICLO SIMPLE. Es un camino simple de longitud por lo menos de uno, que empieza y termina en el mismo vrtice. El camino 4, 5, 2, 3, 4 es un ciclo.

6.1.1 Componentes de un grafo Un grafo (g) es un diagrama que consta de un conjunto de vrtices (v) y un conjunto de lados (l). Vrtices (nodos): Se indican por medio de un pequeo crculo y se les asigna un nmero o letra Arista (lados o ramas): son las lneas que unen un vrtice con otro y se les asigna una letra, un nmero o una combinacin de ambos. Los lados paralelos son aquellas aristas que tienen relacin con un mismo par de vrtices Lazos o bucles:

Un lazo o bucle es una arista que relaciona al mismo nodo; es decir, una arista donde el nodo inicial y el nodo final coinciden. Es aquel que sale de un vrtice y regresa al mismo vrtice Valencia de un vrtice: Es el nmero de lados que salen o entran a un vrtice.

6.1.2 Tipos de grafos Grafos simples Un grafo es simple si a lo ms existe una arista uniendo dos vrtices cualesquiera. Esto es equivalente a decir que una arista cualquiera es la nica que une dos vrtices especficos. Grafos conexos Un grafo es conexo si cada par de vrtices est conectado por un camino; es decir, si para cualquier par de vrtices (a, b), existe al menos un camino posible desde a hacia b. Un grafo es doblemente conexo si cada par de vrtices est conectado por al menos dos caminos disjuntos; es decir, es conexo y no existe un vrtice tal que al sacarlo el grafo resultante sea disco-nexo. Grafos completos Un grafo es completo si existen aristas uniendo todos los pares posibles de vrtices. Es decir, todo par de vrtices (a, b) debe tener una arista e que los une. Grafos bipartitos Un grafo G es bipartito si puede expresarse como (es decir, sus vrtices son la unin de dos grupos de vrtices), bajo las siguientes condiciones:

y son disjuntos y no vacos. Cada arista de A une un vrtice de V1 con uno de V2. No existen aristas uniendo dos elementos de V1; anlogamente para V2.

Bajo estas condiciones, el grafo se considera bipartito, y puede describirse informalmente como el grafo que une o relaciona dos conjuntos de elementos diferentes, como aquellos resultantes de los ejercicios y puzzles en los que debe unirse un elemento de la columna A con un elemento de la columna B.

Grafos planos Cuando un grafo o multgrafo se puede dibujar en un plano sin que dos segmentos se corten, se dice que es plano.

6.2 Representacin de los grafos

6.2.1 Matemtica Existen diferentes formas de representar un grafo (simple), adems de la geomtrica y muchos mtodos para almacenarlos en una computadora. La estructura de datos usada depende de las caractersticas del grafo y el algoritmo usado para manipularlo. Entre las estructuras ms sencillas y usadas se encuentran las listas y las matrices, aunque frecuentemente se usa una combinacin de ambas. Las listas son preferidas en grafos dispersos porque tienen un eficiente uso de la memoria. Por otro lado, las matrices proveen acceso rpido, pero pueden consumir grandes cantidades de memoria.

6.2.2 Computacional

6.3 Algoritmos de recorrido y bsqueda RECORRIDO DE GRAFOS: Recorrer un grafo significa tratar de alcanzar todos los nodos que estn relacionados con uno que llamaremos nodos de salida. Existen bsicamente dos tcnicas para recorrer un grafo: el recorrido en anchura y el recorrido en profundidad. As, para recorrer un grafo consiste en visitar todos los vrtices alcanzables a partir de uno dado. Hay dos formas.

Recorrido en profundidad (DFS) Recorrido en anchura (BFS) Algoritmo BFS El algoritmo de recorrido en anchura o BFS, explora sistemticamente todas las ramas o aristas del grafo de manera que primero se visitan los nodos o vrtices ms cercanos a un nodo inicial. Para la implementacin de este algoritmo se utiliza globalmente un contador y un vector de enteros para marcar los vrtices ya visitados y almacenar el recorrido. El algoritmo BFS requiere tambin un vector de cola auxiliar para gestionar los vrtices no visitados. En muchos casos es necesario ejecutar este algoritmo empezando en los nodos ms alejados del nodo escogido como nodo inicial.

Algoritmo DFS El algoritmo de recorrido en profundidad o DFS, explora sistemticamente las ramas o aristas del grafo de manera que primero se visitan los nodos o vrtices adyacentes a los visitados ms recientemente. De esta forma se va "profundizando" en el grafo, es decir, alejndose progresivamente del nodo inicial [2]. Esta estrategia admite una implementacin simple en forma recursiva, utilizando globalmente un contador y un vector de enteros para marcar los vrtices ya visitados y almacenar el orden del recorrido.

BSQUEDA EN PROFUNDIDAD (BEP) Se comienza en el vrtice inicial (vrtice con ndice 1) que se marca como vrtice activo. Hasta que todos los vrtices hayan sido visitados, en cada paso se avanza al vecino con el menor ndice siempre que se pueda, pasando este a ser el vrtice activo. Cuando todos los vecinos al vrtice activo hayan sido visitados, se retrocede al vrtice X desde el que se alcanz el vrtice activo y se prosigue siendo ahora X el vrtice activo.

ALGORITMO BEP: Sea G = (V, A) un grafo conexo, V' = V un conjunto de vrtice, A'un vector de arcos inicialmente vaco y P un vector auxiliar inicialmente vaco: Se introduce el vrtice inicial en P y se elimina del conjunto V'. Mientras V' no sea vaco repetir los puntos 3 y 4. En otro caso parar. Se toma el ltimo elemento de P como vrtice activo. Si el vrtice activo tiene algn vrtice adyacente que se encuentre en V': Se toma el de menor ndice. Se inserta en P como ltimo elemento. Se elimina de V'. Se inserta en A' el arco que le une con el vrtice activo. Si el vrtice activo no tiene adyacentes se elimina de P.

BSQUEDA ANCHURA (BEA) Se comienza en el vrtice inicial (vrtice con ndice 1) y se marca como vrtice activo, a diferencia con la BEP ahora se visitan en orden creciente de ndice todos los vecinos del vrtice activo antes de pasar al siguiente. Hasta que todos los vrtices hayan sido visitados, en cada paso se van visitando en orden creciente de ndice todos los vecinos del vrtice activo. Cuando se han visitado todos los vecinos del vrtice activo, se toma como nuevo vrtice activo el primer vrtice X visitado despus del actual vrtice activo en el desarrollo del algoritmo. ALGORITMO BEA: Sea G = (V, A) un grafo conexo, V' = V un conjunto de vrtices, A' un vector de arcos inicialmente vaco y P un vector auxiliar inicialmente vaco: Se introduce el vrtice inicial en P y se elimina del conjunto. Mientras V' no sea vaco repetir los puntos 3 y 4. En otro caso parar. Se toma el primer elemento de P como vrtice activo. Si el vrtice activo tiene algn vrtice adyacente que se encuentre en V':

Se toma el de menor ndice. Se inserta en P como ltimo elemento. Se elimina de V'. Se inserta en A' el arco que le une con el vrtice activo. Si el vrtice activo no tiene adyacentes se elimina de P. 6.3.1 El camino ms corto El problema de los caminos ms cortos es el problema que consiste en encontrar un camino entre dos vrtices (o nodos) de tal manera que la suma de los pesos de las aristas que lo constituyen es mnima. Un ejemplo es encontrar el camino ms rpido para ir de una ciudad a otra en un mapa. En este caso, los vrtices representan las ciudades, y las aristas las carreteras que las unen, cuya ponderacin viene dada por el tiempo que se emplea en atravesarlas. Ahora bien, podemos emplear el algoritmo de Dijkstra para estos casos, los pasos o procedimiento a seguir para ste algoritmo son los siguientes: Teniendo un grafo dirigido ponderado de N nodos no aislados, sea x el nodo inicial, un vector D de tamao N guardar al final del algoritmo las distancias desde x al resto de los nodos. 1. Inicializar todas las distancias en D con un valor infinito relativo ya que son desconocidas al principio, exceptuando la de x que se debe colocar en 0 debido a que la distancia de x a x sera 0. 2. Sea a = x (tomamos a como nodo actual). 3. Recorremos todos los nodos adyacentes de a, excepto los nodos marcados, llamaremos a estos vi. 4. Si la distancia desde x hasta v guardada en D es mayor que la distancia desde x hasta a, sumada a la distancia desde a hasta v; esta se sustituye con la segunda nombrada, esto es: si (Di> Da+ d(a, vi)) entonces Di= Da+ d(a, vi) 5. Marcamos como completo el nodo a. 6. Tomamos como prximo nodo actual el de menor valor en D (puede hacerse almacenndolos valores en una cola de prioridad) y volvemos al paso 3 mientras existan nodos no marcados. Una vez terminado al algoritmo, D estar completamente lleno.

6.3.2 A lo ancho La bsqueda en anchura es otro procedimiento para visitar sistemticamente todos los vrtices de un grafo. Es adecuado especialmente para resolver problemas de optimizacin, en los que se deba elegir la mejor solucin entre varias posibles. Al igual que en la bsqueda en profundidad se comienza en un vrtice v (la raz) que es el primer vrtice activo. En el siguiente paso se etiquetan como visitados todos los vecinos del vrtice activo que no han sido etiquetados. Se contina etiquetando todos los vecinos de los hijos de v (que no hayan sido visitados an). En este proceso nunca se visita un vrtice dos veces por lo que se construye un grafo sin ciclos, que ser un rbol generador de la componente conexa que contiene a v. Sea G(V, E) un grafo conexo y v un vrtice de V. El algoritmo de bsqueda en anchura puede detallarse as:1. Designamos a v como vrtice activo y como raz del rbol generador T que se construir. Se le asigna a v la etiqueta 0.2. Sea i=0 y S= {v}.3. Hallar el conjunto M de todos los vrtices no etiquetados que son adyacentes a algn vrtice de S. 4. Si M es vaco el algoritmo termina. En caso contrario, se etiquetan todos los vrtices de M coni+1, se aaden a T las aristas entre cada vrtice de S y su vecino en M y se hace S=M.5. i=i+1 y volver al paso 3.Al terminar el proceso se habr construido un rbol generador del grafo inicial. En caso de G no ser conexo, habra que modificar el algoritmo para encontrar un rbol generador de cada componente conexa de G. La complejidad de este algoritmo es O (mx.{n, m}).

6.3.3 En profundidad. Muchos algoritmos de grafos necesitan visitar de un modo sistemtico todos los vrtices de un grafo. En la bsqueda en profundidad se avanza de vrtice en vrtice, marcando cada vrtice visitado. La bsqueda siempre avanza hacia un vrtice no marcado, internndose profundamente en vrtice. Cuando se alcanza un vrtice cuyos vecinos han sido marcados, se retrocede al anterior vrtice visitado y se avanza desde ste. Si dado un grafo simple G, escogemos un vrtice v para iniciar la exploracin del grafo utilizando la bsqueda en profundidad, el rbol que se construye es un rbol generador de la componente conexa del grafo que contiene a v. Sea G (V, E) un grafo conexo y v un vrtice de V. El algoritmo de bsqueda en profundidad puede detallarse as: 1. Se comienza en un vrtice v (vrtice activo) y se toma como la raz del rbol generador T que se construir. Se marca el vrtice v.2. Se elige un vrtice u, no marcado, entre los vecinos del vrtice activo. Si no existe tal vrtice, ira 4.3. Se aade la arista (v, u) al rbol T. Se marca el vrtice u y se toma como activo. Ir al

paso 2.4. Si se han alcanzado todos los vrtices de G el algoritmo termina. En caso contrario, se toma el vrtice padre del vrtice activo como nuevo vrtice activo y se vuelve al paso 2.La complejidad de este algoritmo es O (mx. {n, m})

6.4.- ARBOLES. Concepto de rbol Los rboles forman una de las subclases de grficas que ms se utilizan. La ciencia de la computacin hace uso de los rboles ampliamente, especialmente para organizar y relacionar datos en una base de datos. Los rboles surgen en problemas tericos como el tiempo ptimo para ordenar.

Formalmente se define un rbol de tipo T como una estructura homognea que es la concatenacin de un elemento de tipo T junto con un nmero finito de rboles disjuntos, llamados subrboles. Una forma particular de rbol puede ser la estructura vaca. Un rbol es un grafo simple en el cual existe un nico camino entre cada par de vrtices. Los rboles pueden ser construidos con estructuras estticas y dinmicas. Las estticas son arreglos, registros y conjuntos, mientras que las dinmicas estn representadas por listas. Sea G =(V,A) un grafo no dirigido. G se denomina ARBOL, si es conexo y no contiene ciclos. Ejemplo de rbol:

Otros ejemplos de rbol son:

En donde: Los grafos G1 y G2 son rboles, mientras que los grafos G3 y G4 no lo son. Bosque Es un grafo donde cada componente conexa es un rbol, es decir es un conjunto de rboles no conexos entre s. Adems es un grafo sin ciclos por estar compuesto por rboles. Arborescencia. Es un rbol dirigido con un nodo llamado raz, tal que existe un nico camino desde la raz a cualquier otro nodo del rbol. Ese camino es elemental y simple.

6.4.1.- Componentes. (RAIZ, HOJA, PADRE, HIJO, DESCENDIENTE, ANCESTRO) Un rbol est divido en tres subconjuntos separados.

El primer subconjunto contiene un nico elemento llamado raz del rbol.

Los otros 2 subconjuntos son por si mismos rboles binarios y se les conoce como subrboles izquierdo y derecho del rbol original. Cada elemento de un rbol binario se denomina nodo. La ausencia de una ramificacin indica un subrbol vaco. Si A es la raz de un rbol binario y B es la raz de su subrbol izquierdo o derecho, se dice que A es el padre de B y se dice que B es el hijo izquierdo o derecho de A. Un nodo que no tiene hijos se denomina hoja. El nodo n1 es un ancestro del nodo n2 (y n2 es un descendiente de n1) si n1 es el padre de n2 o el padre de algn ancestro de n2. 2 nodos son hermanos si son el hijo izquierdo y derecho del mismo padre. Si cada nodo que no es hoja es un rbol binario tiene subrboles izquierdo y derecho que no estn vacos, el elemento se clasifica como rbol estrictamente binario. 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. Se utiliza la recursin para definir un rbol porque representa la forma ms apropiada y porque adems es una caracterstica inherente de los mismos. 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, para el anlisis de circuitos elctricos y para numerar los captulos y secciones de un libro.

TIPOS DE RBOL

rbol libre Un rbol T (libre) es una grfica simple que satisface lo siguiente; si v y w son vrtices en T, existe una trayectoria simple nica de v a w. Se muestra un ejemplo:

RBOLES DE EXPANSIN Un rbol T es un rbol de expansin de una grfica G si T es una subgrfica de G que contiene a todos los vrtices de G. Una grfica G tiene un rbol de expansin si y solo si G es conexa.

El rbol de expansin para la grfica G que se presenta, se muestra con lnea seguida. Existen dos mtodos para encontrar el rbol de expansin de una grfica G: 1. Por bsqueda a lo ancho: permite procesar todos los vrtices en un nivel dado antes de moverse al nivel ms alto que lo sigue; primero se selecciona un orden de los vrtices, considerando el primer vrtice de ese orden como raz. 2. Por bsqueda en profundidad: o conocido tambin como de regreso.

Ejemplo Utilice la bsqueda a profundidad con el orden h, g, f, e, d, c, b, a de los vrtices para determinar un rbol de expansin de la grfica G. Tomado h como vrtice raz tenemos:

rboles de expansin mnimo Un rbol de expansin comprende un grafo que posee nodos, arcos cada uno con longitud (peso) no negativa. Para encontrar el rbol de expansin mnima se debe recorrer todos los vrtices del rbol en el que la suma de los pesos de sus aristas sea mnima, no se incluyen ciclos en la solucin. Un rbol de expansin mnima de G es un rbol de expansin de G con peso mnimo.

rboles Binarios Estn entre los tipos de rboles binarios especiales con raz, su caracterstica es que todo vrtice tiene cuando mucho dos hijos. Donde cada hijo se designa como un hijo izquierdo o un hijo derecho, adems, su posicin en el rbol los identifica. Formalizando se dice que un rbol binario es un rbol con raz en el que cada vrtice tiene ningn hijo, un hijo o dos hijos. Si el vrtice tiene un hijo se designa como un hijo izquierdo o como derecho (pero no ambos). Si un vrtice tiene dos hijos, un hijo se designa como hijo izquierdo y el otro como hijo derecho. Un rbol binario completo es un rbol binario en el que cada vrtice tiene dos o cero hijos. Ejemplo

Arboles degenerados: rbol con un solo vrtice y sin lados.

rbol maximal: T es un rbol maximal de un grafo G conexo, si es un rbol y contiene todos los vrtices de G.

Arboles generadores: Un rbol T es un rbol generador de un grafo G si T es un subgrafo de G que contiene todos los vrtices de G. Todo grafo conexo posee un rbol generador. Su algoritmo es: Si G es un grafo conexo con n vrtices:

Paso 1: Elegir un vrtice v de G y considerar el rbol Ai formado slo por v.

Paso 2: Para i = 2, . . . , n formar el rbol A a partir de A eligiendo un vrtice de G que no sea vrtice de A i-1 tal que est conectado con algn vrtice de Ai-1 por una arista, y aadiendo esa arista.

Paso 3: El rbol An as obtenido es rbol generador.

6.4.2.- PROPIEDADES Todo rbol es a su vez un grafo bipartito. Todo rbol con slo un conjunto numerable de vrtices es adems un grafo plano. Todo grafo conexo G admite un rbol de expansin, que es un rbol que contiene cada vrtice de G y cuyas aristas son aristas de G. Dado n vrtices etiquetados, hay n n-2 maneras diferentes de conectarlos para construir un grafo. El resultado se llama frmula de Cayley. El nmero de rboles con n vrtices de grado d1 ,d2 ,...,dn es:

Los rboles son un tipo especial de grafo. G es un grafo, no dgrafo sin bucles. G es un rbol si es conexo y no tiene ciclos. Teorema 1: Si a y b son dos vrtices distintos de un rbol, entonces existe un nico camino elemental que conecta dichos vrtices. Teorema 2: T es un rbol cualquiera, entonces |v|=|E|+1. Teorema 3: T es un rbol con |v|"2, se verifica que tiene a menos dos vrtices terminales.

6.4.3.- CLASIFICACION (ALTURA, NUMERO DE NODOS)

Altura La altura (o profundidad) de un rbol es el largo del mayor camino de la raz a una hoja. Dado un camino < v0, v1, v2,..., vk > el largo de este camino es k. Por lo cual el largo de un camino es igual al nmero de arcos del camino.

Numero de Nodos Nodo: Es el trmino usado para referirse a un vrtice de un rbol con raz.

Un rbol estrictamente binario con n hojas siempre contiene 2n - 1 nodos. El nivel de un nodo en rbol binario se define del modo siguiente: la raz del rbol tiene el nivel 0, el nivel de cualquier otro nodo en el rbol es uno ms que el nivel de su padre. Si un rbol binario contiene m nodos en el nivel I, contiene cuando mucho 2m nodos en el nivel I + 1. Dado que un rbol binario solo contiene un nodo en el nivel 0 (raz), puede contener un mximo de 2I nodos en el nivel I. Un rbol binario completo de profundidad d es el rbol que contiene 2I nodos en el nivel entre 0 y d. La cantidad total de nodos en un rbol binario completo de profundidad d, tn es igual a la suma de la cantidad de nodos en cada nivel entre 0 yd. Un rbol binario de profundidad d es un rbol binario casi completo si: Cualquier nodo nd a un nivel menor que d - 1tiene 2 hijos. Para cualquier nodo nd en el rbol con un descendiente derecho en el nivel d, nd debe tener 1 hijo izquierdo y cada descendiente izquierdo de nd es una hoja en el nivel d o tiene 2 hijos. Los nodos de un rbol binario casi completo se enumeran para que se asigne a la raz el No.1, se asigne a un hijo izquierdo 2 veces el nmero asignado a su padre y se asigne a un hijo derecho 1 ms el doble del No. asignado a su padre. Un rbol estrictamente binario casi completo con n hojas tiene 2n - 1nodos, como cualquier otro rbol estrictamente binario con n hojas. Un rbol binario casi completo con n hojas que no es estrictamente binario tiene 2n nodos. Solo hay un rbol binario casi completo con n nodos. Este rbol es estrictamente binario si y solo si n es impar. Igual que en el caso de los nodos de lista, los nodos de rboles se implementan como elementos de un arreglo o como asignaciones de una variable dinmica. Cada nodo contiene campos info, left, right y father. Los campos left, right y father de un modo apuntan al hijo izquierdo, al hijo derecho y al padre del nodo, respectivamente. Por definicin, los nodos de hoja no tienen hijos. En ocasiones, se usan 2 conjuntos de nodos separados para hojas y los que no son hojas. Los nodos que no son hojas contienen campos info, left y right. . se asignan como registros dinmicos o como un arreglo de registros controlados usando una lista disponible. Los nodos hojas no contienen un campo left o right y se conservan como una arreglo info nico que se asigna secuencialmente conforme se necesita.

Cuando se establece la diferencia entre los nodos de hojas y los no hojas, los no hojas se llaman nodos internos y los hojas se llaman nodos externos CLASIFICACIN DE LOS ARBOLES Existen cuatro tipos de rbol binario: * Distinto. *Similares. * Equivalentes. * Completos. DISTINTO: Se dice que dos rboles binarios son distintos cuando sus estructuras son diferentes. Ejemplo:

SIMILARES: Dos rboles binarios son similares cuando sus estructuras son idnticas, pero la informacin que contienen sus nodos es diferente. Ejemplo:

EQUIVALENTES: Son aquellos rboles que son similares y que adems los nodos contienen la misma informacin. Ejemplo:

COMPLETOS: Son aquellos rboles en los que todos sus nodos excepto los del ultimo nivel, tiene dos hijos; el subrbol izquierdo y el subrbol derecho POR NMERO DE NODOS.: 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. POR SU ALTURA: 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, es la altura de la raz (o equivalentemente el mximo de las profundidades). ARBOLES CON PESO: Un grafo es pesado cuando sus aristas contienen daros (etiquetas). Una etiqueta puede ser un nombre, costo o un valor de cualquier tipo de dato, tambin a este tipo de grafo se le denomina red de actividades y el numero asociado al arco se le denomina factor de peso. Tanto a las aristas como a los vrtices les puede ser asociada informacin, a esta informacin se le llama

etiquetas, si la etiqueta que se asocia es un numero se le llama peso, costo o longitud. Un grafo cuyas aristas o vrtices tienen pesos asociados recibe el nombre de grafo etiquetado o ponderado.

CODIFICAR INFORMACIN USANDO EL CDIGO DE HUFFMAN. En 1952, David Huffman propuso un mtodo estadstico que permita asignar un cdigo binario a los diversos smbolos a comprimir (pxeles o caracteres, por ejemplo). La longitud de cada cdigo no es idntica para todos los smbolos: se asignan cdigos cortos a los smbolos utilizados con ms frecuencia (los que aparecen ms a menudo), mientras que los smbolos menos frecuentes reciben cdigos binarios ms largos. La expresin Cdigo de Longitud Variable (VLC) se utiliza para indicar este tipo de cdigo porque ningn cdigo es el prefijo de otro. De este modo, la sucesin final de cdigos con longitudes variables ser en promedio ms pequea que la obtenida con cdigos de longitudes constantes. El codificador Huffman crea una estructura arbrea ordenada con todos los smbolos y la frecuencia con que aparecen. Las ramas se construyen en forma recursiva comenzando con los smbolos menos frecuentes. La construccin del rbol se realiza ordenando en primer lugar los smbolos segn la frecuencia de aparicin. Los dos smbolos con menor frecuencia de aparicin se eliminan sucesivamente de la lista y se conectan a un nodo cuyo peso es igual a la suma de la frecuencia de los dos smbolos. El smbolo con menor peso es asignado a la rama 1, el otro a la rama 0 y as sucesivamente, considerando cada nodo formado como un smbolo nuevo, hasta que se obtiene un nodo principal llamado raz. El cdigo de cada smbolo corresponde a la sucesin de cdigos en el camino, comenzando desde este carcter hasta la raz. De esta manera, cuanto ms dentro del rbol est el smbolo, ms largo ser el cdigo RBOLES LIBRES. Es un grafo no dirigido acclico conexo. RBOLES DE EXPANSION. Un rbol de expansin T de un grafo conexo, no dirigido G es un rbol compuesto por todos los vrtices y algunas (quiz todas) de las aristas de G. Informalmente,

un rbol de expansin de G es una seleccin de aristas de G que forman un rbol que cubre todos los vrtices. Esto es, cada vrtice est en el rbol, pero no hay ciclos. Por otro lado, todos los puentes de G deben estar contenidos en T. Un rbol de expansin de un grafo conexo G puede ser tambin definido como el mayor conjunto de aristas de G que no contiene ciclos, o como el mnimo conjunto de aristas que conecta todos los vrtices. En ciertos campos de la teora de grafos es til encontrar el mnimo rbol de expansin de un grafo ponderado. Tambin se han abordado otros problemas de optimizacin relacionados con los rboles de expansin, como el mximo rbol de expansin, el mximo rbol que cubre al menos k vrtices, el mnimo rbol de expansin con k aristas por vrtice como mximo (rbol de expansin de mnimo grado, MDST por sus siglas en ingls), el rbol de expansin con el mximo nmero de hojas (estrechamente relacionado con el problema del menos conjunto dominante y conexo), el rbol de expansin con el menor nmero de hojas (relacionado con el problema del camino ha miltoniano), el rbol de expansin de mnimo dimetro o el rbol de expansin de la mnima dilacin. POR BSQUEDA A LO ANCHO. La bsqueda se realiza a lo largo del rbol o grafo, recorriendo todos los nodos de una correspondiente fila antes de pasar a la siguiente: Este es una implementacin en pseudocdigo el cual representa el comportamiento de esta estrategia de bsqueda. POR BSQUEDA EN PROFUNDIDAD. Es un algoritmo que permite recorrer todos los nodos de un grafo o rbol de manera ordenada, pero no uniforme. Su funcionamiento consiste en ir expandiendo todos y cada uno de los nodos que va localizando, de forma recurrente, en un camino concreto. Cuando ya no quedan ms nodos que visitar en dicho camino, regresa (Backtracking), de modo que repite el mismo proceso con cada uno de los hermanos del nodo ya procesado. RBOLES DE EXPANSIN MNIMO. rbol de mximo alcance cuyo valor es mnimo, es decir, la suma de sus aristas es mnima. POR ALGORITMO DE PRIM. Permite hallar el rbol minimal de cualquier grafo valorado (con capacidades). Hay que seguir los siguientes pasos: * Se marca un nodo cualquiera, ser el nodo de partida. * Seleccionamos la arista de menor valor incidente en el nodo marcado

anteriormente, y marcamos el otro nodo en el que incide. * Repetir el paso 2 siempre que la arista elegida enlace un nodo marcado y otro que no lo est. * El proceso termina cuando tenemos todos los nodos del grafo marcados. POR ALGORITMO DE KRUSKAL. Permite hallar el rbol minimal de cualquier grafo valorado (con capacidades). Hay que seguir los siguientes pasos: * Se marca la arista con menor valor. Si hay ms de una, se elige cualquiera de ellas. * De las aristas restantes, se marca la que tenga menor valor, si hay ms de una, se elige cualquiera de ellas. * Repetir el paso 2 siempre que la arista elegida no forme un ciclo con las ya marcadas. * El proceso termina cuando tenemos todos los nodos del grafo en alguna de las aristas marcadas, es decir, cuando tenemos marcados n-1 arcos, siendo n el nmero de nodos del grafo.

6.4.5.- RECORRIDO DE UN RBOL. Los rboles ordenados con raz se utilizan frecuentemente para almacenar la informacin, necesitamos procedimientos (algoritmos de recorrido de un rbol) que permitan visitar cada uno de los vrtices para acceder a los datos. Los 3 algoritmos de recorrido de un rbol ms conocidos son: * Recorrido en preorden. * Recorrido en inorden. * Recorrido en postorden. EN PREORDEN: Si lo recorremos en preorden, la raz del rbol es visitada primero y luego los subrboles son procesados de izquierda a derecha en preorden. EN INORDEN: Se comienza recorriendo el rbol izquierdo en orden simtrico, luego se visita la raz y a continuacin los restantes subrboles son procesados de izquierda a derecha en orden simtrico. EN POSTORDEN: En este caso la raz es visitada al final, despus que todos los subrboles han sido procesados de izquierda a derecha en postorden.

6.5 REDES. (TEOREMA DE FLUJO MXIMO, TEOREMA DE FLUJO MNIMO, PAREOS Y REDES DE PETRI) Una Red de Transporte es una grfica dirigida, simple, con pesos y que debe cumplir las siguientes:

Poseer una fuente o vrtice fijo que no tiene aristas de entrada. Poseer un sumidero o vrtice fijo que no tiene arista de salida El peso Cij de la arista dirigida de i a j llamado capacidad de ij es un nmero no negativo.

Ejemplo de una red que parte de un punto a que es un Muelle y llega a un punto z que es una refinera. Teorema de flujo mximo. Siendo G una red de trasporte, un flujo mximo es un flujo con valor mximo. En general, habr varias flujos con el mismo valor mximo. La idea es sencilla: comenzar con cierto flujo inicial e incrementar de forma iterativa hasta que no pueda mejorarse ms. El flujo resultante ser el mximo. Para aumentar el valor de un flujo dado, debemos determinar un camino de la fuente al sumidero e incrementar el flujo a lo largo de ese camino. Teorema del flujo mnimo. En lo que respecta a las redes, un corte es un conjunto de corte en el cual quedan dos partes disjuntas del conjunto de vrtices, V1 y V2 que, situados en la red, dejan la fuente en una de ellas y al sumidero en la otra.

Redes de Petri Una red de Petri es un grafo orientado con dos tipos de nodos: lugares (representados mediante circunferencias) y transiciones (representadas por segmentos rectos verticales). Los lugares y las transiciones se unen mediante arcos o flechas.

Un arco une siempre lugares con transiciones y nunca dos lugares o dos transiciones. Una transicin puede ser destino de varios lugares y un lugar puede ser el destino de varias transiciones. Una transicin puede ser origen de varios lugares y un lugar puede ser origen de varias transiciones. Los lugares pueden presentar marcas (una marca se representa mediante un punto en el interior del crculo). Cada lugar tiene asociada una accin o salida. Los lugares que contiene marcas se consideran lugares activos. Cuando un lugar est activo sus salidas estn a uno. A las transiciones se les asocia eventos (funciones lgicas de las variables de entrada). Una transicin se dice que est sensibilizada cuando todos su lugares origen estn marcados.

Cuando ocurre un evento asociado a una transicin (la funcin lgica se hace uno), se dice que la transicin est validada.

6.6 APLICACIONES DE GRAFOS Y ARBOLES

6.6.- Aplicacin de grafos y arboles Aplicaciones de grafos Gracias a la teora de grafos se pueden resolver diversos problemas como por ejemplo la sntesis de circuitos secuenciales, contadores o sistemas de apertura. Se utiliza para diferentes reas por ejemplo, Dibujo computacional, en toda las reas de Ingeniera. Los grafos se utilizan tambin para modelar trayectos como el de una lnea de autobs a travs de las calles de una ciudad, en el que podemos obtener caminos ptimos para el trayecto aplicando diversos algoritmos como puede ser el algoritmo de Floyd. Para la administracin de proyectos, utilizamos tcnicas como PERT en las que se modelan los mismos utilizando grafos y optimizando los tiempos para concretar los mismos. La teora de grafos tambin ha servido de inspiracin para las ciencias sociales, en especial para desarrollar un concepto no metafrico de red social que sustituye los nodos por los actores sociales y verifica la posicin, centralidad e importancia de cada actor dentro de la red. Esta medida permite cuantificar y abstraer relaciones complejas, de manera que la estructura social puede representarse grficamente. Por ejemplo, una red social puede representar la estructura de poder dentro de una sociedad al identificar los vnculos (aristas), su direccin e intensidad y da idea de la manera en que el poder se transmite y a quines. Los grafos son importantes en el estudio de la biologa y hbitat. El vrtice representa un hbitat y las aristas (o "edges" en ingls) representa los senderos de los animales o las migracines. Con esta informacin, los cientficos pueden entender cmo esto puede cambiar o afectar a las especies en su hbitat.

Aplicaciones de rboles. 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 a right(p), en caso contrario, en caso de que duplicada y en caso de que

entonces cambiar el nodo actual informar una ocurrencia

cambiar el nodo actual a left(p).

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 sevisita 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 28 usando cada uno de los tres criterios para recorrer el rbol se tienen las siguientes secuencias de nodos:

En preorden:

En entreorden:

En postorden: 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>

También podría gustarte