L'algorithme de Borůvka est l'un des algorithmes standard pour calculer l'arbre couvrant minimum pour un graphe , avec .
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 ) .
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?
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.