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 Egy csúcsból a többibe vezető legkisebb költségű út megkeresése Az algoritmus működésének leírása és bemutatása LL.

Hasonló előadás


Az előadások a következő témára: "Dijkstra algoritmusa Egy csúcsból a többibe vezető legkisebb költségű út megkeresése Az algoritmus működésének leírása és bemutatása LL."— Előadás másolata:

1 Dijkstra algoritmusa Egy csúcsból a többibe vezető legkisebb költségű út megkeresése Az algoritmus működésének leírása és bemutatása LL

2 Adott: Egy gráf, súlyozott élekkel. (Egy városcsoport, és hogy melyikből melyikbe juthatunk el, és mennyiért.) Vagy mennyibe kerül közéjük építeni egy utat… Mj.: Vehetünk irányított éleket is. Amennyiben irányítatlan élekkel van dolgunk, úgy képzeljük, hogy az élen mindkét irányban közlekedhetünk.) Feladat: Határozzuk meg egy adott csúcsból az összes többibe vezető legkisebb költségű út költségét. Adjuk meg azt is, hogy ezen az optimális úton melyik csúcs előzi meg az aktuális csúcsot. (Ki a szülője?)

3 Megoldás: (Dijkstra algoritmusa) Először is tegyük fel, hogy mindenhova végtelen nagy költséggel juthatunk csak el; kivéve oda, ahol vagyunk, ahová ingyen eljuthatunk. Majd minden körben válasszuk ki a még nem elintézett csúcsok közül azt, amelyikbe a legolcsóbban tudtunk eljutni. Majd vizsgáljuk meg a szomszédjait, el tudunk-e oda jutni az addiginál kisebb költséggel. (Ábrán: El tudunk-e jutni F-be az eddigi 12-nél olcsóbban? Igen.) Ha igen, módosítsuk ezen szomszéd elérési költségét és szülőjét. Ha nem, hagyjuk békén. Majd ha minden szomszédját megvizsgáltuk, a csúcsot besoroljuk az „elintézett” csúcsok közé. Akkor végeztünk, ha minden csúcsot elintéztünk.

4 3 5 8 4 6 7 9 1 3 5 1 9 2 A gráf. Az A csúcsból indulunk. A B C D E F G

5 0 ∞ ∞ ∞ ∞ ∞ ∞ 3 5 8 4 6 7 9 1 3 5 1 9 2 Kiinduló-helyzet Kezdőcsúcsban 0, többiben végtelen érték A B C D E F G

6 0 ∞ ∞ ∞ ∞ ∞ ∞ 3 5 8 4 6 7 9 1 3 5 1 9 2 Válasszuk ki a legolcsóbban elérhető pontot. (A) Majd vizsgáljuk meg sorra a szomszédait. A B C D E F G

7 0 ∞ ∞ ∞ ∞ ∞ 3 5 8 4 6 7 9 1 3 5 1 9 2 ∞ B: 0 + 3 = 3 < végtelen A B C D E F G

8 0 ∞ ∞ ∞ ∞ ∞ 3 5 8 4 6 7 9 1 3 5 1 9 2 3 Végtelen helyére 3. A, mint B szülője megjegyezve A B C D E F G

9 0 ∞ ∞ ∞ ∞ 3 5 8 4 6 7 9 1 3 5 1 9 2 3 ∞ D: 0 + 5 = 5 < végtelen A B C D E F G

10 0 5 ∞ ∞ ∞ 3 5 8 4 6 7 9 1 3 5 1 9 2 3 ∞ Végtelen helyére 5. A, mint D szülője megjegyezve A B C D E F G

11 0 5 ∞ ∞ ∞ 3 5 8 4 6 7 9 1 3 5 1 9 2 3 ∞ A B C D E F G G: 0 + 8 = 8 < végtelen

12 0 5 ∞ ∞ 8 3 5 8 4 6 7 9 1 3 5 1 9 2 3 ∞ A B C D E F G Végtelen helyére 8. A, mint G szülője megjegyezve

