TEORÍA DE GRAFOS Y SU APLICACIÓN

Embed Size (px)

Citation preview

INTRODUCCION

Para nadie es novedad observar en la vida cotidiana: carreteras, lneas telefnicas, lneas de televisin por cable, el transporte colectivo metro, circuitos elctricos de nuestras casas, automviles, y tantas cosas ms; 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.

1

TEORA DE GRAFOS Y SU APLICACIONESEn matemticas y en ciencias de la computacin, la teora de grafos (tambin llamada teora de las grficas) estudia las propiedades de los grafos (tambin llamadas grficas). Un grafo es un conjunto, no vaco, de objetos llamados vrtices (o nodos) y una seleccin de pares de vrtices, llamados aristas (edges en ingls) que pueden ser orientados o no. Tpicamente, un grafo se representa mediante una serie de puntos (los vrtices) conectados por lneas (las aristas).

APLICACIN A PROBLEMAS DE VIDA REAL La mayor parte de los problemas de la teora de grafo pueden ser aplicados a: 1. Problemas de Existencia El problema de los siete puentes de Knigsberg: Existe una trayectoria cerrada que cruce cada uno de los siete puentes exactamente una vez? El problema del Caballo de Ajedrez: Existe una secuencia de los movimientos del caballo tal que visite cada cuadrado de un tablero de ajedrez exactamente una vez y regresando a la posicin de partida? El problema de los Cuatro Colores: Puede colorearse todo mapa con cuatro colores de modo que los pases vecinos tengan colores diferentes? Problemas de Construccin Determinar si un grafo dado es euleriano y construir un camino euleriano (algoritmo de Fleury). Problemas de Enumeracin Grafos etiquetados. Dgrafos etiquetados. rboles etiquetados. Problemas de Optimizacin Problema de encontrar el camino mnimo entre dos vrtices en dgrafo pesado. Problema del viajante de comercio.

2.

3.

4.

GRAFOSPara tener claro el concepto de grafos, a continuacin se tratara de explicar con mayor detalle y a travs de ejemplos. 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.

2

La notacin 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.

En los grafos anteriores, los vrtices son mientras que las aristas son Las aristas e2 y e7 se llaman aristas paralelas porque unen un mismo par de vrtices. La arista se llama lazo o bucle porque une un vrtice consigo mismo. 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 o , siendo a y b los vrtices que une. Si es una arista, a los vrtices a y b se les llama sus extremos. 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.

Vrtices Son los puntos o nodos con los que est 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.

3

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.

Ejemplo 1 Para el grafo siguiente:

a. b. c. d. e.

Escribir el conjunto de vrtices. Escribir el conjunto de aristas. Hallar los vrtices aislados. Hallar los lazos. Hallar las aristas paralelas.

Solucin a. El conjunto de vrtices es: b. El conjunto de aristas es: c. No hay vrtices aislados. d. es el nico lazo. e. y son aristas paralelas. Otro Ejemplo

4

Teorema Sea G un grafo con vrtices . Entonces la suma de los grados de todos los vrtices de G es igual a dos veces el nmero de aristas en G. Es decir: , donde A es el nmero de aristas de G. As, 2A es el total de la suma de los grados de los vrtices de G. Como consecuencia del teorema anterior se tiene que para cualquier grafo, el nmero de vrtices de grado impar, debe ser par. Ejemplo Se puede dibujar un grafo G con tres vrtices v1 v2 y v3, donde, a. grad (v1) = 1, grad (v2) = 2, grad (v3) = 2 b. grad (v1) = 2, grad (v2) = 1, grad (v3) = 1 c. grad (v1) = 0, grad (v2) = 0, grad (v3) = 4 Solucin a. No es posible porque la suma de los grados de los vrtices es 5 que el un nmero impar. b. S, porque grad (v1)+grad (v2) + grad (v3) = 4; que es un nmero par. El nmero de aristas es 2.

c. S, porque grad (v1) + grad (v2) + grad (v3) = 4; que es un nmero par. El nico grafo es:

5

