La teoría de grafos es un campo de las matemáticas que estudia los gráficos (habitualmente llamados grafos): una representación abstracta de un conjunto de puntos conectados por líneas. Cada punto suele llamarse vértice (plural: vértices) y las líneas se llaman aristas (o arcos en grafos dirigidos). Los grafos son una herramienta para modelar relaciones y estructuras y se utilizan para plantear y resolver una gran variedad de problemas en matemáticas, informática, ingeniería y otras disciplinas.

Algunas de las preguntas que plantea la teoría de grafos son:

  • ¿Existe un camino entre dos vértices y cuál es el más corto?
  • ¿Está el grafo conectado o dividido en componentes?
  • ¿Tiene el grafo ciclos o es acíclico?
  • ¿Se puede colorear el grafo con un número limitado de colores sin que dos vértices adyacentes compartan color?
  • ¿Existe un camino que pase por todas las aristas una sola vez (recorrido euleriano) o por todos los vértices una sola vez (ciclo hamiltoniano)?
  • ¿Cuál es el emparejamiento máximo entre conjuntos de vértices (problemas de matching)?
  • ¿Cómo representar eficientemente el grafo y qué algoritmos permiten resolver problemas prácticos sobre él?

Conceptos básicos

  • Vértice: nodo o elemento del grafo.
  • Arista: conexión entre dos vértices; en grafos dirigidos las aristas tienen una dirección.
  • Grado: número de aristas incidentes en un vértice (grado entrante y saliente en grafos dirigidos).
  • Camino y ciclo: secuencias de vértices conectados por aristas; simple si no repite vértices.
  • Componente conexa: subgrafo en el que cualquier par de vértices está conectado por un camino.
  • Grafo dirigido vs no dirigido, grafo ponderado (con pesos en aristas), multigrafo (múltiples aristas entre dos vértices), grafo simple (sin lazos ni aristas múltiples).
  • Árbol: grafo conectado y acíclico; bosque es una colección de árboles.
  • Grafo bipartito, grafo completo (K_n), planar (puede dibujarse sin aristas que se crucen), etc.

Representaciones

  • Matriz de adyacencia: matriz cuadrada donde la posición (i,j) indica si existe arista entre i y j. Útil para grafos densos y operaciones de álgebra lineal.
  • Lista de adyacencia: para cada vértice, lista de vértices adyacentes. Más eficiente en memoria para grafos dispersos.
  • Lista de aristas: colección de pares (o tuplas) que representan las aristas; útil para algoritmos que procesan aristas directamente.

Algoritmos fundamentales

  • BFS (búsqueda en anchura) y DFS (búsqueda en profundidad): recorrer grafos, detectar componentes y ciclos.
  • Dijkstra, Bellman–Ford y Floyd–Warshall: caminos más cortos (con y sin pesos negativos).
  • Kruskal y Prim: árboles de expansión mínima.
  • Ford–Fulkerson / Edmonds–Karp: cálculo de flujo máximo en redes.
  • Algoritmos de matching (p. ej. Hopcroft–Karp para grafos bipartitos).
  • Algoritmos para coloración, prueba de planaridad, y heurísticas para problemas NP-hard como el Traveling Salesman Problem o el problema del clique máximo.

Aplicaciones

  • Redes de comunicación: modelado de Internet, enrutamiento y diseño de redes.
  • Transporte y logística: planificación de rutas, rutas más cortas, asignación de recursos.
  • Redes sociales: análisis de relaciones, centralidad, detección de comunidades.
  • Química y biología: representación de moléculas, redes metabólicas y de interacción proteica.
  • Optimización y operaciones: asignación, emparejamiento, flujo y corte mínimo.
  • Ciencia de la computación: compiladores (dependencias), análisis de programas, bases de datos y algoritmos sobre grafos en bibliotecas y sistemas.
  • Geografía y SIG: mapas, navegación y análisis espacial.

Propiedades teóricas y complejidad

Muchos problemas sobre grafos tienen soluciones eficientes (polinomiales), pero otros son intratables en la práctica porque son NP-completos o NP-hard (por ejemplo, el problema del coloring mínimo, el maximum clique o el traveling salesman en su forma general). La teoría de grafos combina resultados teóricos (criterios, teoremas y propiedades estructurales) con técnicas algorítmicas y heurísticas para abordar problemas reales.

Por qué es importante

La teoría de grafos proporciona un lenguaje y herramientas para modelar y analizar sistemas conectados. Su alcance interdisciplinario y su aplicabilidad a problemas prácticos la convierten en una pieza clave en investigación, ingeniería y tecnología. Aprender los conceptos básicos y los algoritmos fundamentales permite comprender y resolver situaciones complejas en muchos ámbitos.