a főciklus működése. ciklusfeltétel teljesül, minq nem üres, belépés a ciklusba

27
A zalgoritm uselve: M inden lépésben tartsuk nyilván az összes csúcsra , a forrástól az illető csúcsba vezető, eddig talált legrövidebb utat (a már megism ert m ódon a d [1 ..n ] töm bben a távolságot, és P[1 ..n ]töm bben a m egelőző csúcsot). 1) K ezdetben a távolság legyen a kezdőcsúcsra 0,a többicsúcsra . 2) M inden lépésben a nem K ÉSZ csúcsok közül tekintsük az egyik legkisebb távolságú ( min d )csúcsot: a) Azt mondhatjuk, hogy ez a V v csúcs m ár K ÉSZ, azaz ism ert a hozzá vezető legrövidebb út. b) A v-t terjesszük ki , azaz v csúcs szomszédaira számítsuk ki a (m ár ismert) v-be vezető,és onnan egy kim enő éllelm eghosszabbítottúthosszát.A m ennyiben ez jobb (kisebb),m intaz illető szomszédba eddig találtlegrövidebb út,akkorinnentőlkezdve eztaz utattekintsük,az adottszom szédba vezető,eddig találtlegrövidebb útnak.Ezt az eljárástszokás közelítésnek isnevezni. d[1… n]és P[1… n]tö m bö k a távo lság és a m egelőző csúcs nyilvántartására K ÉSZ halm az azo n csúcso k szám ára,am elyekhez m árism erjük a legrö videbb utat M inim um választó elsőbbségiso r am elyben a csúcso kat táro ljuk a m ár felfedezett legrö videbb távo lsággal d[v]:=d[u]+c(u,v) Helyreállít(m inQ ) P[v]:=u d[v]>d[u]+ c(u,v) SKIP Üres(KÉSZ);Üres(m inQ ) Feltölt(m inQ ) !Üres?(m inQ ) u:=KiveszMin(m inQ) K ÉSZ :=K ÉSZ U {u} allv elem e Szom szed(u)\K ÉSZ d[s]:=0;P[s]:= N il allu elem e V\{s} d[u]:= Végtelen;P[u]:= N il

Upload: whitby

Post on 23-Feb-2016

21 views

Category:

Documents


0 download

DESCRIPTION

- PowerPoint PPT Presentation

TRANSCRIPT

Page 1: A főciklus működése. Ciklusfeltétel teljesül,  minQ  nem üres, belépés a ciklusba

Az algoritmus elve: Minden lépésben tartsuk nyilván az összes csúcsra, a forrástól az illető csúcsba vezető, eddig talált legrövidebb utat (a már megismert módon a d[1..n] tömbben a távolságot, és P[1..n] tömbben a megelőző csúcsot). 1) Kezdetben a távolság legyen a kezdőcsúcsra 0, a többi csúcsra . 2) Minden lépésben a nem KÉSZ csúcsok közül tekintsük az egyik legkisebb távolságú

( mind ) csúcsot: a) Azt mondhatjuk, hogy ez a Vv csúcs már KÉSZ, azaz ismert a hozzá vezető

legrövidebb út. b) A v-t terjesszük ki, azaz v csúcs szomszédaira számítsuk ki a (már ismert) v-be

vezető, és onnan egy kimenő éllel meghosszabbított út hosszát. Amennyiben ez jobb (kisebb), mint az illető szomszédba eddig talált legrövidebb út, akkor innentől kezdve ezt az utat tekintsük, az adott szomszédba vezető, eddig talált legrövidebb útnak. Ezt az eljárást szokás közelítésnek is nevezni.

d[1…n] és P[1…n] tömbök a távolság és a megelőző csúcs nyilvántartására KÉSZ halmaz azon csúcsok számára, amelyekhez már ismerjük a legrövidebb utatMinimum választó elsőbbségi sor amelyben a csúcsokat tároljuk a már felfedezett legrövidebb távolsággal

