Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Dijkstra algoritmusa Gubicza József (GUJQAAI.ELTE)

Hasonló előadás


Az előadások a következő témára: "Dijkstra algoritmusa Gubicza József (GUJQAAI.ELTE)"— Előadás másolata:

1 Dijkstra algoritmusa Gubicza József (GUJQAAI.ELTE)

2 Jellemzők Cél: Adott egyszerű gráfban a legrövidebb (vagy min. költségű) út meghatározása. Algoritmikus szinten: 3 tömb feltöltése; - d[1..n] a csúcsokhoz tartozó min. költségek ill. - π (parent) a csúcsokhoz tartozó szülők meghat. - a kész[1..n] segédtömb segítségével, amely azt mutatja, vizsgáltuk-e már az adott csúcsot. A gráf élcímkéi pozitív értékeket vehetnek fel, a csúcscímkék pozitív, ill. végtelent.

3 Az algoritmus A minimum keresés a d tömbbeli min. értékre vonatkozik  a legkisebb költségű csúcs, ami még nincs kész.

4 d∞∞∞∞∞∞∞ π∕∕∕∕∕∕∕ Kész ∞ ∞∞ ∞ ∞ ∞∞ Kezdőállapot: minden csúcsot ∞-el címkézünk, szüleiket NIL- re állítjuk, valamint a Kész értékeket 0-kra, és kijelöljük a kezdőcsúcsot. s =

5 d0∞∞∞∞∞∞ π∕∕∕∕∕∕∕ Kész ∞ 0∞ ∞ ∞ ∞∞ A kezdőcsúcs értékét 0-ra állítjuk, így a FeltMinker(d[1..n], u, Kész[j] = 0) őt fogja megtalálni először. Ezt a csúcsot készre állítjuk. s =

6 d05∞∞∞∞∞ π∕1∕∕∕∕∕ Kész ∞ ∞ ∞ ∞∞ A csúcs minden szomszédjára megnézzük (amelyek még nincsenek Kész, 5 és 3), hogy: d[u] + c(u,v) < d[v] Tehát az él, javít e a költségen? Ha igen, d[v] = d[u] + c(u,v), ill. π[v] := u szülő jelölése s =

7 d058∞∞∞∞ π∕11∕∕∕∕ Kész ∞ ∞ ∞ ∞ 8 Ha végeztünk az összes szomszéd vizsgálatával…. s =

8 d058∞∞13∞ π∕11∕∕2∕ Kész ∞ 13 ∞ ∞8 Iterálunk még egyet, a legkisebb költségű még nem kész elem a 2-es csúcs (d. 5), még nem kész szomszédai: 6, 4, 3 s =

9 d0589∞13∞ π∕112∕2∕ Kész ∞ ∞8 Mivel a 3-as csúcsba érés nem javítana a költségen 5+7 HAMIS, így tovább iterálunk. s =

10 d ∞ π∕11232∕ Kész ∞ 12 8 A 3-as csúcs még nem kész szomszédai: 4, 5.. ezek közül csak az 5-össel érünk el javulást s =

11 d ∞ π∕11234∕ Kész ∞ 128 A 4-es csúcs javít a 6-os-ba érés költségén, és figyeljünk rá, hogy a 6-os szülője így felülíródik! s =

12 d π∕ Kész Figyelem: A 6-os csúccsal folytatjuk! Neki kisebb a költsége a még nem kész csúcsok közül s =

13 d π∕ Kész Most pedig az 5-ös csúcsot vesszük először, és látjuk, hogy a 7-es költségén ő nem javít… s =

14 d π∕ Kész Így, az iteráció ráugrik az utolsó csúcsra, késznek jelöli. Mivel az összes csúcs kész van, az algoritmus leáll. s =

15 d π∕ Kész Végül minden csúcsra megkapjuk, hogy mennyi a hozzá vezető minimális költségű út. (7-es 18, 5-ös 12) Megj.: a gráf irányításától eltekinthetünk ezen a szinten. s =


Letölteni ppt "Dijkstra algoritmusa Gubicza József (GUJQAAI.ELTE)"

Hasonló előadás


Google Hirdetések