Sunteți pe pagina 1din 24

UNIDAD VI. Teora de grafos.

6.1 Elementos y caractersticas de los grafos.

Definicin 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. Elementos de los grafos Aristas Son las lneas con las que se unen las aristas de un grafo y con la que se construyen tambin caminos. Si la arista carece de direccin se denota indistintamente {a, b} o {b, a}, siendo a y b los vrtices que une. Si {a ,b} es una arista, a los vrtices a y b se les llama sus extremos.


Vrtices

Aristas Adyacentes: Se dice que dos aristas son adyacentes si convergen en el mismo vrtice. Aristas Paralelas: Se dice que dos aristas son paralelas si vrtice inicial y el final son el mismo. Aristas Cclicas: Arista que parte de un vrtice para entrar en el mismo. Cruce: Son dos aristas que cruzan en un punto.

Son los puntos o nodos con los que esta conformado un grafo. Llamaremos grado de un vrtice al nmero de aristas de las que es extremo. Se dice que un vrtice es `par' o `impar' segn lo sea su grado.

Vrtices Adyacentes: si tenemos un par de vrtices de un grafo (U, V) y si tenemos un arista que los une, entonces U y V son vrtices adyacentes y se dice que U es el vrtice inicial y V el vrtice adyacente. Vrtice Aislado: Es un vrtice de grado cero.

Vrtice Terminal: Es un vrtice de grado 1.

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

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

6.1.2 Tipos 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:

Hay tambin 6 tipos principales de grafos; simples, completos, bipartidos, planos,conexos y ponderados.

Grafo simple. Se dice que el grafo G = (V, E) es un grafo simple de grado n si todos sus vrtices tienen grado n. Ejemplos:

Grafo completo. Un grafo es completo si cada par de vrtices est unido por una arista. Se denota por Kn al grafo completo de n vrtices. Ejemplos:

Grafo bipartido.Un grafo es bipartido si V=V1V2 y cada arista de E une un vrtice de V1 y otro de V2. Ejemplos:

-Grafo bipartido completo.Un grafo es bipartido completo si V=V1V2 y dos vrtices de V estn unidos por una arista de E si y solo si un vrtice est en V1 y el otro en V2. Se denota por Kr,sal grafo bipartido completo donde V1 tiene r vrtices y V2 tiene s vrtices

Grafos planos. Un grafo plano es aquel que puede ser dibujado en el plano sin que ninguna arista se interseque.Ejemplos:

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. Ejemplos:

Grafo ponderado. Un grafo es ponderado si presenta los pesos de cada arista y se puede determinar la longitud de una ruta, la cual es la suma de todos los pesos de las aristas. Ejemplos:

6.2 Representacin de grafos

Matriz de adyacencia Dado un grafo G = (V, E) con n vrtices {v1, ..., vn} su matriz de adyacencia es la matriz de orden nn, A(G)=(aij) donde aijes el nmero de aristas que unen los vrtices vi y vj.

La matriz de adyacencia de un grafo es simtrica. Si un vrtice es aislado entonces la correspondiente fila (columna) esta compuesta slo por ceros. Si el grafo es simple entonces la matriz de adyacencia contiene solo ceros y unos (matriz binaria) y la diagonal esta compuesta slo por ceros.

Matriz de incidencia Dado un grafo simple G = (V, E) con n=|V| vrtices {v1, ..., vn} y m=|E| aristas {e1, ..., em}, su matriz de incidencia es la matriz de orden nxm, B(G)=(bij), donde bij=1 si vi es incidente con ej y bij=0 en caso contrario. Ejemplo:

La matriz de incidencia slo contiene ceros y unos (matriz binaria). Como cada arista incide exactamente en dos vrtices, cada columna tiene exactamente dos unos. El nmero de unos que aparece en cada fila es igual al grado del vrtice correspondiente. Una fila compuesta slo por ceros corresponde a un vrtice aislado.

6.3 Algoritmos de recorrido y bsqueda 6.3.1 El camino mas 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 stos 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 vi guardada en D es mayor que la distancia desde x hasta a, sumada a la distancia desde a hasta vi; 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 almacenando los 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.

Ejemplo:

El siguiente ejemplo se desarrollar con el fin de encontrar el camino ms corto desde a hasta z:

Leyenda:

Rojo: Aristas y vrtices pertenecientes a la solucin momentnea.

Azul: Aristas y vrtices candidatos.

Paso 1

En este primer paso, podemos apreciar que hay tres candidatos: Los vrtices b, c y d. En este caso, hacemos el camino desde el vrtice a, hasta el vrtice d, ya que es el camino ms corto de los tres. Solucin momentnea:

Camino: AD Distancia:5 Paso 2