d[v]:=d[u]+c(u,v)Helyreállít(minQ)

P[v]:=u

d[v]>d[u] + c(u,v)

SKIP

Üres(KÉSZ); Üres(minQ)Feltölt(minQ)!Üres?(minQ)

u:=KiveszMin(minQ)KÉSZ:=KÉSZ U {u}

all v eleme Szomszed(u)\ KÉSZ

d[s]:=0; P[s]:= Nilall u eleme V\ {s}

d[u]:= Végtelen; P[u]:= Nil

Page 2: A főciklus működése. Ciklusfeltétel teljesül,  minQ  nem üres, belépés a ciklusba

d[v]:=d[u]+c(u,v)Helyreállít(minQ)

P[v]:=u

d[v]>d[u] + c(u,v)

SKIP

Üres(KÉSZ); Üres(minQ)Feltölt(minQ)!Üres?(minQ)

u:=KiveszMin(minQ)KÉSZ:=KÉSZ U {u}

all v eleme Szomszed(u)\ KÉSZ

d[s]:=0; P[s]:= Nilall u eleme V\ {s}

d[u]:= Végtelen; P[u]:= Nil

Az ábrán az inicializáló blokk lefutása utáni állapotot láthatjuk. A KÉSZ halmazhoz való tartozást színezéssel valósítjuk meg. A nem KÉSZ csúcsok fehérek, a KÉSZ csúcsok zöldek lesznek. A csúcsok mellé feltüntettem a címkéjét és a csúcson belüli érték jelöli az eddig talált legrövidebb távolságot. Kezdetben a szürke kezdőcsúcs értéke 0 a többi csúcs végtelen (inf) értékkel szerepel az elsőbbségi sorban (minQ).

a b c d e fminQ: 0 inf inf inf inf inf

Page 3: A főciklus működése. Ciklusfeltétel teljesül,  minQ  nem üres, belépés a ciklusba

d[v]:=d[u]+c(u,v)Helyreállít(minQ)

P[v]:=u

d[v]>d[u] + c(u,v)

SKIP

Üres(KÉSZ); Üres(minQ)Feltölt(minQ)!Üres?(minQ)

u:=KiveszMin(minQ)KÉSZ:=KÉSZ U {u}

all v eleme Szomszed(u)\ KÉSZ

d[s]:=0; P[s]:= Nilall u eleme V\ {s}

d[u]:= Végtelen; P[u]:= Nil

A főciklus működése.Ciklusfeltétel teljesül, minQ nem üres, belépés a ciklusba

minQ: 0 inf inf inf inf inf

Page 4: A főciklus működése. Ciklusfeltétel teljesül,  minQ  nem üres, belépés a ciklusba

Első lépésben kivesszük a prioritásos sorból az a csúcsot, (mivel az ő prioritása a legkisebb).

d[v]:=d[u]+c(u,v)Helyreállít(minQ)

P[v]:=u

d[v]>d[u] + c(u,v)

SKIP

Üres(KÉSZ); Üres(minQ)Feltölt(minQ)!Üres?(minQ)

u:=KiveszMin(minQ)KÉSZ:=KÉSZ U {u}

all v eleme Szomszed(u)\ KÉSZ

d[s]:=0; P[s]:= Nilall u eleme V\ {s}

d[u]:= Végtelen; P[u]:= Nil

minQ: inf inf inf inf inf

Page 5: A főciklus működése. Ciklusfeltétel teljesül,  minQ  nem üres, belépés a ciklusba

KÉSZ U {u}: a

Az a csúcshoz már ki van számítva a legrövidebb út , tehát ez a csúcs már elkészült , tegyük bele a KÉSZ U halmazba.

d[v]:=d[u]+c(u,v)Helyreállít(minQ)

P[v]:=u

d[v]>d[u] + c(u,v)

SKIP

