logo

Hvad er Minimum Spanning Tree (MST)

EN minimum spændingstræ (MST) er defineret som en spændende træ der har den mindste vægt blandt alle de mulige spændingstræer

EN spændende træ er defineret som en trælignende undergraf af en forbundet, ikke-rettet graf, der inkluderer alle hjørnerne af grafen. Eller for at sige med lægmandsord, det er en delmængde af grafens kanter, der danner et træ ( acyklisk ) hvor hver knude på grafen er en del af træet.



Minimumspændingstræet har alle egenskaberne for et spændingstræ med en ekstra begrænsning af at have den mindst mulige vægt blandt alle mulige spændingstræer. Ligesom et spændingstræ kan der også være mange mulige MST'er for en graf.

Minimum Spanning Tree (MST)

Egenskaber for et spændingstræ:

Spændende træ holder nedenstående principper :



  • Antallet af hjørner ( I ) i grafen og spændingstræet er det samme.
  • Der er et fast antal kanter i spændingstræet, som er lig med én mindre end det samlede antal hjørner ( OG = V-1 ).
  • Spændende træ bør ikke være afbrudt , da der kun bør være en enkelt kilde til komponent, ikke mere end det.
  • Spændingstræet skal være acyklisk, hvilken betyder, at der ikke ville være nogen cyklus i træet.
  • Den samlede pris (eller vægt) af spændingstræet er defineret som summen af ​​kantvægtene af alle kanterne af spændingstræet.
  • Der kan være mange mulige spændingstræer til en graf.

Minimumsspændende træ:

EN minimum spændingstræ (MST) er defineret som en spændende træ der har den mindste vægt blandt alle de mulige spændingstræer.

hvordan man konverterer streng til int java

Minimumspændingstræet har alle egenskaberne for et spændingstræ med en ekstra begrænsning af at have den mindst mulige vægt blandt alle mulige spændingstræer. Ligesom et spændingstræ kan der også være mange mulige MST'er for en graf.

  • Lad os se på MST i ovenstående eksempelgraf,

Minimumsspændende træ



Algoritmer til at finde minimumsspændingstræ:

Der er flere algoritmer til at finde det mindste spændingstræ fra en given graf, nogle af dem er anført nedenfor:

hvor mange uger om måneden

Kruskals Minimum Spanning Tree-algoritme:

