UN arbre couvrant minimum (MST) est défini comme un Spanning Tree qui a le poids minimum parmi tous les arbres couvrants possibles
UN Spanning Tree est défini comme un sous-graphe arborescent d'un graphe connecté et non orienté qui inclut tous les sommets du graphe. Ou, pour reprendre les mots de Layman, c’est un sous-ensemble des arêtes du graphe qui forme un arbre ( acyclique ) où chaque nœud du graphique fait partie de l’arborescence.
L'arbre couvrant minimum possède toutes les propriétés d'un arbre couvrant avec une contrainte supplémentaire d'avoir le poids minimum possible parmi tous les arbres couvrant possibles. Comme un arbre couvrant, il peut également y avoir de nombreux MST possibles pour un graphique.

Propriétés d'un arbre couvrant :
L'arbre couvrant contient le principes mentionnés ci-dessous :
- Le nombre de sommets ( DANS ) dans le graphique et le spanning tree sont les mêmes.
- Il y a un nombre fixe d'arêtes dans l'arbre couvrant qui est égal à un de moins que le nombre total de sommets ( ET = V-1 ).
- L'arbre couvrant ne doit pas être débranché , car il ne devrait y avoir qu'une seule source de composant, pas plus.
- L'arbre couvrant doit être acyclique, lequel signifie qu'il n'y aurait pas de cycle dans l'arbre.
- Le coût (ou poids) total du spanning tree est défini comme la somme des poids des bords de tous les bords du spanning tree.
- Il peut y avoir de nombreux arbres couvrants possibles pour un graphique.
Arbre couvrant minimum :
UN arbre couvrant minimal (MST) est défini comme un Spanning Tree qui a le poids minimum parmi tous les arbres couvrants possibles.
Java si instruction
L'arbre couvrant minimum possède toutes les propriétés d'un arbre couvrant avec une contrainte supplémentaire d'avoir le poids minimum possible parmi tous les arbres couvrant possibles. Comme un arbre couvrant, il peut également y avoir de nombreux MST possibles pour un graphique.
- Regardons le MST de l'exemple de graphique ci-dessus,