Üres(KÉSZ); Üres(minQ)Feltölt(minQ)!Üres?(minQ)

u:=KiveszMin(minQ)KÉSZ:=KÉSZ U {u}

all v eleme Szomszed(u)\ KÉSZ

d[s]:=0; P[s]:= Nilall u eleme V\ {s}

d[u]:= Végtelen; P[u]:= Nil

minQ: inf inf inf inf inf

Page 6: A főciklus működése. Ciklusfeltétel teljesül,  minQ  nem üres, belépés a ciklusba

Az a csúcs kiterjesztését végző ciklus működése.A ciklus végigmegy a gráf összes olyan elemén, amely szomszédja az u csúcsnak és nincs benne a KÉSZ halmazban. A kiterjesztés során vizsgált csúcsokat és éleket pirossal jelöltem.

KÉSZ U {u}: a

d[v]:=d[u]+c(u,v)Helyreállít(minQ)

P[v]:=u

d[v]>d[u] + c(u,v)

SKIP

Üres(KÉSZ); Üres(minQ)Feltölt(minQ)!Üres?(minQ)

u:=KiveszMin(minQ)KÉSZ:=KÉSZ U {u}

all v eleme Szomszed(u)\ KÉSZ

d[s]:=0; P[s]:= Nilall u eleme V\ {s}

d[u]:= Végtelen; P[u]:= Nil

minQ: inf inf inf inf inf

Page 7: A főciklus működése. Ciklusfeltétel teljesül,  minQ  nem üres, belépés a ciklusba

d[v]:=d[u]+c(u,v)Helyreállít(minQ)

P[v]:=u

d[v]>d[u] + c(u,v)

SKIP

Üres(KÉSZ); Üres(minQ)Feltölt(minQ)!Üres?(minQ)

u:=KiveszMin(minQ)KÉSZ:=KÉSZ U {u}

all v eleme Szomszed(u)\ KÉSZ

d[s]:=0; P[s]:= Nilall u eleme V\ {s}

d[u]:= Végtelen; P[u]:= Nil

KÉSZ U {u}: a

u vd: 0 inf inf inf

A legrövidebb csúcs megkeresése.A d[…] tömbbe kerülnek az u csúcsból kiinduló élek távolságai. c(u,v) jelöli az u csúcsból a v csúcsba vezető él súlyát. Behelyettesítve az értékeket : inf > 0 + 54Igaz ág hajtódik végre.

minQ: inf inf inf inf inf

Page 8: A főciklus működése. Ciklusfeltétel teljesül,  minQ  nem üres, belépés a ciklusba

d[v]:=d[u]+c(u,v)Helyreállít(minQ)

P[v]:=u

d[v]>d[u] + c(u,v)

SKIP

Üres(KÉSZ); Üres(minQ)Feltölt(minQ)!Üres?(minQ)

u:=KiveszMin(minQ)KÉSZ:=KÉSZ U {u}

all v eleme Szomszed(u)\ KÉSZ

d[s]:=0; P[s]:= Nilall u eleme V\ {s}

d[u]:= Végtelen; P[u]:= Nil

KÉSZ U {u}: a

minQ: inf inf inf inf inf

u vd: 0 0+54 inf inf

A v csúcs távolsága legyen egyenlő az u csúcs értékével és a két csúcs közötti él súlyával (c(u,v) függvény).

Page 9: A főciklus működése. Ciklusfeltétel teljesül,  minQ  nem üres, belépés a ciklusba

minQ helyreállítása, visszatesszük a sorba d[v] értékét .

KÉSZ U {u}: a

u vd: 0 54 inf inf

minQ: 54 inf inf inf inf

d[v]:=d[u]+c(u,v)Helyreállít(minQ)

P[v]:=u

d[s]:=0; P[s]:= Nilall u eleme V\ {s}

d[u]:= Végtelen; P[u]:= Nil

