Kruskals algoritm

Från Rilpedia

Hoppa till: navigering, sök
Wikipedia_letter_w.pngTexten från svenska WikipediaWikipedialogo_12pt.gif
rpsv.header.diskuteraikon2.gif

Kruskals algoritm är en girig algoritm för att skapa ett minimalt uppspännande träd från en godtycklig sammanhängande, viktad och oriktad graf.

Algoritmen bygger en skog av träd som allt eftersom växer ihop. Algoritmen är girig, eftersom den hela tiden lägger till den kortaste kanten den kan hitta till sina delträd.

Pseudokod

Algoritmen kan beskrivas på följande sätt:

  För att hitta ett minimalt uppspännande träd i den sammanhängande grafen G
  Upprepa tills T innehåller alla noder i G 
     låt v vara den kortaste kanten i G som inte märkts som förbrukad
     märk v som förbrukad
     om v inte bildar en cykel i T
        lägg v till T
  T är ett minimalt uppspännande träd

Exempel

Prim Algorithm 0.svg

Målet är att finna ett träd som omfattar hörnen A–G där trädets kanter har så låg sammanlagd kostnad som möjligt.

Kruskal Algorithm 1.svg

Kanterna AD och CE är de kanter i grafen som har lägst kostnad. Vilken av kanterna som i detta steg ska läggas till trädet som utgör problemets lösning är godtyckligt, men för konsekvensens skull kan alfabetisk ordning användas. AD blir därför en del av lösningen.

Kruskal Algorithm 2.svg

CE har samma låga kostnad och bildar inte en cykel om den läggs till problemets lösning. Den läggs till lösningen, som när algoritmen är klar kommer att vara ett träd, men som i detta skede är en skog bestående av två än så länge separata träd.

Kruskal Algorithm 3.svg

DF läggs till lösningen.

Kruskal Algorithm 4.svg

AB och BE har lägst kostnad. AB läggs till enligt alfabetisk ordning. BD kan därmed inte ingå i denna lösning, eftersom den bildar en cykel tillsammans med AB och AD, som redan ingår i lösningen.

Kruskal Algorithm 5.svg

BE läggs till lösningen. Detta utesluter BC, DE och EF.

Kruskal Algorithm 6.svg

Av de kanter som fortfarande kan ingå i lösningen (EG och FG) har EG lägst kostnad. (BC och EF har lägre kostnad, och BD har samma kostnad, men dessa skapar cykler.) EG läggs därför till lösningen. Det finns inga återstående kanter som vare sig ingår i lösningen eller bildar cykler i lösningen (och alla hörn ingår i trädet). Trädet är fullständigt.

Se även

Personliga verktyg