REPRESENTACIN DE GRAFOS EN PROGRAMASRepresentacin 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 cmo relaciones entre los ndices. Esta relacin entre ndices se puede guardar en una matriz, que llamaremos de adyacencia. Sea G = (V,E) un grafo con v vrtices y e aristas, entonces le corresponde una matriz denominada la matriz de incidencia de G. Si denotamos los vrtices de G por v1, v2, . . . , v y las aristas por e1, e2, . . . , e". Entonces la matriz de incidencia de G es la matriz M(G) = [mij] donde mij es el nmero de veces que la arista ej incide en el vrtice vi; los valores son 0,1 2 (2 en el caso que la arista sea un lazo).

Otra matriz asociada a G es la matriz de adyacencia, esta es una matriz VV A(G)[aij], en donde aij es el numero de aristas que van de vi hasta vj. A continuacin damos un ejemplo de un grafo con su correspondiente matriz de incidencia y matriz de adyacencia.

Representacin listas:

mediante

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.

6

CLASIFICACION DE GRAFOSI. Grafo dirigido (dgrafo)

Dado un grafo dirigido o dgrafo D = (V, E) con n vrtices {v1, ..., vn} su matriz de adyacencia es la matriz de orden nn, A(D)=(aij) donde aij es el nmero de arcos que tienen a vi como extremo inicial y a vj como extremo final.

En un grafo dirigido cada arco est representado por un par ordenado de vrtices, de forma que los pares (v1, v2) y (v2, v1) representan dos arcos diferentes.

Ejemplo

G3 = (V3, A3) V3 = {1, 2, 3, 4, 5,6} A3 = { (1,1),(3,1),(3,2),(3,5),(4,2),(4,3),(5,6),(6,5)}

La matriz de adyacencia de un dgrafo no es simtrica. Es una matriz binaria. El nmero de unos que aparecen en una fila es igual al grado de salida del correspondiente vrtice y el nmero de unos que aparecen en una determinada columna es igual al grado de entrada del correspondiente vrtice.

7

II.

Grafo no dirigido

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. S u matriz de adyacencia es la matriz de orden nn, A(G)=(aij) donde aij es el nmero de aristas que unen los vrtices vi y vj. Ejemplo

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.

III.

Grafos Dirigidos o Grafos Orientados (Dgrafo)1. Sea G un grafo. Si cada arista en G tiene una direccin, entonces G se llama grafo dirigido o dgrafo y sus aristas se llaman arcos. El vrtice donde empieza un arco se llama punto inicial y el vrtice donde termina se llama punto Terminal. Cuando no se consideran las direcciones de las aristas en G, el grafo que se obtiene se llama grafo subyacente de G.

Ejemplo Dado el dgrafo siguiente:

8

a. Dar los puntos inicial y Terminal de cada arco. b. Dibujar el grafo subyacente. Solucin a. La tabla siguiente detalla todos los arcos con sus puntos inicial y Terminal. Arco e1 e2 e3 e4 e5 b. El grafo subyacente es: Punto Inicial v1 v2 v3 v3 v1 Punto Terminal v2 v1 v2 v3 v3

2. Sea v un vrtice de un dgrafo G. el grado de entrada de v, denotado por gradent (v) es el numero de arcos en G cuyo punto terminal es v. El grado de salida de v, denotado por gradsal (v) es el nmero de arcos en G cuyo punto inicial es v. Ejemplo En el ejemplo anterior, los grados de entrada y de salida de cada vrtice se detallan en la siguiente tabla. Vrtice v1 v2 v3 Grado entrada 1 2 2 Grado salida 2 1 2

9

3. Una trayectoria dirigida en un dgrafo G es una sucesin de vrtices y aristas de modo que el punto Terminal de un arco es el punto inicial del siguiente. Si en G existe una trayectoria orientada que va del vrtice vi al vrtice vk entonces se dice que vk es asequible a partir de vi . Ejemplo Considrese el dgrafo siguiente:

Una trayectoria dirigida de v2 a v5 es: v2 e2 v3 e3 v4 e4 v5. v1 no es asequible desde ningn vrtice porque gradent (v1) =0 v3 es asequible desde cualquier otro vrtice. 4. Sea G un dgrafo. Si cada vrtice en G es asequible a partir de cualquier otro vrtice en G, entonces el dgrafo se denomina fuertemente conexo. Si el grafo subyacente de G es conexo, entonces se dice que G es dbilmente conexo.

Ejemplo El siguiente dgrafo es fuertemente conexo.

