140 likes | 295 Views
Dijkstra algoritmus. Készítette: Major Máté. Célja és definíciója. A Dijkstra algoritmus egy mohó algoritmus, aminek a célja az, hogy irányított vagy irányítás nélküli gráfokban megkeresi a legrövidebb utakat egy adott csúcspontból kiindulva. Def .:
E N D
Dijkstra algoritmus Készítette: Major Máté
Célja és definíciója • A Dijkstra algoritmus egy mohó algoritmus, aminek a célja az, hogy irányított vagy irányítás nélküli gráfokban megkeresi a legrövidebb utakat egy adott csúcspontból kiindulva. • Def.: A fenti algoritmus, negatív él súlyokat nem tartalmazó G=(V,E) véges gráf esetén, s∈V forrás (kezdőcsúcs) és ∀v∈V csúcsra, meghatározza s-ből v-be vezető legrövidebb utat és annak hosszát.
Az algoritmus elve • Minden lépésben nyilvántartjuk az összes csúcsra, a forrástól az adott csúcsba vezető legrövidebb utat. • 1. Először a távolság a kezdőcsúcsra 0 mindegyik másikra pedig ∞ . • 2.Minden lépésben a nem kész csúcsok közül vegyük a legkisebb távolságút:a. Kijelenthetjük, hogy ez a v∈V csúcs már kész,ismerjük a hozzávezető utat. b. v szomszédjaira kiszámítjuk a v-be vezető és onnan kimenő éllel meghosszabbított út hosszát. Ha ez kisebb mint az eddig talál legrövidebb út akkor ez lesz a legrövidebb. Ez a közelítés.
10 példa Kezdeti állapot 6 # 9 4 1 3 4 # 14 # 15 8 2 12 # 10 # 1
10 6 9 9 4 1 3 4 4 14 # 15 8 2 12 # 10 # 1
1 6 5 9 4 1 3 4 4 14 # 15 8 2 12 19 10 12 1
1 6 5 9 4 1 3 4 4 14 8 15 8 2 12 19 10 12 1
1 6 5 9 4 1 3 4 4 14 8 15 8 2 12 19 10 10 1
1 6 5 9 4 1 3 4 4 14 8 15 8 2 12 11 10 10 1
10 Végeredmény 6 5 4 1 3 4 4 14 8 2 12 11 10 10 1
mŰveletigény • Rendezetlen tömb esetén: T(n) = O(1+ n −1+1+ 0 + n2 + n + e) = O(n2 + e) = O(n2 ) • Kupac esetén:T(n) = O(1+ n −1+1+ n + n* log n + n + e* log n) = O((n + e) *log n)