Capı́tulo 5 Teorı́a de Grafos. 5.1 Introducción. Los grafos se utilizan para modelar situaciones en las que se relacionan entre sı́ pares de objetos de una determinada colección. Gráficamente, el modelo consiste en puntos que representan los objetos y lı́neas que unen dichos puntos. xs $ Ejemplo 1.- En la ciudad de Königsberg, existen 7 puentes que unen las riberas y dos islas formadas por º ³ ¶ · el rı́o Pregel, de la forma que indica el dibujo. ¿Hay sw y s alguna forma de recorrer los siete puentes y volver al ¹ ´ µ ¸ punto de partida, sin cruzar dos veces por el mismo % puente? z s El grafo que aparece sobre el dibujo modela esa situación: cuatro puntos, que representan las partes de tierra firme y las lı́neas que los unen, representando los puentes. El problema se reduce a saber si pueden recorrerse todas las lı́neas sin repetir ninguna y acabar en el mismo punto. Ejemplo 2.- Consideremos en A = {a, b, c, d} la relación binaria R dada por el conjunto de pares R = {(a, c), (a, d), (b, a), (b, b), (c, a), (c, b), (d, b)}. Podemos modelar gráficamente la relación binaria mediante el grafo de la derecha; donde los puntos representan los elementos de A y las lı́neas dirigidas representan los pares de la relación. c tH 6HH td * H HH HH HH ? H jº· R t t b a ¹¸ Lo ejemplos anteriores, y otros muchos que podrı́an ponerse, admiten un modelo común: un gráfico con puntos y lı́neas (dirigidas o no) que los unen, donde lo que importa es que puntos están conectados (y en que sentido cuando las lı́neas son dirigidas) y cuantas conexiones hay entre ellos. En otras palabras, un grafo G es un par ordenado G = (V, A) donde V es un conjunto no vacı́o que describe los objetos de la colección y A el conjunto que describe cómo se relacionan cada par de elementos de V . A los elementos de V = {x1 , x2 , x3 , . . .} se les llama vértices. Si el grafo no indica direcciones, a los elementos de A se les llama aristas, que se denotan por pares a = {xi , xj } para indicar que esa arista a conecta los vértices xi y xj entre sı́. Cuando el grafo sı́ indica direcciones, a los elementos de A se les llama arcos, que se denotan por pares ordenados a = (xi , xj ) para indicar que ese arco a conecta el vértice xi con el vértice xj . Cuando una arista o un arco conecta un vértice consigo mismo, le llamaremos lazo o lazo dirigido, según el caso. 100 5.1.1 Tipos de grafos. Es claro de lo anterior que podemos considerar dos tipos de grafos: los grafos dirigidos y los grafos no dirigidos. Ahora bien, como la arista de los grafos no dirigidos indica que los vértices extremos pueden conectarse en las dos direcciones, cada arista equivale a dos arcos (con direcciones opuestas) entre los extremos de la arista. En consecuencia, todo grafo no dirigido puede convertirse o ser considerado como un grafo dirigido: {grafos no dirigidos} ⊆ {grafos dirigidos}. Es evidente entonces que todos los resultados válidos para grafos dirigidos lo son también para los grafos sin dirigir, sin embargo, dado que los problemas modelables con grafos no dirigidos abarcan un amplio espectro y que esquemáticamente son más sencillos que vistos como grafos dirigidos, no renunciamos a estudiar de forma particular este tipo de grafos. Antes de entrar en las definiciones y resultados precisos, es interesante considerar otra clasificación de los grafos atendiendo sólo al hecho de si dos vértices están o no conectados, sin que sea relevante si lo están por más de una arista o arco. De un grafo que tenga lazos o tenga varias aristas o arcos en la misma dirección que conectan un mismo par de vértices, diremos que es un multigrafo, dirigido o no dirigido según el caso y, reservaremos la expresión grafo (o grafo simple) para aquellos grafos sin lazos y cuyos pares de vértices no están conectados por más de una arista, en el caso de los no dirigidos, o no están conectados por más de un arco en la misma dirección, en el caso de los dirigidos. Atendiendo a todo lo anterior, tenemos la siguiente clasificación: {multigrafos no dirigidos} ⊆ {multigrafos dirigidos} ∪ ∪ {grafos no dirigidos} ⊆ {grafos dirigidos}. En este curso sólo vamos a considerar grafos finitos, en los que tanto el conjunto de los vértices como el de las aristas o arcos son conjuntos finitos. A pesar de ello, cuando la validez de un resultado dependa de la finitud del grafo lo indicaremos expresamente. 5.2 Grafos no dirigidos. Conceptos básicos. Definición 3.- Llamaremos grafo (no dirigido simple) a un par G = (V, A) donde V es un conjunto finito no vacı́o de vértices y A ⊆ {{x, y} : x, y ∈ V, x 6= y} su conjunto de aristas. Si {x, y} ∈ A diremos que x e y son adyacentes y que la arista {x, y} une los vértices x e y . Definición 4.- Si x es un vértice de un grafo G, llamaremos grado o valencia de x al número de aristas que inciden en x y lo representaremos por gr(x) = |{y ∈ V : {x, y} ∈ A}|. Observaciones 5.- 1.- Si ¡G¢ = (V, A) es un grafo y |V | = n y |A| = m, el número de aristas verifica que 0 ≤ m ≤ n2 = |{{x, y} : x, y ∈ V, x = 6 y}|. á ¢! n 2.- Dados n vértices, pueden formarse 2 m grafos distintos con exactamente m aristas. (2) X á ¢! n m=0 m n Por tanto, el número de grafos con n vértices que pueden formarse es 2 n = 2( 2 ) . En la figura 5.1 siguiente pueden verse los 15 grafos de 4 vértices y 2 aristas. Si llamamos a los vértices V = {x, y, z, t}, tenemos que para el grafo G1 = (V, A1 ) el conjunto de 101 n aristas es A1 = n o {x, y}, {x, t} , para el grafo G2 = (V, A2 ) el conjunto de aristas es o A2 = {x, y}, {x, z} , etc. x t y s s s s G1 x y t z s s @ @ s @s z s s @ @ s @s G2 s s s s s s s s G3 x s s s t G4 y s z G5 x y s s @ @ s @s t s s s s s s s s s s s s s s s s s s s G10 G11 G12 G13 s s @ @ s @s G7 G8 z G6 s G9 s s @ @ s @s x t G14 y s s s s G15 z Fig. 5.1. Todos los grafos simples de 4 vértices y 2 aristas. 3.- Si G = (V, A) y |V | = n, en cada vértice se cumple que 0 ≤ gr(x) ≤ n − 1. Si gr(x) = 0 diremos que x es un vértice aislado. Al grafo con todos sus vértices aislados se le denomina grafo nulo, Nn , de n vértices y aquél cuyos vértices tienen todos grado máximo, es decir, g(x) = n − 1 para todo x ∈ V , se le denomina grafo completo, Kn . s s s s N4 s A s s K2 4.- En un grafo se verifica que s AAs K3 P s s @ @s s @ s C@ C@ s C @s Q AAQ C Q A s QCs K4 K5 gr(x) = 2 |A|. x∈V 5.2.1 Isomorfismo de grafos. Observando los grafos de la figura 5.1 puede verse cómo muchos de ellos presentan, en el fondo, la misma estructura aunque las conexiones sean entre vértices distintos. Ası́ si en G15 al vértice x lo llamamos z y al vértice z lo llamamos x obtenemos G1 . De la misma forma, si en G6 intercambiamos la x con la t obtenemos el grafo G5 , aunque aparezca dibujado de forma distinta. (De hecho, entre todos sólo tienen dos “estructuras” distintas.) Es claro que un mismo grafo puede ser dibujado de formas muy distintas, que incluso pueden hacernos pensar en grafos distintos. Es importante, por tanto, separar la “estructura” del grafo de su dibujo o de las etiquetas con que hayamos distinguido sus vértices. Se dice que un conjunto no vacı́o V está etiquetado por E (un conjunto de etiquetas) si a cada elemento de V lo denotamos con una, y sólo una, de las etiquetas de E . Definición 6.- Un isomorfismo de grafos es una aplicación biyectiva entre sus conjuntos de vértices ψ: V −→ V 0 que conserva la relación de adyacencia en los dos sentidos, es decir, tal que {xi , xj } ∈ A si, y sólo si, {ψ(xi ), ψ(xj )} ∈ A0 . En este caso diremos que los grafos (V, A) y (V 0 , A0 ) son isomorfos. La relación de isomorfı́a entre grafos es una relación de equivalencia. Cada clase de equivalencia definida por esta relación es un conjunto de grafos isomorfos al que denominaremos grafo no etiquetado. Este concepto responde a la noción que se tiene de estructura subyacente en cada grafo etiquetado. 102 Ejemplo 7.a) Los grafos G1 y G2 de la figura siguiente son isomorfos; basta tomar la aplicación dada por ψ(xi ) = yi . Ambos, como grafos isomorfos, pertenecen a la clase representada por un grafo no etiquetado que podemos dibujar, por ejemplo, como G3 . x4 x1 s s s x5 s x3 G1 s x2 y1 y4 s @ @ s y5 @ @ @ s y2 @s y3 G2 s s s s s s G3 b) Análogamente, en la figura 5.1, el grafo G5 es isomorfo a los grafos G6 y G10 , mientras que todos los demás son isomorfos a G1 . 4 La verificación de que dos grafos son o no isomorfos es un problema difı́cil. Para la resolución de este problema se suelen buscar datos necesariamente comunes a todos los grafos de una misma clase de isomorfı́a. A estos datos se les llama invariantes de un grafo. Por ejemplo, son claramente invariantes de un grafo a) su número de vértices, |V |, b) su número de aristas, |A| c) la familia de los grados de los vértices, gr(x), para los x ∈ V . Ejemplo 8.- Los pares de grafos de la figura de la derecha son isomorfos. Comprobarlo, dando un etiquetado en uno de los elementos de cada par y etiquetando de forma idéntica los vértices correspondientes del otro elemento del par. 4 s C C @ @s s C s Q Q C Q s QCs s s @ s AA As s s s @ s s s s @ @ @s Que dos grafos tengan los mismos invariantes es una condición necesaria para que dos grafos sean isomorfos, pero no es una condición suficiente. De hecho, no se conoce ningún conjunto de invariantes que sean suficientes para asegurar que dos grafos son isomorfos. En la figura siguiente, los grafos G1 , G2 y G3 tienen el mismo número de vértices, el mismo número de aristas, todos tienen 4 vértices de grado 2 y 2 vértices de grado 3; pero no son isomorfos ningún par de ellos. (Ver ejercicio 5.4.) s @ @ s s @s A A AAs AAs G1 5.2.2 s @ @ s s @s A A AAs AAs G2 s @ @ s s @s A A AAs AAs G3 Multigrafos. Definición 9.- Un multigrafo (no dirigido) G es un par G = (V, A) donde V es un conjunto no vacı́o de vértices y A es un conjunto de aristas que se identifican con conjuntos de uno o dos vértices. Es decir, para cada arista a ∈ A existen vértices x, y ∈ V (no necesariamente distintos) tales que a = {x, y}. Si x = y diremos que la arista a es un lazo. Si a y b son dos aristas distintas incidentes en los mismos vértices las llamaremos aristas múltiples. 103 Definición 10.- Si x es un vértice de un multigrafo G, llamaremos grado de x al número de aristas que inciden en x, considerando que cada lazo incide dos veces en el vértice. Lo representaremos por gr(x) = (núm aristas incidentes) + 2(núm lazos). Recordemos que todo grafo es un multigrafo y, en consecuencia, los resultados válidos para multigrafos genéricos los son también para grafos. El concepto de etiquetado de grafos, isomorfismo de grafos y grafo no etiquetado, se transladan a multigrafos sin problemas. Definición 11.- Llamaremos subgrafo del multigrafo (V, A) a un (multi)grafo (W, B) con W ⊆ V y B ⊆ A. Al subgrafo (W, B) le llamaremos (sub)grafo parcial o generador cuando W = V . Diremos nque (W, B) es un subgrafo inducido por el multigrafo (V, A) en W ⊆ V si o se tiene que B = a ∈ A : a = {x, y} con x, y ∈ W y lo denotaremos por (W, A|W ). En la definición de subgrafo es necesaria la hipótesis de que (W, B) sea un multigrafo, pues las condiciones W ⊆ V y B ⊆ A no son suficientes (podrı́a tomarse una arista y no sus vértices adyacentes, lo que no formarı́a un multigrafo). Utilizaremos la notación (W, B) ⊆ (V, A) para indicar que (W, B) es un subgrafo de (V, A). Nótese que, el subgrafo parcial tiene todos los vértices por lo que se forma B eliminando sólamente aristas de A, mientras que en el subgrafo inducido B lo constituyen todas las aristas de A cuyos vértices adyacentes están en W , luego se forma eliminando los vértices que no están en W y eliminando únicamente las aristas que inciden en alguno de los vértices eliminados. Ejemplo 12.- En el multigrafo (V, A) de los puentes de Könisberg, consideremos los subgrafos (V, A0 ), donde A0 = A − {aristas incidentes en y }, y (W, A|W ), donde W = {x, z, w}. xs HH H ys HH sw H s z (V, A) xs HH H ys HH sw H s z (V, A0 ) xs HH H HH Hs w z s (W, A|W ) (V, A0 ) es un grafo parcial de (V, A), sólo hemos eliminado aristas, y (W, A|W ) es un subgrafo inducido, donde hemos eliminado el vértice y y todas las aristas incidentes o adyacentes a él. 5.3 Trayectorias y conexión. Definición 13.- Sea G = (V, A) un multigrafo. Una sucesión alternada de vértices y aristas, x1 a1 x2 · · · xp ap xp+1 tal que ai = {xi , xi+1 }, para cada i = 1, 2, . . . , p, la llamaremos trayectoria y diremos que conecta o une el vértice x1 y el vértice xp+1 . Del número de aristas recorridas, p, diremos que es la longitud de la trayectoria. Si x1 = xp+1 , diremos que la trayectoria es cerrada. Definición 14.- Llamaremos cola a una trayectoria con las aristas distintas y llamaremos circuito a una cola cerrada. Llamaremos camino a una trayectoria sin vértices repetidos, salvo el primero y el último, en cuyo caso diremos que el camino es cerrado y lo llamaremos ciclo. Un (multi)grafo diremos que es acı́clico si no posee ciclos. En un grafo simple, sin aristas múltiples, para indicar una trayectoria basta con la sucesión de vértices x1 x2 · · · xp+1 , pues las aristas de la sucesión están determinadas (sólo hay una arista posible entre dos vértices consecutivos de la sucesión). 104 Definición 15.- Un multigrafo es conexo si todo par de vértices está unido por una trayectoria. Definimos entre los vértices de un multigrafo (V, A) la relación: x R y ⇐⇒ x = y ó existe una trayectoria que une x e y . Esta relación es de equivalencia en el conjunto de los vértices V y sus clases de equivalencia V1 , . . . , Vr definen un partición de V . Para cada i = 1, . . . , r , el subgrafo inducido (Vi , A|Vi ) es conexo y diremos que es una componente conexa del multigrafo (V, A). Además de los vistos anteriormente, cada uno de los siguientes datos es también invariante para la isomorfı́a de grafos: d) el número y longitud de los ciclos. e) el número de componentes conexas. f) estos y los anteriores considerados para cada componente conexa. Ejemplo 16.- Consideremos los cuatro grafos de la figura siguiente. s AA s AA A s AA A As A As As s s s AA A As s s AA A s s Q Q Q Q Q s s Qs Q Q Q Q Q Qs s G3 As s G2 G1 s s Q Q Q Q Q s s Qs Q Q Q Q Q Qs s G4 Los grafos G1 , G2 y G3 tienen 7 vértices, 8 aristas, 5 vértices de grado 2 y 2 vértices de grado 3, sin embargo no hay ningún isomorfismo entre ellos: G1 es conexo y tiene un ciclo de longitud 3, G2 es conexo pero no tiene un ciclo de longitud 3 y G3 no es conexo (tiene dos componentes conexas). El grafo G4 sin embargo sı́ es isomorfo a uno de los anteriores, ¿a cuál? 4 5.3.1 Recorrido de aristas. Grafos eulerianos. Definición 17.- Llamaremos cola euleriana en un multigrafo a una cola (trayectoria sin aristas repetidas) que recorra todas las aristas del multigrafo. Si la cola euleriana es cerrada la llamaremos circuito euleriano. A un multigrafo que contenga un circuito euleriano le llamaremos multigrafo euleriano. Ejemplo 18.- Consideremos los grafos: C5 (los grafos ciclo, constan sólo de un ciclo, se denotan por Cn donde n es el número de vértices), la Estrella de Mahoma y el multigrafo de los puentes x sH de Könisberg. s @ s A A As @ @s s H s C C s s Q C Q C Q s QCs ys HH H HHs w s z Los dos primeros son grafos eulerianos, el primero obviamente y en el segundo puede formarse un circuito con sus aristas (de hecho es isomorfo a C5 , ver el ejemplo 8). El tercero no es euleriano puesto que no tiene un circuito euleriano, más aún tampoco tiene una cola euleriana. 4 Teorema 19.- Un multigrafo (finito) conexo tiene un circuito euleriano si, y sólo si, todos sus vértices son de grado par. 105 Demostración: =⇒c (Teorema de Euler) Como el circuito recorre todas las aristas, cada vez que se accede a un vértice por una arista se sale por otra distinta, luego el grado de cada vértice debe ser par. ⇐=c Sea G = (V, A) el multigrafo. Empezando en un vértice x cualquiera, se construye una cola xa1 x1 a2 x2 · · · xp−1 ap xp lo más larga posible. Como de xp no se puede seguir, se han recorrido todas las aristas incidentes en xp , este vértice tiene que aparecer anteriormente en la cola construida (gr(xp ) ≥ 2); considerando la parte de la cola desde la primera aparición de xp hasta el final, tenemos un circuito C1 que empieza y acaba en xp . Si el circuito C1 no recorre todas las aristas de G, eliminamos todas las aristas de C1 (y los vértices que queden aislados) y repetimos el proceso en el subgrafo que queda (los vértices que permanecen siguen teniendo grado par). Obtendremos ası́ una cantidad finita de circuitos C1 , . . . , Cr de manera que cada arista de G está contenida uno de esos circuitos. Como G es conexo los circuitos tienen que tener vértices comunes con algún otro, luego basta con englobar todos ellos en uno sólo que, por tanto, será euleriano. Corolario 20.- Un multigrafo conexo tiene una cola euleriana si, y sólo si, no tiene vértices de grado impar o tiene un único par de vértices de grado impar. Demostración: Supongamos que tiene una la cola euleriana que empieza en x y termina en y , entonces: • Si x = y , la cola es un circuito euleriano, por lo que todos los vértices tienen grado par. • Si x 6= y , añadimos una arista que una x e y teniendo ası́ un circuito euleriano con todos los vértices de grado par. Luego, los vértices x e y son los únicos con grado impar. Recı́procamente, si hay dos vértices de grado impar basta añadir una arista uniendo esos vértices y aplicar el teorema anterior. Algoritmo de Fleury 21.- Si un multigrafo (V, A) tiene una cola euleriana C , puede construirse mediante el siguiente algoritmo: P.1.- Empezar en un vértice x de grado impar. Si no lo hay, empezar en cualquier vértice x. Hacer C = x. P.2.- Si gr(x) = 0 parar. P.3.- Si gr(x) = 1 con a = {x, y}, tomar (V, A) = (V − {x}, A − {a}), hacer C = Cay y continuar en P.5. P.4.- Si gr(x) > 1 elegir una arista a = {x, y} que no desconecte el multigrafo. Tomar (V, A) = (V, A − {a}) y hacer C = Cay . P.5.- Reemplazar x por y y volver a P.2. 106 5.3.2 Recorrido de vértices. Grafos hamiltonianos. Definición 22.- Llamaremos camino hamiltoniano en un multigrafo a un camino (trayectoria sin vértices repetidos) que recorre todos los vértices del multigrafo. Si el camino Hamiltoniano es un camino cerrado le llamaremos ciclo hamiltoniano. En este caso se dice, también, que el grafo es hamiltoniano. Ejemplo 23.- Los dos primeros grafos de la figura son hamiltonianos, el tercero no es hamiltoniano pero admite caminos hamiltonianos y el cuarto no admite caminos hamiltonianos. s A s @ @ s @ C C @ C @s s Q AQ C Q C AQ As QCs @s s A As s A $ A s As @ @ @s %s s s s s A A As @ @s No hay caracterizaciones sencillas de grafos hamiltonianos y tampoco se conocen algoritmos eficientes para su obtención. No obstante, deben tenerse en cuenta algunas pequeñas cosas: • los lazos y las aristas múltiples no son útiles para la obtención de ciclos hamiltonianos, • el grafo ha de ser conexo y verificarse necesariamente que gr(x) ≥ 2, para todo x ∈ V . De esta última condición, se tiene que |A| ≥ |V |. Sin embargo, sı́ existen condiciones suficientes (pero no necesarias) para que un grafo sea hamiltoniano aunque no son muy “finas”, pues sólo aseguran la existencia del ciclo hamiltoniano en los grafos con muchas aristas: Teorema 24.- Cada una de las condiciones siguientes es suficiente para que un grafo conexo (V, A), con |V | = n, sea un grafo Hamiltoniano. 1.- gr(x) ≥ 2.- |A| ≥ n 2 para todo x ∈ V . (n−1)(n−2) 2 + 2. 3.- gr(x) + gr(y) ≥ n, para todo {x, y} ∈ / A. 5.4 5.4.1 ' $ sx sH J s HH J HHJ Js H s s $ S x S s s Ss @ @ @s % Estos grafos son hamiltonianos y muestran la no necesidad de las condiciones de la izquierda. Matrices asociadas a los grafos. Matriz de adyacencia de un multigrafo. Definición 25.- Llamaremos matriz de adyacencia o simplemente matriz de un multigrafo G = (V, A) con ¯n conjunto de vérticeso¯V = {x1 , x2 , . . . , xn }, a la matriz cuadrada MG = (mij )n×n ¯ ¯ donde mij = ¯ a ∈ A : a = {xi , xj } ¯ . Ejemplo 26.- Consideremos el multigrafo de la derecha. Su matriz de adyacencia es la que aparece a continuación. x2 s s x3 HH Hs x1 107 s x4 sx m 5 0 2 MG = 1 0 0 2 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 1 Puede observarse que en la matriz aparece un en las posiciones 12 y 21 indicando que hay dos aristas de x1 a x2 y dos aristas de x2 a x1 . Aparece un 1 en la posición 55, luego existe un lazo en x5 . Los vértices x4 y x5 no están conectados con los anteriores, luego están es una componente conexa distinta que los otros tres. 0 MG = 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 1 Observaciones 27.- 1.- La matriz MG es simétrica. Si G no tiene lazos la diagonal principal es nula, y si G es simple, MG está formada únicamente por ceros y unos. 2.- El grado de un vértice xi es la suma de los elementos de la fila (oµcolumna) i-ésima¶ más el número de lazos en ese vértice. Es decir, gr(xi ) = n P k=1 mik + mii = lazo cuenta 1 en la matriz, pero cuenta 2 en el grado del vértice). (k) (k) 3.- En las potencias de la matriz, MGk = (mij ) cada entrada mij trayectorias de longitud k entre el vértice xi y el vértice xj . 5.4.2 n P k=1 mki + mii (cada indica el número de Caminos de peso mı́nimo. Definición 28.- Llamaremos peso de un multigrafo (V, A) a toda función real positiva sobre el conjunto de aristas del grafo, es decir, a toda w: A → IR+ y llamaremos multigrafo pesado a la terna (V, A, w). El peso de cada arista a lo denotaremos por w(a) = wa y llamaremos peso de una trayectoria T = x1 a1 x2 · · · xp ap xp+1 a la suma de los pesos de las aristas que la componen w(T ) = p P i=1 w(ai ) = p P i=1 wai . Definición 29.- Si G = (V, A, w) es un grafo pesado simple, el peso de cada arista {xi , xj } lo denotaremos por wij = w({xi , xj }) y llamaremos matriz de pesos del grafo G a la matriz W = (wij )n×n , donde pondremos wij = ∞ si {xi , xj } ∈ / A. Para cada parnde vértices xi , xj ∈ V , llamaremos peso mı́nimo de xi a xj al número o ∗ = mı́n w(x x · · · x ) : x x · · · x es una trayectoria que conecta x con x wij 1 2 p 1 2 p i j . Llamaremos camino (de peso) mı́nimo entre xi y xj a cualquier camino entre ellos que tenga ∗ (si x = x el camino puede ser cerrado). La matriz de pesos mı́nimos es peso mı́nimo wij i j ∗ ) con w ∗ = ∞ si no existe un camino que conecte x con x . la matriz W ∗ = (wij i j ij Proposición 30.- Sea G = (V, A, w) un grafo pesado. Si x1 x2 · · · xp−1 xp es un camino mı́nimo ∗ = w∗ + w∗ . y 1 ≤ i ≤ p, entonces x1 · · · xi y xi · · · xp son caminos mı́nimos y w1p 1i ip Demostración: Es claro el resultado, pues si C1i = x1 x2 · · · xi−1 xi no es un camino mı́nimo, existe otro 0 = x x0 · · · x0 x , con w(C 0 ) < w(C ), luego el peso del camino x x0 · · · x0 x · · · x es C1i 1 2 1i 1 2 p i−1 i 1i i−1 i menor que el de x1 x2 · · · xi−1 xi · · · xp , en contra de la hipótesis. 5.4.2.1 Algoritmo de Dijkstra. Usando la matriz de pesos, el algoritmo de Dijkstra proporciona los pesos mı́nimos desde un vértice dado al resto de los vértices. En cada paso, va seleccionando un vértice para el que haya obtenido un camino mı́nimo desde el vértice inicial. De esta forma, cuando ha seleccionado todos los vértices se tienen todos los pesos mı́nimos desde el vértice inicial al resto de los vértices. 108 Sea (V, A, w) un grafo pesado etiquetado por E = {1, . . . , n} y sea W = (wij ) su matriz de pesos. Consideremos xp el vértice inicial. En la aplicación del algoritmo, interviene un conjunto o lista de ı́ndices L y un vector de pesos D(j), para j = 1, . . . , n. En cada paso, L contiene los ı́ndices de los vértices seleccionados anteriormente y se incrementa con un nuevo vértice que no está en L; inicialmente L = {p}. El valor de D(j), para cada j , indica el menor peso de los caminos que unen el vértice inicial xp con xj y cuyos vértices intermedios del camino sólo pueden ser vértices seleccionados actualmente en L; inicialmente D es la p-ésima fila de W . En pseudocódigo, el algoritmo será: Inicio L = {p} Cargar D con la p-ésima fila de la matriz de pesos W Mientras sea V 6= L Tomar k ∈ V − L con D(k) mı́nimo L = L ∪ {k} Para cada j ∈ /L Si D(j) > D(k) + wkj entonces D(j) = D(k) + wkj fin si. fin para. fin mientras. Fin. Ejemplo 31.- Para el grafo de la figura se describe a continuación la matriz de pesos W y se aplica el algoritmo de Dijkstra para hallar los pesos mı́nimos desde el vértice x1 a los otros vértices del grafo. W x1 x2 x3 x4 x5 x6 x7 x2 x4 x6 7 2 s s s x1 ∞ 3 9 ∞ ∞ ∞ ∞ @ @ x2 3 ∞ 2 7 1 ∞ ∞ @8 @1 3 x3 9 2 ∞ 7 1 ∞ ∞ x1 s 2 @ 5 @ 4 @ @ @ x4 ∞ 7 7 ∞ 5 2 8 7 9 @ @ 9@@ x5 ∞ 1 1 5 ∞ 9 ∞ @s @s s x3 x5 x7 1 x6 ∞ ∞ ∞ 2 9 ∞ 4 x7 ∞ ∞ ∞ 8 ∞ 4 ∞ L {1} D(1) D(2) D(3) D(4) D(5) D(6) D(7) Comentarios ∗ ∞ 3 9 ∞ ∞ ∞ ∞ w12 = 3 = w(x1 x2 ) w(x1 x2 x3 ) < w(x1 x3 ) w(x1 x2 x4 ) < w(x1 x4 ) {1, 2} ∞ 3 5 10 4 ∞ ∞ w(x1 x2 x5 ) < w(x1 x5 ) ∗ w15 = 4 = w(x1 x2 x5 ) w(x1 x2 x5 x3 ) = w(x1 x2 x3 ) w(x1 x2 x5 x4 ) < w(x1 x2 x4 ) {1, 2, 5} ∞ 3 5 9 4 13 ∞ w(x1 x2 x5 x6 ) < w(x1 x6 ) ∗ w13 = 5 = w(x1 x2 x5 x3 ) = w(x1 x2 x3 ) ∗ {1, 2, 5, 3} ∞ 3 5 9 4 13 ∞ w14 = 9 = w(x1 x2 x5 x4 ) w(x1 x2 x5 x4 x6 ) < w(x1 x2 x5 x6 ) {1, 2, 5, 3, 4} ∞ 3 5 9 4 11 17 w(x1 x2 x5 x4 x7 ) < w(x1 x7 ) ∗ w16 = 11 = w(x1 x2 x5 x4 x6 ) w(x1 x2 x5 x4 x6 x7 ) < w(x1 x2 x5 x4 x7 ) {1, 2, 5, 3, 4, 6} ∞ 3 5 9 4 11 15 ∗ w17 = 15 = w(x1 x2 x5 x4 x6 x7 ) 109 Gráficamente el proceso realizado por el algoritmo es el siguiente: [En cada paso, representamos con lı́neas continuas los caminos que desde x1 ya son de peso mı́nimo y con lı́neas discontinuas los caminos a los demás vértices que, en este momento del algoritmo, tienen menor peso (el peso se indica entre corchetes) y son subceptibles de mejora; para los vértices aislados el peso es ∞ ] r x1 r r x1 r [3] [9] r r x2 x1 r 3 x2 r x4 2 r r 8 @1 5 2 @ r @r x3 5.4.2.2 x5 r 3 2 r 7 [10] r r[5] x1 r [4] r x2 [11] r x1 r 3 [17] r x4 r r @1 5 2 @ @ r r x3 x2 r 1 3 r 2 x5 [5] 1 x6 x5 x2 r 4 r r [9] 1 @ 2 @ 5 9 r @r x1 r r [15] 3 x4 r r @1 5 2 @ @ r r x3 2 x2 r [13] x1 r 3 r r r [9] @1 5 2 @ 9 r @r x3 x5 r [13] r x6 r 4 r x5 x7 Algoritmo de Warshall. Este algoritmo proporciona, también a partir de la matriz de pesos W , la matriz W ∗ de los pesos mı́nimos1 . La forma de hacerlo es exhaustiva: se mira si cada peso entre los vértices se puede hacer más pequeño buscando un camino que pase por el primer vértice x1 , se comprueba si cada peso se puede minorar aún más mediante un camino que pase por el vértice x2 , y sucesivamente hasta hacerlo con los n vértices. n o (k) Se obtiene ası́ una sucesión de matrices W (k) = (wij ) , que contienen los pesos más 0≤k≤n pequeños posibles en cada paso, y que se inicia con W (0) = W y acaba con W (n) = W ∗ . El algoritmo en pseudocódigo es: Inicio (0) Cargar W (0) = (wij ) con la matriz de pesos W Hacer, desde k = 0 hasta n − 1 Hacer, desde i = 1 hasta n Hacer, desde j = 1 hasta n (k+1) n (k) (k) (k) o wij = mı́n wi j , wi k+1 + wk+1 j . Fin hacer Fin hacer Fin hacer Fin Ejemplo 32.- En el siguiente ejemplo se aplica el algoritmo de Warshall para hallar la matriz de peso mı́nimo del grafo de la figura. (0) x1 1 wij = wij x6 s HH 2 2 1 HH HH s x3 s 7 s 4 @ x@ 2 2@ 4 1@ @s @s x4 x5 W = W (0) Ver la observación 33 posterior 110 ∞ 7 ∞ = 2 ∞ 2 7 ∞ 4 4 1 1 ∞ 4 ∞ ∞ ∞ 2 2 4 ∞ ∞ ∞ ∞ ∞ 1 ∞ ∞ ∞ ∞ 2 1 2 ∞ ∞ ∞ (1) (0) (0) (0) (2) wij = mı́n{wij , wi1 + w1j } W (1) ∞ 7 ∞ = 2 ∞ 2 7 14 4 4 1 1 (3) ∞ 4 ∞ ∞ ∞ 2 (2) 2 4 ∞ 4 ∞ 4 ∞ 1 ∞ ∞ ∞ ∞ (2) 2 1 2 4 ∞ 4 W (2) W (3) 14 7 11 = 2 8 2 (5) 7 8 4 4 1 1 (4) 11 4 8 8 5 2 2 4 8 4 5 4 8 1 5 5 2 2 (4) W (5) 4 6 10 = 2 7 2 6 2 4 4 1 1 10 4 8 8 5 2 2 4 8 4 5 4 7 14 4 4 1 1 11 4 8 8 5 2 (3) 2 1 2 4 2 2 W (4) (4) 7 1 5 5 2 2 (1) (1) 2 4 8 4 5 4 8 1 5 5 2 2 (3) 2 1 2 4 2 2 (3) wij = mı́n{wij , wi4 + w4j } 4 6 10 = 2 7 2 (6) wij = mı́n{wij , wi5 + w5j } 14 7 11 = 2 8 2 (4) (2) wij = mı́n{wij , wi3 + w3j } (1) wij = mı́n{wij , wi2 + w2j } 6 8 4 4 1 1 10 4 8 8 5 2 (5) 2 4 8 4 5 4 7 1 5 5 2 2 (5) 2 1 2 4 2 2 (5) wij = mı́n{wij , wi6 + w6j } 2 1 2 4 2 2 W (6) 4 3 4 = 2 4 2 3 2 3 4 1 1 4 3 4 6 4 2 2 4 6 4 5 4 4 1 4 5 2 2 2 1 2 = W ∗. 4 2 2 Observación 33.- Los algoritmos de Dijkstra y de Warshall, buscan el peso mı́nimo entre vértices mediante la matriz de pesos, matriz que no puede construirse para los multigrafos no simples, lo que impide el uso de estos algoritmos en dichos multigrafos. Sin embargo, en la búsqueda de un camino de peso mı́nimo en un multigrafo, de las aristas múltiples sólo es útil la de menor peso, pues no puede usarse más que una de ellas y en ese caso se elegirı́a aquella. Entonces, basta con considerar del multigrafo el subgrafo parcial útil, que no tiene aristas múltiples, y construir su matriz de pesos (lo que ahora sı́ es posible). Los pesos mı́nimos que se obtienen en la matriz final del algoritmo de Warshall, W (n) , relativos a vértices distintos se corresponden con caminos de peso mı́nimo, mientras que los (n) elementos de la diagonal principal wii se obtienen de recorrer la arista de menor peso que sale (n) del vértice y recorrerla de vuelta al vértice, es decir, wii = w(xi xk xi ) si la arista incidente en xi de menor peso es {xi , xk }, por lo que no es un camino sino una trayectoria cerrada. En ocasiones y cuando se buscan pesos mı́nimos por caminos, para evitar la interferencia de las trayectorias cerradas comentadas antes, se usa el algoritmo sobre una variante de la matriz de pesos que consiste en hacer wii = 0, para todo i. De esta forma el peso para “ir de xi a xi es 0” y el peso mı́nimo obtenido también será cero. 5.5 Grafos dirigidos. Definición 34.- Llamaremos digrafo o grafo dirigido a un par D = (V, A) donde V es un conjunto finito no vacı́o de vértices y A ⊆ V × V − ∆ su conjunto de arcos. Si (x, y) ∈ A diremos que el arco (x, y) une el vértice x con el vértice y , que x es adyacente a y , que y 111 es adyacente desde x y que x e y son respectivamente el vértice inicial y el vértice final del arco (x, y). Definición 35.- Si x es un vértice de un digrafo D , llamaremos ingrado de x al número de arcos que tienen a x como vértice final y lo representaremos por ing(x) = |{y ∈ V : (y, x) ∈ A}|, llamaremos exgrado de x al número de arcos que tienen a x como vértice inicial y lo representaremos por exg(x) = |{y ∈ V : (x, y) ∈ A}| y llamaremos grado de x a gr(x) = ing(x) + exg(x). Observaciones 36.- 1.- Si D = (V, A) es un digrafo y |V | = n y |A| = m, el número de arcos verifica que 0 ≤ m ≤ n(n − 1) = |V ×V − ∆|. 2.- Dados n vértices, pueden formarse ¡n(n−1)¢ digrafos distintos con exactamente m aristas. m Por tanto, el número total de digrafos con n vértices es n(n−1) P ¡ m=0 n(n−1)¢ m = 2n(n−1) . En la figura 5.2 siguiente pueden verse los 15 digrafos de 3 vértices y 2 arcos. x s ¢A s¢® y s AU s z D1 s 6 D9 s? s ¢ s¢® - s s ¢ AK s¢® As D2 D3 D4 D5 s s ¢s - s s ¢¢̧ AK ¢s As s s AK s -As D10 D11 D12 D13 ? s s 6 s ¢¢̧ ¢¢̧ ¢s¾ ¢ s¢®¾ s s s A ¢̧ ¢ s A AU s s - s¾ AU s D6 D7 D8 s s AK AU s ¢s s js Y s¾ As D14 D15 s A Fig. 5.2. Todos los digrafos de 3 vértices y 2 arcos. 3.- Si D = (V, A) y |V | = n, en cada vértice se tiene 0 ≤ ing(x) ≤ n−1 y 0 ≤ exg(x) ≤ n−1. Si ing(x) = 0 diremos que x es un vértice minimal o fuente; si exg(x) = 0 diremos que x es un vértice maximal, pozo o sumidero. Si ing(x) = exg(x) = 0 diremos que x es un vértice aislado. ~ n , al digrafo cuyos vértices tienen todos 4.- Se llama digrafo completo de n vértices, K ingrado y exgrado máximo. s ~3 K ~2 K s s 5.- En un digrafo se verifica que P x∈V 5.5.1 UK s - s ing(x) = P s ? ? 6 RI 6 s - s s ~4 K exg(x) = |A|. x∈V Isomorfismo de digrafos. El isomorfismo para digrafos es análogo al de grafos no dirigidos: Definición 37.- Un isomorfismo de digrafos es una aplicación biyectiva entre sus conjuntos de vértices ψ: V −→ V 0 que conserva la relación de adyacencia en los dos sentidos, es decir (xi , xj ) ∈ A si, y sólo si, (ψ(xi ), ψ(xj )) ∈ A0 . En este caso diremos que los digrafos (V, A) y (V 0 , A0 ) son isomorfos. 112 La relación de equivalencia dada por el isomorfismo y el concepto de digrafos no etiquetados, son análogos a los vistos para grafos no dirigidos. Para los digrafos también son invariantes |V |, |A| y el grado de los vértices. Ahora bien, en este caso el isomorfismo debe respetar además la dirección de los arcos (a cada arco dirigido (xi , xj ) le debe corresponder el arco dirigido (ψ(xi ), ψ(xj ))), luego los vértices identificables por el isomorfismo han de tener el mismo ingrado y el mismo exgrado. Es decir: la familia de pares, (ing(x), exg(x)) para los x ∈ V , es un invariante para digrafos. Ası́, en la figura 5.2, los digrafos D1 y D11 no pueden ser isomorfos pues el vértice x en D1 tiene dos arcos salientes mientras que en D11 ningún vértice tiene dos arcos salientes. Ejemplos 38.a) Los siguientes son ejemplos de pares de grafos isomorfos, como se puede comprobar tomando como biyección entre los conjuntos de vértices la dada por ψ(x) = x. b sd @ 6 @ @ Rsc sc sa $ I 6 o S CO@ C @ S s R Ssb b s C @s e d s e Q Q C @ Ak 7 Q @ AQ C @ R ? U s + QCsd cA % a s sa A 6 A s A b@ IA @A AU s d @ c s s @ @ R s @ a b) En la figura 5.2 solo hay cuatro digrafos distintos no isomorfos, todos los demás son isomorfos a alguno de esos cuatro. (Ver ejercicio 5.20.) c) Para los tres digrafos de la figura siguiente coinciden todos los invariantes mencionados anteriormente, pero ésto no es suficiente para poder afirmar que son isomorfos. De hecho, el lector podrá probar que sólo dos de ellos son isomorfos. (Ver ejercicio 5.21.) s @ @ @ Rs s J A J AU s ^ s s A 5.5.2 s @ @ Rs @ sX Xz s 9 AK X A As s s COC C s s Q ? 9C s Q Q C sCs Q s Q Multidigrafos. Definición 39.- Llamaremos multidigrafo o multigrafo dirigido a un par D = (V, A) donde V es un conjunto no vacı́o de vértices y A es un conjunto de arcos que se identifican con pares de vértices. De modo que, para cada arco a ∈ A existen vértices x, y ∈ V tales que a = (x, y). Llamaremos arcos múltiples a los arcos distintos que tienen los mismos vértices inicial y final. Los arcos de la forma (x, x) se llaman lazos dirigidos o lazos. Observaciones 40.vértice. 1.- En los multidigrafos, cada lazo aporta 1 al ingrado y 1 al exgrado del 2.- El isomorfismo de digrafos se extiende sin dificultad a multidigrafos. 3.- Las definiciones de subgrafo, subgrafo parcial y subgrafo inducido de un multidigrafo son análogas al caso no dirigido. Definición 41.- A cada (multi)digrafo se le asocia un multigrafo no dirigido, que se obtiene sustituyendo cada arco (x, y) por una arista {x, y}, y se le dice multigrafo no dirigido subyacente al (multi)digrafo. Un multidigrafo es conexo si su multigrafo subyacente es conexo. 113 5.5.3 Trayectorias y ciclos. Definición 42.- Sea D = (V, A) un multidigrafo. Llamaremos trayectoria a una sucesión alternada de vértices y arcos, x1 a1 x2 · · · xp ap xp+1 tales que ai = (xi , xi+1 ), para cada i = 1, 2, . . . , p, y diremos que une el vértice x1 con el vértice xp+1 . Del número de arcos recorridos diremos que es la longitud de la trayectoria. Si x1 = xp+1 , diremos que la trayectoria es cerrada. Llamaremos cola a una trayectoria con todos los arcos distintos y circuito a una cola cerrada. Llamaremos camino a una trayectoria sin vértices repetidos y ciclo a un camino cerrado. Diremos que el multidigrafo es acı́clico si no posee ciclos. Mientras que en los grafos no dirigidos las aristas se pueden recorrer en cualquier dirección, en los grafos dirigidos los arcos sólo se pueden recorrer en un sentido, por lo que las trayectorias (colas, ciclos, etc.) son siempre trayectorias dirigidas que se recorren en el sentido que indica la flecha. En los digrafos, al no haber arcos múltiples, las trayectorias quedan definidas dando únicamente la sucesión de vértices. s x3 En el multidigrafo de la derecha, no hay ningún camino 6 de x1 a x3 ni a x4 . No hay ningún camino de x2 a x4 , pero x1 - x2 si hay dos caminos de x4 a x2 . De x1 a x2 hay dos caminos s s I @ (uno por cada arco del arco múltiple) y ninguno de x2 a x1 . @ El multidigrafo es acı́clico. @s x 4 s -s A los digrafos ciclo, es decir, formados por un único ciclo dirigido ~ n , donde n es el número de vértices. se los denomina C 6 ~4 C s¾ s? El número de componentes conexas y el número y longitud de los ciclos, son también invariantes por el isomorfismo de multidigrafos. 5.5.4 Representaciones matriciales. La representación matricial para multidigrafos es análoga al caso no dirigido, por lo que tras la definición, únicamente daremos unas observaciones donde puntualizaremos y explicaremos lo que sea de interés o diferente. Definición 43.- Llamaremos matriz de adyacencia o simplemente matriz de un multidigrafo D = (V, A) con ¯n conjunto de vértices o¯V = {x1 , x2 , . . . , xn }, a la matriz cuadrada MD = (mij )n×n ¯ ¯ donde mij = ¯ a ∈ A : a = (xi , xj ) ¯ . Observaciones 44.- 1.- La matriz MD no tiene por qué ser simétrica. Si D es simple, MG está formada únicamente por ceros y unos, con ceros en la diagonal. 2.- El exgrado/ingrado de un vértice xi es la suma de los elementos de la fila/columna i-ésima. (k) (k) k = (m ) cada entrada m 3.- En las potencias de la matriz, MD ij ij trayectorias (dirigidas) de longitud k del vértice xi al vértice xj . indica el número de (k) 4.- G es acı́clico ⇐⇒ mii = 0 para todo i = 1, . . . , n y para todo k ≥ 1. 5.- Los grafos dirigidos pesados, la matriz de pesos para los digrafos y los caminos de peso mı́nimo se obtienen como en el caso no dirigido. Los algoritmos de Dijkstra y Warshall son válidos también en los digrafos. En el caso del algoritmo de Warshall, en la diagonal de la matriz final sı́ se obtienen los pesos mı́nimos de ciclos (a diferencia de lo que ocurrı́a en el caso no dirigido). 114 5.5.5 Los digrafos vistos como relaciones binarias. De la definición se deduce que un digrafo simple no es otra cosa que una relación binaria antirreflexiva. De este modo, un digrafo será simétrico, antisimétrico o transitivo si lo es como relación binaria. Al no haber lazos en el digrafo, la definición de estas propiedades necesita modificarse ligeramente. Definición 45.- Un digrafo (V, A) es simétrico si cuando (x, y) ∈ A, entonces (y, x) ∈ A. Es antisimétrico si cuando (x, y) ∈ A, entonces (y, x) ∈ / A. Es transitivo si cuando (x, y), (y, z) ∈ A, con x 6= z , entonces (x, z) ∈ A. Observaciones 46.- 1.- Los digrafos simétricos y transitivos se corresponden con las relaciones de equivalencia. Si (V, A) es un digrafo simétrico y transitivo, cada componente conexa (Vi , A|Vi ) es un digrafo completo en Vi . Los conjuntos Vi , 1 ≤ i ≤ r , constituyen una partición de V que define una relación de equivalencia en V que no es otra que la relación de conexión que utilizamos para definir el concepto de componente conexa. Recı́procamente, a cada relación de equivalencia en V se le puede asociar de forma obvia un digrafo simétrico y transitivo cuyas componentes conexas son los digrafos completos sobre los conjuntos de vértices de cada clase de equivalencia. 2.- Los digrafos antisimétricos y transitivos se corresponden con las relaciones de orden. Si (V, A) es un digrafo antisimétrico y transitivo, entonces (V, <), donde x < y si, y sólo si, (x, y) ∈ A es un orden parcial. Recı́procamente, si (V, <) es un orden parcial, entonces (V, A), donde A = {(x, y) : x < y}, es un digrafo antisimétrico y transitivo. 5.6 Digrafos acı́clicos. El conjunto de los digrafos acı́clicos tiene propiedades especialmente interesantes. Constituyen la estructura más amplia en la que se puede asegurar la existencia de maximales y minimales y, en consecuencia, son la clase más amplia de digrafos con la propiedad de que sus puntos se pueden estratificar en niveles. Se caracterizan, además, por admitir etiquetados naturalmente ordenados. Veremos a continuación estas cuestiones con más detalle. Proposición 47.- Si (V, A) es un digrafo (finito) acı́clico admite, al menos, un maximal y un minimal. Demostración: Si no hubiera maximales todo punto del digrafo serı́a adyacente a algún otro, luego partiendo de un punto cualquiera x1 podrı́amos construir una trayectoria x1 · · · xp tan larga como quisiéramos. Ahora bien, como el digrafo es finito, llega un momento en la trayectoria que repetirı́amos vértices, lo que va en contra de la aciclicidad. Análogamente para los minimales. Usando la proposición anterior se obtiene la siguiente caracterización para los digrafos acı́clicos: Proposición 48.- Si (V, A) es un digrafo con |V | = n, entonces (V, A) es acı́clico si, y sólo si, se puede etiquetar V en la forma {x1 , x2 , . . . , xn } de modo que si (xi , xj ) ∈ A, entonces i < j . En este caso diremos que el digrafo está naturalmente ordenado. 115 Demostración: =⇒ Por inducción sobre el número de vértices n. Es claramente cierto para n = 1. Supongamos entonces que los digrafos acı́clicos con menos de n vértices pueden ordenarse naturalmente y sea (V, A) un digrafo acı́clico con n vértices. Elijamos un vértice maximal x ∈ V y asignémosle la etiqueta xn . El subgrafo inducido en V − {x} es acı́clico con n − 1 vértices, por lo que puede ordenarse naturalmente con {x1 , x2 , . . . , xn−1 } y, en consecuencia, el digrafo (V, A) queda de esta manera naturalmente ordenado (al ser x maximal sólo tiene arcos incidentes que provienen de vértices con ı́ndice menor que n). ⇐= Supongamos que (V, A) posee un ciclo xa xb xc · · · xa . Sea i = máx{a, b, c, . . . , a} y sea xj el siguiente a xi en el ciclo. Entonces (xi , xj ) ∈ A y, como i es máximo, i ≥ j ; contra la hipótesis i < j . La propia demostración de que todo digrafo acı́clico admite un etiquetado naturalmente ordenado nos proporciona el método para construir dicho etiquetado. Si |V | = n, tomamos un x ∈ V que sea maximal y lo etiquetamos por xn ; consideramos ahora el subgrafo inducido (V − {xn }, A|V −{xn } ) y tomamos en él un y ∈ V − {xn } que sea maximal y que etiquetamos por xn−1 ; sucesivamente, se repite el proceso hasta acabar con todos los vértices. En el ejemplo siguiente, construimos un etiquetado naturalmente ordenado sobre el digrafo etiquetado por V = {a, b, c, d, e, f, g, h}. A la derecha aparece el digrafo con el etiquetado naturalmente ordenado, donde hemos colocado todos los vértices en alturas progresivas a fin de que se observe fácilmente ese hecho (todos los arcos van de abajo a arriba, de ı́ndice menor a ı́ndice mayor). ar ar -br R rc 6 ª R rd g r? U ® R r¾ rª h rª f b 7 b g ª r? 8 -br b b 6 R rc 6 R rd ® rª b ar R rc 6 R rd 8 rª e ar 5 h ar -br h rª 7 b 8 e -br -br ar b R rc 6 R rd ® rª ar 3b h rª 7 b e 8 -br R rc 6 R rd b b 1r 3b 6 5 b b4 5 b b4 5 b b4 7 b R rd 7 b R rd 7 b b2 8 b b 6 8 b b 6 8 b b rx8 @ I 6 @ r x7 @ 6 @rx6 6 x5 r AK x4 r A AKA A A x3 r A A 6 Ar x * 2 A r A x1 6 Usando minimales se obtiene la siguiente estratificación para un digrafo acı́clico: Definición 49.- Si (V, A) es un digrafo acı́clico con |V | = n, se pueden definir los siguientes conjuntos: N0 = {x ∈ V : x es minimal de (V, A)}, N1 = {x ∈ V − N0 : x es minimal de (V − N0 , A|V −N0 )}, n ³ ´o N2 = x ∈ V − (N0 ∪ N1 ) : x es minimal de V − (N0 ∪ N1 ), A|V −(N0 ∪N1 ) y, en general, para todo p, con 0 < p ≤ n: ³ p−1 ´ p−1 Np = x ∈ V − ∪ Nr : x es minimal de V − ∪ Nr , A| r=0 r=0 p−1 V − ∪ Nr . r=0 A los conjuntos Nr les llamaremos niveles del digrafo acı́clico (V, A) y si x ∈ Nr diremos que x es un vértice de nivel r . 116 ³ Observaciones 50.- 1.- Nótese que para cada p, el digrafo ´ p−1 V − ∪ Nr , A| r=0 es p−1 V − ∪ Nr r=0 acı́clico y, por tanto, tiene sentido el uso del término minimal en las definiciones de los Np . 2.- La sucesión de los Np es estacionaria en el sentido de que existe k , con 0 ≤ k ≤ n − 1, tal que N0 6= ∅, . . . , Nk 6= ∅ y Nk+1 = · · · = Nn = ∅. 3.- Los Np constituyen una partición de V que escribiremos V = Ejemplo 51.- En el digrafo de la derecha hemos dibujado el digrafo que aparece a su izquierda de manera que todas la flechas van hacia arriba; ası́ todos los vértices que están a la misma altura están en el mismo nivel y el digrafo queda dibujado por niveles. ar -br ¡@¡@ ª ¡@ @ Rrc h r¡ A ¡ @ ¢6 ? ª Rrd g r¡ A ¢@ @UA ¢®¡ R @ Ar¾ r¢¡ ª f e k S r=0 Nr , con Nr 6= ∅. fr H Y £± 6HH e £ Hr £ AK 6 c rA £ rg £¡ I b ¡ µ@ IA µ@ h £¡ r @¡ r @Ar d YH H * ©© HH6 © r © a N4 N3 N2 N1 N0 Definición 52.- Diremos que un digrafo acı́clico está naturalmente ordenado por niveles si está naturalmente ordenado y respeta el orden de los niveles, es decir, si xi ∈ Np y xj ∈ Nq con p < q , entonces i < j . Para obtener un etiquetado naturalmente ordenado por niveles basta con clasificar los vértices k en niveles V = ∪ Nr , con Nr 6= ∅, y asignarles etiquetas respetando el orden creciente de los r=0 niveles. Es decir, si |Nr | = nr se asignan las n0 primeras etiquetas {1, . . . , n0 } a los vértices de N0 , las n1 etiquetas siguientes {n0 + 1, . . . , n0 + n1 } a los vértices de N1 y ası́ sucesivamente. Ejemplo 53.- Construimos un etiquetado naturalmente ordenado por niveles sobre el digrafo ya dibujado por niveles y etiquetado por V = {a, b, c, d, e, f, g} del ejemplo 51. Por definición, todo etiquetado naturalmente ordenado por niveles es un etiquetado naturalmente ordenado. El recı́proco no es cierto: obsérvese que el etiquetado naturalmente ordenado, sobre este mismo grafo, que aparece en los comentarios siguientes a la proposición 48, no es un etiquetado naturalmente ordenado por niveles. 5.7 x r8 Y H H £± 6 HHrx7 £ AK £ r x5 x6 6 rA £¡ µ@ I x3¡ µ@ IA @¡ @Ar x x2 £¡ r r * 4 © Y H HH 6©© r H© N4 N3 N2 N1 N0 x1 Árboles. También en los grafos no dirigidos la aciclicidad da origen a importantes propiedades. En lo que sigue, vamos a trabajar con los grafos acı́clicos no dirigidos y con los digrafos acı́clicos cuyo grafo no dirigido subyacente es también acı́clico, que por su estructura reciben el nombre de árboles (bosques). Sobre los árboles (dirigidos o no dirigidos) seguiremos considerando grafos finitos. 5.7.1 Grafos no dirigidos acı́clicos. Recordemos que un grafo acı́clico no puede tener lazos ni aristas múltiples. 117 Definición 54.- Un bosque es un (multi)grafo acı́clico. A cada componente conexa de un bosque se le llama árbol. En un árbol, a los vértices de grado uno se les llama hojas. Teorema 55.- Las siguientes condiciones sobre un grafo (V, A) son equivalentes: a) (V, A) es un árbol. b) Cada par de vértices distintos del grafo (V, A) está unido por un único camino. c) (V, A) es conexo y, para cada a ∈ A, se tiene que (V, A − {a}) no es conexo. d) (V, A) es acı́clico y, para cada par de vértices x, y con a = {x, y} ∈ / A, se tiene que (V, A ∪ {a}) no es acı́clico. Demostración: a)⇒b) Por ser el árbol acı́clico y conexo cada par de vértices distintos está unido por un camino. Si hubiera otro camino uniendo el par de vértices, con los dos caminos se formarı́a (al menos) un ciclo. b)⇒c) El grafo es conexo por hipótesis. Si al suprimir la arista a = {x, y} el grafo resultante (V, A − {a}) sigue siendo conexo, es que hay otro camino (además de {x, y}) uniendo los vértices x e y , en contra de la hipótesis. c)⇒d) Si (V, A) es conexo y tiene un ciclo, al suprimir una arista del ciclo el grafo resultante seguirá siendo conexo, en contra de la hipótesis, por lo que (V, A) es acı́clico. Si al grafo conexo (V, A) le añadimos una arista a = {x, y}, con x, y ∈ V , se forma un ciclo entre esta arista y el camino que conecta los vértices x e y en el grafo (V, A). d)⇒a) Si el grafo acı́clico (V, A) no fuera un árbol, serı́a no conexo y, por tanto, tiene un par de vértices x e y en componentes conexas distintas y al añadir la arista a = {x, y} resultará un grafo igualmente acı́clico, en contra de la hipótesis. Lema 56.- Un árbol finito con al menos una arista (o con más de un vértice) tiene al menos dos hojas. Demostración: El enunciado es cierto ya que, al ser el árbol acı́clico y finito existe un camino x1 x2 ...xp de longitud máxima y, por tanto, x1 y xp son hojas. Lema 57.- a) Un árbol con n vértices tiene n − 1 aristas. b) Un bosque con n vértices y m componentes conexas tiene n − m aristas. c) Un grafo conexo con n vértices y n − 1 aristas es un árbol. d) Un grafo con n vértices, m componentes conexas y n − m aristas es un bosque. Demostración: a) Lo probaremos por inducción. Si n = 1 es claro que no hay aristas. Si el árbol tiene k + 1 vértices, con k ≥ 1, tiene una hoja x. Si quitamos el vértice x y la única arista que lo conecta queda un árbol con k vértices que, por hipótesis, tendrá k − 1 aristas; por tanto, el árbol original tenı́a k aristas. 118 b) Cada componente tiene ni vértices y ni −1 aristas, luego el bosque tiene aristas. m P (ni −1) = n−m i=1 c) Si el grafo conexo no fuera un árbol tendrı́a un ciclo. En este ciclo hay igual número de vértices que de aristas y cada uno de los otros vértices forma parte, al menos, de una arista distinta, por lo que al menos hay n aristas en el grafo, en contra de la hipótesis. d) Cada componente conexa con ni vértices aporta ni − 1 aristas, si es un árbol, o más si no lo es. La suma de aristas de todas las componentes conexas es n − m, si todas son árboles, o mayor que este número en caso contrario. En consecuencia, el grafo es un bosque. Teorema 58.- Las siguientes condiciones sobre un grafo (V, A) con |V | = n son equivalentes: a) (V, A) es un árbol. b) (V, A) es conexo y tiene n − 1 aristas. c) (V, A) es acı́clico y tiene n − 1 aristas. Demostración: a)⇒b) Por ser árbol es conexo y por tener n vértices tiene n − 1 aristas. b)⇒a) Es el apartado c) del lema 2. a)⇒c) Por ser árbol es acı́clico y por tener n vértices tiene n − 1 aristas. c)⇒a) Si (V, A) es acı́clico, es un bosque con m componentes conexas luego con n − m aristas y como tiene n − 1 aristas, ha de ser m = 1. En consecuencia, es conexo y es un árbol. 5.7.2 Árboles generadores. Definición 59.- Llamaremos árbol generador de un multigrafo conexo a todo grafo parcial que sea árbol. Un árbol generador mı́nimo de un grafo conexo pesado es un árbol generador con mı́nima suma de pesos. Teorema 60.- Si (V, A) es un (multi)grafo conexo y a es una de sus aristas, entonces: (V, A − {a}) es un (multi)grafo conexo ⇐⇒ a está en un ciclo. Demostración: Si a es un lazo o una arista múltiple es trivial. Si la arista a une los vértices x e y , hay otro camino uniendo estos dos vértices tanto en el (multi)grafo (V, A − {a}), por ser conexo, como en el ciclo. Corolario 61.- Todo (multi)grafo conexo finito tiene un árbol generador. Demostración: En primer lugar se suprimen todos los lazos y aristas múltiples, con lo que obtenemos un grafo conexo. A continuación se suprime, sucesivamente, una arista cualquiera de cada ciclo que quede en el grafo. El teorema anterior asegura la conservación de la conexión, luego cuando no queden ciclos tendremos un grafo conexo acı́clico que será el árbol generador buscado. La finitud del grafo asegura la finalización del proceso. 119 5.7.2.1 Algoritmos de Kruskal y Prim. Algoritmo de Kruskal 62.- Si (V, A) es un grafo conexo pesado con |V | = n, el siguiente algoritmo produce un árbol generador mı́nimo: E.1: Poner el contador en i = 1 y seleccionar una arista a1 de mı́nimo peso. E.2: Para 1 ≤ i ≤ n − 2 y con aristas a1 , a2 , ..., ai ya seleccionadas, se toma la arista ai+1 de peso mı́nimo entre las que quedan en el grafo de forma que no cierre un ciclo con las aristas ya seleccionadas. E.3: Cambiar i por i + 1. Si i < n − 1, volver a E.2. Si i = n − 1, las n − 1 aristas constituyen un grafo parcial acı́clico con n vértices que es, por el teorema anterior, un árbol generador. Su peso es mı́nimo por construcción. Ejemplo 63.- Apliquemos el algoritmo de Kruskal sobre el grafo de la figura: 5 t 5 t 5 t 3 3 t 4 3 t 1 5 5 Observaciones 64.- r r r t r t r r 3 r r 3 1 r r r r r 3 r 1 2 r 3 2 r r r r r r 1 r r 3 r 2 r 1 r r r 4 3 r r r 3 r r r r r r 2 r 4 3 1 1 r 5 5 2 3 r 3 r r 3 r r r 5 2 r 1 r 4 3 r 2 r 1.- El árbol generador mı́nimo obtenido no es único. 2.- Este algoritmo se extiende fácilmente a grafos pesados no conexos aplicándolo a cada componente conexa para obtener un bosque generador mı́nimo. 3.- También se extiende a multigrafos pesados, para lo que basta empezar eliminando los lazos y seleccionando entre las aristas múltiples la de mı́nimo peso. 4.- La aplicación del algoritmo a un (multi)grafo no pesado produce un árbol generador. Basta definir previamente en el (multi)grafo una función peso cualquiera. 5.- Con este algoritmo, el árbol generador mı́nimo se construye seleccionando sucesivamente aristas de peso mı́nimo sin cerrar ciclos. Otra versión de este mismo algoritmo permite obtener un árbol generador mı́nimo suprimiendo, en el grafo original, aristas de máximo peso sin desconectar el grafo. En este caso, también el teorema anterior y la construcción aseguran el resultado. La segunda versión del algoritmo de Kruskal es más rápida que la primera si hay que eliminar menos aristas que las que hay que ir incorporando para formar el árbol. Es decir, siempre que |A| < 2 |V | − 1. Ejemplo 65.- Aplicamos la segunda versión del algoritmo de Kruskal al mismo grafo que el ejemplo anterior: 5 t 5 t 5 t 3 t 3 1 5 4 3 t 5 r r 3 r 5 t 2 t r r 3 r r 5 5 3 3 r 1 r 5 3 1 5 4 3 r 5 r 2 r 5 r 4 2 r 120 r r 3 r 5 r r 3 r r 5 5 3 3 r 1 1 r 2 r 4 3 r r r 5 3 5 4 2 r r r 3 r 5 r r 3 r 5 r 5 3 3 r 1 2 r 4 r r r r 3 1 5 4 2 r Algoritmo de Prim 66.- Si (V, A) es un grafo conexo pesado con |V | = n, el siguiente algoritmo produce un árbol generador mı́nimo: E.1: Poner el contador en i = 1 y seleccionar un vértice cualquiera x1 . Hacer V 0 = {x1 } y A0 = ∅. E.2: Para 1 ≤ i ≤ n − 1, sea V 0 = {x1 , x2 , . . . , xi } y A0 = {a1 , a2 , . . . , ai−1 }. Añadir a A0 una arista ai = {x, y} de peso mı́nimo entre las que conectan un vértice x de V 0 con un vértice y de V − V 0 . Hacer y = xi+1 y añadirlo a V 0 . E.3: Cambiar i por i + 1. Si i < n, volver a E.2. Si i = n, el subgrafo (V 0 , A0 ) es conexo con n vértices y n − 1 aristas y es, por el teorema anterior, un árbol generador. Su peso es mı́nimo por construcción. Ejemplo 67.- Apliquemos el algoritmo de Prim sobre el grafo de los ejemplos anteriores, empezando en el vértice etiquetado por x1 : 5 t 5 x1 t 5 t 3 t 5.8 3 1 5 4 3 t 5 b b b t r b b b b b b 3 2 t b r r r b 4 r b b r r r 1 r b r b r 2 r b 5 b b 3 r b r r 5 r r 3 r r r b r b r r r r 5 3 1 r 4 3 r 2 r Árboles dirigidos. Árboles con raı́z. Como ya hemos indicado, en el caso dirigido vamos a tratar digrafos acı́clicos cuyo grafo no dirigido subyacente también sea acı́clico (es decir, un digrafo será un árbol si su grafo no dirigido subyacente es también un árbol). Para evitar alusiones continuadas al grafo no dirigido subyacente, vamos a introducir las siguientes definiciones: Definición 68.- Llamaremos semitrayectoria en un multidigrafo D = (V, A) a una sucesión alternada de vértices y arcos x1 a1 x2 · · · xp ap xp+1 tal que ai = (xi , xi+1 ) ó ai = (xi+1 , xi ), para cada i = 1, 2, . . . , p, y diremos que la semitrayectoria conecta los vértices x1 y xp . Es decir, es una semitrayectoria si es una trayectoria (no dirigida) en el multigrafo no dirigido subyacente. Análogamente se definen semicola, semicamino, semicircuito y semiciclo. Diremos que un multidigrafo es semiacı́clico si no posee semiciclos. Definición 69.- Un bosque dirigido es un digrafo semiacı́clico. A cada componente conexa de un bosque dirigido le llamaremos árbol dirigido. En un árbol dirigido se llaman hojas a los vértices de exgrado cero (vértices maximales) y raı́ces a los de ingrado cero (vértices minimales). Si el árbol dirigido tiene n vértices, tanto la suma de ingrados como la suma de exgrados es n − 1. Si (x, y) es un arco se dice que x es un padre y que y es un hijo. Si hay un camino que une x con y diremos que el vértice y es un descendiente del vértice x y que el vértice x es un ascendiente del vértice y . Definición 70.- Se llama árbol con raı́z a un árbol dirigido con una única raı́z. Si (V, A) es un árbol con raı́z r y x es un vértice del árbol, llamaremos subárbol con raı́z x al subgrafo inducido en el conjunto formado por el vértice x y sus descendientes. Teorema 71.- Si (V, A) es un árbol dirigido, entonces: (V, A) es un árbol con raı́z ⇐⇒ tiene un vértice con ingrado cero y todos los demás tienen ingrado uno. 121 Demostración: =⇒c La raı́z r es el único vértice con ingrado cero. Si hubiera un vértice x con ing(x) ≥ 2, habrı́a dos arcos de la forma (y, x) y (z, x). Como el árbol es conexo, hay semicaminos que conectan r con y y r con z y, por tanto, la semitrayectoria cerrada r · · · yxz · · · r contiene un semiciclo, en contra de la definición de árbol dirigido. ⇐=c Hay un sólo vértice de ingrado cero luego es la única raı́z. Corolario 72.- En un árbol con raı́z, la raı́z r está unida a cualquier otro vértice x 6= r por un único camino. Demostración: Como es conexo (y finito) hay un semicamino x1 x2 x3 · · · xp−1 xp que conecta r = x1 con x = xp . Como ing(x1 ) = 0 entonces (x1 , x2 ) es un arco; como ing(x2 ) = 1 entonces (x2 , x3 ) es un arco; y, en general, como ing(xi ) = 1 entonces (xi , xi+1 ) es un arco, para 1 ≤ i ≤ p − 1. Luego el semicamino es un camino. Este camino es único, pues si hubiera dos entre ambos se formarı́a un semiciclo. Teorema 73.- Si (V, A) es un grafo dirigido, las siguientes condiciones son equivalentes: a) (V, A) es un árbol con raı́z. b) En (V, A) hay un vértice r tal que ing(r) = 0 y, para cada x 6= r , existe un único camino que conecta r con x. c) (V, A) es conexo y tiene un vértice r tal que ing(r) = 0 y, para cada x 6= r , ing(x) = 1. d) (V, A) es semiacı́clico y tiene un vértice r tal que ing(r) = 0 y, para cada x 6= r , ing(x) = 1. Demostración: a)⇒b) Es el corolario anterior. b)⇒c) Es conexo porque para todo par de vértices x, y existen caminos r · · · x, r · · · y y, por tanto, el semicamino x · · · r · · · y conecta x con y . Por otro lado, como para cada x 6= r hay un camino r · · · x, se tiene que ing(x) ≥ 1. Si ing(x) > 1 hay, al menos, dos arcos (y, x) y (z, x) con y 6= z ; y como hay caminos distintos r · · · y y r · · · z resulta que r · · · yx y r · · · zx son dos caminos distintos que conectan r con x, en contra de la hipótesis. c)⇒d) Si hubiera un semiciclo, dos arcos consecutivos no podrı́an incidir en un mismo vértice, pues éste tendrı́a ingrado mayor que uno, por lo que el semiciclo es un ciclo. Además, el vértice r no está en el ciclo, pues ing(r) = 0, pero está conectado (hipótesis) por un semicamino x1 x2 x3 · · · xp−1 x con el ciclo. (Ahora x1 = r y suponemos que x es el único vértice del ciclo en el semicamino). Como vimos en el corolario, este semicamino es un camino y, en consecuencia, en el vértice x incide el arco (xp−1 , x) y otro arco del ciclo, por lo que ing(x) > 1, en contra de la hipótesis. d)⇒a) Según el teorema anterior bastará probar que el digrafo es conexo. Si el digrafo no es conexo y x1 es un vértice que no está en la componente conexa del vértice r , entonces ing(x1 ) = 1 y, por tanto, hay un arco (x1 , x2 ). Como ing(x2 ) = 1 hay un arco (x2 , x3 ) y ası́ sucesivamente. Como el digrafo es finito, en la sucesión x1 x2 x3 · · · se llega a repetir algún vértice y, por tanto, se tiene un semiciclo, en contra de la hipótesis. 122 Definición 74.- Un árbol con raı́z es un árbol m-ario si todos sus vértices tienen exgrado menor o igual que m (cada padre tiene a lo sumo m hijos). Si m = 2 le llamaremos árbol binario. Un árbol con raı́z es un árbol m-ario regular si todos los vértices, que no sean hojas, tienen exgrado m (cada padre tiene exactamente m hijos). Se llama altura de un árbol con raı́z a la máxima longitud de sus caminos. Un árbol m-ario pleno es un árbol m-ario regular en el que todas las hojas tienen el mismo nivel (la altura del árbol). 5.8.1 Algoritmos de búsqueda en profundidad. Los árboles con raı́z se piensan como construidos desde la raı́z hacia abajo. Si son finitos también se pueden pensar desde las hojas hacia arriba construyendo, recursivamente, subárboles cada vez mayores. Ésta es la razón por la que los árboles con raı́z constituyen estructuras de datos naturales para programas de computación recursivos. Además podemos utilizar el principio general de inducción para probar hechos sobre conceptos definidos recursivamente. De ahı́ el interés de las siguientes definiciones recursivas de árbol con raı́z y de altura de un árbol con raı́z. Definición 75.[B] Un único vértice (árbol trivial) es un árbol con raı́z. [R] Si T1 = (V1 , A1 ), . . . , Tk = (Vk , Ak ) son árboles con raı́ces r1 , . . . , rk , si V1 , . . . , Vk son disjuntos dos a dos y si r ∈ / V1 ∪ · · · ∪ Vk , entonces T = (V, A), con V = {r} ∪ V1 ∪ · · · ∪ Vk y A = {(r, r1 ), . . . , (r, rk )} ∪ A1 ∪ · · · ∪ Ak , es un árbol con raı́z. Ası́ pues, r es una raı́z con hijos r1 , . . . , rk y los demás vértices tienen los mismos hijos que antes. T1 , . . . , Tk son subárboles con raı́ces r1 , . . . , rk del árbol con raı́z T . Definición 76.[B] El árbol trivial tiene altura cero. [R] Si T está definido como acabamos de hacer y los subárboles Ti tienen alturas hi , para cada 1 ≤ i ≤ k , entonces la altura del árbol T es 1 + máx{h1 , . . . , hk }. Los siguientes algoritmos se utilizan para listar los vértices de un árbol con raı́z. Listado en preorder 77.- Se lista la raı́z seguida de los subárboles de raı́ces los hijos de la raı́z. En el siguiente ejemplo, al listado de la izquierda le corresponde el dibujo de la derecha: T = Tr = rTv Ts = r(vTu Tw )(sTp Tq ) = rv(u)(wTx Ty Tz )s(p)(q) = rvuw(x)(y)(z)spq = rvuwxyzspq. r a s s H H @ º · HH @ ab v s aa H s Hs s @s @ A @ A º· @ w @ A aab A u @s s @s s As As s s p q @ ¹· ¹ ¹ ¸ ¹ ¸aaa A aba abb @ A s s @s s s As x y z aaba aabb aabc ¹ ¸ Es decir, se empieza en la raı́z y se gira en sentido contrario al de las agujas del reloj para terminar en la última hoja de la derecha. Este listado se llama también lexicográfico: a-aa-aaa-aab-aaba-aabb-aabc-ab-aba-abb. 123 Listado en postorder 78.- Se listan los subárboles de raı́ces los hijos de la raı́z seguidos de la raı́z. Como en el ejemplo siguiente: T = Tr = Tv Ts r = (Tu Tw v)(Tp Tq s)r = (u)(Tx Ty Tz w)v(p)(q)sr = u(x)(y)(z)wvpqsr = uxyzwvpqsr r sH HH ¾» HH s v s Hs @ @ ¾» @ @ w u s @s s @s p q @ ½» ½ ½¼ ½¼ @ s s @s x y z ½ ¼ - Es decir, se empieza en la raı́z, se gira en el sentido de las agujas del reloj para terminar en la última hoja de la izquierda y, finalmente, se invierte el orden. El siguiente algoritmo se utiliza para listar los vértices de un árbol binario regular. Listado en inorder 79.- Se lista la raı́z entre el subárbol de la izquierda y el subárbol de la derecha. En el ejemplo de la figura: T = Tr = Tv rTs = (Tu vTw )r(Tp sTq ) = (u)v(Tx wTy )r(p)s(Tm qTn ) u s = uv(x)w(y)rps(m)q(n) = uvxwyrpsmqn. r s HH HH v HHss s @ @ @ q @ w p s @s @s @ @ @ n @ y m x s @s s @s Bibliografı́a: • Grimaldi, Ch.R.B. (1997). “Matemáticas Discretas y Combinatoria”, 3a edición. Ed. Addison-Wesley Iberoamericana. Capı́tulos 11, 12 y 13. • Ross, K.A. (1990). “Matemáticas Discretas”. Ed. Prentice-Hall Hispanoamericana. Capı́tulos 8 y 9. • Rosen, K.H. (1995). “Discrete Mathematics and its applications”; 3a edición. Ed. McGraw-Hill International. Capı́tulos 7 y 8. 124 5.9 Problemas. 5.1 ¿Cuántos grafos distintos se pueden formar con cuatro vértices y 3 aristas? Dibujarlos, indicando cuales de ellos son isomorfos entre sı́. 5.2 ¿Son isomorfos los siguientes grafos? Justificar la respuesta construyendo los isomorfismos cuando corresponda. r r r r r r r r r r r r r r r r r G1 G2 r G3 5.3 ¿Son isomorfos los siguientes grafos?. r @ @r r r @ @r r r r r r G1 r r r r G2 r @ @r 5.4 Probar que en los grafos G1 , G2 y G3 siguientes no son isomorfos ningún par de ellos. s @ @ s s @s A A AAs AAs G1 s @ @ s s @s A A AAs AAs G2 s @ @ s s @s A A AAs AAs G3 s @ @ s s @s A A AAs AAs G4 El grafo G4 sı́ es isomorfo a uno de ellos: indica a cuál y da el isomorfismo 5.5 Prueba que los siguientes pares de grafos son isomorfos, dando un etiquetado en uno de los elementos de cada par y etiquetando de forma idéntica los vértices correspondientes del otro elemento del par. r A r A r A A A A A A r Ar Ar r r J J Jr r J J Jr r r @ @r r r r r r @ @r r r r r B J B J B J J B B J J B B J JB r Br Jr JBr 5.6 El grafo de la izquierda es una de las representaciones isomorfas del grafo de Petersen, pero la más conocida es una de las de la derecha. ¿Cuál de ellas? r r QQAA r Qr A E A r Ar E Ar H AAHH E r H E A Er Ar r HH H Hr r r HH HHr LL r L AAr r L A Lr Ar G1 5.7 Sea G = (V, A) un grafo simple finito. Probar que P r H HH Hr r r H LL Hr B r Q B L QBr rQ L A Ar Lr G2 gr(x) = 2 |A| y deducir de ello que x∈V un grafo no puede tener un número impar de vértices de grado impar. Si G es un multigrafo ¿son también ciertos los resultados anteriores? 125 5.8 Etiqueta los vértices y las aristas del multigrafo de los puentes de Königsberg y encuentra, si existen: a) Una trayectoria que no sea cola, una cola que no sea camino y un camino. b) Una trayectoria cerrada que no sea circuito, un circuito que no sea ciclo y un ciclo. c) Un subgrafo inducido conexo y otro no conexo. d) Un subgrafo parcial conexo y acı́clico. e) Un subgrafo parcial no conexo y no acı́clico. 5.9 Para cada uno de los grafos G1 y G2 del ejercicio 5.6 encontrar, al menos, tres ciclos de longitudes distintas. Usar esto para probar que no pueden ser isomorfos. 5.10 ¿Alguno de los dibujos siguientes puede hacerse de un sólo trazo y sin repintar ninguna arista? ¿Cómo? r @ @ r @ @ @r @ r r @ @ @ @r r r @ @ @ @r r @ @ @ @r 5.11 La Zona 72 de gestión de carreteras se ocupa de la red viaria entre las 6 ciudades del área. Hay carretera entre A y C , A y E , B y C , B y D , B y F , C y D , C y E , y entre E y D. Dibujar un grafo para modelar esta situación. ¿Es suficiente con esta red para asegurar la interconexión entre todas las ciudades? En poco tiempo se inaugurará otra carretera entre las ciudades E y F . Coincidiendo con la entrada en servicio de esta carretera, se pondrá en funcionamiento una máquina para el control y reparación de la red pero, dado su elevado gasto, debe planificarse su uso para evitar, si es posible, que la máquina recorra las vı́as más de una vez. ¿Puede elegirse una de las ciudades de manera que se cumpla el objetivo y que sólo haya que contruir un hangar para guardar la máquina? Si es posible, ¿dónde? y si no lo es, ¿bastarı́a con dos hangares en ciudades distintas? ¿Cuál serı́a el recorrido de ser posible? 5.12 Al visitar la casa de los horrores, Pablo y David intentan imaginarse si podrı́an pasar por las siete habitaciones y el pasillo que las rodea cruzando cada puerta exactamente una vez. ¿Pueden lograr su objetivo si deben empezar desde la posición del pasillo marcada con el asterisco “∗” en la figura siguiente? Razonar la respuesta. ∗ 5.13 Considerar los grafos G1 y G2 del ejercicio 5.6. ¿Admiten caminos hamiltonianos?, ¿admiten ciclos hamiltonianos? 126 5.14 Sea M la matriz de adyacencia de un grafo G etiquetado con E = {x1 , x2 , x3 , x4 , x5 , x6 } 0 1 1 M = 0 0 1 1 0 1 0 0 1 1 1 0 1 1 0 0 0 1 0 0 1 0 0 1 0 0 1 1 1 0 1 1 0 a) Utilizar la matriz para encontrar los vértices de mayor y menor grado. ¿Admite cola euleriana o circuito euleriano? b) Encuentra, haciendo el menor número de operaciones posibles en la matriz, el número de trayectorias de longitud 2 de x2 a x3 y el número de trayectorias de longitud 3 de x2 a x6 pasando por x3 . c) Definimos sobre el grafo la función peso siguiente w({xi , xj }) = i + j . Dar la matriz de pesos. d) Dar una representación gráfica del grafo. 5.15 Construir la matriz de adyacencia del grafo de la derecha. Usar dicha matriz para responder a las siguientes preguntas: a) Entre dos vértices cualesquiera ¿existe siempre una trayectoria de longitud 2? ¿y de longitud 3? b) ¿Cuántas trayectorias de longitud 3 hay del vértice x1 al x3 ? ¿y de x1 a x5 ? Descrı́belas con el grafo. sx1 @ @ @ sx2 @ @ @ @ s x4 sx3 @ @s x5 @ @ @s x6 c) Definimos sobre el grafo la función peso: w({xi , xj }) = 2 · mı́n{i, j} + máx{i, j}. Dar la matriz de pesos. d) Usar el algoritmo de Dijkstra para obtener los pesos mı́nimos del vértice x6 a los demás vértices. 5.16 Utilizar el algoritmo de Dijkstra para encontrar, en cada uno de los grafos, los pesos mı́nimos desde el vértice a a los demás. a s @ 4 a sHH4 s Hs @ A 2 3 1 1 A 2@ 4 s As @s A 2 @ 5 1 3A 4 4@ AsH @s HHs 6 5 s 2 @5 @s 2 4 3 3 1 1 s @ 4 @3 @s s 6 Para el primer grafo, encuentra la matriz de pesos mı́nimos mediante el algoritmo de Warshall. 5.17 Una empresa de autobuses tiene que ir de la ciudad A a la ciudad D recogiendo viajeros en la ciudad C . Las distancias en kilómetros entre las cinco ciudades A, B, C, D, y E por 127 las que puede pasar se dan en la tabla A A 0 B 20 C 80 D 50 E 30 B 20 0 60 70 ∞ C 80 60 0 90 40 D 50 70 90 0 10 E 30 ∞ 40 10 0 ¿Qué recorrido le conviene realizar a la empresa?. 5.18 Una empresa desea abrir sucursales en cinco ciudades A, B , C , D y E . Una de estas sucursales actuará como central y será necesario el envı́o de camiones de la central al resto. Cada camión sólo podrá abastecer a una de las sucursales. Las distancias entre ciudades en kilómetros son: 300 entre A y B , 500 entre A y D , 200 entre B y C , 600 entre B y D , 400 entre C y E y 100 entre E y D . a) ¿En qué ciudad interesa montar la central? b) La empresa quiere inspeccionar las carreteras recorriendo la menor distancia posible. ¿Qué recorrido deberá efectuar? Razonar la respuesta. c) ¿Es posible visitar las cinco sucursales sin pasar por una misma ciudad dos veces? Razonar la respuesta. d) Está previsto construir una carretera de 250 kilómetros que una las ciudades A y E . ¿Qué recorrido propondrı́as entonces para los apartados b) y c)? Razonar la respuesta. 5.19 a) Construir todos los grafos dirigidos con dos vértices. b) Construir todos los grafos dirigidos no etiquetados con tres vértices. 5.20 Agrupar por isomorfismo los digrafos con 3 vértices y 2 arcos que aparecen en la figura 5.2 de la página 112. 5.21 Indicar cuáles de los siguientes digrafos son isomorfos y cuales no, indicando el isomorfismo cuando haya lugar. s @ @ @ Rs s J A J AU s ^ s s A s @ @ Rs @ sX XX 9 AK z s A As s s COC C s s Q ? 9C s Q Q C sCs Q s Q 5.22 Para el digrafo de la figura se pide: a) El ingrado, el exgrado y el grado de cada vértice. b) Los minimales y maximales. c) Trayectorias que vayan desde x4 a cada uno de los otros vértices. ¿Es conexo? d) Una trayectoria que no sea cola, una cola que no sea camino y un camino. e) Hallar su matriz de adyacencia y usarla para probar que no es acı́clico. ¿Hay ciclos de longitud 3 y 4? 128 x2 s @ I 6 @ @s x1 x4 s @ I @ @s & x3 5.23 ¿Son isomorfos los multidigrafos de matrices M1 y M2 ? 0 0 0 M1 = 1 0 1 0 0 0 5.24 Sea M = 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 1 1 0 0 1 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 M2 = 0 1 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 0 0 1 1 0 la matriz de un grafo dirigido D . 0 0 0 Utilizar sólo matrices para justificar las respuestas a las siguientes preguntas: a) Determinar los pozos, las fuentes y los vértices aislados de D , si los hay. b) Hallar el número de trayectorias de longitud 3 del vértice 1 al vértice 4 de D . c) Construir la matriz de adyacencia del grafo no dirigido GD subyacente a D . ¿Hay en GD una cola euleriana? ¿Y un circuito euleriano? 5.25 Sea W la matriz de pesos de un grafo dirigido con vértices V = {x1 , x2 , . . . , x7 }. Obtener a partir de ella: W = a) Las fuentes, pozos, exgrado máximo, los puntos de ingrado máximo y las componentes conexas, b) un ciclo de longitud 3 partiendo de x2 . ¿Hay algún otro?, ∞ ∞ 2 ∞ ∞ 3 ∞ 4 ∞ 8 1 ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ 8 ∞ ∞ 4 3 ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ 1 ∞ ∞ ∞ ∞ 2 2 ∞ ∞ ∞ 7 ∞ c) el número de trayectorias de longitud 2 que parten de x3 , d) el número de trayectorias de longitud 3 que conectan x3 con x7 . Aplicar el algoritmo de Dijkstra para encontrar los pesos mı́nimos desde x3 . 5.26 La siguiente figura corresponde a un plano de calles con las direcciones de circulación y el tiempo en minutos que se necesita para recorrer cada tramo. A 3 7 6 C - 5 2 D 5 E - 3 ? B ? 6 - F Si un taller sito en la plaza B tiene que hacer una entrega en la plaza F , calcular el tiempo mı́nimo que necesita el repartidor para estar de nuevo disponible en el taller. ¿Cuál es el recorrido correspondiente? 129 5.27 Para cada uno de los siguientes digrafos de 4 vértices, indica si son simétricos, antisimétricos, transitivos y/o acı́clicos. r 6 r -r 6 -r -r r I @ 6 @ @ @? r r r 6 r r r - -? r r - r r ? 6 r r 5.28 ¿Puede darse un etiquetado naturalmente ordenado al digrafo de la derecha? Justificar en caso negativo y construirlo en caso positivo. Asignar a cada arco el peso w(vi , vj ) = |i − j| y usar el algoritmo de Dijkstra para encontrar los pesos mı́nimos del vértice v6 a los demás vértices. 5.29 Encontrar un etiquetado naturalmente ordenado para el digrafo representado a la derecha. -r ? 6 r r - r ? ? 6 6 r r v2 H s sv6 @ 6HH @ v3H R s @ H jv5s H Y H H H I @ HH @ H v1 s sv4 @? B -s @ @ D RsE @ C s - s i P PP YH H PP H HH PP PPs? ? Hs H s G F A s 5.30 Sea (V, A) el digrafo acı́clico dado por la figura siguiente: a) Dar su clasificación en niveles y dibujarlo por niveles. b) Dar un etiquetado naturalmente ordenado por niveles. c) Construir una cola euleriana en el grafo no dirigido subyacente. -8s $ @ 5s @ @ R s - s s11 7 9 I @ 6 6 @ 1s 10s @s6 ' $ 6 6 s? s? % & 2@ 3 @ @ R s & % 4 ' 5.31 Para el digrafo del ejercicio 5.29, dar su clasificación en niveles, dibujarlo por niveles y dotarlo de un etiquetado naturalmente ordenado por niveles. 5.32 a) Probar que la suma de los grados de los n vértices de un árbol es 2n − 2. b) Hallar el número de vértices y de aristas de un árbol que tiene tres vértices de grado 2, dos de grado 3, uno de grado 4 y los restantes de grado 1. 5.33 Probar que hay un árbol con seis vértices de grado 1, uno de grado 2, uno de grado 3 y uno de grado 5. 5.34 Utilizar el algoritmo de Kruskal para encontrar un árbol generador mı́nimo para cada grafo de la figura. Hallar sus pesos. s @ 4 x sH H4Hs s @ 3 1 A 2 1 A 2@ s As @s 4 A 2 @ 5 1 3A 4 4@ As @s HH 6 Hs 5 s 2 @5 @s 2 4 3 3 1 1 s x @ 4 @3 s @s 6 130 5.35 Utilizar el algoritmo de Prim para encontrar un árbol generador mı́nimo para cada grafo de la figura anterior, empezando con el vértice etiquetado con x. 5.36 La tabla expresa las longitudes en decenas de kilómetros de varias carreteras conectando seis ciudades gallegas C, V, L, O, S y P . Representar mediante un grafo no dirigido el mapa de carreteras y dibujar un árbol generador mı́nimo. C C − S S 7 − P P − 6 − V V − − 5 − L L 9 10 − − − O O − 11 − 11 10 − 5.37 Telefónica tendió demasiadas lı́neas telefónicas entre un grupo de casas. En el grafo de la figura, los vértices son las casas y las aristas las lı́neas telefónicas. El peso de cada arista representa la longitud de la lı́nea. La compañı́a desea quitar las lı́neas sobrantes, de forma que dos casas cualesquiera sigan conectadas, y la longitud total del tendido sea la mı́nima posible. ¿Qué lı́neas hay que quitar? Dibújese el grafo resultante. a t @ @ 9 @ @ 3 f b t 10 10 t 11 5 t k 4 c t @ 7 12 8 @ g @t @ 3 @ 7 @ 13 @ t l 10 d t @ 13 @ 9 6 @ @ i h 5 @t t @ 10 4 @ @t 9 m 8 e t 4 5 8 11 t @ 3 @ 12 @ t n 5.38 Para el árbol de la figura, dar el número de padres, el número de hijos y el número de hojas. Añadir el mı́nimo número de arcos para obtener un árbol binario regular. j 12 @ @t 11 o 2r A 1r @ @ @3r 4r AAr5 A 7r AAr8 A 9r AAr 10 r 6 r 11 5.39 Dibujar recorridos gráficos que representen los listados de los vértices en PREORDER y POSTORDER de los árboles de la figura. r s @ @ s @s A A A Asz u s Asq w s C C C C v s Csy t s Csp x s A r s @ @ s @s A A A As z p s Asq v s C C C C x s Csy s u Cst w s A 131 r s @ @ u t @s s A A A A Asw p s q s As s x s A A v s y s As z 5.40 Dar un listado en INORDER de los vértices del árbol etiquetado de la figura. s @ @ 1 @s A A A 00 s As01 s As 11 10 C C C C 000 s Cs 001 110 s Cs 111 C C 1100 s Cs 1101 0 s A 5.41 a) Listar en PREORDER y POSTORDER los vértices del árbol de la figura. 1 sH H HH 3 HH4s s @ A A A@ A 5 s 6 s 7 s 8 As@ 9 s s s As12 A 10 11 A A A 13 s As14 15 s 16 As 2 s b) Eliminar el menor número posible de vértices para construir un subgrafo de T que sea un árbol binario. A partir de éste, añadiendo el menor número posible de aristas, construir un árbol binario regular y listar sus vértices en INORDER. 132