Algoritme van Prim

Uit Wikipedia, de vrije encyclopedie
Naar navigatie springen Naar zoeken springen

Het algoritme van Prim is een algoritme om de minimaal opspannende boom van een graaf te vinden.

Het algoritme werd in 1930 ontdekt door de wiskundige Vojtěch Jarník en in 1957 onafhankelijk herontdekt door de informaticus Robert C. Prim. In 1959 werd het ook door Dijkstra ontdekt. Het algoritme wordt ook weleens het DJP-algoritme of algoritme van Jarnik genoemd.

Algoritme[bewerken | brontekst bewerken]

Gegeven een samenhangende gewogen graaf met een verzameling knopen . De volgende procedure is een algoritme dat een minimale opspannende boom T construeert.

  • Start: Initialiseer met zodanig dat de tak van minimale lengte vanuit is. (Merk op dat de notatie voor ongeordende paren is: de bogen zijn ongericht.)
  • Stop: Stop zodra precies bogen heeft.
  • Boog toevoegen:
Van alle bogen die een knoop van verbinden met een knoop die niet tot behoort, voeg de boog met het kleinste gewicht toe (indien meerdere met het kleinste gewicht, een ervan kiezen).
Deze boog bestaat aangezien het een samenhangende graaf is en nog niet alle knopen bevat. zal door deze stap geen kringen bevatten aangezien de toegevoegde knoop nog niet in zat. Ga terug naar de stap Stop.

Voorbeeld[bewerken | brontekst bewerken]

Prim Algorithm 0.svg Dit is de gegeven graaf, waarin de getallen naast de bogen de gewichten van die bogen voorstellen.
Prim Algorithm 1.svg Bij de start kiezen we een willekeurige knoop uit, knoop D. Deze is verbonden met (in het blauw aangegeven) knopen A, B, E en F door de bogen DA, DB, DE en DF. Daarvan heeft DA (lichtblauw) het kleinste gewicht. Dus wordt boog DA met knoop A aan de graaf T toegevoegd.
Prim Algorithm 2.svg Met de knopen A en D in de reeds gevormde (groene) graaf T zijn de knopen B, E en F verbonden door de bogen AB, DB, DE en DF. Van deze vier bogen heeft DF het kleinste gewicht. Dus wordt boog DF met knoop F aan de graaf T toegevoegd.
Prim Algorithm 3.svg Met de gevormde graaf T kunnen nu de knopen B, E en G verbonden worden door de bogen AB, DB, DE, FE en FG. Hiervan heeft boog AB het kleinste gewicht. Dus wordt boog AB met knoop B aan de graaf T toegevoegd.
Prim Algorithm 4.svg Met de gevormde graaf T kunnen nu de knopen C, door boog BC, E, door de bogen BE, DE en FE, en G, door de boog FG, verbonden worden. Van deze bogen heeft BE het kleinste gewicht. Dus wordt boog BE met knoop E toegevoegd aan T.
Prim Algorithm 5.svg Met de reeds gevormde graaf T kunnen de knopen C, door bogen BC en EC, en G, door de bogen EG en FG, verbonden worden. Van deze bogen heeft EC het kleinste gewicht. Dus wordt EC en knoop C aan T toegevoegd.
Prim Algorithm 6.svg De overblijvende knoop G kan door bogen EG en FG verbonden worden met graaf T. De boog EG heeft het kleinste gewicht, en dus wordt EG en knoop G toegevoegd aan T.
Prim Algorithm 7.svg Alle knopen zijn nu toegevoegd aan T en T vormt een minimaal opspannende boom van de gegeven graaf.

Zie ook[bewerken | brontekst bewerken]

Zie de categorie Prim's algorithm van Wikimedia Commons voor mediabestanden over dit onderwerp.