Alguém está ciente de um contra-exemplo ao algoritmo de Isomorfismo Dharwadker-Tevet Graph?


10

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.


Você pode dar um resumo da ideia do algoritmo?
Mohammad Al-Turkistany

11
consulte também math.stackexchange.com/questions/333633/… . Isso só mostra que há uma boa chance de encontrar um contra-exemplo para o programa fornecido, mas ainda tem de encontrar um ...
Thomas Klimpel

Gráficos fortemente regulares parecem uma boa aposta, mas não tive sorte com permutações selecionadas aleatoriamente do gráfico de Petersen, gráfico de Clebsch ou gráfico da torre 4x4.
22415 Peter

Da mesma forma, tentei o gráfico de Shrikhande, mas não tentei todas as permutações. Enviei um e-mail para Anna Lubiw solicitando contra-exemplos a ela "Ordenação de matrizes duplamente lexicais", mas ela não respondeu (pelo menos ainda não). Suspeito que precisarei fazer uma pesquisa mais sistemática.
Bill Province

11
não sinta que você está prestando um serviço, omitindo reivindicações extravagantes do artigo, embora ele provavelmente levante bandeiras neste site. Quais são as alegações extravagantes que fazem você cético? talvez eles afirmem que tem desempenho rápido, mas isso não pode ser refutado com um único contra-exemplo. ou seja, é possível que o algoritmo esteja correto (não foi observado), mas a análise de complexidade está desativada. de qualquer forma, convide uma discussão mais aprofundada / uma análise mais aprofundada no Chat Teórico da Ciência da Computação , em que vários visitantes expressaram interesse significativo em IG no passado e há uma discussão prolongada recente.
vzn

Respostas:


18

Para graphA.txt:

25
 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
 1 0 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0
 1 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1
 1 1 1 0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0
 1 1 1 0 0 0 0 1 0 0 1 1 0 1 0 0 1 1 0 1 0 0 1 1 0
 1 1 1 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
 1 1 1 0 0 0 0 0 0 1 0 1 1 0 0 1 0 1 1 0 0 1 0 1 1
 1 0 0 1 1 0 0 0 1 1 1 0 0 1 0 1 0 0 1 0 0 0 1 1 1
 1 0 0 1 0 1 0 1 0 1 0 0 1 0 0 0 1 1 1 1 0 1 1 0 0
 1 0 0 1 0 0 1 1 1 0 0 1 0 0 1 0 1 1 0 0 1 0 0 1 1
 1 0 0 0 1 1 0 1 0 0 0 1 1 0 1 1 0 0 1 1 1 0 0 1 0
 1 0 0 0 1 0 1 0 0 1 1 0 1 1 1 0 0 1 0 0 1 1 1 0 0
 1 0 0 0 0 1 1 0 1 0 1 1 0 1 0 1 1 0 0 1 0 1 0 0 1
 0 1 0 1 1 0 0 1 0 0 0 1 1 0 1 1 1 0 0 0 0 1 1 0 1
 0 1 0 1 0 1 0 0 0 1 1 1 0 1 0 0 1 0 1 0 1 1 0 1 0
 0 1 0 1 0 0 1 1 0 0 1 0 1 1 0 0 0 1 1 1 1 0 0 0 1
 0 1 0 0 1 1 0 0 1 1 0 0 1 1 1 0 0 1 0 1 0 0 0 1 1
 0 1 0 0 1 0 1 0 1 1 0 1 0 0 0 1 1 0 1 1 1 0 1 0 0
 0 1 0 0 0 1 1 1 1 0 1 0 0 0 1 1 0 1 0 0 0 1 1 1 0
 0 0 1 1 1 0 0 0 1 0 1 0 1 0 0 1 1 1 0 0 1 1 0 1 0
 0 0 1 1 0 1 0 0 0 1 1 1 0 0 1 1 0 1 0 1 0 0 1 0 1
 0 0 1 1 0 0 1 0 1 0 0 1 1 1 1 0 0 0 1 1 0 0 1 1 0
 0 0 1 0 1 1 0 1 1 0 0 1 0 1 0 0 0 1 1 0 1 1 0 0 1
 0 0 1 0 1 0 1 1 0 1 1 0 0 0 1 0 1 0 1 1 0 1 0 0 1
 0 0 1 0 0 1 1 1 0 1 0 0 1 1 0 1 1 0 0 0 1 0 1 1 0

e graphB.txt:

