Chaque graphique a plus d'une séquence de tri topologique car cela dépend de l'effet des bords des nœuds. Le premier nœud de départ que nous choisissons avec un nombre de nœuds en degré est 0.
Comprenons l'algorithme de tri topologique avec un exemple.
Étape 1: Nous insérons ces nœuds dont le nombre de bords entrants est égal à 0. Ces nœuds sont donc le nœud 1 et le nœud 4.
Étape 2:
un. Nous commençons par le nœud 1. Nous pouvons choisir n'importe quel nœud entre le nœud 1 et le nœud 4.
b. Nous diminuons chaque bord de nœud de 1, qui est connecté au nœud 1. Nous diminuons le bord des nœuds (0, 2 et 3).
c. Nous déplaçons le nœud 1 de la liste vers la liste tricot topologiquement, comme indiqué ci-dessous.
Étape 3:
un. Nous procédons maintenant à la liste, qui est le nœud 4.
b. Nous diminuons tous les bords sortants des nœuds connectés au nœud 4, qui sont des nœuds (0 et 3).
c. Maintenant, le nœud 3 n'a pas de bords entrants, nous le poussons donc dans la liste, et le nœud 4 change vers la liste tricotétiquement triée.
Étape 4:
un. Nous procédons maintenant à la liste, qui est le nœud 3.
b. Nous diminuons tous les bords sortants des nœuds connectés au nœud 3, qui sont des nœuds (0 et 2).
c. Maintenant, les nœuds 0 et le nœud 2 n'ont pas de bords entrants, nous le poussons donc dans la liste, et le nœud 3 passe à la liste trieuse topologiquement.
Étape 5:
un. Nous procédons maintenant à la liste, qui est le nœud 0.
b. Comme aucun bord sortant du nœud 0, nous les ajoutons donc simplement à la liste des tri topologiques.
Étape 6:
un. Nous procédons maintenant à la liste, qui est le nœud 2.
b. Comme aucun bord sortant du nœud 2, nous les ajoutons donc simplement à la liste des tri topologiques.
Étape 7:
Enfin, nous avons trié la liste ici.
Algorithme de tri topologique
Voici les étapes de l'algorithme de tri topologique que nous devons suivre.
Étape 0: Calculez le degré de chaque nœud graphique.
Étape 1: Nous devons d'abord trouver un nœud qui a des bords entrants de zéro.
Étape 2: Nous supprimons ce nœud du graphique et l'ajoutons à la liste des ordres de tri topologique.
Étape 3: Supprimez les nœuds qui ont des bords sortants.
Étape 4: Réduisez le degré par le nombre d'arêtes connexes qui ont été supprimées.
Étape 5: Répétez les étapes 1 à 4 jusqu'à ce qu'aucun nœud avec 0 ne reste au degré.
Étape 6: Vérifiez que tous les éléments sont dans la séquence correcte.
Étape 7: Maintenant, nous avons trié la commande de l'étape 6.
Étape 8: mettre fin à l'algorithme.
Code python: Ce qui est ci-dessous est une implémentation Python de l'exemple ci-dessus.
From CollectionsImportDefaultDictSortir:
Ordre de tri topologique: [0, 1, 3, 5, 6, 2, 4] |
Algorithme de tri topologique Complexité du temps:
Le temps total pour traiter l'algorithme est O (e + n), où E représente le nombre d'arêtes et N représente le nombre de nœuds dans le graphique. Ensuite, à l'étape suivante, nous devons calculer le degré de chaque nœud, qui prend généralement des temps (e), puis placer tous ces nœuds dans une liste triée où leur degré est nul, ce qui prend O (n) fois. Ainsi, la complexité de temps totale de l'algorithme de tri topologique est O (E + N).
Mais la complexité de l'espace de l'algorithme de tri topologique est O (n), qui est le nombre total de nœuds dans le graphique.
Application :
1. Le type topologique est très utile pour trouver le cycle du graphique.
2. L'algorithme de tri topologique est utilisé pour déterminer les conditions de blocage dans un système d'exploitation.
3. L'algorithme de tri topologique est utilisé pour trouver le chemin le plus court d'un graphique acyclique pondéré.
Conclusion:
Cet article a appris sur un algorithme plus important, le tri topologique. Nous avons vu que cet algorithme ne fonctionne qu'avec des graphiques acycliques. L'algorithme de tri topologique aide également à déterminer l'ordre de compilation des tâches. L'algorithme de tri topologique a de nombreux avantages en temps réel, comme trouver le chemin le plus court. Parce que le type topologique est extrêmement utile, chaque programmeur et étudiant doit bien comprendre cet algorithme.