Forskjell mellom Kruskal og Prim: Kruskal vs Prim

Anonim
< Kruskal vs Prim

I datavitenskap er Prim og Kruskals algoritmer en grådig algoritme som finner et minimumspanentre for en koblet vektet, ikke-rettet graf. Et spennende tre er en delgraf av en graf slik at hver knutepunkt av grafen er forbundet med en bane, som er et tre. Hvert spennende tre har en vekt, og de minste mulige vektene / kostnadene for alle de spannende trærne er det minste spenne-treet (MST).

Mer om Prims algoritme

Algoritmen ble utviklet av tsjekkisk matematiker Vojtěch Jarník i 1930 og senere uavhengig av datavitenskaperen Robert C. Prim i 1957. Den ble gjenoppdaget av Edsger Dijkstra i 1959. Den algoritmen kan angis i tre hovedtrinn;

Gitt den tilkoblede grafen med n noder og respektive vekt på hver kant, 1. Velg en vilkårlig knutepunkt fra grafen og legg den til treet T (som blir den første noden)

2. Vurder vikene til hver kant knyttet til noder i treet og velg minimum. Legg kanten og noden i den andre enden av treet T og fjern kanten fra grafen. (Velg noen hvis to eller flere minimum finnes)

3. Gjenta trinn 2, til n-1 kanter legges til treet.

I denne metoden starter treet med en enkelt vilkårlig knutepunkt og ekspanderer fra den noden fremover med hver syklus. Derfor, for at algoritmen skal kunne fungere riktig, må grafen være en koblet graf. Den grunnleggende formen til Prims algoritme har en tidskompleksitet på O (V

2 ).

Mer om Kruskals algoritme

Algoritmen utviklet av Joseph Kruskal dukket opp i saken av American Mathematical Society i 1956. Kruskals algoritme kan også uttrykkes i tre enkle trinn.

Gitt grafen med n noder og respektive vekt på hver kant, 1. Velg buen med minste vekt av hele grafen og legg til i treet og slett fra grafen.

2. Av de resterende velger du den minste vektede kanten, på en måte som ikke danner en syklus. Legg kanten til treet og slett fra grafen. (Velg noen hvis to eller flere minimum finnes)

3. Gjenta prosessen i trinn 2.

I denne metoden starter algoritmen med minst vektet kant og fortsetter å velge hver kant i hver syklus. Derfor må grafen i algoritmen ikke kobles til. Kruskals algoritme har en tidskompleksitet av O (logV)

Hva er forskjellen mellom Kruskals og Prims algoritme?

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

• Prims algoritmer spenner fra en node til en annen mens Kruskals algoritme velger kantene på en måte at kanten ikke er basert på det siste trinnet.

• I prims algoritme må grafen være en tilkoblet graf, mens Kruskals kan fungere på koblede grafer også.

• Prims algoritme har en tidskompleksitet på O (V

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