d[v]>d[u] + c(u,v)

SKIP

Üres(KÉSZ); Üres(minQ)Feltölt(minQ)!Üres?(minQ)

u:=KiveszMin(minQ)KÉSZ:=KÉSZ U {u}

all v eleme Szomszed(u)\ KÉSZ

Page 10: A főciklus működése. Ciklusfeltétel teljesül,  minQ  nem üres, belépés a ciklusba

KÉSZ U {u}: a

u vd: 0 54 inf inf

Ugrás a következő elemre

d[v]:=d[u]+c(u,v)Helyreállít(minQ)

P[v]:=u

d[v]>d[u] + c(u,v)

SKIP

Üres(KÉSZ); Üres(minQ)Feltölt(minQ)!Üres?(minQ)

u:=KiveszMin(minQ)KÉSZ:=KÉSZ U {u}

all v eleme Szomszed(u)\ KÉSZ

d[s]:=0; P[s]:= Nilall u eleme V\ {s}

d[u]:= Végtelen; P[u]:= Nil

minQ: 54 inf inf inf inf

Page 11: A főciklus működése. Ciklusfeltétel teljesül,  minQ  nem üres, belépés a ciklusba

d[v]:=d[u]+c(u,v)Helyreállít(minQ)

P[v]:=u

d[s]:=0; P[s]:= Nilall u eleme V\ {s}

d[u]:= Végtelen; P[u]:= Nil

d[v]>d[u] + c(u,v)

SKIP

Üres(KÉSZ); Üres(minQ)Feltölt(minQ)!Üres?(minQ)

u:=KiveszMin(minQ)KÉSZ:=KÉSZ U {u}

all v eleme Szomszed(u)\ KÉSZ

KÉSZ U {u}: a

u vd: 0 54 inf inf

d[v] = infd[u] = 0c(u,v)=62Behyelyettesítve az értékeket az igaz ág kerül végrehajtásra.

minQ: 54 inf inf inf inf

Page 12: A főciklus működése. Ciklusfeltétel teljesül,  minQ  nem üres, belépés a ciklusba

d[v]:=d[u]+c(u,v)Helyreállít(minQ)

P[v]:=u

d[s]:=0; P[s]:= Nilall u eleme V\ {s}

d[u]:= Végtelen; P[u]:= Nil

d[v]>d[u] + c(u,v)

SKIP

Üres(KÉSZ); Üres(minQ)Feltölt(minQ)!Üres?(minQ)

u:=KiveszMin(minQ)KÉSZ:=KÉSZ U {u}

all v eleme Szomszed(u)\ KÉSZ

KÉSZ U {u}: a

u vd: 0 54 0+62 inf

minQ: 54 inf inf inf inf

Page 13: A főciklus működése. Ciklusfeltétel teljesül,  minQ  nem üres, belépés a ciklusba

d[v]:=d[u]+c(u,v)Helyreállít(minQ)

P[v]:=u

d[s]:=0; P[s]:= Nilall u eleme V\ {s}

d[u]:= Végtelen; P[u]:= Nil

d[v]>d[u] + c(u,v)

SKIP

Üres(KÉSZ); Üres(minQ)Feltölt(minQ)!Üres?(minQ)

u:=KiveszMin(minQ)KÉSZ:=KÉSZ U {u}

all v eleme Szomszed(u)\ KÉSZ

KÉSZ U {u}: a

u vd: 0 54 62 inf

minQ: 54 62 inf inf inf

Page 14: A főciklus működése. Ciklusfeltétel teljesül,  minQ  nem üres, belépés a ciklusba

d[v]:=d[u]+c(u,v)Helyreállít(minQ)

P[v]:=u

d[v]>d[u] + c(u,v)

SKIP

Üres(KÉSZ); Üres(minQ)Feltölt(minQ)!Üres?(minQ)

u:=KiveszMin(minQ)KÉSZ:=KÉSZ U {u}

all v eleme Szomszed(u)\ KÉSZ

d[s]:=0; P[s]:= Nilall u eleme V\ {s}

d[u]:= Végtelen; P[u]:= Nil

Ugrás a következő elemre

KÉSZ U {u}: a

u vd: 0 54 62 inf

minQ: 54 62 inf inf inf

Page 15: A főciklus működése. Ciklusfeltétel teljesül,  minQ  nem üres, belépés a ciklusba

d[v]:=d[u]+c(u,v)Helyreállít(minQ)

P[v]:=u

d[s]:=0; P[s]:= Nilall u eleme V\ {s}

d[u]:= Végtelen; P[u]:= Nil

d[v]>d[u] + c(u,v)

SKIP

Üres(KÉSZ); Üres(minQ)Feltölt(minQ)!Üres?(minQ)

u:=KiveszMin(minQ)KÉSZ:=KÉSZ U {u}

all v eleme Szomszed(u)\ KÉSZ

d[v] = infd[u] = 0c(u,v)=37Behyelyettesítve az értékeket az igaz ág kerül végrehajtásra.

KÉSZ U {u}: a

u vd: 0 54 62 inf

minQ: 54 62 inf inf inf

Page 16: A főciklus működése. Ciklusfeltétel teljesül,  minQ  nem üres, belépés a ciklusba

d[v]:=d[u]+c(u,v)Helyreállít(minQ)

P[v]:=u

d[s]:=0; P[s]:= Nilall u eleme V\ {s}

d[u]:= Végtelen; P[u]:= Nil

d[v]>d[u] + c(u,v)

SKIP

Üres(KÉSZ); Üres(minQ)Feltölt(minQ)!Üres?(minQ)

u:=KiveszMin(minQ)KÉSZ:=KÉSZ U {u}

all v eleme Szomszed(u)\ KÉSZ

KÉSZ U {u}: a

u vd: 0 54 62 0+37

minQ: 54 62 inf inf inf

Page 17: A főciklus működése. Ciklusfeltétel teljesül,  minQ  nem üres, belépés a ciklusba

d[v]:=d[u]+c(u,v)Helyreállít(minQ)

P[v]:=u

d[s]:=0; P[s]:= Nilall u eleme V\ {s}

d[u]:= Végtelen; P[u]:= Nil

d[v]>d[u] + c(u,v)

SKIP

Üres(KÉSZ); Üres(minQ)Feltölt(minQ)!Üres?(minQ)

u:=KiveszMin(minQ)KÉSZ:=KÉSZ U {u}

all v eleme Szomszed(u)\ KÉSZ

KÉSZ U {u}: a

u vd: 0 54 62 37

minQ: 37 54 62 inf inf

A belső ciklus lefutása utáni állapot. A kezdőcsúcshoz tartozó három él közül az e csúcshoz vezető él a legkisebb súlyú, ez került a minQ prioritásos sor legelejére.

Page 18: A főciklus működése. Ciklusfeltétel teljesül,  minQ  nem üres, belépés a ciklusba

d[v]:=d[u]+c(u,v)Helyreállít(minQ)

P[v]:=u

d[s]:=0; P[s]:= Nilall u eleme V\ {s}

d[u]:= Végtelen; P[u]:= Nil

d[v]>d[u] + c(u,v)

SKIP

Üres(KÉSZ); Üres(minQ)Feltölt(minQ)!Üres?(minQ)

u:=KiveszMin(minQ)KÉSZ:=KÉSZ U {u}

all v eleme Szomszed(u)\ KÉSZ

A főciklus második lefutása. minQ első elemét kivesszük, ez jelen esetben az e csúcs

KÉSZ U {u}: a

minQ: 37 54 62 inf inf

Page 19: A főciklus működése. Ciklusfeltétel teljesül,  minQ  nem üres, belépés a ciklusba

