Różnica między Kruskalem a Prim

Różnica między Kruskalem a Prim
Różnica między Kruskalem a Prim

Wideo: Różnica między Kruskalem a Prim

Wideo: Różnica między Kruskalem a Prim
Wideo: Nexium vs Prilosec-which one is better? 2024, Lipiec
Anonim

Kruskal kontra Prim

W informatyce algorytmy Prima i Kruskala to zachłanny algorytm, który znajduje minimalne drzewo rozpinające dla połączonego ważonego grafu nieskierowanego. Drzewo opinające to podgraf grafu, w którym każdy węzeł grafu jest połączony ścieżką, którą jest drzewo. Każde drzewo opinające ma swoją wagę, a minimalna możliwa waga/koszt wszystkich drzew opinających to minimalne drzewo opinające (MST).

Więcej o algorytmie Prim

Algorytm został opracowany przez czeskiego matematyka Vojtěcha Jarníka w 1930 roku, a później niezależnie przez informatyka Roberta C. Prima w 1957 roku. Został ponownie odkryty przez Edsgera Dijkstrę w 1959 roku. Algorytm można przedstawić w trzech kluczowych krokach;

Biorąc pod uwagę połączony wykres z n węzłami i odpowiednią wagą każdej krawędzi, 1. Wybierz dowolny węzeł z wykresu i dodaj go do drzewa T (który będzie pierwszym węzłem)

2. Rozważ wagi każdej krawędzi połączonej z węzłami w drzewie i wybierz minimum. Dodaj krawędź i węzeł na drugim końcu drzewa T i usuń krawędź z wykresu. (Wybierz dowolne, jeśli istnieją co najmniej dwa minimum)

3. Powtarzaj krok 2, aż do drzewa zostanie dodanych n-1 krawędzi.

W tej metodzie drzewo zaczyna się od jednego dowolnego węzła i rozwija się od tego węzła w każdym cyklu. Dlatego, aby algorytm działał poprawnie, graf musi być grafem połączonym. Podstawowa forma algorytmu Prim ma złożoność czasową O(V2).

Więcej o algorytmie Kruskala

Algorytm opracowany przez Josepha Kruskala pojawił się w postępowaniu Amerykańskiego Towarzystwa Matematycznego w 1956 roku. Algorytm Kruskala można również wyrazić w trzech prostych krokach.

Biorąc pod uwagę wykres z n węzłami i odpowiednią wagą każdej krawędzi, 1. Wybierz łuk o najmniejszej wadze całego wykresu, dodaj do drzewa i usuń z wykresu.

2. Z pozostałych wybierz najmniej ważoną krawędź, w sposób nie tworzący cyklu. Dodaj krawędź do drzewa i usuń z wykresu. (Wybierz dowolne, jeśli istnieją co najmniej dwa minimum)

3. Powtórz proces w kroku 2.

W tej metodzie algorytm rozpoczyna się od najmniej ważonej krawędzi i kontynuuje wybieranie każdej krawędzi w każdym cyklu. Dlatego w algorytmie graf nie musi być połączony. Algorytm Kruskala ma złożoność czasową O(logV)

Jaka jest różnica między algorytmem Kruskala i Prim?

• Algorytm Prima inicjuje się od węzła, podczas gdy algorytm Kruskala zaczyna się od krawędzi.

• Algorytmy Prima rozciągają się od jednego węzła do drugiego, podczas gdy algorytm Kruskala wybiera krawędzie w taki sposób, że pozycja krawędzi nie jest oparta na ostatnim kroku.

• W algorytmie prim graf musi być grafem połączonym, podczas gdy Kruskala może działać również na grafach rozłącznych.

• Algorytm Prima ma złożoność czasową O(V2), a złożoność czasowa Kruskala to O(logV).

Zalecana: