Analisi più rigorosa dell'algoritmo di Borůvka modificato


11

L'algoritmo di Borůvka è uno degli algoritmi standard per il calcolo dell'albero di spanning minimo per un grafico , con .G=(V,E)|V|=n,|E|=m

Lo pseudo-codice è:

MST T = empty tree
Begin with each vertex as a component
While number of components > 1
    For each component c
       let e = minimum edge out of component c
       if e is not in T
           add e to T  //merging the two components connected by e

Chiamiamo ogni iterazione del ciclo esterno un giro. In ogni giro, l'anello interno taglia almeno il metà dei componenti. Pertanto ci sono al massimo round . In ogni giro, l'anello interno guarda ogni bordo al massimo due volte (una volta da ciascun componente). Pertanto il tempo di esecuzione è al massimo .O ( m log n )O(logn)O(mlogn)

Ora supponiamo che dopo ogni giro, rimuoviamo tutti i bordi che collegano solo i vertici all'interno dello stesso componente e rimuoviamo anche i bordi duplicati tra i componenti, in modo che il ciclo interno guardi solo un certo numero di bordi m '<m che sono i bordi di peso minimo che collegare due componenti precedentemente disconnessi.

In che modo questa ottimizzazione influisce sul tempo di esecuzione?

Se in qualche modo sapessimo che in ogni giro, si taglierebbe il numero di spigoli a metà, quindi il tempo di esecuzione sarebbe notevolmente migliorato: .T(m)=T(m/2)+O(m)=O(m)

Tuttavia, sebbene l'ottimizzazione ridurrà drasticamente il numero di spigoli esaminati (solo 1 spigolo per il round finale e al massimo # di componenti scelgono 2 in generale), non è chiaro come / se possiamo usare questo fatto per stringere l'analisi del tempo di esecuzione.


Nel peggiore dei casi (una catena) rimuoveresti esattamente un bordo per round, quindi non puoi usare questo fatto per migliorare i limiti di un grafico generale. Tuttavia, potresti considerare, ad esempio, solo grafici completi.
Xodarap,

@Xodarap se è un percorso semplice (è quello che intendi per catena?), Quindi nel primo giro selezioni almeno la metà dei bordi. Questi bordi vengono rimossi dai giri successivi. G
Joe,

Si noti che è possibile utilizzare una delle strutture di ricerca unione altamente ottimizzate per migliorare questo algoritmo.
Raffaello

Risposte:


5

È possibile creare casi di test per grafici generali in cui il passaggio di Borůvka non dimezza il numero di spigoli in ciascun passaggio, anche se dimezza il numero di vertici. Una nota interessante è che l'ottimizzazione che suggerisci funziona per i grafici planari. Questo perché per i grafici planari i, e . E in generale porta ad una maggiore velocità per la classe di famiglie minori di grafici chiuse.| E | = O ( | V | )|E|3|V|6|E|=O(|V|)

Riferimento:

  • Tesi di master, Claude Anderson (a pagina 100 viene descritto l'input del caso peggiore per l'algoritmo di Borůvka). [link]

  • "Due algoritmi di tempo lineari per MST su classi di grafici chiusi minori". Archivum matematicum 40 (3): 315–320, 2004. [link]

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.