En general, es un problema difícil
No hay un algoritmo eficiente conocido que pueda garantizar decirte si dos gráficos son isomórficos. Por supuesto, podríamos probar todas las posibles permutaciones de los vértices, pero esto llevará mucho tiempo. Conocemos heurísticas: buenas cosas para intentar que funcionarán en muchos casos, pero a veces nos darán una respuesta inconclusa.
Pero podemos resolverlo a mano para ejemplos pequeños
En la práctica, cuando el número de vértices no es muy grande, a menudo podemos verificar el isomorfismo sin mucho trabajo. Hacemos esto seleccionando características distintivas de los vértices en cada gráfico. Luego tenemos menos biyecciones entre los conjuntos de vértices para verificar si los gráficos son isomórficos.
Una de las características distintivas más simples de un vértice es su grado: el número de aristas fuera de ese vértice. Por ejemplo, en el gráfico en cuestión, notamos que:
- Los vértices $\{A, B, E, F, H, I\}$ del primer gráfico tienen un grado de $3$, y los vértices $\{C, D, G\}$ tienen un grado de $4$.
- Los vértices $\{4, 5, 6, 7, 8, 9\}$ del segundo gráfico tienen un grado de $3$, y los vértices $\{1, 2, 3\}$ tienen un grado de $4$.
Entonces hemos reducido significativamente nuestro espacio de búsqueda de $9! = 362,880$ a $6! \cdot 3! = 4,320$ isomorfismos de gráficos: esa es la cantidad de biyecciones entre los conjuntos de vértices que envían $\{A, B, E, F, H, I\}$ a $\{4, 5, 6, 7, 8, 9\}$ y $\{C, D, G\}$ a $\{1, 2, 3\}$. (Y si el número de vértices de cada grado no coincidiera, sabríamos muy rápidamente que no hay isomorfismo de gráficos).
También podemos distinguir entre los vértices de cada grado. Por ejemplo, en el primer gráfico, $\{A, E, I\}$ son vértices de grado $3$ que son adyacentes a vértices de grado $4$; $\{B, F, H\}$, por otro lado, son vértices de grado $3$ cuyos vecinos tienen todos grado $3$. Esto reduce aún más el espacio de búsqueda.
Si comenzamos a llenar un isomorfismo de gráficos parcial, las piezas se irán encajando a medida que avanzamos. Por ejemplo, podríamos intentar ver si hay un isomorfismo de gráficos que mapea $C$ a $1$. Entonces $A$ (un vecino de $C$ que tiene grado $3$) debe ser mapeado a $4$ o $6$ (vecinos de $1$ que tienen grado $3$). Si $A$ se mapea a $4$, entonces $D$ (un vecino de $A$ y $C$) debe mapearse a $3$ (un vecino de $1$ y $4$), y muy pronto estará completo el isomorfismo.
Para hacer que esto funcione, necesitaremos hacer algunos casos y tal vez necesitemos retroceder, pero generalmente no deberías esperar tener muchas ramas para probar. Los gráficos altamente simétricos son más difíciles de abordar de esta manera, e de hecho son los lugares donde los algoritmos informáticos también fallan.
Otro ejemplo de mirar los grados
Aquí hay otro ejemplo de gráficos que podríamos analizar mirando los grados de los vértices.
Si escribimos los grados de todos los vértices en cada gráfico, en orden ascendente, obtenemos:
- $2, 2, 2, 3, 3, 4, 5, 5$ para el gráfico de la izquierda;
- $2, 2, 3, 3, 3, 4, 4, 5$ para los otros dos gráficos.
Esto nos dice que el primer gráfico no es isomórfico a los otros dos, porque las secuencias de grados no coinciden.
Importante, esto no nos dice que los otros dos gráficos sean isomórficos, aunque tengan la misma secuencia de grados. De hecho, tampoco lo son: en el gráfico del medio, el único vértice de grado $5$ es adyacente a un vértice de grado $2$, y en el gráfico de la derecha, el único vértice de grado $5$ solo está adyacente a vértices de grado $3$ o $4$.
Invariantes de graficos
Un enfoque más general para el isomorfismo de gráficos es buscar invariantes de gráficos: propiedades de un gráfico que pueden ser verdaderas o no para otro. (La secuencia de grados de un gráfico es un invariante de gráfico, pero hay muchos otros). Esto suele ser una forma rápida de demostrar que dos gráficos no son isomórficos, pero no nos dirá mucho si lo son.
Por ejemplo:
- ¿El número de vértices y aristas en un gráfico es igual que en el otro?
- Si un gráfico es planar, ¿es también planar el otro gráfico?
- Si un gráfico es bipartito, ¿es también bipartito el otro gráfico?
- Si un gráfico contiene dos ciclos de longitud $3$, ¿el otro gráfico también contiene dos ciclos de longitud $3$?
Existen invariantes más elaborados. Por ejemplo, podemos calcular el polinomio de Tutte de ambos gráficos: si obtenemos valores diferentes, entonces los gráficos no son isomórficos. Desafortunadamente, si dos gráficos tienen el mismo polinomio de Tutte, eso no garantiza que sean isomórficos.
Enlaces