13 0 5 ∞ ∞ 8 3 5 8 4 6 7 9 1 3 5 1 9 2 3 ∞ Végeztünk A-val. (Nincs több szomszédja) A B C D E F G

14 0 5 ∞ ∞ 8 3 5 8 4 6 7 9 1 3 5 1 9 2 3 ∞ A B C D E F G Válasszuk ki a legolcsóbban elérhető pontot a még nem szürkék közül. (B) Majd vizsgáljuk meg sorra a szomszédait.

15 0 5 ∞ ∞ 8 3 5 8 4 6 7 9 1 3 5 1 9 2 3 ∞ A B C D E F G C: 3 + 6 = 9 < végtelen

16 0 5 9 ∞ 8 3 5 8 4 6 7 9 1 3 5 1 9 2 3 ∞ A B C D E F G Végtelen helyére 9. B, mint C szülője megjegyezve

17 0 5 9 ∞ 8 3 5 8 4 6 7 9 1 3 5 1 9 2 3 ∞ A B C D E F G F: 3 + 9 = 12 < végtelen

18 0 5 9 ∞ 8 3 5 8 4 6 7 9 1 3 5 1 9 2 3 12 A B C D E F G Végtelen helyére 12. B, mint F szülője megjegyezve

19 0 5 9 ∞ 8 3 5 8 4 6 7 9 1 3 5 1 9 2 3 12 A B C D E F G D: 3 + 4 = 7 > 5

20 0 5 9 ∞ 8 3 5 8 4 6 7 9 1 3 5 1 9 2 3 12 A B C D E F G Ez az út (ABD) tehát nem jobb, mint az eddig D-be vezető út. (AD) D szülője marad A.

21 0 5 9 ∞ 8 3 5 8 4 6 7 9 1 3 5 1 9 2 3 12 A B C D E F G Végeztünk B-vel. (Nincs több szomszédja)

22 0 5 9 ∞ 8 3 5 8 4 6 7 9 1 3 5 1 9 2 3 12 A B C D E F G Válasszuk ki a legolcsóbban elérhető pontot a még nem szürkék közül. (D) Majd vizsgáljuk meg sorra a szomszédait.

23 0 5 9 ∞ 8 3 5 8 4 6 7 9 1 3 5 1 9 2 3 12 A B C D E F G C: 5 + 7 = 12 > 9

24 0 5 9 ∞ 8 3 5 8 4 6 7 9 1 3 5 1 9 2 3 12 A B C D E F G Ez az út (ADC) tehát nem jobb, mint az eddig D-be vezető út. (ABC) C szülője marad B.

25 0 5 9 ∞ 8 3 5 8 4 6 7 9 1 3 5 1 9 2 3 12 A B C D E F G E: 5 + 1 = 6 < végtelen

26 0 5 9 6 8 3 5 8 4 6 7 9 1 3 5 1 9 2 3 12 A B C D E F G Végtelen helyére 6. D, mint E szülője megjegyezve

27 0 5 9 6 8 3 5 8 4 6 7 9 1 3 5 1 9 2 3 12 A B C D E F G G: 5 + 2 = 7 < 8

28 0 5 9 6 7 3 5 8 4 6 7 9 1 3 5 1 9 2 3 12 A B C D E F G Ez az út (ADG) tehát jobb, mint az eddig G-be vezető út. (AG) G szülője ezentúl D.

29 0 5 9 6 7 3 5 8 4 6 7 9 1 3 5 1 9 2 3 12 A B C D E F G Végeztünk D-vel. (Nincs több szomszédja)

30 0 5 9 6 7 3 5 8 4 6 7 9 1 3 5 1 9 2 3 12 A B C D E F G Válasszuk ki a legolcsóbban elérhető pontot a még nem szürkék közül. (E) Majd vizsgáljuk meg sorra a szomszédait.

31 0 5 9 6 7 3 5 8 4 6 7 9 1 3 5 1 9 2 3 12 A B C D E F G F: 6 + 5 = 11 < 12

