Software para teste de homomorfismo gráfico


8

Eu tenho gráficos e com com que passam verificações de sanidade como como lema sem homomorfismo. Existem ferramentas gratuitas e fáceis de usar para testar o homomorfismo gráfico de para ?GkHk|V(Gk)|=|V(Hk)|2k=n2kkNGH

Respostas:


7

A melhor maneira (em termos de preguiça) é usar a ferramenta Sage, disponível gratuitamente, que tem o melhor suporte para a teoria dos grafos.

Exemplo

sage: G = graphs.PetersenGraph()
sage: G.has_homomorphism_to(graphs.CycleGraph(5))
False
sage: G.has_homomorphism_to(graphs.CompleteGraph(5))
{0: 0, 1: 1, 2: 0, 3: 1, 4: 2, 5: 1, 6: 0, 7: 2, 8: 2, 9: 1}

5

Uma abordagem seria usar um solucionador SAT.

Introduzir uma variável booleana para cada vértice a partir de e cada vértice de . A intuição é que será verdadeira se o homomorfismo mapeia . (Claro, se você tem um conjunto candidato menor de vértices que poderia mapear para - talvez reduzida usando considerações grau ou outros critérios locais - então você pode reduzir o número de variáveis booleanas conformidade Este tipo de pré-processamento pode melhorar a. eficiência dessa abordagem significativamente.)xt,vtGvHxt,vtvt

Em seguida, adicione dois tipos de cláusulas / restrições:

  • Adicione algumas cláusulas para exigir que esse mapeamento forme um homomorfismo de gráfico. Em particular, para cada aresta , adicione a restrição(t,u)E(G)

    (v,w)E(H)(xt,vxu,w).

    (Você pode converter isso em 3CNF usando a transformação Tseitin padrão.)

  • Adicionar algumas cláusulas que exigem que cada vértice da mapeia para exatamente um vértice de . Existem vários métodos padrão para codificar essa restrição. Uma maneira simples é, para cada vértice , adicione a cláusulatGvHtV(G)

    vV(H)xt,v

    e a cláusula

    v,wV(H)(¬xt,v¬xt,w).

Em seguida, você pode usar qualquer solucionador SAT padrão. Não sei até que ponto isso funcionará na prática, mas você pode tentar e ver como funciona.


Na literatura de pesquisa, o problema do homomorfismo dos grafos tem sido estudado extensivamente para gráficos com propriedades especiais (por exemplo, onde é um clique, onde limita a largura da árvore e assim por diante). Se você conhece algo especial sobre a estrutura de seus gráficos, pode ser possível encontrar algoritmos melhores para o seu problema. Para gráficos gerais, esse problema é conhecido como NP-hard.HH

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.