25
 0 0 0 1 1 0 0 0 0 1 1 1 1 0 0 1 0 1 1 0 1 1 0 1 0
 0 0 1 1 1 1 1 0 0 0 0 0 0 0 1 1 0 0 1 1 1 1 0 0 1
 0 1 0 1 0 0 1 1 1 0 1 0 0 0 0 1 0 1 1 1 0 0 1 1 0
 1 1 1 0 1 0 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0
 1 1 0 1 0 0 0 0 1 1 0 0 0 1 1 1 1 0 0 1 1 0 0 1 0
 0 1 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1 1 0 0 1 1 1 1 1
 0 1 1 1 0 1 0 0 1 1 0 0 1 1 0 0 1 1 1 0 0 1 0 0 0
 0 0 1 1 0 0 0 0 1 0 1 1 1 0 1 0 1 1 0 1 1 0 0 0 1
 0 0 1 1 1 0 1 1 0 1 0 0 1 1 0 0 0 0 0 0 1 0 1 1 1
 1 0 0 1 1 1 1 0 1 0 0 1 0 0 0 1 1 1 0 0 0 0 1 0 1
 1 0 1 1 0 1 0 1 0 0 0 0 1 0 1 1 1 0 0 0 0 1 1 1 0
 1 0 0 1 0 0 0 1 0 1 0 0 0 1 1 0 0 1 1 1 0 1 1 0 1
 1 0 0 0 0 0 1 1 1 0 1 0 0 1 0 1 1 0 1 0 1 1 0 0 1
 0 0 0 0 1 0 1 0 1 0 0 1 1 0 1 0 1 0 1 1 0 1 1 1 0
 0 1 0 1 1 1 0 1 0 0 1 1 0 1 0 0 1 0 1 0 1 0 1 0 0
 1 1 1 0 1 0 0 0 0 1 1 0 1 0 0 0 1 0 1 1 0 0 1 0 1
 0 0 0 0 1 1 1 1 0 1 1 0 1 1 1 1 0 1 0 1 0 0 0 0 0
 1 0 1 0 0 1 1 1 0 1 0 1 0 0 0 0 1 0 1 1 1 0 0 1 0
 1 1 1 0 0 0 1 0 0 0 0 1 1 1 1 1 0 1 0 0 1 0 1 0 0
 0 1 1 0 1 0 0 1 0 0 0 1 0 1 0 1 1 1 0 0 0 1 0 1 1
 1 1 0 0 1 1 0 1 1 0 0 0 1 0 1 0 0 1 1 0 0 0 0 1 1
 1 1 0 1 0 1 1 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 1 1
 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 1 0 0 1 0 0 0 0 1 1
 1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0 0 1 0 1 1 1 1 0 0
 0 1 0 0 0 1 0 1 1 1 0 1 1 0 0 1 0 0 0 1 1 1 1 0 0

obtido graphA.txtatravés da aplicação da permutação (aleatória)

 22 9 24 11 15 8 5 18 13 14 2 10 23 0 3 17 4 16 6 19 7 21 12 1 20

o programa C ++ isororphism.cppda 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:

The Graph Isomorphism Algorithm
by Ashay Dharwadker and John-Tagore Tevet
http://www.dharwadker.org/tevet/isomorphism/
Copyright (c) 2009
Computing the Sign Matrix of Graph A...
Computing the Sign Matrix of Graph B...
Graph A and Graph B have the same sign frequency vectors in lexicographic order but cannot be isomorphic.
See result.txt for details.

Portanto, podemos assumir que esse é um contra-exemplo do algoritmo Isomorfismo Dharwadker-Tevet Graph.

Conforme sugerido pela província de Bill, o problema é

GAGB

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:

1,...,tAB1,...,tAv1,...,vt1,...,tBφ(v1)=v1,...,φ(vt)=vt respectivamente.

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

http://funkybee.narod.ru/graphs.htm

Para manipular gráficos, usei e modifiquei o código fonte do ScrewBoxR1160.tar encontrado em

https://people.mpi-inf.mpg.de/~pascal/software/

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

http://users.cecs.anu.edu.au/~pascal/docs/thesis_pascal_schweitzer.pdf

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).


Obrigado pela resposta muito detalhada. Você utilizou um critério de seleção para o gráfico para encontrar o contra-exemplo? Depois que o contra-exemplo foi selecionado, seu comentário parece sugerir que a permutação foi escolhida aleatoriamente. Isso era verdade? Ou havia mais na seleção da permutação?
Bill Province

@BillProvince O critério de seleção foi baseado no comentário de András Salamon, porque indicava que uma construção de Cai, Fürer e Immerman poderia ser bem-sucedida. Tentei pela primeira vez um exemplo n = 546 de Pascal Schweitzer, mas o programa original C ++ isororphism.cpp agora está computando desde> 1566 minutos. Usei melhores estruturas de dados e aprendi após> 2h que o grande contra-exemplo funciona. Eu sabia que trg787 / funkybee tinha algumas construções de Cai, Fürer e Immerman entre seus pares de gráficos, então tentei a sorte. Tentei várias permutações aleatórias (para o exemplo n = 25), a segunda funcionou.
Thomas Klimpel

qual deles economiza tempo; 1. encontrando um exemplo contrário; 2. provar que 4,1 está errado.
Jim

Parei o programa original C ++ isoromorphism.cpp para o exemplo n = 546 agora, depois de executar por mais de 6200 minutos sem fim à vista.
Thomas Klimpel

@ThomasKlimpel Planejo escrever um artigo que mencione esse resultado. Se você tem uma atribuição profissional preferida, envie-me por e-mail para billprovince@gmail.com. Independentemente disso, pretendo seguir os requisitos de atribuição publicados em blog.stackexchange.com/2009/06/attribution-required .
Bill Province
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.