Algoritmo ottimale per trovare la circonferenza di un grafico sparso?


14

Mi chiedo come trovare la circonferenza di un grafico sparso non orientato. Per rado intendo . Per ottimale intendo la minore complessità temporale.|E|=O(|V|)

Ho pensato ad alcune modifiche all'algoritmo di Tarjan per i grafici non indirizzati, ma non ho trovato buoni risultati. In realtà ho pensato che se avessi trovato un componente a 2 connessioni in , allora avrei potuto trovare la circonferenza, tramite una sorta di induzione che può essere ottenuta dalla prima parte. Potrei essere sulla strada sbagliata, però. Qualsiasi algoritmo asintoticamente migliore di Θ ( | V | 2 ) (ovvero o ( | V | 2 ) ) è il benvenuto.O(|V|)Θ(|V|2)o(|V|2)


1
Virginia Vassilevska Williams e Ryan Williams hanno un documento che mostra che la scoperta della circonferenza nei grafici generali è equivalente all'APSP nelle trasformazioni subcubiche. Non so se la relazione valga per i grafici sparsi, ma significa che andare in subquadratic potrebbe essere difficile. Lascerò a entrambi uno dei dettagli :)
Suresh Venkat,


Non lasciamo direttamente commenti sulle voci delle FAQ, se hai un suggerimento puoi iniziare una meta-discussione o postare qui .
Kaveh

Risposte:


24

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.


5
eccezionale ! Speravo che si presentasse l'esperto :)
Suresh Venkat,

O(m1.41)

2
O(m1.41)

Esiste un semplice e generale algoritmo O (nm) basato su BFS che non mi sorprende che nessuno abbia menzionato: webcourse.cs.technion.ac.il/234247/Winter2003-2004/ho/WCFiles/…
Labo,

5

Trovare la circonferenza di un grafico planare ha una storia interessante. Vedi questo articolo di Chang e Lu per un algoritmo temporale lineare e la storia dei miglioramenti.

Non esiste una tecnica generale per trovare la circonferenza di qualsiasi grafico rado. Spesso dobbiamo cercare le scomposizioni speciali associate o gli incastri per raggiungere limiti migliori. Se un grafico è "dimostrabilmente" scarso, spesso è associata una bella struttura. Ad esempio, i grafici con larghezza di albero limitata sono sparsi e hanno le scomposizioni ad albero associate.

o(n2)


La carta planare sembra interessante, grazie.
Saeed
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.