Ahora, vemos que se aade un nuevo candidato, el vrtice e, y el vrtice c, pero esta vez a travs del d. Pero el camino mnimo surge al aadir el vrtice c. Solucin momentnea:

Camino: ADC Distancia:9

Paso 3

En este paso no se aade ningn candidato ms puesto que el ltimo vrtice es el mismo que en el paso anterior. En este caso el camino mnimo hallado es el siguiente: Solucin momentnea:

Camino: ADCB Distancia:11 Paso 4

Como podemos comprobar, se han aadido dos candidatos nuevos, los vrtices f y g, ambos a travs del vrtice b. El mnimo camino hallado en todo el grafo hasta ahora es el siguiente: Solucin momentnea:

Camino: ADCBF Distancia:15

Paso 5

En este antepenltimo paso, se aaden tres vrtices candidatos, los vrtices g, z y e. Este ltimo ya estaba pero en esta ocasin aparece a travs del vrtice f. En este caso el camino mnimo, que cambia un poco con respecto al enterior, es: Solucin momentnea:

Camino: ADCBF Distancia:19 Paso 6

En el penltimo paso, vuelve a aparecer otro candidato: el vrtice e, pero esta vez a travs del vrtice f. De todas formas, el camino mnimo vuelve a cambiar para retomar el camino que vena siguiendo en los pasos anteriores: Solucin momentnea:

Camino: ADCBFE Distancia:18

Paso 7

Por fin, llegamos al ltimo paso, en el que slo se aade un candidato, el vrtice z a travs del e. El camino mnimo y final obtenido es: Solucin Final:

Camino: ADCBFEZ Distancia:23

6.2.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 con i+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(max{n, m}). 6.2.3 Bsqueda 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 el grafo sin repetir ningn 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, ir a 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(max{n, m})

6.4 Arboles 6.4.1 Componentes de los rboles. Un rbol es una estructura de datos dinmica ( las estructuras del rbol pueden cambiar durante la ejecucin del programa ) no lineal ( puesto que a cada elemento del rbol puede seguirle varios

elementos ) y homognea en el que cada elemento puede tener varios elementos posteriores y solamente un elemento anterior. Es una estructura jerrquica aplicada sobre una coleccin de elementos u objetos llamados nodos, de los cuales uno es conocido como raz , adems se crea una relacin de parentesco entre los nodos dando lugar a trminos como padre, hijo, hermano, antecesor, sucesor, ancestro, etc. Un rbol es una estructura que est compuesta por un dato y varios rboles. Dado un nodo cualquiera de la estructura, podemos considerarlo como una estructura independiente, es decir un nodo cualquiera puede ser considerado como la raz de una rbol completo.

En relacin con otros nodos:


o

Nodo Padre: Nodo que contiene un puntero al nodo actual. En un rbol un nodo solo puede tener un nodo padre.. X es padre de Y s y solo s el nodo X apunta a Y, tambien se dice que X es antecesor de Y. En la figura B es padre de E y F. Nodo Hijo: Cualquiera de los nodos apuntados por uno de los nodos del asbol. Un nodo puede tener varios hijos.. X es hijo de Y, s y solo s el nodo X es apuntado por Y. Tambien se dice que X es descenciente directo de Y. En la figura : E es hijo de B. Hermano: Dos nodos sern hermanos si son descencientes directos de un mismo nodo. En la figura Ey F son hermanos.

En cuanto a la posicin dentro del rbol:


o o

Nodo Raz: Es el nico nodo del rbol que no tiene padre. Este es el nodo que usaremos para referirnos al rbol. En la figura A es el nodo raz. Nodo Hoja: Nodo que no tiene hijos. Se llama hoja o terminal a aquellos nodos que no tienen ramificaciones ( hijos ). En la figura .. N es un nodo hoja.

o o

o o

o o o

Nodo Interior: Es un nodo que no es raz ni hoja. En la figura .. D es un nodo interior. 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. Podramos decir que nuestro rbol de ejemplo es de orden tres. 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, el de sus hijos uno y asi sucesivamente. En el ejemplo, el nodo D tiene nivel 1, el nodo G tiene nivel 2 y el nodo N nivel 3. Rama: Es el camino desde el nodo raz a una hoja. En el ejemplo A-B-E-K y A-B-F son ramas. 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, tambien podemos hablar de altura de ramas, el mximo nmero de nodos que hay que recorrer para llegar de la raz a una de las hojas. El rbol de la Figura tiene altura 3, la rama B tiene altura 2, la rama G tiene altura 1 y la N cero. Peso: Es el nmero de nodos del rbol sin contar la raz. Camino: Es una consecuencia de nodos, en el que dos nodos consecutivos cualesquiera son padre e hijo. En el ejemplo A-D-H y A-C-G-M son caminos. Longitud de camino: Es el nmero de arcos que deben ser recorridos para llegar desde la raz al nodo X. Por definicin la raz tiene longitud de camino 1, y sus descendientes directos longitud de camino 2 y as sucesivamente. En nuestro rbol de ejemplo G tiene longitud de camino 3 y N tiene longitud de camino 4.

