Każdy wykres ma więcej niż jedną sekwencję sortowania topologicznego, ponieważ zależy to od stopnia krawędzi węzłów. Pierwszy węzeł początkowy, który wybieramy z liczbą węzłów w stopniu, wynosi 0.
Zrozum algorytm sortowania topologicznego z przykładem.
Krok 1: Wkładamy węzły, których przychodząca liczba krawędzi jest równa 0. Więc te węzły są węzłem 1 i węzła 4.
Krok 2:
A. Zaczynamy od węzła 1. Możemy wybrać dowolny węzeł między węzłem 1 a węzłem 4.
B. Zmniejszamy każdą krawędź węzła o 1, która jest podłączona do węzła 1. Zmniejszamy krawędź węzłów (0, 2 i 3).
C. Przenosimy węzeł 1 z listy do listy sortowanej topologicznie, jak pokazano poniżej.
Krok 3:
A. Teraz przechodzimy z listy, która jest węzłem 4.
B. Zmniejszamy wszystkie wychodzące krawędzie węzłów podłączonych do węzła 4, które są węzłami (0 i 3).
C. Teraz węzeł 3 nie ma przychodzących krawędzi, więc wcisnęliśmy je na listę, a węzeł 4 przesuwa się na listy sortowanej topologicznie.
Krok 4:
A. Teraz przechodzimy z listy, która jest węzłem 3.
B. Zmniejszamy wszystkie wychodzące krawędzie węzłów podłączonych do węzła 3, które są węzłami (0 i 2).
C. Teraz węzły 0 i węzeł 2 nie mają przychodzących krawędzi, więc wkładamy je na listę, a węzeł 3 przesuwa się na listy sortowanej topologicznie.
Krok 5:
A. Teraz przechodzimy z listy, która jest węzłem 0.
B. Jak nie ma wychodzących krawędzi z węzła 0, więc po prostu dodajemy je do listy sortowania topologicznego.
Krok 6:
A. Teraz przechodzimy z listy, która jest węzłem 2.
B. Jak żadne wychodzące krawędzie z węzła 2, więc po prostu dodajemy je do listy sortowania topologicznego.
Krok 7:
Na koniec posortowaliśmy listę tutaj.
Algorytm sortowania topologicznego
Poniżej znajdują się kroki dla algorytmu sortowania topologicznego, który musimy śledzić.
Krok 0: Oblicz stopień każdego węzła wykresu.
Krok 1: Najpierw musimy znaleźć węzeł, który ma przychodzące krawędzie zero.
Krok 2: Usuwamy ten węzeł z wykresu i dodajemy go do listy topologicznych zamówień sortowania.
Krok 3: Usuń węzły, które mają wychodzące krawędzie.
Krok 4: Zmniejsz stopień stopnia o liczbę usuniętych pokrewnych krawędzi.
Krok 5: Powtórz kroki 1-4, aż nie ma węzłów z 0 na stopniu.
Krok 6: Sprawdź, czy wszystkie elementy są we właściwej sekwencji.
Krok 7: Teraz posortowaliśmy zamówienie od kroku 6.
Krok 8: Zakończ algorytm.
Kod Pythona: Poniżej jest wdrożenie Pythona powyższego przykładu.
FromCollectionSimportDefaultdictWyjście:
Kolejność sortowania topologicznego: [0, 1, 3, 5, 6, 2, 4] |
Złożoność czasu sortowania topologicznego Sortowanie:
Całkowity czas przetwarzania algorytmu wynosi O (E + N), gdzie E reprezentuje liczbę krawędzi, a N reprezentuje liczbę węzłów na wykresie. Następnie, w poniższym etapie, musimy obliczyć każdy stopień każdego węzła, który na ogół zajmuje czas O (e), a następnie umieścić wszystkie te węzły na posortowanej liście, w której ich stopień wynosi zero, co wymaga O (n) czasy. Tak więc całkowita złożoność czasu algorytmu sortowania topologicznego wynosi O (E+N).
Ale złożoność przestrzeni algorytmu sortowania topologicznego wynosi O (N), czyli całkowita liczba węzłów na wykresie.
Aplikacja :
1. Topologiczny jest bardzo przydatny do znalezienia cyklu wykresu.
2. Algorytm sortowania topologicznego służy do określenia warunków impasu w systemie operacyjnym.
3. Algorytm sortowania topologicznego służy do znalezienia najkrótszej ścieżki na ważonym wykresie acyklicznym.
Wniosek:
W tym artykule dowiedział się o jednym ważniejszym algorytmie, sortowaniu topologicznym. Widzieliśmy, że ten algorytm działa tylko z wykresami acyklicznymi. Algorytm sortowania topologicznego pomaga również określić kolejność kompilacji zadań. Algorytm sortowania topologicznego ma wiele zalet w czasie rzeczywistym, takich jak znalezienie najkrótszej ścieżki. Ponieważ rodzaj topologiczny jest niezwykle przydatny, każdy programista i uczeń muszą dokładnie zrozumieć ten algorytm.