1 / 27

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

whitby
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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).

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

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

  4. 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.

  5. 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.

  6. 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.

  7. 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).

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

  9. Ugrás a következő elemre

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

  11. Ugrás a következő elemre

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

  13. 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.

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

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

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

  17. 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.

  18. 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.

  19. 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.

  20. 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.

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

  22. 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.

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

More Related