d[v]:=d[u]+c(u,v)Helyreállít(minQ)

P[v]:=u

d[v]>d[u] + c(u,v)

SKIP

Üres(KÉSZ); Üres(minQ)Feltölt(minQ)!Üres?(minQ)

u:=KiveszMin(minQ)KÉSZ:=KÉSZ U {u}

all v eleme Szomszed(u)\ KÉSZ

d[s]:=0; P[s]:= Nilall u eleme V\ {s}

d[u]:= Végtelen; P[u]:= Nil

Kész U {u}: e a

minQ: 54 62 inf inf

Betesszük a KÉSZ U{} halmazba, melynek elemeit az ábrán zölden jelöltem.

Page 20: A főciklus működése. Ciklusfeltétel teljesül,  minQ  nem üres, belépés a ciklusba

d[v]:=d[u]+c(u,v)Helyreállít(minQ)

P[v]:=u

d[s]:=0; P[s]:= Nilall u eleme V\ {s}

d[u]:= Végtelen; P[u]:= Nil

d[v]>d[u] + c(u,v)

SKIP

Üres(KÉSZ); Üres(minQ)Feltölt(minQ)!Üres?(minQ)

u:=KiveszMin(minQ)KÉSZ:=KÉSZ U {u}

all v eleme Szomszed(u)\ KÉSZ

A belső ciklus nem fut le mert az u-hoz tartozó szomszédsági lista üres.

Kész U {u}: e a

minQ: 54 62 inf inf

Page 21: A főciklus működése. Ciklusfeltétel teljesül,  minQ  nem üres, belépés a ciklusba

d[v]:=d[u]+c(u,v)Helyreállít(minQ)

P[v]:=u

d[s]:=0; P[s]:= Nilall u eleme V\ {s}

d[u]:= Végtelen; P[u]:= Nil

d[v]>d[u] + c(u,v)

SKIP

Üres(KÉSZ); Üres(minQ)Feltölt(minQ)!Üres?(minQ)

u:=KiveszMin(minQ)KÉSZ:=KÉSZ U {u}

all v eleme Szomszed(u)\ KÉSZ

A főciklus harmadik lefutása. minQ első elemét kivesszük, ez jelen esetben a d csúcs és beletesszük a KÉSZ U{} halmazba.

Kész U {u}: d e a

minQ: 62 inf inf

Page 22: A főciklus működése. Ciklusfeltétel teljesül,  minQ  nem üres, belépés a ciklusba

d[v]:=d[u]+c(u,v)Helyreállít(minQ)

P[v]:=u

d[s]:=0; P[s]:= Nilall u eleme V\ {s}

d[u]:= Végtelen; P[u]:= Nil

d[v]>d[u] + c(u,v)

SKIP

Üres(KÉSZ); Üres(minQ)Feltölt(minQ)!Üres?(minQ)

u:=KiveszMin(minQ)KÉSZ:=KÉSZ U {u}

all v eleme Szomszed(u)\ KÉSZ

Kész U {u}: d e a

minQ: 62 130 inf

A belső ciklus lefutása utáni állapot.Az f csúcshoz vezető út súlya: 54+76=130, mert a d csúcsnak csak egyetlen szomszédos eleme van, amely nincs benne a KÉSZ U{} halmazban, ennek értéke hozzáadódik a d csúcshoz vezető él súlyához.

Page 23: A főciklus működése. Ciklusfeltétel teljesül,  minQ  nem üres, belépés a ciklusba

d[v]:=d[u]+c(u,v)Helyreállít(minQ)

P[v]:=u

d[s]:=0; P[s]:= Nilall u eleme V\ {s}

d[u]:= Végtelen; P[u]:= Nil

d[v]>d[u] + c(u,v)

SKIP

Üres(KÉSZ); Üres(minQ)Feltölt(minQ)!Üres?(minQ)

u:=KiveszMin(minQ)KÉSZ:=KÉSZ U {u}

