Problema de isomorfismo de gráfico para gráficos rotulados

11

No caso de gráficos não rotulados, o problema do isomorfismo do gráfico pode ser resolvido por vários algoritmos que apresentam um desempenho muito bom na prática. Ou seja, embora o pior caso de tempo de execução seja exponencial, geralmente se tem um tempo de execução polinomial.

Eu esperava que a situação fosse semelhante no caso de gráficos rotulados. No entanto, tenho muita dificuldade em encontrar qualquer referência que proponha um algoritmo "praticamente eficiente".

Observação: aqui, exigimos que o isomorfismo preserve os rótulos. Ou seja, um isomorfismo entre dois termos finitos de álgebra de autômato / processo implicaria que os autômatos / termos são essencialmente "iguais à renomeação dos nós".

A única referência que encontrei foi a da Wikipedia que afirma que o problema de isomorfismo dos gráficos rotulados pode ser polinomialmente reduzido ao dos gráficos comuns. O artigo subjacente, no entanto, é mais sobre teoria da complexidade do que algoritmos práticos.

Estou faltando alguma coisa, ou será que realmente não existem algoritmos "heurísticos" eficientes para decidir se dois gráficos rotulados são isomórficos?

Qualquer dica ou referência seria ótimo.

Máx.
fonte
3
Seria bom fazer referências ao artigo da Wikipedia e ao artigo que você encontrou, para nos salvar do problema.
babou
1
O que você quer dizer com isomorfismo que "preserva os rótulos"? No contexto de um autômato, os rótulos dos vértices são distintos. Portanto, qualquer isomorfismo trivialmente "preserva rótulos" no sentido de que dois vértices na fonte que possuem rótulos distintos também devem ter rótulos distintos na imagem. Esse problema é idêntico ao problema comum de isomorfismo gráfico. Se você quer dizer que o isomorfismo deve mapear um vértice para um com o mesmo rótulo, o algoritmo é trivial quando os rótulos dos vértices são sempre distintos: basta verificar se o mapa de identidade nos rótulos é um isomorfismo.
David Richerby
Se você pretende considerar o caso em que vários vértices podem ter o mesmo rótulo e a imagem de um vértice deve ter o mesmo rótulo que o original, que é geralmente chamado de isomorfismos entre gráficos coloridos . Nesse caso, há uma redução simples no IG geral, substituindo as cores por gadgets. Você provavelmente poderia obter um algoritmo prático decente aplicando gadgets cuidadosamente escolhidos e depois usando um algoritmo GI padrão.
David Richerby
SSac,bd
4
g:a1,b2,c3,...)sg(s)Kg(s)) mais um nó extra no lado da seta da borda. Os gráficos resultantes são isomórficos se e somente se os autômatos originais forem isomórficos.
Vor

Respostas:

5

Você pode estar interessado neste artigo:

Aidan Hogan: Skolemising Nós em branco enquanto preserva o isomorfismo. WWW 2015: 430-440

Possui um algoritmo (baseado no Nauty) para testar o isomorfismo dos gráficos RDF, que são essencialmente gráficos rotulados direcionados que podem conter rótulos fixos. O algoritmo leva em consideração os rótulos para reduzir o espaço de pesquisa.

Se você pode representar seu gráfico rotulado como um gráfico RDF, tente usar o pacote de software " blabel" associado para testar o isomorfismo.

badroit
fonte
4

Descobri que o algoritmo pertence à categoria dos algoritmos de dimensão k de Weisfeiler-Lehman e falha com gráficos regulares. Para mais aqui:

http://dabacon.org/pontiff/?p=4148

A postagem original segue:

Anos atrás, criei um algoritmo simples e flexível para exatamente esse problema (isomorfismo de gráfico com rótulos).

Chamei-o de "Powerhash" e, para criar o algoritmo, foram necessários dois insights. O primeiro é o algoritmo de gráfico de iteração de energia, também usado no PageRank. A segunda é a capacidade de substituir a função de etapa interna da iteração de energia por qualquer coisa que desejarmos. Substituí-lo por uma função que faz o seguinte em cada iteração e para cada nó:

  • Classifique os hashes (da iteração anterior) dos vizinhos do nó
  • Hash os hashes classificados concatenados
  • Substitua o hash do nó pelo hash recém-calculado

Na primeira etapa, o hash de um nó é afetado por seus vizinhos diretos. Na segunda etapa, o hash de um nó é afetado pela vizinhança a dois passos dele. Na nésima etapa, o hash de um nó será afetado pelos N-saltos da vizinhança ao seu redor. Portanto, você só precisa continuar executando as etapas do Powerhash para N = graph_radius. No final, o hash do nó do centro do gráfico será afetado por todo o gráfico.

Para produzir o hash final, classifique os hashes do nó da etapa final e concatene-os juntos. Depois disso, você pode comparar os hashes finais para descobrir se dois gráficos são isomórficos. Se você tiver rótulos, adicione-os (na primeira iteração) nos hashes internos que você calcula para cada nó.

Para mais informações, veja meu post aqui:

https://plus.google.com/114866592715069940152/posts/fmBFhjhQcZF

O algoritmo acima foi implementado dentro do banco de dados relacional funcional "madIS". Você pode encontrar o código fonte do algoritmo aqui:

https://github.com/madgik/madis/blob/master/src/functions/aggregate/graph.py

estama
fonte
Apenas um aviso de que seu algoritmo é polinomial e, se estiver completo, você acabou de resolver um problema aberto de longa data no CS sobre o IG estar em P. :) (Existem vários casos em que o algoritmo que você descreve fornece falsos positivos )
badroit 21/03
O algoritmo é aproximado e certamente não completo (digo isso também no post do blog). A razão pela qual funciona é que os hashes criados são enormes; portanto, em um banco de dados de até milhões de gráficos, a possibilidade de colisões de hash falso-positivas será infinitesimal. Se você encontrar algum caso de uma colisão de hash falso positivo, eu ficaria muito interessado em saber sobre isso. O motivo (ao usar hashes criptográficos) é que você conseguiu "interromper" a função de hash criptográfico.
estama
Para elaborar o quão infinitesimal é a possibilidade de uma colisão de hash. Eu consideraria um hash criptográfico de 256 bits mais do que suficiente para garantir que todos os arquivos diferentes do mundo não tenham o mesmo valor (o git, por exemplo, usa SHA-1, que é de 160 bits para garantir isso). Um hash do Powerhash terá 128 bits * graph_node_count (usando o hash MD5). Então, praticamente, você nunca seria capaz de criar gráficos suficientes (neste universo) para encontrar uma colisão de hash entre eles.
estama
1
Eu quis dizer que seu algoritmo fornecerá falsos positivos, mesmo assumindo que não há colisões de hash. Muitos algoritmos de tempo polinomial foram propostos para o isomorfismo de grafos na literatura e todos eles fornecem falsos positivos. Uma pergunta relacionada aqui: cs.stackexchange.com/questions/50939/… .
badroit
1
Obrigado pela discussão. Com mais pesquisas, descobri que o algoritmo acima está na categoria de algoritmos de Weisfeiler-Lehman da dimensão k, e falha com gráficos regulares. Para saber
estama