Latest Posts:

5 de mayo de 2008

La Teoría de los Grafos

La teoría de los grafos

Nuevamente Gaussianos vuelve a dar en el blanco. Un artículo fácil de digerir, pero no por ello carente de rigor matemático: introducción a la teoría de los grafos. El artículo parte del famoso problema d elos puentes de Konigsberg. Disfrútenlo:

del sobre y similares.

Los puentes de Königsberg

Königsberg (actualmente Kaliningrado, Rusia) era una ciudad de Prusia del siglo XVIII. El problema que nos ocupa tiene como protagonista a un río, el río Pregel, que cruzaba la ciudad, a dos islas que se encontraban en el mismo y a siete puentes que comunicaban las dos partes de la ciudad con las mismas. Concretamente la situación era como se describe en la imagen (A y B son las dos partes de la ciudad y C y D las dos islas):

Königsberg y sus puentes

(Imagen tomada de Historias de la Ciencia)

El problema consistía en comenzar en un punto, pasar por los siete puentes sin repetir ninguno y volver al punto de partida. Antes de seguir leyendo podéis intentarlo vosotros mismos, aunque os recomiendo que no le dediquéis demasiado tiempo.

Iniciación a la teoría de grafos

Un grafo es básicamente un conjunto no vacío (al menos contiene un elemento) de puntos llamados vértices y un conjunto de líneas llamadas aristas cada una de las cuales une dos vértices. Se llama lazo a una arista que une un vértice consigo mismo. Se dice que dos vértices son adyacentes si existe una arista que los une.

Se dice que un grafo es simple si para cualesquiera dos vértices existe a lo sumo una arista que los une. En otro caso se denomina multigrafo.

Si v es un vértice de un grafo, se denomina grado de v al número de aristas que inciden en el mismo (por convenio de considera que un lazo cuenta dos veces al determinar el grado de su vértice).

Se dice que un grafo es conexo si no puede expresarse como la unión de dos grafos de vértices disjuntos. Os dejo un ejemplo:

Grafo conexo y grafo no conexo

Un camino de longitud n es una sucesión de vértices, v_i, y aristas, a_j, de la siguiente forma: v_0,a_1,v_1, \ldots ,v_{n-1},a_n,v_n. Se dice que un camino es cerrado si v_n=v_0, es decir, el vértice inicial y el final son el mismo. Se dice que es simple si todas sus aristas son distintas. Se llama trayectoria a un camino simple en el que todos sus vértices (salvo probablemente el inicial y el final) son distintos y se denomina circuito a una trayectoria cerrada con al menos una arista.

Se llama camino euleriano a un camino simple que contiene todas las aristas del grafo y se denomina circuito euleriano a un camino euleriano cerrado. Se dice que un grafo es euleriano si contiene un circuito euleriano.

Resolución del problema

Para empezar, ¿quién resolvió el problema? Pues como ya sabéis los que conocíais el problema y como habréis intuido los que no lo conocíais fue Leonhard Euler quien dio solución a este asunto. La idea genial de Euler fue representar la ciudad de Königsberg como un grafo en el que las cuatro partes de la misma eran los vértices y los siete puentes eran las aristas:

Königsberg representada por un grafo

Por tanto el problema de los puentes de Königsberg pasa a ser un problema de teoría de grafos cuya solución publicó Euler en su artículo Solución de un problema relativo a la geometría de posición.

Según las definiciones que hemos visto en el punto anterior lo que queremos saber es si este grafo en euleriano, es decir, si contiene un circuito euleriano (es decir, un camino que contiene a todas las aristas del grafo sin que ninguna se repita y que comienza y termina en el mismo vértice). Vamos a demostrar el siguiente resultado:

Teorema:

Un grafo G es euleriano y sin vértices aislados \Leftrightarrow G es conexo y el grado de todos sus vértices es par.

Demostración:

\Rightarrow ) Si G es euleriano entonces contiene un circuito euleriano y como no tiene vértices aislados entonces cualquier par de vértice u y v están conectados por la parte del circuito que va de u a v. Por tanto G es conexo.

Por otra parte, como G es euleriano contiene un circuito euleriano, es decir, un camino simple y cerrado que contiene a todas las aristas. Por tanto por cada arista que llegue a un vértice debe haber otra que salga del mismo y en consecuencia el grado de cada vértice es un número par.