6.4.2 Propiedades de los rboles

1. Dados dos nodos cualesquiera de un rbol, existe exactamente un camino que los conecta. 2. Un rbol con N nodos tiene N-1 aristas. 3. Un rbol binario con N nodos internos tiene N+1 nodos externos. 4. La altura de un rbol binario lleno1 con nodos internos es aproximadamente , pero puede llegar a .

5. En general, la altura promedio de un rbol binario es ser .

6.4.3 Clasificacin de rboles

Un rbol binario es un rbol con raz en el que cada nodo tiene como mximo dos hijos. 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.

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.

6.4.4 Arboles con peso. (Recubridor mnimo) Dado un grafo conexo, un rbol recubridor mnimo de ese grafo es un subgrafo que tiene que ser un rbol y contener todos los vrtices del grafo inicial. Cada arista tiene asignado un peso proporcional entre ellos, que es un nmero representativo de algn objeto, distancia, etc.. , y se usa para asignar un peso total al rbol recubridor mnimo computando la suma de todos los pesos de las aristas del rbol en cuestin. Un rbol recubridor mnimo o un rbol expandido mnimo es un rbol recubridor que pesa menos o igual que otros rboles recubridores. Todo grafo tiene un bosque recubridor mnimo.En el caso de un empate, porque podra haber ms de un rbol recubridor mnimo; en particular, si todos los pesos son iguales, todo rbol recubridor ser mnimo. De todas formas, si cada arista tiene un peso distinto existir slo un rbol recubridor mnimo. La demostracin de esto es trivial y se puede hacer por induccin. Esto ocurre en muchas situaciones de la realidad, como con la compaa de cable en el ejemplo anterior, donde es extrao que dos caminos tengan exactamente el mismo coste. Esto tambin se generaliza para los bosques recubridores.Si los pesos son positivos, el rbol recubridor mnimo es el subgrafo de menor costo posible conectando todos los vrtices, ya que los subgrafos que contienen ciclos necesariamente tienen ms peso total.

6.4.5 Recorrido de un rbol: Preorden, Inorden, Postorden, Recorrido en preorden En este tipo de recorrido se realiza cierta accin (quizs simplemente imprimir por pantalla el valor de la clave de ese nodo) sobre el nodo actual y posteriormente se trata el subrbol izquierdo y cuando se haya concluido, el subrbol derecho. Otra forma para entender el recorrido con este metodo seria seguir el orden: nodo raiz, nodo izquierda, nodo derecha. En el rbol de la figura el recorrido en preorden sera: 2, 7, 2, 6, 5, 11, 5, 9 y 4.

Recorrido en postorden En este caso se trata primero el subrbol izquierdo, despus el derecho y por ltimo el nodo actual. Otra forma para entender el recorrido con este metodo seria seguir el orden: nodo izquierda, nodo derecha, nodo raiz. En el rbol de la figura el recorrido en postorden sera: 2, 5, 11, 6, 7, 4, 9, 5 y 2.

Recorrido en inorden En este caso se trata primero el subrbol izquierdo, despus el nodo actual y por ltimo el subrbol derecho. En un ABB este recorrido dara los valores de clave ordenados de menor a mayor. Otra forma para entender el recorrido con este metodo seria seguir el orden: nodo izquierda,nodo raiz,nodo derecha. En el rbol de la figura el recorrido en inorden sera: 2, 7, 5, 6, 11, 2, 5, 4, 9.

6.5 Redes. (teorema de flujo mximo, teorema de flujo mnimo, pareos y redes de Petri) Una Red de Transporte es una grafica 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 numero 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. Se llama capacidad de un corte a la suma: Capacidad (v,w) ; v V1 , w V2 V1 es la parte que contiene a la fuente V2 es la parte que contiene al sumidero Sea F un flujo en G y sea (P, P) un corte en G. Entonces la capacidad de (p, p) es mayor o igual que el valor de F; es decir:

i P JP Cij i F ai

La notacin i : Significa la suma sobre todos los vrtices i Demostracin: observe j P iP Cji = j P iP F ij

Pues cada lado de la ecuacin es simplemente la suma de Fij sobre todas las de i, j P

Ahora i F ai= j P j Fji -j P j


=j P =j P

iP Fji +j P iP Fji- =j P iP Fji iP Fji -j P iP Fji- j P iP Fji j P iP Cji

El corte minimal nos da la minima capacidad del corte efectuado en el grafo. 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 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 entonces cambiar el nodo actual a right(p), en caso contrario, en caso de que informar una ocurrencia duplicada y en caso de que 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: 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>