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
Pszeudokód
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