En este dgrafo cada vrtice es asequible desde cualquier otro vrtice.

10

IV.

Grafos Etiquetados y Ponderados

Aunque ya hemos usado los grafos etiquetados, damos una definicin en esta seccin. Un grafo G es un grafo etiquetado si sus aristas y/o vrtices tienen asignado alguna identificacin. En particular, G es un grafo ponderado si a cada arista e de G se le asigna un numero no negativo w(e) denominado peso o longitud de e. El peso (o longitud de un camino en un grafo ponderado G se define como la suma de los pesos de las aristas del camino. Un importante problema en teora de grafos es encontrar el camino ms corto (liviano), esto es, el camino con el peso (longitud) mnimo entre dos vrtices dados.

11

TIPOS DE GRAFOSa) Es un grafo regular de grado n si todos sus vrtices tienen grado n.

Grafos regulares de grado 2.

Grafos regulares de grado 3.

b) El grafo completo de orden n, que se denota por Kn, es el grafo que tiene n vrtices y cada vrtice est unido a los dems por exactamente una arista. Un grafo completo de n vrtices tiene exactamente aristas.

c) Grafo bipartido.- Es aquel con cuyos vrtices pueden formarse dos conjuntos disjuntos de modo que no haya adyacencias entre vrtices pertenecientes al mismo conjunto es decir un grafo G = (V,E) diremos que es un grafo bipartido si se puede dividir el conjunto de vrtices en dos subconjuntos V = V1 U V2, tales que son disjuntos, V1 V2 = a conjunto vaco y cada arista de E une un vrtice de V1 y otro de V2.

12

d) Un grafo 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,s al grafo bipartido completo donde V1 tiene r vrtices y V2 tiene s vrtices

e) Grafo nulo: Se dice que un grafo es nulo cuando los vrtices que lo componen no estn conectados, esto es, que son vrtices aislados.

f) son

Grafos Isomorfos: Dos grafos 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.

13

GRAFOS CONEXOS CONECTIVIDADUn 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. Teorema. Sea G un grafo conexo con n vrtices. Entonces G debe tener al menos n -1 aristas. Si el grafo es simple y con n vrtices y si tiene ms de ((n-1)/2) aristas, entonces el grafo es conexo.

Definicin. Sea G un grafo. Se dice que G es un grafo conexo si para cada par de vrtices vi, vj en G, existe una trayectoria entre vi y vj. Ejemplo Cul de los grafos siguientes es conexo? Solucin: a. b. c. Conexo Conexo No es conexo.

TRAYECTORIAS O CAMINOS Y CIRCUITOS O CICLOS.Definicin. Sean vi y vj dos vrtices de un grafo G. Una trayectoria o camino de vi a vj es una sucesin alternada de vrtices y aristas de G que comienza en vi y termina en vj. S vi = vj entonces la trayectoria es trivial, sin aristas y se denota por vi vj. Definicin. S una trayectoria o camino de vi a vj no tiene vrtices repetidos, se llama trayectoria simple. Un circuito o ciclo es una trayectoria o camino que empieza y termina en el mismo vrtice y no tiene aristas repetidas. El circuito se llamar simple si no tiene aristas ni vrtices repetidos, excepto el primero y el ltimo.

14

Definicin.- Dado un camino de extremos v y w en un grafo no dirigido (V,E), sino se repite ninguna arista diremos que es un recorrido. Un recorrido cerrado, es decir, un recorrido tal que v=w ser un circuito. Cuando ningn vrtice del grafo se repite en un camino, se dice que es un camino simple. Si el nico vrtice que se repite es el extremo se dice Ciclo o camino simple cercado.

GRAFOS EULERIANOSUn camino euleriano se define de la manera ms sencilla como un camino que contiene todos los arcos del grafo, sea G=(V,E) un grafo no dirigido, un recorrido que recorra las aristas de E se llama recorrido auleriano, Un circuito que contiene todas las aristas de G recibe el nombre de circuito euleriano. Lo anterior quiere decir que un circuito euleriano es una trayectoria que empieza y termina en el mismo

vrtice, pasa por cada vrtice al menos una vez y slo una vez por cada arista. Existe un criterio preciso para saber cuando un grafo admite un circuito euleriano. Este criterio lo proporciona el siguiente teorema. Teorema. Sea G un grafo. G contiene un circuito euleriano s y slo s: G es conexo. Cada vrtice de G es de grado par.

Si G tiene un ciclo de euler, para todo vi, vj V existe una trayectoria que hace parte del ciclo. Entonces G es conexo. Sea vi el vrtice donde comienza el circuito de euler. Para cualquier otro vrtice vk de G, cada vez que el ciclo llegue all, partir de ese vrtice. As, el circuito ha pasado por dos aristas nuevas con l o por un lazo de l. En cada caso se aade 2 al grado de ese vrtice.

15

Como este vrtice vk no es punto inicial se aade 2 cada vez que el ciclo pasa por vk, de modo que el grado de vk es par. En el vrtice inicial vi, la primera arista del ciclo debe ser distinta de la ltima, y de cualquier otra que pase por vi, por tanto se tiene que el grado de vi tambin es par. Ejemplo En los grafos siguientes, cuales admiten circuitos eulerianos?

Solucin a. No lo admite porque v4 es un vrtice aislado. b. No lo admite porque cualquier ciclo utilizar la arista e1 dos veces. c. El circuito v1 e1 v2 e2 v1 es euleriano. d. El circuito v3 e3 v1 e1 v2 e2 v3 es euleriano. e. No admite ningn circuito euleriano. f. v1 e1 v2 e2 v3 e3 v4 e4 v2 e5 v5 e6 v1 es un circuito euleriano.

16

CAMINOS HAMILTONIANOSUn ciclo es un camino, es decir una sucesin de aristas adyacentes, donde no se recorre dos veces la misma arista, y donde se regresa al punto inicial. Un ciclo hamiltoniano tiene adems que recorrer todos los vrtices exactamente una vez (excepto el vrtice del que parte y al cual llega). Por ejemplo, en un museo grande, lo idneo sera recorrer todas las salas una sola vez, esto es buscar un ciclo hamiltoniano en el grafo que representa el museo (los vrtices son las salas, y las aristas los corredores o puertas entre ellas).

Definicin. Un circuito o ciclo hamiltoniano es un ciclo simple que contiene todos los vrtices de G. Lo anterior quiere decir que un circuito hamiltoniano es una trayectoria que empieza y termina en el mismo vrtice, no tiene aristas repetidas y pasa por cada vrtice una sola vez. Ejemplo Cul de los grafos siguientes admite un circuito hamiltoniano?

Solucin a. No admite circuitos hamiltonianos. El razonamiento es el siguiente: Si se empieza en v1, v2, v3, v4 y si se est en los dems vrtices, en el v5 se estar dos veces. Si se empieza en v5, para luego ir a los vrtices v1 o v4 a v3 o v2 respectivamente, se tendr que pasar de nuevo por v5 (puesto que se empezar en v5). Para completar el circuito, se debe regresar a v5, por lo que se pasa tres veces por l. b. Un ciclo hamiltoniano es:

17

Teorema. Sea G un grafo conexo con n vrtices, donde n3. Si la suma de los grados de cada par de vrtices no adyacentes es mayor o igual a n, entonces G tiene un circuito hamiltoniano.

RECORRIDO DE UN GRAFORecorrer 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.

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.

ALGORITMO DE FLOY WARSHALLEl problema que intenta resolver este algoritmo es el de encontrar el camino ms corto entre todos los pares de nodos o vrtices de un grafo. Esto es semejante a construir una tabla con todas las distancias mnimas entre pares de ciudades de un mapa, indicando adems la ruta a seguir para ir de la primera ciudad a la segunda. Este es uno de los problemas ms interesantes que se pueden resolver con algoritmos de grafos.

18

Function(n,matriz[]) Para k = '0' hasta n hacer Para i = '0' hasta n hacer Para j = '0' hasta n hacer // ALGORITMO ORGINAL DE WARSHALL // A[i,j] = mnimo(A[i,j],A[i,k] + A[k,j]) si matriz[i][j] > matriz[i,k] + matriz[k,j] then matriz[i][j] = matriz[i,k] + matriz[k,j] Fin de si Fin de para Fin de para Fin de para CODIGO EN C++ // Programa Floyd Warshall void warshall(int n, int matriz[20][20]){ int i, j, k; float dist; for (k=0; k