40. Isomorfismo de grafos

Dos grafos son isomorfos cuando tienen la misma estructura, aunque sus vértices posean nombres diferentes y el dibujo cambie por completo. El desafío consiste en encontrar una correspondencia que preserve todas las adyacencias.

40.1 Introducción

Un grafo no depende de la posición visual de sus nodos ni de las etiquetas elegidas. Dos diagramas aparentemente distintos pueden describir exactamente las mismas conexiones.

El isomorfismo permite reconocer cuándo dos representaciones son estructuralmente equivalentes.

40.2 Definición formal

Los grafos G = (V,E) y H = (W,F) son isomorfos si existe una función biyectiva f : V → W que conserva la adyacencia.

{u,v} ∈ E ⇔ {f(u),f(v)} ∈ F

Se escribe G ≅ H. La doble implicación exige preservar tanto aristas como no aristas.

40.3 La correspondencia debe ser biyectiva

Cada vértice de G debe corresponder a exactamente uno de H y todos los vértices de H deben utilizarse.

  • Inyectiva: dos vértices distintos no reciben la misma imagen.
  • Sobreyectiva: ningún vértice del segundo grafo queda sin imagen.

Por ello, dos grafos con distinta cantidad de vértices nunca son isomorfos.

40.4 Preservar estructura, no apariencia

Mover vértices, rotar el dibujo o cruzar aristas no cambia el grafo. Tampoco importan nombres como A, B, C o 1, 2, 3.

Sí importan las conexiones, la dirección de las aristas, los pesos y otras propiedades si forman parte del tipo de grafo estudiado.

40.5 Invariantes

Un invariante es una propiedad que todo isomorfismo preserva. Algunos ejemplos son:

  • Cantidad de vértices y aristas.
  • Multiconjunto de grados.
  • Cantidad de componentes.
  • Conectividad, diámetro y distancias.
  • Cantidad de triángulos y ciclos de cada longitud.
  • Existencia de puentes y vértices de corte.

40.6 Laboratorio de correspondencias

Los dos dibujos representan el mismo grafo. Revela la biyección paso a paso y observa cómo cada nueva correspondencia preserva grados y aristas entre vértices ya asociados.

Biyeción candidata

Aristas comprobadas

0 / 8

Acción actual

Comienza comparando vértices del mismo grado.
Búsqueda preparada.
Correspondencias0 / 6
Grados G3,3,3,3,2,2
Grados H3,3,3,3,2,2
ResultadoAnalizando

40.7 Los invariantes permiten descartar

Si un invariante difiere, los grafos no son isomorfos. Comparar cantidades y grados es una primera prueba muy barata.

Invariante diferente ⇒ no isomorfos
Invariantes iguales ⇏ necesariamente isomorfos

Dos grafos pueden compartir muchos invariantes y aun así poseer estructuras diferentes.

40.8 Secuencia de grados

Ordenar los grados permite comparar rápidamente ambos grafos. Además, un vértice solo puede corresponder a otro del mismo grado.

Cuando un grado aparece una sola vez, esa pareja queda forzada. Cuando se repite, se necesitan propiedades más finas para distinguir candidatos.

40.9 Refinamiento por vecindarios

Puede clasificarse cada vértice no solo por su grado, sino por los grados o clases de sus vecinos. Luego se repite el proceso hasta que las clases se estabilizan.

firma(v) = clase(v) + multiconjunto de clases de sus vecinos

Este refinamiento reduce mucho las correspondencias posibles, aunque algunos grafos simétricos permanecen indistinguibles.

40.10 Matrices de adyacencia

Dos grafos son isomorfos si es posible reordenar simultáneamente filas y columnas de una matriz de adyacencia para obtener la otra.

B = Pᵀ A P, donde P es una matriz de permutación

Permutar solo filas o solo columnas no representa un renombrado coherente de los vértices.

40.11 Búsqueda por permutaciones

El método directo prueba todas las biyecciones posibles y comprueba si preservan adyacencias.

function preservaAristas(grafoA, grafoB, permutacion) {
  const n = grafoA.length;
  for (let u = 0; u < n; u++) {
    for (let v = 0; v < n; v++) {
      if (grafoA[u][v] !==
          grafoB[permutacion[u]][permutacion[v]]) return false;
    }
  }
  return true;
}

Probar n! permutaciones resulta viable únicamente para grafos muy pequeños.

40.12 Backtracking con poda

En lugar de construir una permutación completa, se asignan parejas progresivamente. Una rama se abandona en cuanto contradice grados o alguna adyacencia ya decidida.

function compatible(u, x, mapeo, A, B) {
  if (grado(A, u) !== grado(B, x)) return false;
  for (const [v, y] of mapeo) {
    if (A[u][v] !== B[x][y]) return false;
  }
  return true;
}

40.13 Elección de candidatos

Conviene asignar primero el vértice con menos imágenes compatibles. Esta estrategia de variable más restringida detecta contradicciones antes.

También pueden priorizarse vértices de grado raro, pertenecientes a triángulos particulares o cercanos a vértices ya mapeados.

40.14 Etiquetado canónico

Un etiquetado canónico transforma cada grafo en una representación independiente de sus nombres originales.

G ≅ H ⇔ canon(G) = canon(H)

Es útil para eliminar duplicados y usar grafos como claves, aunque calcular una forma canónica eficiente requiere técnicas especializadas.

40.15 Automorfismos

Un automorfismo es un isomorfismo de un grafo consigo mismo. Representa una simetría estructural.

Un ciclo puede rotarse o reflejarse sin cambiar sus adyacencias. Estas simetrías explican por qué varias correspondencias distintas pueden ser igualmente válidas.

40.16 Grafos dirigidos, ponderados y etiquetados

En un grafo dirigido deben conservarse origen y destino. En uno ponderado, además de la adyacencia deben coincidir los pesos correspondientes.

Si los vértices poseen tipos o etiquetas semánticas, una correspondencia válida normalmente debe preservarlos también.

40.17 Complejidad práctica

La fuerza bruta cuesta O(n! · n²). Las podas por grados, vecindarios y componentes suelen reducir drásticamente el espacio de búsqueda.

Árboles y otras familias especiales admiten métodos eficientes. Los grafos muy simétricos suelen ser los más difíciles para una búsqueda elemental.

40.18 Aplicaciones

  • Reconocer moléculas con la misma estructura química.
  • Detectar circuitos o redes equivalentes.
  • Eliminar grafos duplicados en bases de datos.
  • Comparar dependencias de programas.
  • Buscar patrones estructurales.
  • Analizar simetrías mediante automorfismos.

40.19 Errores comunes y puntos clave

  • Comparar posiciones del dibujo en vez de adyacencias.
  • Creer que igual secuencia de grados demuestra isomorfismo.
  • No exigir que la correspondencia sea biyectiva.
  • Comprobar aristas pero ignorar no aristas.
  • Olvidar dirección, pesos o etiquetas.
  • Los invariantes diferentes descartan inmediatamente.
  • El backtracking debe validar cada pareja parcial.

40.20 Conclusión

El isomorfismo separa la estructura de su representación. Los invariantes filtran candidatos y la búsqueda con poda intenta construir una biyección que preserve cada relación.

En el próximo tema estudiaremos grafos aleatorios, modelos donde las aristas aparecen según reglas probabilísticas.