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

Hasonló előadás


Az előadások a következő témára: "A Dijkstra algoritmus. 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)"— 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ú (d min ) 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(Q min ) Feltölt(Q min ) Qmin ≠ ∅ u ≔ Kivesz(Q min ) 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(Q min ) P[v] ≔ u Q min 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 ∞ ∞ ∞ 0∞ ∞ ∞

9 ∞ ∞ ∞ 0 ∞ ∞ ∞

10 3 5 ∞ 0 ∞ 2 ∞

11 3 5 ∞ 0 ∞ 2 ∞

12 3 5 ∞ 0∞ 2 ∞

13

14 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

15 Dijkstra algoritmus példa

16 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!

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

18 Dijkstra algoritmus példa

19

20

21 Legrövidebb utak feszítőfája

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


Letölteni ppt "A Dijkstra algoritmus. 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)"

Hasonló előadás


Google Hirdetések