Dette er en af ​​de populære algoritmer til at finde det mindste spændingstræ fra en forbundet, urettet graf. Dette er en Først sorterer den alle kanterne af grafen efter deres vægt,

  • Derefter starter gentagelserne med at finde det spændende træ.
  • Ved hver iteration tilføjer algoritmen den næste laveste vægtkant én efter én, således at de kanter, der er valgt indtil nu, ikke danner en cyklus.
  • Denne algoritme kan implementeres effektivt ved hjælp af en DSU (Dijoint-Set) datastruktur til at holde styr på de forbundne komponenter i grafen. Dette bruges i en række praktiske applikationer såsom netværksdesign, klyngedannelse og dataanalyse.

    Følg artiklen på Kruskals Minimum Spanning Tree Algorithm for en bedre forståelse og implementering af algoritmen.

    Prim's Minimum Spanning Tree-algoritme:

    Dette er også en grådig algoritme. Denne algoritme har følgende arbejdsgang:

    • Det starter med at vælge et vilkårligt vertex og derefter tilføje det til MST.
    • Derefter kontrollerer den gentagne gange for den minimale kantvægt, der forbinder et toppunkt af MST med et andet toppunkt, der endnu ikke er i MST.
    • Denne proces fortsættes, indtil alle hjørnerne er inkluderet i MST.

    For effektivt at vælge minimumvægtkanten for hver iteration bruger denne algoritme priority_queue til at gemme hjørnerne sorteret efter deres aktuelt minimumskantvægt. Det holder også samtidig styr på MST'en ved hjælp af et array eller anden datastruktur, der er passende i betragtning af den datatype, den gemmer.

    Denne algoritme kan bruges i forskellige scenarier såsom billedsegmentering baseret på farve, tekstur eller andre funktioner. Til ruteføring, som ved at finde den korteste vej mellem to punkter, som en varebil skal følge.

    Følg artiklen på Prim's Minimum Spanning Tree-algoritme for en bedre forståelse og implementering af denne algoritme.

    Boruvkas Minimum Spanning Tree-algoritme:

    Dette er også en grafgennemløbsalgoritme, der bruges til at finde minimumspændingstræet for en forbundet, urettet graf. Dette er en af ​​de ældste algoritmer. Algoritmen fungerer ved iterativt at opbygge minimumspændingstræet, startende med hvert toppunkt i grafen som sit eget træ. I hver iteration finder algoritmen den billigste kant, der forbinder et træ med et andet træ, og føjer denne kant til minimumspændingstræet. Dette svarer næsten til Prims algoritme til at finde minimumspændingstræet. Algoritmen har følgende arbejdsgang:

    side ned tastatur
    • Initialiser en skov af træer, med hvert knudepunkt i grafen som sit eget træ.
    • For hvert træ i skoven:
      • Find den billigste kant, der forbinder den med et andet træ. Tilføj disse kanter til minimumspændingstræet.
      • Opdater skoven ved at flette de træer, der er forbundet med de tilføjede kanter.
    • Gentag ovenstående trin, indtil skoven kun indeholder ét træ, som er det mindste spændingstræ.

    Algoritmen kan implementeres ved hjælp af en datastruktur såsom en prioritetskø for effektivt at finde den billigste kant mellem træer. Boruvkas algoritme er en enkel og nem at implementere algoritme til at finde minimumspændende træer, men den er måske ikke så effektiv som andre algoritmer til store grafer med mange kanter.

    Følg artiklen på Boruvkas Minimum Spanning Tree Algorithm for en bedre forståelse og implementering af denne algoritme.

    For at vide mere om egenskaberne og egenskaberne ved Minimum Spanning Tree, klik her.

    Anvendelser af minimumsspændende træer:

    • Netværksdesign : Spændende træer kan bruges i netværksdesign til at finde det mindste antal forbindelser, der kræves for at forbinde alle noder. Især minimumspændende træer kan hjælpe med at minimere omkostningerne ved forbindelserne ved at vælge de billigste kanter.
    • Billedbehandling : Omspændende træer kan bruges i billedbehandling til at identificere områder med lignende intensitet eller farve, hvilket kan være nyttigt til segmenterings- og klassifikationsopgaver.
    • Biologi : Spændende træer og minimumspændende træer kan bruges i biologien til at konstruere fylogenetiske træer til at repræsentere evolutionære forhold mellem arter eller gener.
    • Social netværksanalyse : Spændende træer og minimumspændende træer kan bruges i sociale netværksanalyser til at identificere vigtige forbindelser og relationer mellem individer eller grupper.

    Nogle populære interviewproblemer på MST

    1. Find minimumsomkostningerne for at forbinde alle byer Øve sig

    Nogle ofte stillede spørgsmål om træer med minimum spændvidde:

    1. Kan der være flere minimumsspændende træer for en given graf?

    Ja, en graf kan have flere minimumsspændende træer, hvis der er flere sæt kanter med den samme minimale totalvægt.

    hvad er regex java

    2. Kan Kruskals algoritme og Prims algoritme bruges til rettede grafer?

    Nej, Kruskals algoritme og Prims algoritme er kun designet til urettede grafer.

    3. Kan en afbrudt graf have et minimum spændingstræ?

    Nej, en afbrudt graf kan ikke have et spændingstræ, fordi den ikke spænder over alle hjørnerne. Derfor kan den heller ikke have et minimumspændingstræ.

    4. Kan et minimum spændingstræ findes ved hjælp af Dijkstras algoritme?

    Nej, Dijkstras algoritme bruges til at finde den korteste vej mellem to hjørner i en vægtet graf. Det er ikke designet til at finde et minimumspændingstræ.

    5. Hvad er tidskompleksiteten af ​​Kruskals og Prims algoritmer?

    Både Kruskals og Prims algoritmer har en tidskompleksitet på O(ElogE) , hvor E er antallet af kanter i grafen.