Hopp til innhold

Prims algoritme

Fra Wikipedia, den frie encyklopedi

Prims algoritme er en grådig algoritme innen grafteori som finner minste spenntre i en vektet graf. Den ble oppdaget av Vojtěch Jarník i 1930,[1] og senere, uavhengig, av Robert Clay Prim i 1957[2] (samt Edsger Dijkstra, 1959). Således benevnes den også DJP-algoritmen eller Jarniks algoritme.

Initielt

  1. man har en graf med noder V og kanter E
  2. sett MST til å være en vilkårlig valgt node i V

Sålenge der er noder i V som ikke ligger i MST

  1. finn en kant i E som til lavest kostnad (og uten at det gir syklus), kobler en node u i MST, med en node v som ikke er i MST.
  2. legg ( u , v ) til MST

Avslutningsvis

  1. det minimale spenntre består av kantene i MST

Algoritmen har en tidskompleksitetO(|E| log|V|), og er avhengig av hvordan man finner rimeligste tilleggs-kant i hver runde. Med en Fibonnaciheap, vil tidskompleksiteten bli O(|E| + |V|log|V|).

  1. ^ Vojtěch Jarník, O jistém problému minimálním, Práce Moravské Přírodovědecké Společnosti, 6, 1930, sider 57-63.
  2. ^ Robert Clay Prim, Shortest connection networks and some generalisations. Bell System Technical Journal, 36 (1957), side 1389–1401

Eksempel

Image Beskrivelse Ukjent Nærmeste omkrets MST
Den opprinnelige vektede graf. Hver kant har en angitt kostnad. Utgangspunkt er D. C, G A, B, E, F D
Neste node som innlemmes i MST er A (til kostnad 5). Innlemmede kanter vises i grønt. C, G B, E, F A, D
Dernest velges den rimeligste nabo til en av D eller A, hvilket blir F. C B, E, G A, D, F
Etter at B (den rimeligste nabo til A, D og F) innlemmes i MST, ser en (merket med rødt) at noen av kantene ikke kan velges heretter, da de gir rundtur (syklus). null C, E, G A, D, F, B
E innlemmes. null C, G A, D, F, B, E
C innlemmes. null G A, D, F, B, E, C
G er det eneste gjenstående, og innlemmes i det nå ferdige MST som har kostnad 39. null null A, D, F, B, E, C, G