Problème d'isomorphisme des graphes pour les graphes étiquetés

11

Dans le cas des graphes non étiquetés, le problème d'isomorphisme des graphes peut être résolu par un certain nombre d'algorithmes qui fonctionnent très bien en pratique. Autrement dit, bien que le pire des temps d'exécution soit exponentiel, on a généralement un temps d'exécution polynomial.

J'espérais que la situation est similaire dans le cas des graphiques étiquetés. Cependant, j'ai vraiment du mal à trouver une référence qui propose un algorithme "pratiquement efficace".

Remarque: Ici, nous exigeons que l'isomorphisme préserve les étiquettes. C'est-à-dire qu'un isomorphisme entre deux termes finis d'automate / algèbre de processus impliquerait que les automates / termes sont essentiellement "égaux jusqu'au renommage des nœuds".

La seule référence que j'ai trouvée était celle de Wikipedia qui stipule que le problème d'isomorphisme des graphiques étiquetés peut être polynomialement réduit à celui des graphiques ordinaires. Cependant, l'article sous-jacent concerne davantage la théorie de la complexité que les algorithmes pratiques.

Il me manque quelque chose, ou est-ce vraiment le cas qu'il n'y a pas d'algorithmes "heuristiques" efficaces pour décider si deux graphes étiquetés sont isomorphes?

Tout indice ou référence serait formidable.

