Em http://www.dharwadker.org/tevet/isomorphism/ , há uma apresentação de um algoritmo para determinar se dois gráficos são isomórficos. Dadas várias afirmações "interessantes" de A Dharwadker, não estou inclinado a acreditar.
Na minha investigação, acho que o algoritmo definitivamente produzirá a resposta correta e informará que dois gráficos não são isomórficos quando, na verdade, estão corretos. No entanto, não está claro que o algoritmo diga consistentemente se dois gráficos são isomórficos quando realmente são. A "prova" de seu resultado deixa algo a desejar.
No entanto, não conheço um contra-exemplo. Antes de começar a escrever um software para testar o algoritmo, pensei em ver se alguém já tinha conhecimento de um contra-exemplo.
Alguém solicitou uma sinopse do algoritmo. Farei o que puder aqui, mas para realmente entender, você deve visitar http://www.dharwadker.org/tevet/isomorphism/ .
Existem duas fases no algoritmo: uma fase de "assinatura" e uma fase de classificação. A primeira fase de "assinatura" (este é o meu termo para o processo deles; eles a chamam de gerar a "matriz de sinais") efetivamente classifica vértices em diferentes classes de equivalência. A segunda fase primeiro ordena os vértices de acordo com sua classe de equivalência e, em seguida, aplica um procedimento de classificação nas classes de equivalência para estabelecer um isomorfismo entre os dois gráficos. Curiosamente, eles não afirmam estabelecer uma forma canônica para os gráficos - em vez disso, um gráfico é usado como uma espécie de modelo para o segundo.
The signature phase is actually quite interesting, and I would not do it justice here by attempting to paraphrase it. If you want further details, I recommend following the link to examine his signature phase. The generated "sign matrix" certainly retains all information about the original graph and then establishes a bit more information. After collecting the signatures, they ignore the original matrix since the signatures contain the entire information about the original matrix. Suffice to say that the signature performs some operation that applies to each edge related to the vertex and then they collects the multiset of elements for a vertex to establish an equivalence class for the vertex.
A segunda fase - a fase de classificação - é a parte que é duvidosa. Em particular, eu esperaria que, se o processo deles funcionasse, o algoritmo desenvolvido por Anna Lubiw para fornecer um "Pedido de matriz duplamente lexical de matrizes" (ver: http://dl.acm.org/citation.cfm?id=22189 ) também funcionaria para definir uma forma canônica para um gráfico.
Para ser justo, não entendo completamente o processo de classificação, embora pense que eles fazem um trabalho razoável para descrevê-lo. (Eu apenas não trabalhei com todos os detalhes). Em outras palavras, posso estar faltando alguma coisa. No entanto, não está claro como esse processo pode fazer muito mais do que encontrar acidentalmente um isomorfismo. Claro, eles provavelmente o encontrarão com alta probabilidade, mas não com garantia. Se os dois gráficos não forem isomórficos, o processo de classificação nunca o encontrará e o processo rejeitará corretamente os gráficos.
fonte
Respostas:
Para
graphA.txt
:e
graphB.txt
:obtido
graphA.txt
através da aplicação da permutação (aleatória)o programa C ++
isororphism.cpp
da Figura 6.3. Um programa C ++ para o algoritmo de isomorfismo gráfico em http://www.dharwadker.org/tevet/isomorphism/ fornece a seguinte saída:Portanto, podemos assumir que esse é um contra-exemplo do algoritmo Isomorfismo Dharwadker-Tevet Graph.
Conforme sugerido pela província de Bill, o problema é
A objeção de Bill Province é que a prova da Proposição 4.1. não usa nenhuma propriedade especial da matriz de sinais que também não se aplicaria à matriz de adjacência. Mais precisamente, a seguinte etapa da prova está errada:
porque, mesmo que as linhas tenham sido perfeitamente correspondidas, não se segue que os rótulos dos vértices correspondem aos rótulos dados por qualquer isomorfismo .φ
Como um buraco na prova de correção foi identificado, o contra-exemplo acima deve ser suficiente para refutar a correção reivindicada do algoritmo proposto.
Agradecimentos O contra-exemplo é o primeiro dos oitavos pares de gráficos de
Para manipular gráficos, usei e modifiquei o código fonte do ScrewBoxR1160.tar encontrado em
Para entender o buraco na prova de correção, András Salamon comentou sobre Weisfeiler-Lehman foi muito útil, assim como as explicações de
A motivação para usar esta questão como uma oportunidade de se familiarizar com nauty / Traces e os aspectos práticos do isomorfismo de grafos foi fornecida pela vzn. O benefício de aprender a usar programas de última geração para isomorfismos de gráficos valeu a pena dedicar algum tempo para encontrar um contra-exemplo (que eu acreditava existir).
fonte