Introducción a la teoría de grafos: representar las conexiones
Al ir de casa a la escuela se puede pasar por una tienda, un parque o la biblioteca. Queremos saber a qué lugares se puede llegar directamente y, si no hay un camino directo, por dónde hay que pasar. Para responder a estas preguntas, podemos conservar primero los lugares y las conexiones y dejar de lado el aspecto de los edificios.
La teoría de grafos estudia las conexiones entre objetos. Usamos puntos para representar objetos y líneas para representar conexiones; esos puntos y líneas juntos forman un grafo. Aquí «grafo» no es la gráfica de coordenadas de una función, sino un registro de conexiones. A continuación, partimos del mismo mapa pequeño y aprendemos paso a paso a describir y buscar rutas.
De los lugares a los puntos y las líneas
Abajo hay seis lugares. Las letras son solo nombres para identificarlos: es la casa y es la escuela. Una línea indica que hay un camino directo entre sus dos extremos. Ahora todos los caminos se pueden recorrer en ambos sentidos; la longitud con que se dibuja la línea no registra ninguna distancia.
Estos puntos que representan lugares se llaman vértices, y las líneas que representan conexiones directas se llaman aristas. Dos puntos sin línea no se alcanzan en un paso, aunque puede que sí rodeando por otros puntos. Así conservamos por separado la información de «si se puede llegar directamente».
Primero elige abajo un lugar y mira qué aristas lo conectan. Luego pulsa los botones de las aristas para añadir o quitar una conexión. La posición de los lugares nunca cambia, así que puedes ver con claridad qué relación ha cambiado.
Cada botón pulsado abajo indica que esa conexión directa existe. Cambia una y fíjate en qué cambia en el diagrama.
Contar las conexiones de cada punto
Ahora volvemos a los siete caminos iniciales. Primero planteamos una pregunta muy pequeña: desde un lugar, ¿cuántos caminos se pueden tomar directamente? El número de aristas que tocan un vértice se llama grado de ese vértice. Aquí no hay aristas que vuelvan a un mismo punto ni varias aristas entre el mismo par de lugares.
Por ejemplo, toca las aristas y , así que su grado es . Cada vez que se pulsa «Siguiente» abajo se añade una arista y se cuenta una vez en cada uno de sus extremos. La línea dorada es la arista recién añadida; la tabla conserva los recuentos ya anotados.
¿Por qué el total de recuentos es siempre el doble del número de aristas? Porque cada arista tiene dos extremos. Sean cuales sean los dos lugares de sus extremos, contamos una vez en un extremo y otra vez en el otro. Por eso, cada arista añadida aumenta el total en ; al procesar todas las aristas se obtiene la igualdad de abajo.
| A | B | C | D | E | F |
|---|---|---|---|---|---|
A esto se le suele llamar lema del apretón de manos: cada apretón cuenta una vez por cada una de las dos personas que participan. Lo dedujimos contando los extremos de cada arista, así que se aplica a cualquier grafo no dirigido finito como el de esta página, no solo a nuestro ejemplo de las siete carreteras.
Recorrer las conexiones
No basta con mirar los lugares conectados directamente: la escuela y la casa no están unidas de forma directa, pero podemos pasar por la tienda y la biblioteca. Recorrer las aristas contiguas una tras otra es una ruta. Aquí, la longitud de la ruta es el número de aristas recorridas: de a una arista, a otra y a otra, así que se recorren aristas.
Una ruta que no repite vértices se llama camino simple. Si se sale de un punto y se vuelve a él sin repetir otros vértices y pasando por al menos tres aristas, se obtiene un ciclo en un grafo simple no dirigido como el de esta página. Por ejemplo, : la última solo vuelve al punto de partida y los demás lugares se recorren una vez cada uno.
Abajo solo puedes elegir el siguiente lugar que esté directamente conectado con el actual. Prueba a ir de la casa a la escuela; después de reiniciar, también puedes intentar ir de la escuela a la casa. Las etiquetas numéricas indican el orden en que se recorren los vértices; si pasas varias veces por el mismo punto, la ruta de abajo se conserva entera.
Si entre dos vértices cualesquiera se puede encontrar un camino, decimos que el grafo no dirigido es conexo. Si se quitan los caminos de ambos lados de la escuela, la escuela queda aislada de los demás lugares; aunque los otros cinco lugares sigan siendo alcanzables entre sí, el grafo en conjunto ya no es conexo.
También existen caminos de un solo sentido: poder ir de a no significa poder volver de a . Registramos las direcciones permitidas con flechas y obtenemos un grafo dirigido. El proceso de búsqueda posterior también puede respetar las flechas, pero «poder llegar» exige especificar el punto de partida y la dirección.
Este dibujo no tiene flechas: cada arista se puede recorrer en ambos sentidos. El registro de la ruta conserva hasta 19 aristas; al reiniciar puedes probar otro recorrido.
Buscar una ruta en orden
Probar caminos al azar hace que se vuelva fácilmente al mismo lugar. Podemos poner en fila, en el orden en que se descubren, los lugares ya descubiertos cuyos caminos aún no se han revisado. Lo que se añade primero se procesa primero; ese registro de espera se llama cola. Abajo, el frente de la cola está a la izquierda y los lugares recién descubiertos se colocan a la derecha.
Al principio solo conocemos el punto de partida, así que lo marcamos con pasos y lo ponemos en la cola. Luego se saca el frente y se revisan una a una las conexiones por las que se puede salir. Si aparece un lugar aún no descubierto, se anota desde dónde se encontró y cuántos pasos cuesta llegar, y se añade al final de la cola. Si el lugar ya se había descubierto, no se vuelve a poner en la cola.
¿Por qué se suma al número de pasos del lugar nuevo? Ya conocemos una ruta hasta el lugar actual; si cruzamos la arista que acabamos de revisar, recorremos una arista más que en esa ruta. Por ejemplo, si el lugar actual tiene pasos, el nuevo lugar tiene pasos.
Este método de buscar capa por capa según la distancia se llama búsqueda en anchura; en inglés, BFS. Solo cuando termina la capa actual se pasa a la siguiente. Con «Siguiente» se revisan una a una la cola y los caminos; no avanza por sí solo. El gris indica lo aún no descubierto, el verde lo ya descubierto y la arista dorada es la conexión que se está revisando.
Aristas disponibles: A—B, A—C, B—D, C—D, D—E, E—F, C—F
Cola: a la izquierda se procesa primero, a la derecha se añaden los lugares nuevos
| Lugar | A | B | C | D | E | F |
|---|---|---|---|---|---|---|
| Número de aristas desde el inicio | — | — | — | — | — | |
| Encontrado desde | Inicio | — | — | — | — | — |
Ya examinados: Todavía ninguno
Por qué los pasos encontrados son los mínimos
Ahora explicamos por qué los pasos anotados son realmente los mínimos. El punto de partida requiere pasos; todos los lugares directamente vecinos al punto de partida se descubren al procesarlo, así que requieren paso. La cola hace que estos lugares alcanzables en un paso queden todos delante de los lugares a dos pasos que se descubren después.
Seguimos aplicando el mismo razonamiento: cuando procesamos la capa , es decir, los lugares alcanzables con al menos aristas, todas las capas más cercanas ya se han procesado. Un punto vecino aún no descubierto se alcanza en pasos, porque añadimos una arista a los pasos que ya tenemos.
¿Podría haber una ruta más corta? Si existiera, el penúltimo punto de esa ruta tendría un número mínimo de pasos menor que . Ese punto ya se habría procesado y sus conexiones ya se habrían revisado, así que el objetivo debería haberse descubierto entonces. Esto contradice que «todavía no se haya descubierto». Por tanto, los pasos recién anotados son el mínimo.
Empezando por la capa , este razonamiento garantiza que todas las capas son correctas. Cada punto recién descubierto entra en la cola una sola vez y el número total de vértices es finito, así que la cola termina vacía. En ese momento, los puntos aún no descubiertos son realmente inalcanzables: si existiera una ruta hacia uno de ellos, al buscar el primer punto no descubierto de la ruta, el punto anterior debería haberlo descubierto al revisar sus conexiones.
Aquí lo mínimo es el número de aristas. Si todos los caminos tardan lo mismo, el mínimo de aristas también da el tiempo mínimo; si los tiempos difieren, no se puede deducir así. Por ejemplo, si el camino directo tarda minutos y los dos tramos que pasan por una parada intermedia tardan minutos cada uno, los dos juntos suman minutos, más rápido que el directo. Registrar valores como el tiempo en las aristas se llama darles un peso; el número de capas de BFS no suma esos valores.
Comprobarlo una vez por tu cuenta
Intenta escribir tu respuesta. El contenido desplegable de abajo muestra el proceso de cálculo, que puedes usar para comprobarla. La respuesta usa las siete aristas iniciales de esta página; puedes volver al grafo de arriba y comprobarlo arista por arista.
¿Por qué el grado de es y no el número de todos los lugares alcanzables desde ?
El grado cuenta solo las aristas que tocan directamente ese vértice. toca , y , en total tres. Aunque siguiendo más allá se pueda llegar a otros lugares, eso no añade conexiones directas a .
¿Cuántas aristas como mínimo hay que recorrer de la casa a la escuela?
Partiendo de , la primera capa es ; la segunda descubre ; y al cruzar otra arista desde o , la tercera capa llega a . Por tanto, el mínimo es aristas, por ejemplo . En la primera y la segunda capa no hay , lo que descarta rutas más cortas.
Si se añade una arista que antes no existía, ¿cómo cambia la suma de grados?
gana una arista y su grado aumenta en ; también gana una y su grado aumenta en ; los demás vértices no cambian. La suma original era y ahora es ; al mismo tiempo, el número de aristas pasa de a , y sigue cumpliéndose .
Si se conserva solo la flecha , ¿también se puede ir de a ?
No. La flecha solo permite el sentido que va de su cola a su punta. Para recorrer el sentido contrario tiene que haber otra arista que lo permita, o una ruta dirigida que pase por otros vértices.