Max
la source
3
Ce serait bien de faire référence à l'article de wikipedia et au papier que vous avez trouvé, pour nous éviter les ennuis.
babou
1
Qu'entendez-vous par un isomorphisme qui "préserve les étiquettes"? Dans le contexte d'un automate, les étiquettes de vertex sont distinctes. Par conséquent, tout isomorphisme «conserve de manière triviale des étiquettes» dans le sens où deux sommets de la source qui ont des étiquettes distinctes doivent également avoir des étiquettes distinctes dans l'image. Ce problème est identique au problème d'isomorphisme de graphe ordinaire. Si vous voulez dire que l'isomorphisme doit mapper un sommet à un avec la même étiquette, l'algorithme est trivial lorsque les étiquettes de sommet sont toujours distinctes: vérifiez simplement que la carte d'identité sur les étiquettes est un isomorphisme.
David Richerby
Si vous envisagez de considérer le cas où plusieurs sommets peuvent avoir la même étiquette et l'image d'un sommet doit avoir la même étiquette que l'original, on parle souvent d'isomorphismes entre les graphiques colorés . Dans ce cas, il y a une simple réduction de l'IG général en remplaçant les couleurs par des gadgets. Vous pourriez probablement obtenir un algorithme pratique décent en appliquant des gadgets soigneusement choisis, puis en utilisant un algorithme GI standard.
David Richerby
Êtes-vous vraiment réticent à considérer deux digraphes étiquetés comme isomorphes s'il existe un isomorphisme digraphique ordinaire qui préserve également les classes d'équivalence d'étiquettes? Dans votre exemple, si l'on considère les deux comme des FA, les langages acceptés par et S , bien que différents (peut-être), ne sont en réalité que des images homorphes les unes des autres par les substitutions a c , b d . SSac,bd
Rick Decker du
4
Le problème est trivialement complet (choisissez simplement un graphique où tous les bords ont la même étiquette). Pour montrer qu'il n'y a pas plus dur que isomorphisme de graphes, de construire une correspondance 1: 1 des étiquettes de nombres entiers ( Et d' ajouter au milieu de chaque bord marqué avec symbole s un graphique complet sur les sommets g ( s ) ( K g ( s )g:a1,b2,c3,...)sg(s)Kg(s)) plus un nœud supplémentaire sur le côté flèche du bord. Les graphes résultants sont isomorphes si et seulement si les automates d'origine sont isomorphes.
Vor

Réponses:

5

Vous pourriez être intéressé par cet article:

Aidan Hogan: Skolémiser des nœuds vides tout en préservant l'isomorphisme. WWW 2015: 430-440

Il dispose d'un algorithme (basé sur Nauty) pour tester l'isomorphisme des graphes RDF, qui sont essentiellement des graphes étiquetés dirigés qui peuvent contenir des étiquettes fixes. L'algorithme prend en compte les étiquettes pour réduire l'espace de recherche.

Si vous pouvez représenter votre graphe étiqueté en entrée comme un graphe RDF, vous pouvez essayer d'utiliser le progiciel associé " blabel" pour tester l'isomorphisme.

badroit
la source
4

J'ai découvert que l'algorithme appartient à la catégorie des algorithmes de Weisfeiler-Lehman de dimension k, et il échoue avec les graphiques réguliers. Pour en savoir plus ici:

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

Le message d'origine suit:

Il y a des années, j'ai créé un algorithme simple et flexible pour exactement ce problème (isomorphisme graphique avec étiquettes).

Je l'ai nommé "Powerhash", et pour créer l'algorithme, il a fallu deux idées. Le premier est l'algorithme de graphique d'itération de puissance, également utilisé dans PageRank. La seconde est la possibilité de remplacer la fonction d'étape interne de l'itération de puissance par tout ce que nous voulons. Je l'ai remplacé par une fonction qui fait ce qui suit à chaque itération et pour chaque nœud:

  • Trier les hachages (de l'itération précédente) des voisins du nœud
  • Hachage des hachages triés concaténés
  • Remplacer le hachage du nœud par un hachage nouvellement calculé

Lors de la première étape, le hachage d'un nœud est affecté par ses voisins directs. À la deuxième étape, le hachage d'un nœud est affecté par le voisinage à 2 sauts de lui. À la Nème étape, le hachage d'un nœud sera affecté par les N-sauts de voisinage qui l'entourent. Il vous suffit donc de continuer à exécuter Powerhash pour N = étapes graph_radius. Au final, le hachage du nœud central du graphe aura été affecté par l'ensemble du graphe.

Pour produire le hachage final, triez les hachages de nœuds de l'étape finale et concaténez-les ensemble. Après cela, vous pouvez comparer les hachages finaux pour savoir si deux graphiques sont isomorphes. Si vous avez des étiquettes, ajoutez-les (lors de la première itération) dans les hachages internes que vous calculez pour chaque nœud.

Pour en savoir plus, vous pouvez consulter mon article ici:

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

L'algorithme ci-dessus a été implémenté dans la base de données relationnelle fonctionnelle "madIS". Vous pouvez trouver le code source de l'algorithme ici:

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

estama
la source
Juste un avertissement que votre algorithme est polynomial et donc s'il est complet, vous venez de résoudre un problème ouvert de longue date dans CS sur GI étant en P. :) (Il existe divers cas où l'algorithme que vous décrivez donnera des faux positifs .)
badroit
L'algorithme est approximatif et certainement pas complet (je le dis aussi dans le blog). La raison pour laquelle cela fonctionne est que les hachages qu'il crée sont énormes, donc dans une base de données de millions de graphiques, la possibilité de collisions de hachage faussement positives sera infinitésimale. Si vous parvenez à trouver un cas de collision de hachage faussement positive, je serais très intéressé de le savoir. La raison (lors de l'utilisation de hachages cryptographiques) est que vous aurez réussi à "casser" la fonction de hachage cryptographique.
estama
Pour expliquer à quel point la possibilité d'une collision de hachage est infinitésimale. Je considérerais un hachage cryptographique de 256 bits comme étant plus que suffisant pour être sûr que tous les différents fichiers du monde ne hachent pas à la même valeur (git par exemple utilise SHA-1 qui est 160 bits pour garantir cela). Un hachage de Powerhash sera de 128 bits * graph_node_count (en utilisant le hachage MD5). Donc, pratiquement, vous ne pourriez jamais créer suffisamment de graphiques (dans cet univers) pour trouver une collision de hachage entre eux.
estama
1
Je voulais dire que votre algorithme donnera des faux positifs même en supposant qu'il n'y a pas de collision de hachage. Un grand nombre d'algorithmes en temps polynomial ont été proposés pour l'isomorphisme des graphes dans la littérature et tous donnent des faux positifs. Une question connexe ici: cs.stackexchange.com/questions/50939/… .
badroit
1
Merci pour la discussion. Avec plus de recherches, j'ai trouvé que l'algorithme ci-dessus est dans la catégorie des algorithmes de Weisfeiler-Lehman de dimension k, et il échoue avec les graphiques réguliers. Pour plus d'informations ici: dabacon.org/pontiff/?p=4148
estama