Ecco cosa so del problema della circonferenza nei grafici non ponderati non indirizzati. Prima di tutto, se la circonferenza è pari, puoi determinarla in tempo - questo è un vecchio risultato di Itai e Rodeh (A. Itai e M. Rodeh. Trovare un circuito minimo in un grafico. SIAM J Informatica, 7 (4): 413–423, 1978.). L'idea è: per ogni vertice nel grafico, avviare un BFS fino alla chiusura del primo ciclo (quindi fermarsi e passare al vertice successivo); restituisce il ciclo più breve trovato. Se la circonferenza è anche il ciclo più breve trovato sarà il ciclo più breve. In particolare, se il tuo grafico è bipartito, calcolerà sempre la circonferenza. Se la circonferenza g è dispari, tuttavia, troverai un ciclo di lunghezza g o g +O(n2)gg , quindi potresti essere spento per 1 .g+11
Ora, il vero problema con la circonferenza dispari è che inevitabilmente il tuo algoritmo dovrebbe essere in grado di rilevare se il grafico ha un triangolo. I migliori algoritmi per quello usano la moltiplicazione di matrici: tempo min { n 2.38 , m 1.41 ) per i grafici su n nodi e bordi m . Itai e Rodeh hanno anche mostrato che qualsiasi algoritmo che può trovare un triangolo in grafi densi può anche calcolare la circonferenza, quindi abbiamo un algoritmo O ( n 2.38 ) . Tuttavia, il tempo di esecuzione della circonferenza nei grafici sparsi non è buono come quello per la ricerca di triangoli. Il meglio che conosciamo in generale è O ( mO (n2.38, m1.41)nmO(n2.38) . In particolare, ciò che sembra essere il più difficile è trovare unalgoritmo di tempo o ( n 2 ) per i grafici con m = O ( n ) .O(mn)o(n2)m=O(n)
Se ti interessano gli algoritmi di approssimazione, Liam Roditty e io abbiamo un recente articolo in SODA'12 su questo: Liam Roditty, V. Vassilevska Williams: algoritmi di approssimazione temporale subquadratici per la circonferenza. SODA 2012: 833-845. Lì mostriamo che un tempo di approssimazione può essere trovato in tempi subquadratici e alcuni altri risultati riguardanti approssimazioni ed estensioni additive. In generale, a causa di un teorema di Bondy e Simonovits, quando hai grafici densi, diciamo su n 1 + 1 / k bordi, contengono già brevi cicli pari, diciamo circa 2 k2n1+1/k2k. Quindi più denso è il grafico, più facile è trovare una buona approssimazione alla circonferenza. Quando il grafico è molto scarso, la circonferenza può essere essenzialmente arbitrariamente grande.