Maison > développement back-end > C++ > le corps du texte

Pourquoi l'algorithme d'arbre couvrant minimum de Prim et Kruskal échoue-t-il dans les graphes orientés ?

王林
Libérer: 2023-09-02 17:29:07
avant
648 Les gens l'ont consulté

Pourquoi lalgorithme darbre couvrant minimum de Prim et Kruskal échoue-t-il dans les graphes orientés ?

La méthode de Prim et l'algorithme de Kruskal sont deux méthodes courantes pour localiser le MST (arbre couvrant minimum) dans des graphiques non orientés. Cependant, ces techniques ne peuvent pas générer un MST correct pour les graphes orientés. En effet, les graphes orientés ne correspondent pas aux hypothèses et méthodes de base utilisées par les algorithmes de Prim et Kruskal.

Algorithme Prim

Tout d'abord, il y a l'algorithme de Prim, qui consiste à ajouter des arêtes à un arbre couvrant minimum en expansion de manière gourmande jusqu'à ce que tous les sommets soient couverts. Les sommets à l'intérieur du MST sont connectés aux sommets à l'extérieur du MST via l'arête ayant le poids le plus faible. Étant donné que toutes les arêtes d’un graphe non orienté peuvent se déplacer dans n’importe quelle direction, le chemin le plus court entre le MST et les sommets externes est facile à trouver. Cependant, dans un graphe orienté, les arêtes pointent toujours dans une direction et il peut ne pas y avoir de ligne droite reliant le MST et les sommets externes. Cela contredit le principe de base de l'algorithme de Prim.

Un exemple de ceci est l'arête dirigée (u,v) qui relie le sommet u dans MST au sommet v dans le graphe externe de MST. Étant donné que le MST dans la méthode de Prim doit être connecté aux sommets externes via des arêtes directes, les arêtes (u, v) sont ignorées, ce qui entraîne un MST qui peut être inexact ou insuffisant.

Méthode Kruskal

La méthode de Kruskal est une technique de tri des bords pondérés qui ajoute à plusieurs reprises des bords de poids minimum qui ne génèrent pas de cycles au graphique. Cette méthode fonctionne mieux pour les graphiques non orientés car les bords pointent dans deux directions, ce qui permet de détecter facilement les cycles. Puisque la direction des arêtes est importante dans les graphes orientés, le concept de cycles devient plus subtil. L'approche de Kruskal ignore cette complexité.

Supposons qu'il y ait une boucle dirigée dans le MST que vous construisez. Lorsqu'elle est appliquée à des graphes orientés, la technique de Kruskal peut générer des arbres contenant des cycles orientés. Cette méthode produit un MST inexact car son mécanisme de détection de cycle non orienté basé sur les bords ne parvient pas à capturer correctement les cycles dans les graphiques orientés.

Conclusion

On peut conclure que si les techniques de Prim et Kruskal sont utiles pour localiser les MST dans les graphes non orientés, elles ne conviennent pas aux graphes orientés. Ces méthodes produisent des MST inexacts ou inadéquats car les hypothèses et mécanismes sous-jacents sur lesquels elles s'appuient ne tiennent pas dans le cadre de graphes orientés. Les graphes orientés ont leurs propres propriétés et complexités, il est donc important d'utiliser des techniques spécifiques aux digraphes (telles que la méthode Chu−Liu/Edmonds) pour obtenir des arbres couvrants minimaux.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal