120 likes | 234 Views
Gráfalgoritmus. Algoritmusok És Adatszerkezetek 2. c. Dijkstra Algoritmusa. 1. b. 6. 3. 4. 10. 9. e. a. 7. S. 2. 5. 2. d. Györgyi Tamás – GYTNAAI.ELTE. 2007 Április 02. Algoritmusok És Adatszerkezetek 2. A Dijkstra algoritmus egy irányított G gráfon egy adott kezdőcsúcsból
E N D
Gráfalgoritmus Algoritmusok És Adatszerkezetek 2 c Dijkstra Algoritmusa 1 b 6 3 4 10 9 e a 7 S 2 5 2 d Györgyi Tamás – GYTNAAI.ELTE 2007 Április 02
Algoritmusok És Adatszerkezetek 2 A Dijkstra algoritmus egy irányított G gráfon egy adott kezdőcsúcsból induló legrövidebb utakat meghatározó algoritmus. Csak abban az esetben működik az algoritmus ha az élek súlya pozitív! A megvalósításban egy minQ minimum-elsőbbségi sort alkalmazunk. A minQ elsőbbségi sor ábrázolása: • Rendezetlen tömb • Kupacos ábrázolás A Dijkstra algoritmus egy mohó stratégiát alkalmaz, hiszen mindig a „legkönnyebb”, a „legközelebbi” csúcsot választja.
Algoritmusok És Adatszerkezetek 2 A Dijkstra algoritmus bizonyos hasonlóságot mutat mind a szélességi kereséssel mind a minimális feszítőfát előállító Prím-algoritmussal. Az algoritmus futási ideje függ attól, hogy hogyan valósítjuk meg a minimum-elsőbbségi sort. Normál ( Ritka ) ( e~n ) gráfra az éllista plusz kupac reprezentáció a megfelelő. T(n)= O(n log2n) Sűrű gráfra a csúcsmátrix plusz a rendezetlentömb reprezentáció az Alkalmas. T(n)= O(n2) A Sűrűgráf kupaccal nem jó, ugyanis T(n)= O(n2 log2n)
Algoritmusok És Adatszerkezetek 2 Dijkstra (G, s) d[s]:=0; π[s]:=Nil; for all u Є V \ {s} d[u]:=∞; π[u]:=Nil; Üres(KÉSZ); Üres(minQ); Feltölt(minQ) ┐üres-e (minQ) u:=KiveszMin(minQ) KÉSZ:=KÉSZ U {u} for all v Є Szomsz[u] \ KÉSZ d[u]+c(u,v) < d[v] d[v]:=d[u]+c(u,v); π[v]:=u; Helyreállít(minQ); skip
Algoritmusok És Adatszerkezetek 2 A dijkstra algoritmus működésének szemléltetése egy gráfon: - Így néz ki az irányítatott gráfom: c 1 b 6 3 4 10 9 e a 7 S 2 5 2 d
Algoritmusok És Adatszerkezetek 2 A dijkstra algoritmus működésének szemléltetése egy gráfon: 1. lépés: c ∞ 1 b 6 ∞ 3 4 10 9 ∞ e a 7 0 S 2 5 2 ∞ d
Algoritmusok És Adatszerkezetek 2 A dijkstra algoritmus működésének szemléltetése egy gráfon: 2. lépés: c ∞ 1 b 6 10 3 4 10 9 ∞ e a 7 0 S 2 5 2 5 d
Algoritmusok És Adatszerkezetek 2 A dijkstra algoritmus működésének szemléltetése egy gráfon: 3. lépés: c 14 1 b 6 8 3 4 10 9 7 e a 7 0 S 2 5 2 5 d
Algoritmusok És Adatszerkezetek 2 A dijkstra algoritmus működésének szemléltetése egy gráfon: 4. lépés: c 13 1 b 6 8 3 4 10 9 7 e a 7 0 S 2 5 2 5 d
Algoritmusok És Adatszerkezetek 2 A dijkstra algoritmus működésének szemléltetése egy gráfon: 5. lépés: c 9 1 b 6 8 3 4 10 9 7 e a 7 0 S 2 5 2 5 d
Algoritmusok És Adatszerkezetek 2 A dijkstra algoritmus működésének szemléltetése egy gráfon: 6. lépés: c 9 1 b 6 8 3 4 10 9 7 e a 7 0 S 2 5 2 5 d
Gráfalgoritmus Algoritmusok És Adatszerkezetek 2 Dijkstra Algoritmusa Vége Györgyi Tamás – GYTNAAI.ELTE 2007 Április 02