La teoría de grafos nació al simplificar un problema de recorridos por una ciudad. Con el tiempo se convirtió en una herramienta fundamental para estudiar redes, optimizar rutas y diseñar algoritmos.
La historia de la teoría de grafos muestra cómo un problema cotidiano puede originar una nueva forma de pensar. Su punto de partida tradicional se encuentra en el siglo XVIII, cuando se intentaba resolver un paseo aparentemente sencillo por la ciudad prusiana de Königsberg.
La gran innovación no fue encontrar una ruta, sino representar el problema de manera abstracta. Al eliminar distancias, formas y detalles geográficos, quedaron únicamente lugares y conexiones. Esa idea sigue siendo esencial cuando un programador diseña un modelo de datos.
Königsberg estaba atravesada por el río Pregel. Dos islas y las zonas continentales quedaban comunicadas por siete puentes. Los habitantes se preguntaban si era posible realizar un paseo que cruzara cada puente exactamente una vez.
Intentar resolverlo sobre un mapa llevaba a probar rutas una tras otra. Sin embargo, la longitud de los puentes, la forma de las islas y la distancia recorrida no afectaban la respuesta.
En 1736, el matemático Leonhard Euler presentó un análisis del problema. Reemplazó cada región de tierra por un punto y cada puente por una conexión entre dos puntos.
| Elemento real | Representación abstracta | Nombre actual |
|---|---|---|
| Región de tierra | Un punto | Vértice |
| Puente | Una conexión | Arista |
| Paseo por la ciudad | Secuencia de conexiones | Recorrido |
Con esta transformación, el mapa dejó de ser un problema geográfico y se convirtió en una estructura de relaciones.
Euler observó cuántos puentes llegaban a cada región. Para recorrer todas las aristas una sola vez, los vértices intermedios deben permitir entrar y salir por pares de aristas. Por eso, un recorrido abierto de este tipo solo puede tener cero o dos vértices de grado impar.
En el grafo de Königsberg, los cuatro vértices tenían grado impar. Por lo tanto, el paseo solicitado era imposible.
Este razonamiento anticipó lo que hoy conocemos como recorridos eulerianos, que estudiaremos en profundidad más adelante.
La respuesta fue importante, pero el método lo fue aún más. Euler demostró que ciertas propiedades dependen de cómo están conectados los elementos y no de su tamaño, forma o ubicación exacta.
Esta forma de abstraer un problema es muy cercana al trabajo de programar: elegir una estructura adecuada puede hacer que una solución compleja se vuelva clara.
Podemos representar los siete puentes mediante pares de vértices y contar cuántas aristas inciden en cada uno.
const puentes = [
["A", "B"], ["A", "B"],
["A", "C"], ["A", "C"],
["A", "D"], ["B", "D"],
["C", "D"]
];
const grados = {};
for (const [origen, destino] of puentes) {
grados[origen] = (grados[origen] || 0) + 1;
grados[destino] = (grados[destino] || 0) + 1;
}
console.log(grados);
console.log("Grados impares:",
Object.values(grados).filter(grado => grado % 2 !== 0).length
);
El programa obtiene cuatro grados impares. La computadora confirma la propiedad usada por Euler, aunque la explicación matemática es la que evita probar cada paseo posible.
Durante el siglo XIX, las ideas relacionadas con grafos aparecieron en diferentes áreas. Gustav Kirchhoff utilizó estructuras semejantes para estudiar circuitos eléctricos. Arthur Cayley investigó árboles mientras analizaba formas de compuestos químicos y estructuras algebraicas.
También surgieron problemas sobre recorridos que visitan todos los vértices, asociados al nombre de William Rowan Hamilton. Estos trabajos ampliaron el estudio desde el uso de todas las aristas hacia el recorrido de todos los vértices.
| Desarrollo | Objeto estudiado | Idea que aportó |
|---|---|---|
| Kirchhoff | Circuitos eléctricos | Relaciones entre redes, corrientes y ciclos |
| Cayley | Árboles | Estructuras conectadas sin ciclos |
| Hamilton | Recorridos por vértices | Visitar cada vértice una sola vez |
| Problema de los cuatro colores | Mapas planos | Coloración de regiones adyacentes |
Con el paso del tiempo se desarrolló un lenguaje preciso para hablar de vértices, aristas, caminos, ciclos, conectividad, árboles y otros conceptos. Esto permitió demostrar resultados generales y comparar problemas que, a primera vista, no tenían relación.
La teoría también comenzó a estudiar distintas clases de grafos: dirigidos, ponderados, bipartitos, planares y muchos otros. Cada variante permite representar relaciones con propiedades específicas.
La aparición de las computadoras convirtió a los grafos en estructuras que podían almacenarse y procesarse. Ya no solo interesaba demostrar que una solución existía: también era necesario encontrarla mediante un procedimiento eficiente.
| Problema | Algoritmo o enfoque | Aplicación |
|---|---|---|
| Explorar una red | Recorridos DFS y BFS | Búsqueda y conectividad |
| Encontrar rutas óptimas | Dijkstra y Bellman-Ford | Mapas y comunicaciones |
| Conectar con costo mínimo | Prim y Kruskal | Diseño de redes |
| Transportar recursos | Algoritmos de flujo | Logística y asignación |
| Ordenar dependencias | Ordenamiento topológico | Compilación y planificación |
Internet multiplicó el tamaño y la visibilidad de las redes. Las páginas web conectadas por enlaces forman un grafo; los routers y enlaces físicos forman otro; los usuarios y sus interacciones forman muchos grafos más.
Los motores de búsqueda analizan enlaces, las plataformas sociales estudian comunidades y los sistemas de recomendación relacionan usuarios con contenidos. En todos estos casos, la teoría desarrollada durante siglos se combina con estructuras de datos, algoritmos y computación distribuida.
El problema de los puentes enseña un procedimiento que sigue siendo útil al desarrollar software:
function puedeTenerRecorridoEuleriano(grados) {
const impares = grados.filter(grado => grado % 2 !== 0);
return impares.length === 0 || impares.length === 2;
}
console.log(puedeTenerRecorridoEuleriano([3, 3, 3, 5]));
console.log(puedeTenerRecorridoEuleriano([2, 3, 3, 4]));
La primera lista representa cuatro grados impares y devuelve false. La segunda tiene exactamente dos y supera esta condición necesaria.
La teoría de grafos comenzó con una pregunta sobre puentes, pero su verdadero aporte fue una nueva manera de representar relaciones. La abstracción introducida por Euler permitió analizar el problema sin depender del mapa ni de intentos exhaustivos.
En el próximo tema estudiaremos con mayor precisión los dos componentes fundamentales de cualquier grafo: los vértices y las aristas.