Skillnaden mellan Kruskal och Prim: Kruskal vs Prim

Anonim
< Kruskal vs Prim

I datavetenskap är Prims och Kruskals algoritmer en girig algoritm som finner ett minsta spannträd för en kopplad vägd, oriktad graf. Ett spannande träd är en delgraf av ett diagram så att varje nod av grafen är ansluten med en bana, som är ett träd. Varje spannande träd har en vikt, och minsta möjliga vikt / kostnad för alla spannande träd är det minsta spannande trädet (MST).

Mer om Prims algoritm

Algoritmen utvecklades av tjeckisk matematiker Vojtěch Jarník 1930 och senare självständigt av datavetenskapare Robert C. Prim 1957. Det upptäcktes av Edsger Dijkstra 1959. Den algoritmen kan anges i tre nyckelsteg;

Med tanke på det anslutna diagrammet med n noder och respektive vikt på varje kant, 1. Välj en godtycklig nod från diagrammet och lägg till det i trädet T (som kommer att bli den första noden)

2. Tänk vikterna på varje kant som är kopplade till noderna i trädet och välj minimum. Lägg kanten och noden i den andra änden av trädet T och ta bort kanten från grafen. (Välj något om två eller flera minimier finns)

3. Upprepa steg 2 tills n-1 kanter läggs till trädet.

I denna metod börjar trädet med en enda godtycklig nod och expanderar från den noden framåt med varje cykel. För att algoritmen ska fungera korrekt måste grafen därför vara en kopplad graf. Grundformen för Prims algoritm har en tidskomplexitet av O (V

2 ).

Mer om Kruskals algoritm

Den algoritm som utvecklats av Joseph Kruskal uppträdde i det amerikanska matematiska samhällets förlopp 1956. Kruskals algoritm kan också uttryckas i tre enkla steg.

Med grafen med n noder och respektive vikt på varje kant, 1. Välj bågen med den minsta vikten av hela grafen och lägg till i trädet och radera från grafen.

2. Av de återstående väljer du den minst viktiga kanten, på ett sätt som inte bildar en cykel. Lägg kanten till trädet och radera från grafen. (Välj något om två eller flera minimier finns)

3. Upprepa processen i steg 2.

I denna metod börjar algoritmen med minst viktad kant och fortsätter att välja varje kant vid varje cykel. Därför behöver inte grafen anslutas i algoritmen. Kruskals algoritm har en tidskomplexitet av O (logV)

Vad är skillnaden mellan Kruskals och Prims algoritm?

• Prims algoritm initierar med en nod, medan Kruskals algoritm initierar med en kant.

• Prims algoritmer spänner från en nod till en annan medan Kruskals algoritm väljer kanterna så att kants position inte är baserad på det sista steget.

• I prims algoritm måste grafen vara en ansluten graf medan Kruskals kan fungera på bortkopplade grafer också.

• Prims algoritm har en tidskomplexitet på O (V

2 ) och Kruskals tidskomplexitet är O (logV).