Algoritmo ideal para encontrar a circunferência de um gráfico esparso?

14

Gostaria de saber como encontrar a circunferência de um gráfico esparso e não direcionado. Por esparso, quero dizer . Por ótimo, quero dizer a menor complexidade de tempo.|E|=O(|V|)

Pensei em alguma modificação no algoritmo de Tarjan para gráficos não direcionados, mas não encontrei bons resultados. Na verdade, eu pensei que se eu pudesse encontrar componentes com 2 conexões em , então eu poderia encontrar a circunferência, por algum tipo de indução que pode ser alcançada desde a primeira parte. Eu posso estar no caminho errado, no entanto. Qualquer algoritmo assintoticamente melhor que Θ ( | V | 2 ) (ou seja, o ( | V | 2 ) ) é bem-vindo.O(|V|)Θ(|V|2)o(|V|2)

Saeed
fonte
1
Virginia Vassilevska Williams e Ryan Williams têm um artigo mostrando que a descoberta de circunferências em gráficos gerais é equivalente ao APSP sob transformações subcúbicas. Não sei se a relação vale para gráficos esparsos, mas isso significa que ficar subquadrático pode ser difícil. Vou deixar qualquer um deles postar os detalhes :)
Suresh Venkat
Não deixamos comentários diretamente nas entradas das Perguntas frequentes, se você tiver uma sugestão, pode iniciar uma meta-discussão ou postar aqui .
Kaveh 13/05

Respostas:

24

Aqui está o que eu sei sobre o problema da circunferência em gráficos não ponderados não direcionados. Antes de tudo, se a circunferência é regular, você pode determiná-la em - este é um resultado antigo de Itai e Rodeh (A. Itai e M. Rodeh. Encontrar um circuito mínimo em um gráfico. SIAM J Computing, 7 (4): 413-423, 1978.). A idéia é: para cada vértice no gráfico, inicie um BFS até o primeiro ciclo ser fechado (então pare e vá para o próximo vértice); retorne o ciclo mais curto encontrado. Se a circunferência for mesmo o ciclo mais curto encontrado, será o ciclo mais curto. Em particular, se o seu gráfico for bipartido, isso sempre calculará a circunferência. Se a circunferência g for ímpar, você encontrará um ciclo de comprimento g ou g +O(n2)gg , então você pode estar desativado por 1 .g+11

Agora, o verdadeiro problema com circunferências ímpares é que inevitavelmente seu algoritmo deveria ser capaz de detectar se o gráfico possui um triângulo. Os melhores algoritmos para isso usam multiplicação de matrizes: min { n 2,38 , m 1,41 ) tempo para gráficos em n nós e m arestas. Itai e Rodeh também mostraram que qualquer algoritmo que pode encontrar um triângulo em gráficos densos também pode calcular a circunferência, então temos um algoritmo de circunferência O ( n 2,38 ) . No entanto, o tempo de execução da circunferência em gráficos esparsos não é tão bom quanto para encontrar triângulos. O melhor que sabemos em geral é O ( mO(n2.38,m1.41)nmO(n2.38) . Em particular, o que parece ser o mais difícil é encontrar umalgoritmo de tempo o ( n 2 ) para gráficos com m = O ( n ) .O(mn)o(n2)m=O(n)

2n1+1/k2k. Portanto, quanto mais denso o gráfico, mais fácil é encontrar uma boa aproximação à circunferência. Quando o gráfico é muito esparso, a circunferência pode ser essencialmente arbitrariamente grande.

virgi
fonte
5
impressionante ! Eu estava esperando que o especialista iria aparecer :)
Suresh Venkat
O(m1.41)
2
O(m1.41)
Existe um algoritmo O (nm) simples e geral baseado em BFS, que surpreende ninguém mencionar: webcourse.cs.technion.ac.il/234247/Winter2003-2004/ho/WCFiles/…
Labo
5

Encontrar circunferência de um gráfico planar tem uma história interessante. Veja este artigo de Chang e Lu para um algoritmo de tempo linear e o histórico de melhorias.

Não existe uma técnica geral para encontrar circunferência de qualquer gráfico esparso. Freqüentemente, precisamos procurar as decomposições ou incorporações especiais associadas para obter melhores limites. Se um gráfico é "comprovadamente" escasso, geralmente há uma boa estrutura associada a ele. Por exemplo, gráficos limitados de largura de árvore são escassos e possuem decomposições de árvore associadas.

o(n2)

Shiva Kintali
fonte
O documento planar parece interessante, obrigado.
Saeed