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.