32 0 5 9 6 7 3 5 8 4 6 7 9 1 3 5 1 9 2 3 11 A B C D E F G Ez az út (ADEF) tehát jobb, mint az eddig F-be vezető út. (ABF) F szülője ezentúl E.

33 0 5 9 6 7 3 5 8 4 6 7 9 1 3 5 1 9 2 3 11 A B C D E F G G: 6 + 3 = 9 > 7

34 0 5 9 6 7 3 5 8 4 6 7 9 1 3 5 1 9 2 3 11 A B C D E F G Ez az út (ADEG) tehát nem jobb, mint az eddig G-be vezető út. (ADG) G szülője marad D.

35 0 5 9 6 7 3 5 8 4 6 7 9 1 3 5 1 9 2 3 11 A B C D E F G Végeztünk E-vel. (Nincs több szomszédja)

36 0 5 9 6 7 3 5 8 4 6 7 9 1 3 5 1 9 2 3 11 A B C D E F G Válasszuk ki a legolcsóbban elérhető pontot a még nem szürkék közül. (G) Majd vizsgáljuk meg sorra a szomszédait.

37 0 5 9 6 7 3 5 8 4 6 7 9 1 3 5 1 9 2 3 11 A B C D E F G F: 7 + 9 = 16 > 11

38 0 5 9 6 7 3 5 8 4 6 7 9 1 3 5 1 9 2 3 11 A B C D E F G Ez az út (ADGF) tehát nem jobb, mint az eddig F-be vezető út. (ADEF) F szülője marad E.

39 0 5 9 6 7 3 5 8 4 6 7 9 1 3 5 1 9 2 3 11 A B C D E F G Végeztünk G-vel. (Nincs több szomszédja)

40 0 5 9 6 7 3 5 8 4 6 7 9 1 3 5 1 9 2 3 11 A B C D E F G Válasszuk ki a legolcsóbban elérhető pontot a még nem szürkék közül. (C)

41 0 5 9 6 7 3 5 8 4 6 7 9 1 3 5 1 9 2 3 11 A B C D E F G F: 9 + 1 = 10 < 11

42 0 5 9 6 7 3 5 8 4 6 7 9 1 3 5 1 9 2 3 10 A B C D E F G Ez az út (ABCF) tehát jobb, mint az eddig F-be vezető út. (ADEF) F szülője ezentúl C.

43 0 5 9 6 7 3 5 8 4 6 7 9 1 3 5 1 9 2 3 10 A B C D E F G Végeztünk C-vel. (Nincs több szomszédja)

44 0 5 9 6 7 3 5 8 4 6 7 9 1 3 5 1 9 2 3 10 A B C D E F G Válasszuk ki a legolcsóbban elérhető pontot a még nem szürkék közül. (F) Nagyon nehéz feladat. Majd vizsgáljuk meg az összes szomszédját!

45 0 5 9 6 7 3 5 8 4 6 7 9 1 3 5 1 9 2 3 10 A B C D E F G Végeztünk F-vel.

46 0 5 9 6 7 3 5 8 4 6 7 9 1 3 5 1 9 2 3 10 Így talán jobban látszik a végeredmény. A B C D E F G

47 Megjegyzés: Dijkstra algoritmusa egy „mohó” algoritmus. Minden lépésben az akkor legkedvezőbbnek tűnő utat választja. Ez a stratégia ezen feladat esetén el is vezet a helyes megoldáshoz. Az a feladat, hogy egy ilyen gráf esetén határozzuk meg két adott csúcs között a legkisebb költségű utat, nem számottevően egyszerűbb ennél. Jobban megéri ezt végigszámolni. A struktogramot lásd: máshol

48 Lócsi Levente 2005.03.31.


Letölteni ppt "Dijkstra algoritmusa Egy csúcsból a többibe vezető legkisebb költségű út megkeresése Az algoritmus működésének leírása és bemutatása LL."

Hasonló előadás


Google Hirdetések