




























































































Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
teoria de grafos libro utilizado
Tipo: Apuntes
1 / 110
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!





























































































Grafos, grafos dirigidos, árboles y árboles binarios se utilizan en muchas áreas de las matemáticas y de la computación. Dichos temas se cubrirán en este capítulo y en los dos próximos. No obstante, con el fin de comprender cómo se alma- cenan estos objetos en la memoria y entender sus algoritmos, es necesario conocer ciertas estructuras de datos. Aquí se supondrá que el lector comprende los arreglos lineales y bidimensionales; por tanto, a continuación sólo se estudia- rán listas ligadas y apuntadores, así como pilas y colas.
Las listas ligadas y los apuntadores se presentarán por medio de un ejemplo. Suponga que una empresa de correduría mantiene un archivo en el que cada registro contiene el nombre de un cliente y el de un vendedor; por ejemplo, el archivo contiene los datos siguientes:
Cliente Adams Brown Clark Drew Evans Farmer Geller Hiller Infeld Vendedor Smith Ray Ray Jones Smith Jones Ray Smith Ray
Hay dos operaciones básicas que a veces es necesario efectuar con los datos:
Operación A : dado el nombre de un cliente, encontrar su vendedor. Operación B : dado el nombre de un vendedor, encontrar la lista de sus clientes.
Enseguida se analizan varias formas para almacenar los datos en una computadora, así como la facilidad con que es posible realizar las operaciones A y B con los datos. Resulta evidente que el archivo se puede almacenar en la computadora por medio de un arreglo con dos renglones (o columnas) de nueve nombres. Puesto que los nombres de los clientes están en orden alfabético, es fácil efectuar la operación A. No obstante, para efectuar la operación B es necesario buscar a través de todo el arreglo. Es fácil almacenar los datos en la memoria si usa un arreglo bidimensional en el que, por ejemplo, los renglones correspondan a una lista en orden alfabético de los nombres de los clientes y las columnas correspondan a una lista en orden alfabético de los nombres de los vendedores, y en cuya matriz haya un 1 que indica el vendedor de un cliente y haya ceros en el resto de la matriz. La desventaja más importante de esta representación es que se desperdicia bastan- te memoria debido a que en la matriz puede haber muchos ceros. Por ejemplo, si la firma tiene 1 000 clientes y 20 vendedores, podría ser necesario contar con 20 000 localizaciones de memoria para los datos, aunque sólo 1 000 de ellas serían útiles. A continuación se analiza una forma para almacenar los datos en la memoria, en la cual se utilizan listas ligadas y apuntadores. Una lista ligada es una colección lineal de elementos de datos, denominados nodos , en la que el orden lineal se proporciona por medio de un campo de apuntadores. La figura 8-1 es un esquema de una lista ligada con seis nodos. Cada nodo está dividido en dos partes: la primera contiene la información del elemento (por ejemplo, NAME, ADDRESS,.. .) y la segunda parte, denominada campo liga ( link field ) o campo apuntador al siguiente elemento
Teoría de
grafos
CAPÍTULO
( nextpointer field ), contiene la dirección del siguiente nodo en la lista. Este campo apuntador se indica con una flecha trazada de un nodo al siguiente nodo en la lista. En la figura 8-1 también hay un apuntador variable, denominado START, que proporciona la dirección del primer nodo en la lista. Además, el campo apuntador del último nodo con- tiene una dirección no válida, denominada apuntador nulo , que indica el fin de la lista.
Una forma primordial para almacenar los datos originales representados en la figura 8-2 utiliza listas ligadas. Observe que hay arreglos por separado (en orden alfabético) para los nombres de clientes y de los vendedores. También hay un arreglo apuntador SLSM paralelo a CUSTOMER que proporciona la ubicación del vendedor de un cliente, de modo que la operación A puede efectuarse muy rápida y fácilmente. Además, la lista de clientes de cada vendedor es una lista ligada, como ya se analizó. En efecto, hay un arreglo apuntador START paralelo a SALESMAN que indica al primer cliente de un vendedor, y hay un arreglo NEXT que indica la ubicación del siguiente cliente en la lista del vendedor (o contiene un 0 para indicar el fin de la lista). Este proceso se indica mediante las flechas en la figura 8- para el vendedor Ray.
Ahora la operación B puede efectuarse fácil y rápidamente; no es necesario buscar en la lista de todos los clientes para obtener la lista de clientes de un vendedor dado. En la figura 8-3 se proporciona un algoritmo así (que está escri- to en pseudocódigo).
Además de los arreglos y las listas ligadas hay otras estructuras de datos que aparecen en los algoritmos de grafos. Estas estructuras, pilas, colas y colas prioritarias se describen brevemente a continuación.
a ) Pila: también denominada sistema último en entrar, primero en salir (LIFO: last-in, first-out ), es una lista lineal tal que las inserciones y las eliminaciones pueden llevarse a cabo sólo en un extremo, denominado “parte superior” de la lista. Esta estructura es semejante en su operación a una pila de platos montada en un sistema de resorte, como se muestra en la figura 8-4 a ). Observe que los nuevos platos se insertan sólo en la parte superior de la pila y que los platos pueden retirarse sólo de la parte superior de la pila.
Parte correspondiente a la información del tercer nodo
Campo apuntador al tercer nodo
Figura 8-1 Lista ligada con seis nodos
Figura 8-
Cliente Vendedor
Los vértices u y v son adyacentes o vecinos si hay una arista e = { u , v}. En este caso, u y v se denominan extremos de e , y se dice que e conecta o une u y v, o también que la arista e es incidente (o que incide) en cada uno de sus extre- mos u y v. Los grafos se representan mediante diagramas en el plano de forma natural. Específicamente, cada vértice v en V se representa por un punto (o un círculo pequeño), y cada arista e = {v 1 , v 2 } se representa por una curva que une sus puntos extremos v 1 y v 2. Por ejemplo, la figura 8-5 a ) representa el grafo G (V, E ), donde:
i ) V consta de los vértices A , B , C , D. ii ) E consta de las aristas e 1 = { A , B }, e 2 = { B , C }, e 3 = { C , D }, e 4 = { A , C }, e 5 = { B , D }.
De hecho, un grafo suele denotarse al trazar su diagrama en lugar de enumerar explícitamente sus vértices y aristas.
Considere el diagrama en la figura 8-5 b ). Las aristas e 4 y e 5 se denominan aristas múltiples puesto que unen los mismos puntos extremos, y la arista e 6 se denomina lazo porque sus extremos tienen el mismo vértice. Este diagrama se deno- mina multigrafo ; la definición formal de grafo no permite aristas múltiples ni lazos. Por tanto, un grafo se define como un multigrafo sin aristas múltiples ni lazos.
Observación: En algunos textos el término grafo se usa para incluir multigrafos y el término grafo simple para indi- car un grafo sin aristas múltiples ni lazos.
El grado de un vértice v en un grafo G , se escribe grd(v), es igual al número de aristas en G que contienen a v; es decir, que inciden sobre v. Puesto que cada arista se cuenta dos veces al contar los grados de los vértices de G , se tiene el siguiente resultado sencillo pero importante.
Teorema 8.1: La suma de los grados de los vértices de un grafo G es igual al doble del número de aristas en G.
Considere, por ejemplo, el grafo de la figura 8-5 a ). Se tiene
grd( A ) = 2, grd( B ) = 3, grd( C ) = 3, grd( D ) = 2.
La suma de los grados es igual a 10 que, como era de esperar, es el doble del número de aristas. Un vértice es par o impar si su grado es un número par o impar. Por tanto, A y D son vértices pares, mientras B y C son vértices impares. El teorema 8.1 también se cumple para multigrafos en las que un lazo se cuenta dos veces para el grado de ese vértice. Por ejemplo, en la figura 8-5 b ) se tiene grd( D ) = 4, puesto que la arista e 6 se cuenta dos veces; por tanto, D es un vértice par_._ Un vértice de grado cero se denomina vértice aislado.
Figura 8-
a ) Grafo b ) Multigrafo
A
e 1
B
D
C
A
B
D
C
e 3
e 2
e 4 e 5
e 1
e 2 e 3
e 4
e 5
e 6
Un multigrafo se dice que es finito si tiene un número finito de vértices y de aristas. Observe como una consecuencia que un grafo con un número finito de vértices y aristas tiene que ser finito. Un grafo con un SÓLO vértice sin ningu- na arista, un punto, se llama grafo trivial. A menos que se especifique otra cosa, en este libro los multigrafos son finitos.
En esta sección se analizan relaciones importantes entre grafos.
Considere un grafo G = G (V, E ). Un grafo H = H (V′, E ′) se denomina subgrafo de G si los vértices y las aristas de H están contenidas en los vértices y en las aristas de G ; es decir, si V′^ ⊆ V y E ′^ ⊆ E. En particular:
i ) Un subgrafo H (V′, E ′) de G (V, E ) se denomina subgrafo inducido por sus vértices V′^ si su conjunto de aristas E ′ contiene todas las aristas en G cuyos puntos extremos pertenecen a los vértices en H. ii ) Si v es un vértice en G , entonces G − v es el subgrafo de G obtenida al eliminar v de G y al eliminar todas las aristas en G que contienen a v. iii ) Si e es una arista en G , entonces G − e es el subgrafo de G obtenido al eliminar la arista e de G. Grafos iso- morfos
Se dice que los grafos G (V, E ) y G ∗(V ∗, E ∗) son isomorfos si existe una correspondencia uno a uno f ; V → V ∗^ tal que { u , v} es una arista de G si y sólo si { f ( u ), f (v)} es una arista de G ∗. Normalmente no se establece ninguna diferencia entre grafos isomorfos (aun cuando sus diagramas puedan “parecer diferentes”). En la figura 8-6 se proporcionan 10 grafos representados como letras; puede observar que A y R son grafos isomorfos, también lo son F y T , K y X son grafos isomorfos y M , S , V y Z también lo son.
Dado cualquier grafo G , es posible obtener un nuevo grafo al dividir una arista de G con vértices adicionales. Dos grafos G y G ∗^ son homeomorfos , si es posible obtenerlos a partir del mismo grafo o grafos isomorfos al aplicar este método. Los grafos a ) y b ) en la figura 8-7 no son isomorfos, aunque son homoeomorfos puesto que pueden obtenerse a partir del grafo c ) al agregar vértices apropiados.
Figura 8-
Un grafo G es conexo si existe un camino entre dos de sus vértices. El grafo en la figura 8-8 a ) es conexo, pero el grafo en la figura 8-8 b ) no es conexo ya que, por ejemplo, entre los vértices D y E no hay ningún camino. Suponga que G es un grafo. Un subgrafo conexo H de G se denomina componente conexo de G si H no está con- tenido en ningún subgrafo conexo más grande de G. Resulta intuitivamente claro que cualquier grafo G puede partirse en sus componentes conexos. Por ejemplo, el grafo G en la figura 8-8 b ) tiene tres componentes conexos, los subgrafos inducidos por los conjuntos de vértices { A , C , D }, { E , F } y { B }. El vértice B en la figura 8-8 b ) se denomina vértice aislado porque B no pertenece a ninguna arista o, en otras pala- bras, grd( B ) = 0. En consecuencia, como se observó, B mismo forma un componente conexo del grafo.
Observación: En términos formales, en el supuesto de que cualquier vértice u esté unido consigo mismo, la relación “ u está unido con v” es una relación de equivalencia sobre el conjunto de vértices de un grafo G y las clases de equi- valencia de la relación constituyen los componentes conexos de G.
Considere un grafo conexo G. La distancia entre los vértices u y v en G , que se escribe d ( u , v), es la longitud de la ruta más corta entre u y v. El diámetro de G , lo cual se escribe diám( G ), es la distancia máxima entre dos puntos cuales- quiera en G. Por ejemplo, en la figura 8-9 a ), d ( A , F ) = 2 y diám( G ) = 3, mientras que en la figura 8-9 b ), d ( A , F ) = 3 y diám( G ) = 4.
Sea G un grafo conexo. Un vértice v en G se denomina punto de corte si G − v es disconexo. (Recuerde que G − v es el grafo obtenido a partir de G al eliminar v y todos las aristas que contienen a v.) Una arista e de G se denomina puente si G − e es disconexo. (Recuerde que G − e es el grafo obtenido a partir de G al eliminar la arista e .) En la figura 8-9 a ), el vértice D es un punto de corte y no hay puentes. En la figura 8-9 b ), la arista { D , F } es un puente. (Sus puntos extremos D y F son necesariamente puntos de corte.)
En el siglo XVIII el oriental pueblo prusiano de Königsberg incluía dos islas y siete puentes, como se muestra en la figura 8-10 a ). Pregunta: si una persona empieza en cualquier punto y termina en cualquier punto, ¿es posible que reco- rra el pueblo de modo que cruce los siete puentes sin cruzar ninguno dos veces? Los ciudadanos de Königsberg escri- bieron al célebre matemático suizo L. Euler sobre esta cuestión. Euler demostró en 1736 que tal recorrido es imposible; sustituyó las islas y las dos orillas del río por puntos y los puentes por curvas, con lo que obtuvo la figura 8-10 b ). Observe que la figura 8-10 b ) es un multigrafo. Se dice que un multigrafo es recorrible si “la curva puede trazarse sin interrupciones y sin que pase dos veces por cualquiera de las aristas”; es decir, si existe un camino que incluya todos los vértices y use cada arista exactamente una vez. Tal camino debe ser un recorrido (puesto que ninguna arista se usa dos veces), y se denomina recorrido atravesable o recorrible. Resulta evidente que un multigrafo recorrible debe ser finito y conexo.
Figura 8-
A continuación se mostrará cómo Euler probó que el multigrafo en la figura 8-10 b ) no es recorrible y, por tanto, que el recorrido a pie de Königsberg es imposible. Primero recuerde que un vértice es par o impar si su grado es un número par o impar. Suponga que un multigrafo es recorrible y que un recorrido atravesable no empieza o termina en un vértice P. Se afirma que P es un vértice par. Ya que siempre que el recorrido atravesable entra a P por una arista, siempre debe haber una arista no usada previamente por el cual el recorrido puede abandonar P. En consecuencia, las aristas del recorrido incidente con P deben aparecer por pares, de modo que P es un vértice par. Por consiguiente, si un vértice Q es impar, entonces el recorrido atravesable debe empezar o terminar en Q. En consecuencia, un multigra- fo con más de dos vértices impares no puede ser recorrible. Observe que el multigrafo correspondiente al problema de los puentes de Königsberg tiene cuatro vértices impares. Por tanto, no es posible recorrer Königsberg de modo que cada puente se cruce exactamente una vez. Euler realmente demostró lo contrario del planteamiento anterior, que está contenido en los siguientes teorema y corolario. (El teorema se demuestra en el problema 8.9.). Un grafo G se denomina grafo euleriano si existe un reco- rrido atravesable cerrado, denominado recorrido euleriano.
Teorema 8.3 (de Euler): Un grafo conexo finito es euleriano si y sólo si cualquier vértice tiene grado par.
Corolario 8.4: Cualquier grafo conexo finito con dos vértices impares es recorrible. Un recorrido atravesable puede empezar en cualquier vértice impar y terminar en el otro vértice impar.
En el análisis anterior sobre los grafos Eulerianos se recalcaron las aristas recorridas; aquí la atención se centra en la visita de vértices. Un circuito hamiltoniano en un grafo G , así denominado en honor del matemático irlandés del siglo XIX William Hamilton (1803-1865) es un camino cerrado que visita todos los vértices en G exactamente una vez. (Este camino cerrado debe ser un ciclo.) Si G admite un circuito hamiltoniano, entonces G se denomina grafo hamiltoniano. Observe que un circuito de Euler recorre cada arista exactamente una vez, aunque puede repetir vértices, mientras que un circuito hamiltoniano visita cada vértice exactamente una vez aunque puede repetir aristas. En la figura 8-11 se proporciona un ejemplo de uno que es hamiltoniano pero no euleriano y viceversa.
a ) Königsberg en 1736 b ) Representación gráfica de Euler
Figura 8-
Figura 8-
a ) Hamiltoniano pero no euleriano b ) Euleriano pero no hamiltoniano
A (^) B
C
D
A (^) B
C
D
los grafos regulares pueden ser bastante complicados. Por ejemplo, hay 19 grafos 3-regular con 10 vértices. Observe que la gráfica completa con n vértices Kn es regular de grado n − 1.
Un grafo G es bipartido si sus vértices V pueden partirse en dos subconjuntos M y N tales que cada arista de G une un vértice de M con un vértice de N. Por un grafo bipartido completo se entiende que cada vértice de M está unido a cada vértice de N ; este grafo se denota por Km , n , donde m es el número de vértices en M y n es el número de vértices en N y, por razones de estandarización, se supone m ≤ n. En la figura 8-16 se muestran los grafos K 2,3 , K 3,3 y K 2,. Resulta evidente que el grafo Km , n tiene mn aristas.
Figura 8-
K 1 = vértice aislado: K 2 = segmento de línea: K 3 = triángulo:
Figura 8-
i ) 0-regular ii ) 1-regular iii ) 2-regular
Figura 8-
3-regular
Un grafo T se denomina árbol si T es conexo y T no tiene ciclos. En la figura 8-17 se muestran ejemplos de árbo- les. Un bosque G es un grafo sin ciclos; por tanto, los componentes conexos de un bosque G son árboles. Un grafo sin ciclos es libre de ciclos. El árbol que consta de un solo vértice sin aristas se denomina árbol degenerado. Considere un árbol T. Resulta evidente que sólo hay un camino simple entre dos vértices de T ; en caso contrario, los dos caminos formarían un ciclo. También:
a ) Suponga que en T no hay ninguna arista { u , v} y que a T se agrega la arista e = { u , v}. Entonces el camino simple de u a v en T y e forma un ciclo; por tanto, T ya no es un árbol. b ) Por otra parte, suponga que en T hay una arista e = { u , v}, y que de T se elimina e. Entonces T ya no es conexo (puesto que no puede haber ningún camino de u a v); así, T ya no es un árbol.
El siguiente teorema (demostrado en el problema 8.14) es válido cuando los grafos son finitos.
Teorema 8.6: Sea G un grafo con n > 1 vértices. Entonces las siguientes afirmaciones son equivalentes:
i ) G es un árbol. ii ) G es libre de ciclos y tiene n − 1 aristas. iii ) G es conexo y tiene n − 1 aristas. Este teorema también indica que un árbol finito con n vértices debe tener n − 1 aristas. Por ejemplo, el árbol en la figura 8-17 a ) tiene 9 vértices y 8 aristas, y el árbol en la figura 8-17 b ) tiene 13 vértices y 12 aristas.
Figura 8-
Figura 8-
Un subgrafo T de un grafo conexo G se denomina árbol de expansión de G si T es un árbol y T incluye a todos los vértices de G. En la figura 8-18 se muestra un grafo conexo G y árboles de expansión T 1 , T 2 y T 3 de G.
v 1
a
K 2,
x
y 8
K 3,3 K 2,
v 4
v 2 v 3
v 5 v 6
v 7 v 8 v 9
b
c
d
r
v
u (^) w
t^ z a ) b )
Así, el árbol de expansión mínima de Q que se obtiene contiene las aristas BE , CE , AE , DF , BD El peso del árbol de expansión es 24 y se muestra en la figura 8-20 b ).
b ) Aquí se aplica el algoritmo 8.3.
Primero se ordenan las aristas en orden creciente de peso y enseguida se agregan las aristas sin formar ningún ciclo hasta que se incluyen cinco aristas. Así se obtienen los datos siguientes: Aristas BD AE DF BF CE AC AF BE BC Peso 3 4 4 5 6 7 7 7 8 ¿Agregar? Sí Sí Sí No Sí No Sí Así, el árbol de expansión mínima de Q contiene las aristas BD , AE , DF , CE , AF El árbol de expansión se muestra en la figura 8-20c). Observe que este árbol de expansión no es el mismo que se obtuvo al usar el algoritmo 8.2 y que, como era de esperar, su peso también es 24.
Observación: Los algoritmos anteriores se ejecutan fácilmente cuando el grafo G es relativamente pequeño, como en la figura 8-20 a ). Suponga que G tiene docenas de vértices y centenas de aristas que, por ejemplo, se proporcionan mediante una lista de pares de vértices. Entonces decidir si G es conexo no es evidente; puede ser necesario algún tipo de algoritmo de búsqueda en profundidad en grafos (DFS: Deep-first search) o de búsqueda en anchura (BFS: Breadth- first search) en grafos. En secciones ulteriores y en el siguiente capítulo se analizan formas para representar grafos G en la memoria y se abordarán varios algoritmos para grafos.
Un grafo o un multigrafo es plano cuando puede trazarse en el plano de modo que sus aristas no se crucen. Aunque grafo completo K 4 con cuatro vértices suele representarse con aristas cruzadas como en la figura 8-21 a ), también puede trazarse de modo que sus aristas no se crucen, como en la figura 8-21 b ); por tanto, K 4 es plano. Los árboles constituyen una clase importante de grafos planos. En esta sección se presentan estos grafos importantes.
Figura 8-
Figura 8-
a ) b )
Una representación plana particular de un multigrafo plano finito se denomina mapa. Se dice que el mapa es conexo si el multigrafo subyacente es conexo. Un mapa dado divide el plano en varias regiones. Por ejemplo, el mapa en la figura 8-22 con seis vértices y nueve aristas divide el plano en cinco regiones. Observe que cuatro de las regiones están acota- das y que la quinta región, fuera del diagrama, no está acotada. Así, no hay pérdida de generalidad al contar el número de regiones, si se supone que el mapa está contenido en algún gran rectángulo, en lugar de estarlo en todo el plano. Observe que la frontera de cada región de un mapa consta de aristas. Algunas veces las aristas forman un ciclo, pero algunas veces no es así. Por ejemplo, en la figura 8-22 las fronteras de todas las regiones son ciclos excepto para r 3. No obstante, si se realiza un movimiento en el sentido contrario al movimiento de las manecillas del reloj alrededor de r 3 empezando, por ejemplo, en el vértice C , entonces se obtiene el camino cerrado
( C , D , E , F , E , C )
donde la arista { E , F } ocurre dos veces. Por el grado de una región r , que se escribe grd( r ), se entiende la longitud del ciclo o camino cerrado que rodea r. Observe que cada arista delimita dos regiones o está contenida en una región y ocurre dos veces en cualquier recorrido a lo largo de la frontera de la región. Por tanto, se tiene un teorema para regio- nes que es semejante al teorema 8.1 para vértices.
Teorema 8.7: La suma de los grados de las regiones de un mapa es igual al doble del número de aristas.
Los grados de las regiones en la figura 8-22 son: grd( r 1 ) = 3, grd( r 2 ) = 3, grd( r 3 ) = 5, grd( r 4 ) = 4, grd( r 5 ) = 3
La suma de los grados es 18 y, como era de esperar, es el doble del número de aristas. Por conveniencia en la notación, los vértices de un mapa se representan como puntos o círculos pequeños, o se supondrá que cualquier intersección de líneas o curvas en el plano es un vértice.
Euler proporcionó una fórmula que relaciona el número V de vértices, el número E de aristas y el número R de regio- nes de cualquier mapa conexo. Específicamente:
Teorema 8.8 (de Euler): V − E + R = 2.
(La demostración del teorema 8.8 se proporciona en el problema 8.18.) Observe que en la figura 8-22, V = 6, E = 9 y R = 5, y, como era de esperar por la fórmula de Euler, V − E + R = 6 − 9 + 5 = 2 Se recalca que el grafo subyacente de un mapa debe ser conexo para que se cumpla la fórmula de Euler. Sea G un multigrafo plano conexo con tres o más vértices, de modo que G no es K 1 ni K 2. Sea M una representación plana de G. No resulta difícil ver que 1) una región de M puede tener grado 1 sólo si su frontera es un lazo, y 2) una región de M puede tener grado 2 sólo si su frontera consta de dos aristas múltiples. En consecuencia, si G es un grafo, no un multigrafo, entonces toda región de M debe tener grado 3 o mayor. Este comentario y la fórmula de Euler se usan para demostrar el siguiente resultado sobre grafos planos.
Figura 8-
r 4 A (^) B F E
C r^5
r 1
r 2 r 3
D
su uso como verbo al decir, por ejemplo, “pintura” G en lugar de “color” G cuando se asignen colores a los vértices de G .) El número mínimo de colores necesarios para pintar a G se denomina número cromático de G y se denota por χ( G ). En la figura 8-24 se proporciona un algoritmo propuesto por Welch y Powell para el coloreado de un grafo G. Se recalca que este algoritmo no siempre produce un coloreado mínimo de G.
Figura 8-
Figura 8-
EJEMPLO 8.
a ) Considere el grafo G en la figura 8-25. Se aplica el algoritmo 8.4, de Welch y Powell, para obtener un coloreado de G. Cuando los vértices se escriben en orden decreciente de grado se obtiene la siguiente secuencia: A 5 , A 3 , A 7 , A 1 , A 2 , A 4 , A 6 , A 8
El primer color se asigna a los vértices A 5 y A 1. El segundo color se asigna a los vértices A 3 , A 4 y A 8. El tercer color se asigna a los vértices A 7 , A 2 y A 6. A todos los vértices se ha asignado un color, de modo que G es 3-coloreable. Observe que G no es 2-coloreable puesto que a los vértices A 1 , A 2 y A 3 , que están unidos entre sí, deben asignarse colores diferentes. En consecuen- cia, χ( G ) = 3.
b ) Considere el grafo completo K (^) n con n vértices. Puesto que cada vértice es adyacente a cualquier otro vértice, K (^) n requiere n colores en cualquier coloreado. Por tanto, χ( Kn ) = n. No hay ninguna forma sencilla para determinar realmente si un grafo arbitrario es n- coloreable. Sin embargo, el siguiente teo- rema (que se demuestra en el problema 8.19) proporciona una caracterización simple de grafos 2-coloreables.
Algoritmo 8.4 (de Welch y Powell): La entrada es un grafo G. Paso 1. Los vértices de G se ordenan en orden decreciente de grado. Paso 2. El primer color C 1 se asigna al primer vértice y después, en orden secuencial, C 1 se asigna a cada vértice que no sea adyacente al vértice previo al que se asignó C 1. Paso 3. El paso 2 se repite con un segundo color C 2 y la subsecuencia de vértices no coloreados. Paso 4. El paso 3 se repite con un tercer color C 3 , y luego con un cuarto color C 4 , hasta que todos los vértices estén coloreados. Paso 5. Salir.
A (^1) A 2 A^3
A 4
A 5 A 6
A 7 A 8
Teorema 8.11: Las siguientes afirmaciones son equivalentes para un grafo G :
i ) G es 2-coloreable. ii ) G es bipartido. iii ) Todo ciclo de G tiene longitud par. No hay límite sobre el número de colores que pueden requerirse para colorear un grafo arbitrario puesto que, por ejemplo, el grafo completo Kn requiere n colores. No obstante, si el estudio se restringe a grafos planos, sin importar el número de vértices, bastan cinco colores. Específicamente, en el problema 8.20 se demuestra el siguiente:
Teorema 8.12: Cualquier grafo plano es 5-coloreable.
En realidad, desde el año de 1850 los matemáticos han conjeturado que los grafos planos son 4-coloreables, pues- to que todo grafo plano conocido es 4-coloreable. En 1976 Kenneth Appel y Wolfgang Haken demostraron finalmente que esta conjetura es cierta. Es decir:
Teorema de los cuatro colores (Appel y Haken): Cualquier grafo plano es 4-coloreable.
Este teorema se analiza en la siguiente subsección.
Considere un mapa M ; por ejemplo, el mapa M en la figura 8-26 a ). En otras palabras, M es una representación plana de un multigrafo plano. Dos regiones de M son adyacentes si tienen una arista en común. Así, las regiones r 2 y r 5 en la figura 8-26 a ) son adyacentes, pero las regiones r 3 y r 5 no lo son. Por un coloreado de M se entiende la asignación de un color a cada región de M , de modo que regiones adyacentes tengan colores distintos. Un mapa es n - coloreable si existe un coloreado de M en el que se usen n colores. Por tanto, el mapa en la figura 8-26 a ) es 3-coloreable, ya que a las regiones pueden asignarse los siguientes colores:
r 1 rojo, r 2 blanco, r 3 rojo, r 4 blanco, r 5 rojo, r 6 azul
Observe la semejanza entre este análisis sobre coloreado de mapas y el análisis previo sobre coloreado de grafos. De hecho, al usar el concepto de mapa dual definido a continuación, puede demostrarse que el coloreado de un mapa es equivalente al coloreado de vértices de un grafo plano. Considere un mapa M. En cada región de M se escoge un punto, y si dos regiones tienen una arista en común, entonces se unen los puntos correspondientes con una curva que pasa por la arista común. Estas curvas pueden trazar- se de modo que no se crucen. Así se obtiene un nuevo mapa M ∗^ denominado dual de M , tal que cada vértice de M ∗ corresponde exactamente a una región de M. En la figura 8-26 b ) se muestra el dual del mapa de la figura 8-26 a ). Puede demostrarse que cada región de M ∗^ contiene exactamente un vértice de M y que cada arista de M ∗^ corta exactamente una arista de M y viceversa. Por tanto, M es el dual del mapa M ∗.
Figura 8-
r 1
r 3
r 2 r 5 r 4
r 6
a ) (^) b )
Sea G un grafo con m vértices. La representación de G en la memoria por medio de su matriz de adyacencia A presen- ta varias desventajas fundamentales. En primer lugar, puede ser difícil insertar o eliminar vértices en G. La razón es que puede ser necesario modificar el tamaño de A y reordenar los vértices, de modo que en la matriz A puede haber muchos, muchos cambios. Además, suponga que el número de aristas es O ( m ) o inclusive O ( m log m ); es decir, supon- ga que G es disperso. Entonces la matriz A contiene muchos ceros; por tanto, se desperdicia bastante espacio de la memoria. En consecuencia, cuando G es disperso, G suele representarse en la memoria por medio de algún tipo de representación enlazada , también denominada estructura de adyacencia , que se describe a continuación mediante un ejemplo. Considere el grafo G en la figura 8-28 a ). Observe que G puede definirse en forma equivalente por la tabla en la figura 8-28 b ), que muestra cada vértice en G seguido por su lista de adyacencia ; es decir, su lista de vértices adyacen- tes (v ecinos ). Aquí el símbolo M denota una lista vacía. Esta tabla también se representa en forma más breve como
G = [ A : B , D ; B : A , C , D ; C : B ; D : A , B ; E :M]
donde dos puntos “:” separan un vértice de su lista de vecinos; y un punto y coma “;” separa las distintas listas.
Observación: Cada arista de un grafo G se representa dos veces en una estructura de adyacencia; es decir, cualquier arista , por ejemplo { A , B }, se representa por B en la lista de adyacencia de A , y también por A en la lista de adyacencia de B. El grafo G en la figura 8-28 a ) tiene cuatro aristas, de modo que en las listas de adyacencia debe haber 8 vértices. Por otra parte, cada vértice en una lista de adyacencia corresponde a una arista única en el grafo G.
La representación enlazada de un grafo G , que mantiene a G en la memoria al usar sus listas de adyacencia, nor- malmente contiene dos archivos (o conjuntos de registros), uno denominado Vertex File y el otro denominado Edge File, como sigue.
a ) Vertex File : este archivo contiene la lista de vértices del grafo G que suelen mantenerse por medio de un arreglo o una lista ligada. Cada registro de este archivo tiene la forma
VERTEX NEXT-V PTR
Aquí VERTEX es el nombre del vértice, NEXT-V apunta hacia el siguiente vértice en la lista de vértices en el Vertex File cuando los vértices se mantienen por medio de una lista ligada, y PTR apunta al primer elemento en la lista de adyacencia del vértice que aparece en el Edge File. El área sombreada indica que puede haber otra información en el registro correspondiente al vértice.
b ) Edge File : este archivo contiene las aristas del grafo G. Específicamente, el Edge File contiene todas las listas de adyacencia de G , donde cada lista se mantiene en la memoria por medio de una lista ligada. Cada registro del Edge File corresponde a un vértice en una lista de adyacencia y, entonces, indirectamente, a una arista en G. El registro suele tener la forma
Figura 8-
Vértice Lista de adyacencia
Aquí:
EDGE es el nombre de la arista (en caso de tener una).
ADJ apunta a la ubicación del vértice en el Vertex File.
NEXT apunta a la ubicación del siguiente vértice en la lista de adyacencia.
Se recalca que cada arista está representada dos veces en el Edge File, pero cada registro del archivo corresponde a una arista única. El área sombreada indica que puede haber otra información en el registro correspondiente a la arista. La figura 8-29 muestra cómo el grafo G en la figura 8-28 a ) puede aparecer en la memoria. Aquí los vértices de G se mantienen en la memoria por medio de una lista ligada que usa la variable START para apuntar hacia el primer vértice. (Una forma alterna para la lista de vértices es usar un arreglo lineal, y así NEXT-V no sería necesario.) Observe que el campo EDGE no es necesario aquí porque las aristas carecen de nombre. La figura 8-29 también muestra, con las flechas, la lista de adyacencia [ D , C , A ] del vértice B.
En esa sección se analizan dos importantes algoritmos de grafos que examinan de manera sistemática los vértices y las aristas de un grafo G. Uno se denomina búsqueda en profundidad (DFS: depth-first search) y el otro, búsqueda en anchura (BFS: breadth-first search). Otros algoritmos de grafos se analizarán en el siguiente capítulo en relación con grafos dirigidos. Cualquier algoritmo de grafos particular puede depender de la forma en que G se mantiene en la memoria. Aquí se supone que G se mantiene en la memoria por medio de su lista de adyacencia. El grafo de prueba G con su estructura de adyacencia se muestra en la figura 8-30, donde se supone que los vértices están ordenados alfa- béticamente.
Figura 8-
Figura 8-
Archivo arista
Archivo vértice
Vértice Lista de adyacencia