all v eleme Szomszed(u)\ KÉSZ

A főciklus negyedik lefutása. minQ első elemét kivesszük, ez jelen esetben a b csúcs és beletesszük a KÉSZ U{} halmazba.

minQ: 130 inf

Kész U {u}: b d e a

Page 24: A főciklus működése. Ciklusfeltétel teljesül,  minQ  nem üres, belépés a ciklusba

d[v]:=d[u]+c(u,v)Helyreállít(minQ)

P[v]:=u

d[s]:=0; P[s]:= Nilall u eleme V\ {s}

d[u]:= Végtelen; P[u]:= Nil

d[v]>d[u] + c(u,v)

SKIP

Üres(KÉSZ); Üres(minQ)Feltölt(minQ)!Üres?(minQ)

u:=KiveszMin(minQ)KÉSZ:=KÉSZ U {u}

all v eleme Szomszed(u)\ KÉSZ

b csúcs kiterjesztése utáni állapot. Mivel b-nek csak egyetlen olyan szomszédos eleme van, amely nincs benne a KÉSZ U{} halmazban, ezért a belső ciklus csak egyszer fut le. d[v] értéke 62+15=77 lesz és ezt teszi be a minQ prioritásos sorba.

minQ: 77 130

Kész U {u}: b d e a

Page 25: A főciklus működése. Ciklusfeltétel teljesül,  minQ  nem üres, belépés a ciklusba

d[v]:=d[u]+c(u,v)Helyreállít(minQ)

P[v]:=u

d[s]:=0; P[s]:= Nilall u eleme V\ {s}

d[u]:= Végtelen; P[u]:= Nil

d[v]>d[u] + c(u,v)

SKIP

Üres(KÉSZ); Üres(minQ)Feltölt(minQ)!Üres?(minQ)

u:=KiveszMin(minQ)KÉSZ:=KÉSZ U {u}

all v eleme Szomszed(u)\ KÉSZ

A főciklus ötödik lefutása. minQ első elemét kivesszük, ez jelen esetben a c csúcs és beletesszük a KÉSZ U{} halmazba.

minQ: 130

Kész U {u}: c b d e a

Page 26: A főciklus működése. Ciklusfeltétel teljesül,  minQ  nem üres, belépés a ciklusba

d[v]:=d[u]+c(u,v)Helyreállít(minQ)

P[v]:=u

d[s]:=0; P[s]:= Nilall u eleme V\ {s}

d[u]:= Végtelen; P[u]:= Nil

d[v]>d[u] + c(u,v)

SKIP

Üres(KÉSZ); Üres(minQ)Feltölt(minQ)!Üres?(minQ)

u:=KiveszMin(minQ)KÉSZ:=KÉSZ U {u}

all v eleme Szomszed(u)\ KÉSZ

A kiterjesztés során f csúcshoz két különbözű élsúlyú út is tartozik. Egyszer a korábbi 54+76=130 és a mostani kiterjesztés során bejárt 77+92=169 Ebben az esetbe a SKIP ág hajtódik végre, a 169 nem került bele minQ-ba.

minQ: 130

Kész U {u}: c b d e a

Page 27: A főciklus működése. Ciklusfeltétel teljesül,  minQ  nem üres, belépés a ciklusba

d[v]:=d[u]+c(u,v)Helyreállít(minQ)

P[v]:=u

d[s]:=0; P[s]:= Nilall u eleme V\ {s}

d[u]:= Végtelen; P[u]:= Nil

d[v]>d[u] + c(u,v)

SKIP

Üres(KÉSZ); Üres(minQ)Feltölt(minQ)!Üres?(minQ)

u:=KiveszMin(minQ)KÉSZ:=KÉSZ U {u}

all v eleme Szomszed(u)\ KÉSZ

Kész U {u}: f c b d e a

A főciklus utolsó lefutása utáni állapot.