\Leftarrow ) Partimos de que G es conexo y todos sus vértices tienen grado par.

Si el número de aristas de G es 1 ó 2 el resultado es inmediato. Procedemos por inducción: supongamos que G tiene n aristas y que el resultado es cierto para los grafos que cumplan las condiciones y tengan menos de n aristas.

Usando que todo grafo en el que todos sus vértices tienen grado mayor o igual que dos posee un circuito (¿por qué?) tenemos que el nuestro contiene un circuito, dikgamos C. Si C contiene todas las aristas de G, entonces C es un circuito euleriano y hemos terminado. En caso contrario sea G_1 el grafo obtenido al suprimir de G las aristas de C y suprimir después los vértices que han quedado aislados. Puede que el grafo haya quedado dividido en subgrafos no conectados entre sí; cada uno de ellos es una componente conexa de G_1.

Por haber eliminado las aristas de un circuito todos los vértices de G_1 tiene grado par. Por la hipótesis de inducción, cada componente conexa G_{1i}de G_1 contiene un circuito euleriano.

Como en cada componente conexa G_{1i} debe haber al menos un vértice v_i de C podemos obtener un circuito euleriano en G (que es lo que queríamos conseguir) del siguiente modo:

Partimos de un vértice cualquiera de C (que recordemos que no era un circuito euleriano). Recorremos C hasta llegar a un vértice v_i de una componente conexa G_{1i} de G. Recorremos esta componente conexa a través del circuito euleriano que hemos visto que debe contener y continuamos recorriendo C hasta que nos encontremos con un vértice de otra de las componentes conexas, realizando entonces la misma operación. Repetimos el procedimiento hasta llegar al vértice de partida, obteniendo así un circuito euleriano.

c.q.d.

Observemos ahora el grafo que habíamos obtenido de la ciudad de Königsberg y calculemos el grado de todos sus vértices. Hay tres vértices con grado 3 y un vértice con grado 5. Es decir, no hay ninguno con grado par. Por tanto, según el teorema anterior, este grafo no contiene un circuito euleriano, esto es, no podemos comenzar en un punto de la ciudad y recorrer cada uno de los puentes sólo una vez y terminar en el punto de partida.

El problema del sobre y similares

Supongo que muchos de vosotros os habréis encontrado con el típico problema de recorrer todos los segmentos de un dibujo sólo una vez sin levantar el lápiz del papel. En esos problemas los vértices inicial y final no tiene que ser el mismo, es decir, puedo comenzar en el vértice que quiera y terminar en ese mismo o en cualquier otro, pero debo pasar por todas las líneas una y sólo una vez sin levantarme del papel. El más típico es el sobre:

Sobre cerrado

El siguiente resultado es un corolario del teorema anterior y nos ayudará a analizar todos estos problemas:

Corolario:

Un grafo G contiene un camino euleriano \Leftrightarrow G es conexo y tiene como máximo dos vértices de grado impar.

La demostración os la dejo a vosotros para que la penséis.

Un camino euleriano es precisamente lo que buscamos cuando queremos resolver estos problemas. Por tanto lo único que tenemos que hacer es calcular el grado de cada vértice. Si tenemos más de dos vértices de grado impar el recorrido no será posible; por el contrario, si tiene sólo dos vértices o ningún vértice con grado impar entonces sí se podrá recorrer de esa forma (no puede haber sólo un vértice con grado impar ya que el número de vértices de grado impar es par, ¿por qué?). En el caso de nuestro sobre tenemos cuatro vértices con grado impar y por tanto no podremos recorrer todas las aristas sólo una vez sin levantar el lápiz del papel.

Por contra, si tenemos el sobre abierto:

Sobre abierto

sí podremos recorrerlo así ya que ahora sólo hay dos vértices con grado impar, los dos de abajo. De hecho se sabe que para recorrer todas las aristas sólo una vez sin levantar el lápiz del papel debemos comenzar en uno de los vértices de grado impar y terminar en el otro.

Con estos resultados ya no habrá problema de este tipo que se os resista.

Fuente:

Gaussianos

google.com, pub-7451761037085740, DIRECT, f08c47fec0942fa0