Algo L3 Info
Travaux dirigés, séance 11.1
Algorithme de Kruskal
Rappels On se place dans un graphe non orienté dont les arêtes sont pondérées (autrement dit on
dispose d’une fonction poids :RR).
Un arbre est un graphe non orienté connexe et sans cycle. On dispose de diverses caractérisations équiva-
lentes à cette définition, en termes de nombre d’arêtes et/ou de graphe « connexe minimal » ou « acyclique
maximal ».
On appelle forêt un graphe sans cycle, autrement dit un graphe dont chaque composante connexe est un
arbre sur l’ensemble de ses sommets.
Etant donné un graphe connexe G= (X, R), on cherche à construire un arbre couvrant de poids minimal
de G, autrement dit un sous-graphe de Gqui est un arbre, dont l’ensemble des sommets est Xet dont le
poids (somme des poids de ses arêtes) est minimal.
L’algorithme de Kruskal Voici le principe général de l’algorithme de Kruskal :
Initialiser le graphe Sol à(X, ).
En parcourant les arêtes (x, y)par poids croissant :
Si xet ysont dans des composantes connexes différentes alors
Ajouter (x, y)au graphe Sol
1. Faire tourner cet algorithme sur le graphe ci-
contre.
2. Déterminer un critère d’arrêt efficace pour cet
algorithme.
3. Quelle structure de données est appropriée
pour répondre efficacement à la question : xet
ysont-ils dans la même composante connexe ?
4. Écrire un algorithme détaillé utilisant notam-
ment cette structure.
4
57
2
5
1
5
2
4
3
4
9
Correction
1. Quelle est la nature de Sol durant l’exécution de l’algorithme ?
2. Mettre en évidence la nature gloutonne de l’algorithme de Kruskal.
3. Démontrer qu’à toute étape de l’algorithme, Sol est un sous-graphe d’un arbre couvrant de poids
minimal.
Complexité
1. Retrouver dans vos notes de TD la complexité des opérations Union et Find lorsqu’une telle
structure de données est bien implantée.
2. Évaluer le coût des différentes étapes de l’algorithme de Kruskal, en n’oubliant pas les étapes
« préliminaires » qui pourraient être coûteuses.
3. En déduire la complexité de cet algorithme.
1
1 / 1 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !