Problema de isomorfismo gráfico para gráficos etiquetados

11

En el caso de los gráficos sin etiquetar, el problema del isomorfismo del gráfico puede abordarse mediante una serie de algoritmos que funcionan muy bien en la práctica. Es decir, aunque el peor tiempo de ejecución es exponencial, generalmente se tiene un tiempo de ejecución polinómico.

Esperaba que la situación sea similar en el caso de los gráficos etiquetados. Sin embargo, me resulta muy difícil encontrar alguna referencia que proponga un algoritmo "prácticamente eficiente".

Observación: Aquí, requerimos que el isomorfismo conserve las etiquetas. Es decir, un isomorfismo entre dos términos finitos de álgebra de autómatas / procesos implicaría que los autómatas / términos son esencialmente "iguales al cambio de nombre de los nodos".

La única referencia que encontré fue la de Wikipedia que establece que el problema del isomorfismo de los gráficos etiquetados puede reducirse polinómicamente al de los gráficos ordinarios. Sin embargo, el artículo subyacente trata más sobre teoría de la complejidad que sobre algoritmos prácticos.

Me falta algo, ¿o es realmente el caso de que no hay algoritmos "heurísticos" eficientes para decidir si dos gráficos etiquetados son isomorfos?

Cualquier pista o referencia sería genial.

Max
fuente
3
Sería bueno dar referencias al artículo de Wikipedia y al artículo que encontraste, para ahorrarnos el problema.
babou
1
¿Qué quiere decir con un isomorfismo que "conserva las etiquetas"? En el contexto de un autómata, las etiquetas de vértice son distintas. Por lo tanto, cualquier isomorfismo trivialmente "preserva las etiquetas" en el sentido de que dos vértices en la fuente que tienen etiquetas distintas también deben tener etiquetas distintas en la imagen. Ese problema es idéntico al problema del isomorfismo gráfico ordinario. Si quiere decir que el isomorfismo debe asignar un vértice a uno con la misma etiqueta, el algoritmo es trivial cuando las etiquetas de los vértices son siempre distintas: simplemente verifique que el mapa de identidad en las etiquetas sea un isomorfismo.
David Richerby
Si quiere considerar el caso en el que varios vértices pueden tener la misma etiqueta y la imagen de un vértice debe tener la misma etiqueta que la original, eso a menudo se denomina isomorfismos entre gráficos coloreados . En ese caso, hay una reducción simple al IG general al reemplazar los colores por gadgets. Probablemente podría obtener un algoritmo práctico decente aplicando gadgets cuidadosamente seleccionados y luego utilizando un algoritmo GI estándar.
David Richerby
SSac,bd
44
g:a1,b2,c3,...)sg(s)Kg(s)) más un nodo adicional en el lado de la flecha del borde. Los gráficos resultantes son isomorfos si y solo si los autómatas originales son isomorfos.
Vor

Respuestas:

5

Quizás te interese este artículo:

Aidan Hogan: Skolemising Nodos en blanco mientras se preserva el isomorfismo. WWW 2015: 430-440

Tiene un algoritmo (basado en Nauty) para probar el isomorfismo de los gráficos RDF, que son esencialmente gráficos etiquetados dirigidos que pueden contener etiquetas fijas. El algoritmo tiene en cuenta las etiquetas para reducir el espacio de búsqueda.

Si puede representar su gráfico etiquetado de entrada como un gráfico RDF, puede intentar usar el paquete de software asociado " blabel" para probar el isomorfismo.

badroit
fuente
4

Descubrí que el algoritmo pertenece a la categoría de algoritmos Weisfeiler-Lehman de dimensión k, y falla con los gráficos regulares. Para más aquí:

http://dabacon.org/pontiff/?p=4148

La publicación original sigue:

Hace años, creé un algoritmo simple y flexible para exactamente este problema (isomorfismo gráfico con etiquetas).

Lo llamé "Powerhash", y para crear el algoritmo requirió dos ideas. El primero es el algoritmo del gráfico de iteración de potencia, también utilizado en PageRank. El segundo es la capacidad de reemplazar la función de paso interno de la iteración de potencia con cualquier cosa que queramos. Lo reemplacé con una función que hace lo siguiente en cada iteración y para cada nodo:

  • Ordenar los hashes (de la iteración anterior) de los vecinos del nodo
  • Hash los hashes ordenados concatenados
  • Reemplazar hash del nodo con hash recién calculado

En el primer paso, el hash de un nodo se ve afectado por sus vecinos directos. En el segundo paso, el hash de un nodo se ve afectado por el vecindario a 2 saltos de distancia. En el enésimo paso, el hash de un nodo se verá afectado por los N-saltos del vecindario a su alrededor. Por lo tanto, solo necesita continuar ejecutando Powerhash para N = pasos de graph_radius. Al final, el hash del nodo del centro gráfico se habrá visto afectado por todo el gráfico.

Para producir el hash final, clasifique los hashes del nodo del paso final y concatenelos juntos. Después de eso, puede comparar los hashes finales para encontrar si dos gráficos son isomorfos. Si tiene etiquetas, agréguelas (en la primera iteración) en los hashes internos que calcule para cada nodo.

Para más información sobre esto, puede ver mi publicación aquí:

https://plus.google.com/114866592715069940152/posts/fmBFhjhQcZF

El algoritmo anterior se implementó dentro de la base de datos relacional funcional "madIS". Puede encontrar el código fuente del algoritmo aquí:

https://github.com/madgik/madis/blob/master/src/functions/aggregate/graph.py

estama
fuente
Solo una advertencia de que su algoritmo es polinómico y, por lo tanto, si está completo, acaba de resolver un problema abierto de larga data en CS sobre GI estar en P. :) (Hay varios casos en los que el algoritmo que describe dará falsos positivos .)
badroit
El algoritmo es aproximado y ciertamente no está completo (lo digo también en la publicación del blog). La razón por la que funciona es que los hash que crea son enormes, por lo que en una base de datos de incluso millones de gráficos, la posibilidad de colisiones hash positivas falsas será infinitesimal. Si logras encontrar algún caso de una colisión de hash falso positivo, me interesaría mucho saberlo. La razón (al usar hashes criptográficos) es que habrá logrado "romper" la función hash criptográfica.
estama
Para elaborar sobre cuán infinitesimal es la posibilidad de una colisión hash. Consideraría que un hash criptográfico de 256 bits es más que suficiente para asegurarme de que todos los diferentes archivos del mundo no tengan el mismo valor (git, por ejemplo, utiliza SHA-1, que es 160 bits para garantizar eso). Un hash de Powerhash será 128bits * graph_node_count (usando MD5 hash). Prácticamente, nunca sería capaz de crear suficientes gráficos (en este universo) para encontrar una colisión hash entre ellos.
estama
1
Quise decir que su algoritmo dará falsos positivos incluso suponiendo que no haya colisiones hash. Se han propuesto muchos algoritmos de tiempo polinómico para el isomorfismo gráfico en la literatura y todos ellos dan falsos positivos. Una pregunta relacionada aquí: cs.stackexchange.com/questions/50939/… .
badroit
1
Gracias por la discusión Con un poco más de investigación, descubrí que el algoritmo anterior está en la categoría de algoritmos Weisfeiler-Lehman de dimensión k, y falla con los gráficos regulares. Para más información aquí: dabacon.org/pontiff/?p=4148
estama