Arbre couvrant minimum
Algorithmes pour trouver l'arbre couvrant minimum :
Il existe plusieurs algorithmes pour trouver l'arbre couvrant minimum à partir d'un graphique donné, certains d'entre eux sont répertoriés ci-dessous :
créer un fil Java
Algorithme d'arbre couvrant minimum de Kruskal :
Il s’agit de l’un des algorithmes les plus populaires pour trouver l’arbre couvrant minimum à partir d’un graphe connecté et non orienté. C'est un Premièrement, il trie toutes les arêtes du graphique selon leur poids,
Cet algorithme peut être implémenté efficacement en utilisant une structure de données DSU (Disjoint-Set) pour garder une trace des composants connectés du graphique. Ceci est utilisé dans diverses applications pratiques telles que la conception de réseaux, le clustering et l’analyse de données.
Suivez l'article sur Algorithme d'arbre couvrant minimum de Kruskal pour une meilleure compréhension et mise en œuvre de l’algorithme.
Algorithme d'arbre couvrant minimum de Prim :
C'est aussi un algorithme gourmand. Cet algorithme a le workflow suivant :
- Cela commence par sélectionner un sommet arbitraire, puis par l'ajouter au MST.
- Ensuite, il vérifie à plusieurs reprises le poids minimum du bord qui relie un sommet du MST à un autre sommet qui n'est pas encore dans le MST.
- Ce processus se poursuit jusqu'à ce que tous les sommets soient inclus dans le MST.
Pour sélectionner efficacement l'arête de poids minimum pour chaque itération, cet algorithme utilise priorité_queue pour stocker les sommets triés actuellement par leur poids d'arête minimum. Il assure également simultanément le suivi du MST à l'aide d'un tableau ou d'une autre structure de données adaptée au type de données qu'il stocke.
Cet algorithme peut être utilisé dans divers scénarios tels que la segmentation d'images basée sur la couleur, la texture ou d'autres caractéristiques. Pour le routage, comme pour trouver le chemin le plus court entre deux points à suivre par un camion de livraison.
Suivez l'article sur Algorithme d'arbre couvrant minimum de Prim pour une meilleure compréhension et implémentation de cet algorithme.
Algorithme d'arbre couvrant minimum de Boruvka :
Il s'agit également d'un algorithme de parcours de graphe utilisé pour trouver l'arbre couvrant minimum d'un graphe connecté et non orienté. C'est l'un des algorithmes les plus anciens. L'algorithme fonctionne en construisant de manière itérative l'arbre couvrant minimum, en commençant par chaque sommet du graphique comme son propre arbre. À chaque itération, l'algorithme trouve l'arête la moins chère qui connecte un arbre à un autre arbre et ajoute cette arête à l'arbre couvrant minimum. Ceci est presque similaire à l’algorithme de Prim pour trouver l’arbre couvrant minimum. L'algorithme a le flux de travail suivant :
- Initialisez une forêt d'arbres, avec chaque sommet du graphique comme son propre arbre.
- Pour chaque arbre de la forêt :
- Trouvez le bord le moins cher qui le relie à un autre arbre. Ajoutez ces arêtes à l’arbre couvrant minimum.
- Mettez à jour la forêt en fusionnant les arbres reliés par les arêtes ajoutées.
- Répétez les étapes ci-dessus jusqu'à ce que la forêt ne contienne qu'un seul arbre, qui est l'arbre couvrant minimum.
L'algorithme peut être implémenté à l'aide d'une structure de données telle qu'une file d'attente prioritaire pour trouver efficacement l'arête la moins chère entre les arbres. L'algorithme de Boruvka est un algorithme simple et facile à mettre en œuvre pour trouver des arbres couvrant minimum, mais il n'est peut-être pas aussi efficace que d'autres algorithmes pour les grands graphes avec de nombreuses arêtes.
Suivez l'article sur Algorithme d'arbre couvrant minimum de Boruvka pour une meilleure compréhension et implémentation de cet algorithme.
Pour en savoir plus sur les propriétés et les caractéristiques de Minimum Spanning Tree, cliquez sur ici.
Applications des arbres couvrants minimaux :
- Conception de réseau : Les arbres couvrants peuvent être utilisés dans la conception de réseaux pour trouver le nombre minimum de connexions requises pour connecter tous les nœuds. Les arbres couvrant minimum, en particulier, peuvent aider à minimiser le coût des connexions en sélectionnant les bords les moins chers.
- Traitement d'image : Les arbres couvrants peuvent être utilisés dans le traitement d'images pour identifier des régions d'intensité ou de couleur similaire, ce qui peut être utile pour les tâches de segmentation et de classification.
- La biologie : Les arbres couvrants et les arbres couvrant minimum peuvent être utilisés en biologie pour construire des arbres phylogénétiques pour représenter les relations évolutives entre les espèces ou les gènes.
- Analyse des réseaux sociaux : Les arbres couvrants et les arbres couvrant minimum peuvent être utilisés dans l'analyse des réseaux sociaux pour identifier les connexions et les relations importantes entre les individus ou les groupes.
Quelques problèmes d'entretien populaires sur MST
| 1. | Trouvez le coût minimum pour connecter toutes les villes | Pratique |
Quelques FAQ sur les arbres couvrants minimum :
1. Peut-il y avoir plusieurs arbres couvrant minimum pour un graphique donné ?
Oui, un graphique peut avoir plusieurs arbres couvrant minimum s'il existe plusieurs ensembles d'arêtes avec le même poids total minimum.
2. L’algorithme de Kruskal et l’algorithme de Prim peuvent-ils être utilisés pour les graphes orientés ?
Non, l'algorithme de Kruskal et l'algorithme de Prim sont conçus uniquement pour les graphes non orientés.
3. Un graphe déconnecté peut-il avoir un arbre couvrant minimum ?
Non, un graphe déconnecté ne peut pas avoir d'arbre couvrant car il ne couvre pas tous les sommets. Par conséquent, il ne peut pas non plus avoir d’arbre couvrant minimum.
js remplacement
4. Un arbre couvrant minimum peut-il être trouvé à l’aide de l’algorithme de Dijkstra ?
Non, l'algorithme de Dijkstra est utilisé pour trouver le chemin le plus court entre deux sommets dans un graphe pondéré. Il n’est pas conçu pour trouver un arbre couvrant minimum.
5. Quelle est la complexité temporelle des algorithmes de Kruskal et Prim ?
Les algorithmes de Kruskal et de Prim ont une complexité temporelle de O(ÉlogE) , où E est le nombre d'arêtes du graphique.