En http://www.dharwadker.org/tevet/isomorphism/ , hay una presentación de un algoritmo para determinar si dos gráficos son isomorfos. Teniendo en cuenta una serie de afirmaciones "interesantes" de A Dharwadker, no estoy dispuesto a creerlo.
En mi investigación, encuentro que el algoritmo definitivamente producirá la respuesta correcta y le diré que dos gráficos no son isomórficos cuando en realidad es correcto. Sin embargo, no está claro que el algoritmo le diga constantemente si dos gráficos son isomórficos cuando en realidad lo son. La "prueba" de su resultado deja algo que desear.
Sin embargo, no conozco un contraejemplo. Antes de comenzar a escribir software para probar el algoritmo, pensé que vería si alguien ya conocía un contraejemplo.
Alguien solicitó una sinopsis del algoritmo. Haré lo que pueda aquí, pero para entenderlo realmente, debe visitar http://www.dharwadker.org/tevet/isomorphism/ .
El algoritmo tiene dos fases: una fase de "firma" y una fase de clasificación. La primera fase de "firma" (este es mi término para su proceso; lo llaman generar la "matriz de signos") clasifica efectivamente los vértices en diferentes clases de equivalencia. La segunda fase primero ordena los vértices de acuerdo con su clase de equivalencia, y luego aplica un procedimiento de clasificación dentro de las clases de equivalencia para establecer un isomorfismo entre los dos gráficos. Curiosamente, no pretenden establecer una forma canónica para los gráficos; en cambio, un gráfico se usa como una especie de plantilla para el segundo.
La fase de firma es realmente bastante interesante, y no le haría justicia aquí al intentar parafrasearla. Si desea más detalles, le recomiendo seguir el enlace para examinar su fase de firma. La "matriz de signos" generada ciertamente retiene toda la información sobre el gráfico original y luego establece un poco más de información. Después de recopilar las firmas, ignoran la matriz original, ya que las firmas contienen toda la información sobre la matriz original. Baste decir que la firma realiza alguna operación que se aplica a cada borde relacionado con el vértice y luego recolecta el conjunto múltiple de elementos para un vértice para establecer una clase de equivalencia para el vértice.
La segunda fase, la fase de clasificación, es la parte que es dudosa. En particular, esperaría que si su proceso funcionara, entonces el algoritmo desarrollado por Anna Lubiw para proporcionar un "Orden de matrices doblemente léxico" (Ver: http://dl.acm.org/citation.cfm?id=22189 ) También funcionaría para definir una forma canónica para un gráfico.
Para ser justos, no entiendo completamente su proceso de clasificación, aunque creo que hacen un trabajo razonable al describirlo. (Simplemente no he trabajado con todos los detalles). En otras palabras, me puede faltar algo. Sin embargo, no está claro cómo este proceso puede hacer mucho más que encontrar accidentalmente un isomorfismo. Claro, probablemente lo encontrarán con alta probabilidad, pero no con garantía. Si las dos gráficas no son isomorfas, el proceso de clasificación nunca lo encontrará y el proceso rechaza correctamente las gráficas.
fuente
Respuestas:
Para
graphA.txt
:y
graphB.txt
:que se obtiene
graphA.txt
aplicando la permutación (aleatoria)El programa C ++
isororphism.cpp
de la Figura 6.3. Un programa C ++ para el algoritmo de isomorfismo gráfico en http://www.dharwadker.org/tevet/isomorphism/ ofrece el siguiente resultado:Por lo tanto, podemos suponer que este es un contraejemplo del algoritmo de isomorfismo gráfico Dharwadker-Tevet.
Como lo sugirió Bill Province, el problema es
La objeción de Bill Province es que la prueba de la Proposición 4.1. no utiliza ninguna propiedad especial de la matriz de signos que no se aplique también a la matriz de adyacencia. Más precisamente, el siguiente paso en la prueba es incorrecto:
porque incluso si las filas han coincidido perfectamente, no se sigue que las etiquetas de vértice coincidan con las etiquetas dadas por cualquier isomorfismo .φ
Debido a que se identificó un agujero en la prueba de corrección, el contraejemplo anterior debería ser suficiente para refutar la corrección alegada del algoritmo propuesto.
Agradecimientos El contraejemplo es el primero de los octavos pares de gráficos de
Para manipular gráficos, utilicé y modifiqué el código fuente de ScrewBoxR1160.tar que se encuentra en
Para comprender el agujero en la prueba de corrección, el comentario de András Salamon sobre Weisfeiler-Lehman fue muy útil, al igual que las explicaciones de
Vzn proporcionó la motivación para usar esta pregunta como una oportunidad para familiarizarse con la náutica / Traces y los aspectos prácticos del isomorfismo gráfico. El beneficio de aprender a usar programas de última generación para los isomorfismos de gráficos hizo que valiera la pena dedicar algo de tiempo para encontrar un contraejemplo (que creía firmemente que existía).
fuente