Analyse plus approfondie de l'algorithme de Borůvka modifié


11

L'algorithme de Borůvka est l'un des algorithmes standard pour calculer l'arbre couvrant minimum pour un graphe , avec .g=(V,E)|V|=n,|E|=m

Le pseudo-code est:

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

Nous appelons chaque itération de la boucle externe un tour. À chaque tour, la boucle intérieure réduit le nombre de composants au moins de moitié. Il y a donc tout au plus tours. À chaque tour, la boucle intérieure examine chaque bord au plus deux fois (une fois pour chaque composant). Par conséquent, le temps de fonctionnement est au plus O ( m log n ) .O(Journaln)O(mJournaln)

Supposons maintenant après chaque tour, nous supprimons toutes les arêtes qui relient uniquement les sommets au sein du même composant et supprimons également les arêtes en double entre les composants, de sorte que la boucle intérieure ne regarde qu'un certain nombre d'arêtes m '<m qui sont les arêtes de poids minimum qui connecter deux composants précédemment déconnectés.

Comment cette optimisation affecte-t-elle le temps d'exécution?

T(m)=T(m/2)+O(m)=O(m)

Cependant, alors que l'optimisation réduira considérablement le nombre d'arêtes examinées (seulement 1 arête au dernier tour et au plus # de composants en choisit 2 en général), il n'est pas clair comment / si nous pouvons utiliser ce fait pour resserrer l'analyse. de l'exécution.


Dans le pire des cas (une chaîne), vous supprimeriez exactement un bord par tour, vous ne pouvez donc pas utiliser ce fait pour améliorer les limites d'un graphique général. Vous pouvez par exemple considérer uniquement des graphiques complets.
Xodarap

g

Notez que vous pouvez utiliser l'une des structures de recherche d'unions hautement optimisées pour améliorer cet algorithme.
Raphael

Réponses:


5

Il est possible de créer des cas de test pour des graphiques généraux où le pas de votre Borůvka ne diviserait pas par deux le nombre d'arêtes à chaque pas, même s'il divise par deux le nombre de sommets. Une remarque intéressante est que l'optimisation que vous proposez fonctionne pour les graphes planaires. En effet, pour les graphiques planaires|E|3|V|-6 c'est à dire |E|=O(|V|). Et en général, cela conduit à une accélération pour la classe des familles fermées mineures de graphes.

Référence:

  • Mémoire de maîtrise, Claude Anderson (à la page 100, le pire cas pour l'algorithme de Borůvka est décrit). [lien]

  • "Deux algorithmes de temps linéaires pour MST sur des classes mineures de graphes fermés". Archivum mathematicum 40 (3): 315-320, 2004. [lien]

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.