diff --git a/slides/cours_27.md b/slides/cours_27.md index 10d649dae7e6a848a49b062a78a3e42fbabd905d..d4b750599926f598076a020385f93475174608e4 100644 --- a/slides/cours_27.md +++ b/slides/cours_27.md @@ -618,4 +618,24 @@ O(|V|) u, fp = défiler(file_priorité) . . . -* Si les deux sommets sont déjà couverts nous sommes sauvés (presque)! \ No newline at end of file +* Si les deux sommets sont déjà couverts nous sommes sauvés (presque)! + +# Algorithme de Kruskal + +## L'initialisation + +* Créer un ensemble de sommets pour chaque de sommet du graphe ($V_1$, $V_2$, ...): + * $V_1=\{v_1\}$, $V_2=\{v_2\}$, ... + * S'il y a $n$ sommets, il y a $n$ $V_i$. +* Initialiser l'ensemble $A$ des arêtes "sûres" constituant l'arbre couvrant minimal, $A=\emptyset$. +* Initialiser l'ensemble des sommets couverts $F=\emptyset$ +* Trier les arêtes par poids croissant dans l'ensemble $E$. + +## Mise à jour + +* Tant qu'il reste plus d'un $V_i$: + * Pour $(u,v)\in A$ à poids minimal: + * Retirer $(u,v)$ de $A$, + * Si $u\in V_i$ et $v\in V_j$ avec $V_i\cap V_j=\emptyset$: + * Ajouter $(u,v)$ à $A$; + * Fusionner $U$ et $V$ dans $F$. \ No newline at end of file