Minimum spanning tre
En graf som ikke har veibeskrivelse, kalles en rettet graf. Hver graf må ha en sti fra en node til en annen node. Et spanningstre er også en rettet tilkoblet graf der alle nodene på grafen er til stede med minimumskanter. Hvis et spanningstre ikke har alle nodene på grafen, kan vi ikke si at det er et spanningstre. Totalvektene for spanning-tre vil være mindre enn den opprinnelige vekten på grafen når vi koblet den gjennom minimumsvektkantene. Det spanningstreet har heller ikke en syklus. Enhver graf har mer enn ett spanningstre, men bare en av disse vil være unike. Vi kaller det et minimalt spanningstre siden vi prøver å lage en full graf med alle noder mens vi holder vekten lav.
La oss forstå det minimale spanningstreet med et eksempel. Så som vi vet, er det minimale spanningstreet en del av grafen, men med mindre kostnader. Så dette scenariet kan illustreres med et eksempel. La oss anta at vi har en graf som denne.
Grafen ovenfor kan ordnes på forskjellige måter slik at grafsyklusen blir fjernet, ellers vil det ikke være en MST (minimum spanningstre). Så vi vil fjerne syklusen fra grafen og telle den totale kostnaden for grafen. Vi har fire noder, eller hjørner (a, b, c og d).
Sak - 1:
Etter å ha fjernet syklusen fra grafen, er grafskostnadene ovenfor (minimum spanningstre) 56.
Sak -2:
Etter å ha fjernet syklusen fra grafen, er grafkostnaden ovenfor (minimum spanningstre) 53.
Sak - 3:
Etter å ha fjernet syklusen fra grafen, er grafskostnadene ovenfor (minimum spanningstre) 41.
Vi kan se at den siste grafen over case-3s totale kostnad er mye lavere sammenlignet med de to andre grafene. Så denne grafen er vår siste MST (minimum spanningstre) for den originale grafen. Prims eller Kruskals algoritmers motiv er å finne grafkostnaden så lave som mulig. Så det er vårt motiv i denne artikkelen for å forklare denne MST.
Vi kan tegne et spanningstre ved hjelp av følgende to metoder:
I denne artikkelen skal vi diskutere Kruskals algoritme. Prims algoritme vil bli diskutert i neste artikkel.
Kruskals algoritme
Kruskals algoritme er veldig enkel å implementere sammenlignet med Prims algoritme fordi vi ikke trenger å bry oss om adjacency -hjørnene i denne algoritmen. I denne algoritmen starter Kruskals algoritme fra alle hjørnene på grafen. Vi velger minimum Vektkanthvertus og begynner å lage minimumsspanningstreet. Vi velger en annen kant med minimumsvekten og legger den til minimumsspanningstreet. Denne prosessen fortsetter til vi ikke legger til alle de originale grafnodene. Når alle nodene i grafen er lagt til det minimale spanningstreet, vil algoritmen stoppe. Under å lage et minimumsspannings tre på en graf, må vi også ta vare på den grafen, og ikke lage noen sykluser fordi sykluser ikke skal være i minimumsspanningstreet.
Så hvis noen node oppretter syklusen i minimumsspanningstreet, velger vi den andre noden, selv om denne nodens vekt er større enn den forrige noden som oppretter syklusen.
Kruskals algoritme er forskjellig fra Prims algoritme. Prims algoritme, mens du lager et minimum spanningstre, starter fra hvilken som helst node eller vertice og legger deretter til en annen node eller vertice bare fra adjacency -nodene. Men Kruskals algoritme bryr seg ikke om adjacency -noden og velger alltid den noden som har mindre vekt, men den noden skal ikke skape en syklus i det minste spennende treet.
Kruskals algoritme trinn:
Følgende trinn blir tatt mens du skriver C ++ -koden for Kruskals algoritme.
Nå vil vi implementere algoritmetrinnene ovenfor ved hjelp av et eksempel. Vi har grafen nedenfor, og vi finner ut det minimale spanningstreet for denne grafen.
Så ifølge algoritmen velger vi først den minste vektkanten, som er AB. Så vi valgte den kanten og holdt den i det spanne tre -arrayet. Vekten på abten er 9.
Nå velger vi den neste minste vektkanten, CD, og holder den kanten i minimumsspannings -tre -array. CD -kantvekten er 12.
Den neste minste kanten vi fikk var BC, som vi holdt i matrisen. Den vektede BC -kanten er 17.
Algoritmen vår vil stoppe her fordi vi har alle toppunktene til en graf, og vi har et minimums spanningstre. Den totale vekten av denne MST er 9 + 12 + 17 = 38.
Program: Nedenfor er en C ++ -kode for Kruskals algoritme.
#inkludereProduksjon:
EdgeGraphs of MST: [0-2] (1) [3-4] (1) [1-3] (2) [2-3] (2) [1-5] (3)Konklusjon:
Vi har studert Kruskals minimumsspanningstre, som er den første preferansen for folk flest når de må finne MST -grafen fra en graf. Kruskals algoritme er enkel å forstå og implementere i en virkelig applikasjon. Som Prims algoritme, er Kruskals algoritme også veldig nyttig i virkelige applikasjoner. Så vi må forstå denne algoritmen.