Unter http://www.dharwadker.org/tevet/isomorphism/ wird ein Algorithmus vorgestellt, mit dem ermittelt werden kann, ob zwei Diagramme isomorph sind. Angesichts einer Reihe von "interessanten" Behauptungen von A Dharwadker bin ich nicht geneigt, es zu glauben.
Bei meiner Untersuchung stelle ich fest, dass der Algorithmus definitiv die richtige Antwort liefert und Ihnen sagt, dass zwei Graphen nicht isomorph sind, obwohl dies tatsächlich korrekt ist. Es ist jedoch nicht klar, dass der Algorithmus Ihnen konsistent sagt, ob zwei Graphen isomorph sind, wenn sie tatsächlich sind. Der "Beweis" ihres Ergebnisses lässt zu wünschen übrig.
Ein Gegenbeispiel ist mir jedoch nicht bekannt. Bevor ich anfing, Software zum Testen des Algorithmus zu schreiben, dachte ich, ich würde sehen, ob jemand bereits ein Gegenbeispiel kennt.
Jemand hat eine Zusammenfassung des Algorithmus angefordert. Ich werde hier tun, was ich kann, aber um es wirklich zu verstehen, sollten Sie http://www.dharwadker.org/tevet/isomorphism/ besuchen .
Der Algorithmus besteht aus zwei Phasen: einer "Signatur" -Phase und einer Sortierphase. Die erste "Signatur" -Phase (dies ist mein Begriff für ihren Prozess; sie nennen es die Erzeugung der "Zeichenmatrix") sortiert Scheitelpunkte effektiv in verschiedene Äquivalenzklassen. In der zweiten Phase werden die Scheitelpunkte zunächst nach ihrer Äquivalenzklasse geordnet und anschließend innerhalb der Äquivalenzklassen eine Sortierprozedur angewendet, um einen Isomorphismus zwischen den beiden Graphen herzustellen. Interessanterweise behaupten sie nicht, eine kanonische Form für die Graphen zu erstellen - stattdessen wird ein Graph als eine Art Vorlage für den zweiten verwendet.
Die Signaturphase ist eigentlich ziemlich interessant, und ich würde es hier nicht gerecht machen, wenn ich versuchen würde, sie zu paraphrasieren. Wenn Sie weitere Details wünschen, empfehle ich, dem Link zu folgen, um seine Signaturphase zu überprüfen. Die erzeugte "Vorzeichenmatrix" behält sicher alle Informationen über das ursprüngliche Diagramm bei und erstellt dann etwas mehr Informationen. Nach dem Sammeln der Signaturen ignorieren sie die ursprüngliche Matrix, da die Signaturen die gesamten Informationen über die ursprüngliche Matrix enthalten. Es genügt zu sagen, dass die Signatur eine Operation ausführt, die für jede Kante gilt, die sich auf den Scheitelpunkt bezieht, und dann die Mehrfachmenge von Elementen für einen Scheitelpunkt sammelt, um eine Äquivalenzklasse für den Scheitelpunkt festzulegen.
Die zweite Phase - die Sortierphase - ist der zweifelhafte Teil. Insbesondere würde ich erwarten, dass, wenn ihr Prozess funktioniert, der von Anna Lubiw entwickelte Algorithmus für die Bereitstellung einer "doppelt lexikalischen Reihenfolge von Matrizen" (siehe: http://dl.acm.org/citation.cfm?id=22189 ) würde auch funktionieren, um eine kanonische Form für einen Graphen zu definieren.
Um fair zu sein, ich verstehe ihren Sortierprozess nicht ganz, obwohl ich denke, dass sie es vernünftig beschreiben. (Ich habe einfach nicht alle Details durchgearbeitet). Mit anderen Worten, mir fehlt möglicherweise etwas. Es ist jedoch unklar, wie dieser Prozess viel mehr bewirken kann, als versehentlich einen Isomorphismus zu finden. Sicher, sie werden es wahrscheinlich mit hoher Wahrscheinlichkeit finden, aber nicht mit einer Garantie. Wenn die beiden Diagramme nicht isomorph sind, wird sie vom Sortierprozess nie gefunden, und der Prozess lehnt die Diagramme korrekt ab.
quelle
Antworten:
Für
graphA.txt
:und
graphB.txt
:welches
graphA.txt
durch Anwenden der (zufälligen) Permutation erhalten wirddas C ++ - Programm
isororphism.cpp
aus Abbildung 6.3. Ein C ++ - Programm für den Graphisomorphismus-Algorithmus in http://www.dharwadker.org/tevet/isomorphism/ liefert die folgende Ausgabe:Wir können also annehmen, dass dies ein Gegenbeispiel zum Dharwadker-Tevet-Graph-Isomorphismus-Algorithmus ist.
Wie von Bill Province vorgeschlagen, ist das Problem
Der Einwand von Bill Province ist, dass der Beweis von Satz 4.1. verwendet keine spezielle Eigenschaft der Vorzeichenmatrix, die nicht auch für die Adjazenzmatrix gelten würde. Genauer gesagt ist der folgende Schritt im Beweis falsch:
denn selbst wenn die Zeilen perfekt übereinstimmen, folgt daraus nicht, dass die Scheitelpunktbeschriftungen mit den Beschriftungen übereinstimmen, die durch einen Isomorphismus .φ
Da ein Loch im Korrektheitsnachweis identifiziert wurde, sollte das obige Gegenbeispiel ausreichen, um die behauptete Korrektheit des vorgeschlagenen Algorithmus zu widerlegen.
Danksagung Das Gegenbeispiel ist das erste der 8. Graphenpaare aus
Um Diagramme zu bearbeiten, habe ich den Quellcode von ScrewBoxR1160.tar verwendet und geändert, der unter gefunden wurde
Um das Loch im Korrektheitsnachweis zu verstehen, war der Kommentar von András Salamon zu Weisfeiler-Lehman sehr hilfreich, ebenso wie die Erklärungen von
Die Motivation, diese Frage als Gelegenheit zu nutzen, sich mit nauty / Traces und den praktischen Aspekten des Graphisomorphismus vertraut zu machen, wurde von vzn bereitgestellt. Der Vorteil des Lernens, wie man hochmoderne Programme für Graphisomorphismen verwendet, hat es sich gelohnt, einige Zeit für die Suche nach einem Gegenbeispiel zu investieren (von dem ich fest überzeugt war, dass es existiert).
quelle