Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaBálint Somogyi Megváltozta több, mint 10 éve
2
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).
3
A főciklus működése. Ciklusfeltétel teljesül, minQ nem üres, belépés a ciklusba
4
Első lépésben kivesszük a prioritásos sorból az a csúcsot, (mivel az ő prioritása a legkisebb).
5
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.
6
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.
7
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 + 54 Igaz ág hajtódik végre.
8
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).
9
minQ helyreállítása, visszatesszük a sorba d[v] értékét.
10
Ugrás a következő elemre
11
d[v] = inf d[u] = 0 c(u,v)=62 Behyelyettesítve az értékeket az igaz ág kerül végrehajtásra.
14
Ugrás a következő elemre
15
d[v] = inf d[u] = 0 c(u,v)=37 Behyelyettesítve az értékeket az igaz ág kerül végrehajtásra.
17
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.
18
A főciklus második lefutása. minQ első elemét kivesszük, ez jelen esetben az e csúcs
19
Betesszük a KÉSZ U{} halmazba, melynek elemeit az ábrán zölden jelöltem.
20
A belső ciklus nem fut le mert az u-hoz tartozó szomszédsági lista üres.
21
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.
22
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.
23
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.
24
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.
25
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.
26
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.
27
A főciklus utolsó lefutása utáni állapot.
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.