Algoritmo de canonização de gráfico simples

8

Estou procurando um algoritmo que forneça uma string canônica para um determinado gráfico colorido. Ou seja. um algoritmo que retorna uma string para um gráfico, de modo que dois gráficos obtenham a mesma string se e somente se forem isomórficos.

Em particular, estou procurando um algoritmo simples que seja fácil de implementar com um desempenho razoável na maioria dos gráficos (no pior dos casos, super polinomial, é claro). Estou esperando gráficos pequenos, para que o desempenho não precise ser estelar, apenas bom o suficiente.

Infelizmente, a maioria das coisas que encontrei são altamente complexas e mais interessadas em expressar conexões matemáticas profundas do que simplesmente descrever o algoritmo. Receio não ter tempo de mergulhar tão fundo. Alguém pode me dar um atalho?

Espero algo como o algoritmo de Floyd-Warshall. Não é ideal, mas bom o suficiente e fácil de implementar.

Pedro
fonte
Os gráficos são rotulados de forma consistente? Se sim, basta anotar todas as bordas e classificar a lista.
adriann
Ah desculpa. Os vértices e arestas são rotulados, mas não exclusivamente. Cada etiqueta pode ocorrer várias vezes. Eu acho que a frase matemática é "colorida" ao invés de rotulada. Eu vou editar a pergunta.
Peter Peter
"pior caso NP, é claro" - apenas para que fiquemos claros: existe um algoritmo de tempo polinomial (determinístico) conhecido para isomorfismo de gráfico, então o melhor que você pode esperar é uma solução super-polinomial. E sim, o problema está no NP. Veja aqui para detalhes sobre essas noções.
Raphael
@ Rafael Você está certo, terminologia mais inexata. O pior caso é super polinomial. No entanto, existem algoritmos polinomiais de caso médio, pelo que deve ser pelo menos possível.
Peter
@ Rafael O melhor que você pode esperar é um algoritmo rápido que funcione para a maioria dos gráficos.
Yuval Filmus

Respostas:

3

Brendan McKay e Adolfo Piperno escreveram uma pesquisa sobre esta questão em 2013. Eles apresentam vários programas de computador eficientes que canonizam muitos gráficos mais rapidamente do que você imagina. Não é necessário (e não faz sentido) implementar esses algoritmos você mesmo - eles estão disponíveis online, mesmo como código-fonte.

Yuval Filmus
fonte
Há uma redução entre GI colorido e GI (com blowup multiplicativo constante devido a um número constante de cores), ou talvez os próprios algoritmos possam ser modificados.
Yuval Filmus
Você pode descrever um aqui para dar uma resposta completa?
Raphael
3
Para cada cor, adicione um vértice extra. Conecte cada vértice original ao vértice que representa sua cor adicionando uma aresta. Verifique se os graus dos vértices da "cor" são únicos - se não for esse o caso, adicione loops ou outras arestas falsas. A propósito, estou menos do que feliz com o trabalho de pesquisa de McKay / Piperno - é uma pesquisa de sua própria pesquisa, e as comparações que eles fazem com outras ferramentas estão nos pontos de referência que consideram interessantes. Eles omitem desenvolvimentos recentes importantes e quase todos os benchmarks derivados de aplicações não-teóricas, o que afeta resultados empíricos.
Igor Markov
2

Acabei implementando o algoritmo Nauty, mas, ao fazê-lo, descobri uma resposta para minha própria pergunta. Nauty estende esse algoritmo básico com muitas heurísticas complicadas:

Dado um pequeno gráfico G de comprimento n:

  1. Loop sobre todos ospermutações de seus vértices.n!
  2. Gere uma representação de string de cada um (um para um).
  3. Defina alguma ordem canônica de seqüências de caracteres e lembre-se da menor string encontrada.

Esse algoritmo é , Mas para gráficos pequenos deve funcionar bem.O(n!)

O Nauty estende esse algoritmo principalmente removendo o espaço de pesquisa dos gráficos a considerar, ao procurar aquele com a menor representação de string.

Pedro
fonte
1
Os gráficos devem ser muito pequenos se essa abordagem de força bruta for plausível. Mesmoé maior que . 15!1012
David Richerby
1
@DavidRicherby Absolutely. No entanto, existem casos de uso, como análise de motivos, em que essa operação é feita apenas em gráficos de tamanho 3 ou 4. Na verdade, não sei se é possível encontrar um subgrafo isomórfico canônico em tempo razoável para gráficos. mais de 15 nós (mesmo que agora se saiba que o próprio isomorfismo do subgrafo é muito próximo do polinômio) #
Peter