Prim algoritmus Algoritmusok és adatszerkezetek 2. Újvári Zsuzsanna
Az algoritmus elve Minimális feszítőfát keres Egy csúcsból indulva növekszik, amíg az összes csúcsot el nem éri Inicializálás: – Vegyünk egy kezdőcsúcsot Amíg nincs meg az összes csúcs – Válasszunk ki egy minimális súlyú „u-v” élt, ahol „u” már szerepel az új gráfban, „v” viszont nem – „v”-t és „u-v”-t hozzáadjuk az új gráfhoz
A csúcsok lehetséges státuszai: - Fehér - Fehér: a csúcs eleme a minQ-nak és nincs X-beli szomszédja, azaz még nem került "látótávolságba", tehát az X-től való távolsága végtelen. - Szürke - Szürke: a csúcs eleme a minQ-nak, de létezik X-beli szomszédja, tehát a távolsága már kisebb, mint végtelen. - Fekete - Fekete: a csúcs kikerült a minQ-ból, azaz bekerült X-be P[1..n] tömb: egy csúcs feszítőfabeli szülőcsúcsának a tárolására minQ: (d[v],v) párokból álló minimumválasztó elsőbbségi sor, ahol d[v] értéke a kulcs.
d[s]:=0; P[s]:=NIL all u eleme V \ {s} d[s]:= ; P[u]:=NIL Üres(minQ); Feltölt(minQ) not Üres?(minQ) u:=KiveszMin(minQ) all v eleme Szomszéd(u) v eleme (minQ) and c(u,v)<d[v] d[v]:=c(u,v) Helyreállít(minQ) P[v]:=u SKIP Prim(G,s)
Példa A H E F C D GB
1. lépés A H E F C D GB
2. lépés A H E F C D GB
3. lépés A H E F C D GB
4. lépés A H E F C D GB
5. lépés A H E F C D GB
6. lépés A H E F C D GB
7. lépés A H E F C D GB
8. lépés A H E F C D GB
9. lépés A H E F C D GB
10. lépés A H E F C D GB
11. lépés A H E F C D GB
12. lépés A H E F C D GB
13. lépés A H E F C D GB
14. lépés A H E F C D GB
Végeredmény A H E F C D GB
Köszönöm a figyelmet! Köszönöm a figyelmet!