110 likes | 259 Views
Dijkstra-algoritmus ismertetése. Algoritmusok és adatszerkezetek 2 Készítette: Tóth István (S23R35). Általános ismertető. Mohó algoritmus Lényege: gráfban (irányított v. irányítatlan) a legrövidebb út megtalálása adott csúcsból Feltétel: élek súlya nemnegatív
E N D
Dijkstra-algoritmus ismertetése Algoritmusok és adatszerkezetek 2 Készítette: Tóth István (S23R35)
Általános ismertető • Mohó algoritmus • Lényege: gráfban (irányított v. irányítatlan) a legrövidebb út megtalálása adott csúcsból • Feltétel: élek súlya nemnegatív • Minden pontra megadja a legrövidebb utat a kezdőcsúcsból nézve
Működési elv - általános • állandó (vizsgált) és ideiglenes címkéjű (nem vizsgált) csúcsok • kiszámolja az adott csúcs minden ideiglenes szomszédjának távolságát: • ha kisebb érték jön ki (alapból mindegyik végtelen), átírja arra • vizsgált csúcs megjelölése állandóként • továbblépés a legkisebb távú ideiglenes csúcsra • folytatás a második lépéstől addig, amíg: • be nem járta az egészet, vagy • ki nem számolta a kívánt célcsúcs távolságát
Működési elv - részletes • Input: • G súlyozott gráf (irányított/irányítatlan) • s pont a gráfban (kezdőcsúcs) • Élek súlyozása: • E élhalmaz: w: E → [0,∞] a súlyfüggvény • u, v csúcsok: w(u,v) u-ból v-be eljutás „költsége” • Két pont közötti út költsége: az úton lévő élek költségeinek összege
Működési elv - részletes • Futási idő alatt minden pontra nyilvántartja a távolságát • Kezdőcsúcsé (s): d[s] = 0 • Minden más csúcsra (v): d[v] = ∞ • Halmazok: • S: csúcsok, melyeknél már kiszámolta a legrövidebb távot („címkézett/állandó” csúcsok) • Kezdetben: üres • Q: csúcsok, melyeknél a távolság értéke még ideiglenes • Kezdetben: minden csúcs itt van
Működési elv – részletes • Iterációnként egy csúcspont (u) átkerül Q-ból S-be • Az a csúcs, melynek legkisebb a „költsége” • u összes szomszédjának kiszámolja a távolságát • Metódus: d[u] + w(u,v), ahol d[u] az u pont kiindulási pontból vett távolsága, v szomszédja u-nak • Ha kisebb az így kijött út, felülírja az új értékkel • Folytatás, amíg: • Az összes csúcsot ki nem számolta, vagy • A célcsúcsot ki nem számolta (célcsúcs nincs Q-ban)
Működés - animáció forrás: http://www.wikipedia.org
Működés - elemzés • Fő műveletek: minimumkiválasztás, csökkentés • E élhalmaz, V csúcshalmaz • Implementációk: • Tömb: O(V2) • Bináris heap: Ɵ ((V+E) lgV) • Fibonacci heap: O((V+E) lgV) • Hibái: • Vakon keres: erőforráspazarló • Negatív élsúlyozást nem támogat
Alkalmazása • Hálózati útvonalválasztó protokollok: • IS-IS • OSFP • Útvonalkeresés úthálózatokon, térképeken • Módosított, bővített változatok • A* algoritmus