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

A Dijkstra algoritmus.

Hasonló előadás


Az előadások a következő témára: "A Dijkstra algoritmus."— Előadás másolata:

1 A Dijkstra algoritmus

2 Mi az a Dijkstra algoritmus?
Egy gráfalgoritmus a „legrövidebb utak egy forrásból” probléma megoldására. Bemenet: egy G = (E,V) élsúlyozott véges gráf, valamint egy s ∈ V csúcs, a forrás. Az élek súlyozása nemnegatív. A gráf lehet irányított vagy irányítatlan. Kimenet: a forrást és az onnan elérhető csúcsokat tartalmazó gráf, ami egyben a forrásból induló legrövidebb utak fája.

3 Fontos megjegyzés A legrövidebb út alatt most nem a legkevesebb élt tartalmazó utat értjük, hanem azt az, amelyikre az alkotóélek súlyainak összege minimális.

4 Dijkstra algoritmus röviden 1/2
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. Ehhez tekintsünk egy d[1..n] és egy P[1..n] tömböt (n a csúcsok száma), melyek rendre a távolságokat és a szülő csúcsokat tartalmazzák. Jelölje K azoknak a csúcsoknak a halmazát, amelyekhez már kiszámítottuk az odavezető legrövidebb utat.

5 Dijkstra algoritmus röviden 2/2
Kezdetben a távolság a kezdőcsúcsra 0, a többire ∞. Minden lépésben a nem kész csúcsok közül tekintsük valamelyik legkisebb távolságú (dmin) csúcsot (v): Vegyük észre, hogy v távolsága a megelőző lépés eredményei és a v-be vezető imént érintett él alapján ismert, ezért v bekerül a K halmazba. Számítsuk ki a v szomszédaira a v-be vezető útnak a v egyes szomszédaiba vezető élekkel kibővített hosszát (kiterjesztés). Amennyiben ez kisebb, mint az illető szomszédba eddig talált legrövidebb út, akkor mostantól ezt tekintjük az ebbe a csúcsba vezető legrövidebb útnak (közelítés).

6 Dijkstra algoritmus struktogram
d[s], P[s] ≔ 0, NIL for all u ∊ V ∖ {s} d[u], P[u] ≔ ∞, NIL Üres(K); Üres(Qmin) Feltölt(Qmin) Qmin ≠ ∅ u ≔ Kivesz(Qmin) K ≔ K ∪ {u} for all v ∊ Szomszédok(u) ∖ K d[v] ≩ d[u] + c(u,v) SKIP d[v] ≔ d[u] + c(u,v) Helyreállít(Qmin) P[v] ≔ u Qmin egy a még feldolgozásra váró csúcsokat tartalmazó minimum választó prioritásos sor. A sor kulcsai a már felfedezett legrövidebb távolságok.

7 Dijkstra algoritmus példa

8 Dijkstra algoritmus példa

9 Dijkstra algoritmus példa

10 Dijkstra algoritmus példa
5 3 2

11 Dijkstra algoritmus példa
5 3 2

12 Dijkstra algoritmus példa
5 3 2

13 Dijkstra algoritmus példa
5 5 3 3 3 2

14 Dijkstra algoritmus példa
A két lehetséges minimum távolságú csúcs közül ADS szinten teljesen mindegy, hogy melyik választjuk, de ADT szinten – a minimum kiválasztásos sor miatt – azt fogjuk választani, amelyiket korábban tettük be 5 5 3 3 3 2

15 Dijkstra algoritmus példa
5 5 3 3 3 2

16 Dijkstra algoritmus példa
Az aktuálisan feldolgozott csúcs egyik szomszédja már kész, a másikhoz pedig már találtunk egy a jelenleginél rövidebb utat, a harmadiknál viszont az eddiginél egy rövidebb utat találtunk! 5 5 3 3 3 2

17 Dijkstra algoritmus példa
A helyzet ugyanaz, mint az előző csúcs esetén. 5 4 3 3 3 2

18 Dijkstra algoritmus példa
5 4 3 3 3 2

19 Dijkstra algoritmus példa
5 4 3 3 3 2

20 Dijkstra algoritmus példa
5 4 3 3 3 2

21 Dijkstra algoritmus példa
Legrövidebb utak feszítőfája 5 4 3 3 3 2

22 Felhasznált irodalom Fekete István jegyzet: Thomas, Cormen, Leiserson, Rivest: Új Algoritmusok. Scolar Kiadó, 2003


Letölteni ppt "A Dijkstra algoritmus."

Hasonló előadás


Google Hirdetések