Forskel mellem Kruskal og Prim: Kruskal vs Prim

Anonim
< Kruskal vs Prim

I datalogi er Prim og Kruskals algoritmer en grådig algoritme, der finder et minimumspændende træ for en tilsluttet vægtet, ikke-rettet graf. Et spændingstræ er en undergraf af en graf, således at hver knudepunkt i grafen er forbundet med en sti, som er et træ. Hvert spændt træ har en vægt, og de mindste mulige vægte / omkostninger for alle de spændende træer er det mindste spænde træ (MST).

Mere om Prim's Algoritme

Algoritmen blev udviklet af den tjekkiske matematiker Vojtěch Jarník i 1930 og senere uafhængigt af computerforsker Robert C. Prim i 1957. Det blev genopdaget af Edsger Dijkstra i 1959. Den algoritmen kan angives i tre centrale trin;

Givet den tilsluttede graf med n knudepunkter og respektive vægt af hver kant, 1. Vælg en vilkårlig node fra grafen og tilføj den til træet T (som vil være den første node)

2. Overvej vægten af ​​hver kant forbundet til knuderne i træet og vælg minimum. Tilføj kanten og knuden i den anden ende af træet T og fjern kanten fra grafen. (Vælg nogen hvis der er to eller flere minimum)

3. Gentag trin 2, indtil n-1 kanter tilføjes til træet.

I denne metode starter træet med en enkelt vilkårlig knude og udvider fra det knudepunkt fremad med hver cyklus. Derfor, for at algoritmen skal fungere korrekt, skal grafen være en forbundet graf. Den grundlæggende form for Prim's algoritme har en tidskompleksitet af O (V

2 ).

Mere om Kruskals algoritme

Algoritmen udviklet af Joseph Kruskal optrådte i det amerikanske matematiske samfunds arbejde i 1956. Kruskals algoritme kan også udtrykkes i tre enkle trin.

Givet grafen med n knudepunkter og respektive vægt af hver kant, 1. Vælg den bue med den mindste vægt af hele grafen og tilføj til træet og slet fra grafen.

2. Af de resterende vælges den mindste vægtede kant på en måde, der ikke danner en cyklus. Tilføj kanten til træet og slet i grafen. (Vælg nogen hvis der er to eller flere minimum)

3. Gentag processen i trin 2.

I denne metode starter algoritmen med mindst vægtet kant og fortsætter med at vælge hver kant i hver cyklus. Derfor må grafen i algoritmen ikke forbindes. Kruskals algoritme har en tidskompleksitet af O (logV)

Hvad er forskellen mellem Kruskals og Prim's algoritme?

• Prims algoritme initialiseres med en node, mens Kruskals algoritme initieres med en kant.

• Prim's algoritmer spænder fra et knudepunkt til et andet, mens Kruskals algoritme vælger kanterne på en måde, at kanten ikke er baseret på det sidste trin.

• I prims algoritme skal graf være en tilsluttet graf, mens Kruskal's kan fungere på afkoblede grafer også.

• Prims algoritme har en tidskompleksitet på O (V

2 ), og Kruskals tidskompleksitet er O (logV).