tisk

Transkript

tisk
Problém nejkratší cesty
orientovaný graf G=(V,E)
ohodnocení hran c: E→ R
P orientovaná cesta, P = v0 ,v1 ,…,vk
Problém nejkratší cesty
k
c( P ) = ∑ c(vi −1 , vi )
i =1
δ(u,v)=min{c(P) | P je cesta z u do v}
nejkratší cesta z u do v = taková cesta P z u do v, pro niž
c(P) = δ(u,v).
δ(u,v) = ∞ značí, že cesta z u do v neexistuje
∞ + r = ∞, ∞ > r pro každé r ∈ R
UIN009 Efektivní algoritmy
1
Problémy
UIN009 Efektivní algoritmy
2
Dijkstrův algoritmus
Najít nejkratší cestu z
E.W.Dijkstra(1959)
Vstup: orientovaný graf G=(V,E)
nezáporné ohodnocení hran c: E→R 0+
s ∈V
Výstup: d(v), π(v) pro každý vrchol v∈V
d(v)= δ(s,v)
π(v)= předchůdce vrcholu v na nejkratší cestě z s
do v
c u do v, u,v∈V pevné
d u do x, pro každé x ∈V, u ∈V pevné
e x do y, pro každé x , y∈V
Init(G,s)
for all v∈V(G) do d(v) := ∞ ; π(v) := NIL od
d(s) := 0 .
UvolněníHrany(u,v)
if d(v) > d(u) + c(u,v)
then d(v) := d(u) + c(u,v); π(v) := u fi
UIN009 Efektivní algoritmy
3
Dijkstra(G,s)
UIN009 Efektivní algoritmy
4
Časová složitost Dijkstrova algoritmu
|V| = n, |E| = m
Init(G,s); D := ∅ ; Ν := V
while N ≠ ∅ do
u := OdeberMin(N)
D := D ∪ {u}
for all v∈Sousedé[u], v∈Ν do UvolněníHrany(u,v) od
od.
UIN009 Efektivní algoritmy
operace
OdeberMin
SníženíKlíče
počet
n
m
T(Dijkstra) = n ⋅ T(OdeberMin) + m ⋅ T(SníženíKlíče)
D
pole
binární
halda
Fibonacciho
halda
5
T(OdeberMin) T(SníženíKlíče) T(Dijkstra)
O(n)
O(1)
O(n2)
O(log n)
O(log n)
O(m log n)
O(log n)
amortizovaná
O(1)
amortizovaná
UIN009 Efektivní algoritmy
O(n log n + m)
6
1
Lemmata
Bellman - Fordův algoritmus
Buď G graf bez záporných cyklů dosažitelných z s.
Lemma 1. Je-li v1,...,vk nejkratší cesta z v1 do vk , pak
vi,...,vj je též nejkratší cesta z vi do vj pro každé 1 ≤ i < j ≤ k.
Lemma 2(Ì nerovnost). δ(s,v) ≤ δ(s,u) + c(u,v) pro každou
hranu (u,v).
Dále předpokládejme, že po provedení Init(G,s) je ohodnocení
vrcholů měněno jen prostřednictvím UvolněníHrany.
Lemma 3(horní mez). d(v) ≥ δ(s,v) pro každý vrchol v, a po
dosažení hodnoty δ(s,v) se d(v) už nemění.
Lemma 4(uvolnění cesty). Je-li v0,..., vk nejkratší cesta z s = v0
do vn , pak po uvolnění hran v pořadí (v0,v1), (v1,v2),..., (vk-1,vk) je
d(v) = δ(s, vk).
UIN009 Efektivní algoritmy
R.Bellman(1958), L.R.Ford(1962)
Vstup: orientovaný graf G=(V,E)
c: E→ R
s ∈V
Výstup: NE
pokud G obsahuje záporný cyklus
dosažitelný z s
ANO,d(v),π(v) pro každé v ∈V jinak
7
UIN009 Efektivní algoritmy
8
Další algoritmy pro problém d
Bellman-Ford(G,s)
Init(G,s)
for i:= 1 to |V|-1 do for all (u,v) ∈ E
do UvolněníHrany(u,v) od
od
for all (u,v) ∈ E do if d[v]>d[u]+c(u,v) then return „NE“
od
return „ANO“.
nezáporné ohodnocení hran
–
–
–
–
buď c maximální cena hrany
O(m + n √log c) (Ahuja, Mehlhorn, Orlin, Tarjan, 1990)
O(m + n min{(log n)1/3+ε,(log c)1/4+ε}) (Raman, 1997)
O(m ·log log n) (Thorup, 2000)
ohodnocení přirozenými čísly
– O(m + n) (Thorup, 1999)
záporné ohodnocení hran
– O(log c’ ·m ·√ n) (Goldberg, 1995)
kde c’ je maximální absolutní hodnota ceny hrany
UIN009 Efektivní algoritmy
9
Floyd-Warshallův algoritmus
UIN009 Efektivní algoritmy
10
Floyd-Warshall(D,Π)
Řeší problém e: Nalézt δ(u,v) pro každé u,v∈V(G)
R.W.Floyd, S.Warshall (1962)
Idea:
i
j
{1,2,…,k}
Vstup: orientovaný graf G=(V,E)
+
nezáporné ohodnocení hran c: E→ R 0
Výstup: Matice D, Π, kde D[i,j]= δ(i,j)
Π[i,j]=předchůdce vrcholu j na
nejkratší cestě z i do j
δk(i,j) = délka nejkratší cesty z i do j, jejíž všechny vnitřní
vrcholy jsou v množině {1,2,…,k}
δk(i,j) = c(i,j)
pro k=0
min{δk-1(i,j), δk-1(i,k)+ δk-1(k,j)} pro k>0
UIN009 Efektivní algoritmy
11
UIN009 Efektivní algoritmy
12
2
Další algoritmy pro problém e
Floyd-Warshall(D,Π)
for i:=1 to n do
for j:=1 to n do if i=j then D[i,j]:=0
else if (i,j)∉E then D[i,j]:=∞;
else D[i,j]:=c(i,j) fi fi
∏[i,j]:= NIL od od
for k:=1 to n do
for i:=1 to n do
for j:=1 to n do
if D[i,k]+D[k,j]<D[i,j] then D[i,j]:=D[i,k]+D[k,j]
∏[i,j]:= ∏[k,j] fi
od od od .
Čas: O(n3) Prostor: O(n2)
UIN009 Efektivní algoritmy
O(n2 · logn + n · m) (Johnson, 1977)
O(n3 · (log log n / log n)1/3), O(n2.5) porovnání cen hran
(Fredman, 1976)
O(nw ·p(n)) (Galil,Margalit, 1997, Seidel, 1995)
– O(nw) je časová složitost násobení dvou čtvercových matic řádu n
– p(n) je jistá funkce shora omezená polylogaritmickou funkcí v n
O(e ·n3 ·p(e ·n)) (Shoshan, Zwick, 1999)
– ceny hran ∈ {1,2,...,e}
13
UIN009 Efektivní algoritmy
14
3

Podobné dokumenty

tisk

tisk Věta (“Gap Theorem“). Pro každou vyčíslitelnou funkci ϕ(n)≥n existuje vyčíslitelná funkce f(n) taková, že TIME(ϕ(f(n))) = TIME(f(n)). Věta (o zrychlení). Pro každou vyčíslitelnou funkci ϕ(n) existu...

Více

Hladový algoritmus

Hladový algoritmus UIN009 Efektivní algoritmy

Více

Algoritmus pro hledání nejkratší cesty orientovaným grafem

Algoritmus pro hledání nejkratší cesty orientovaným grafem + platí, že ● A(i,j) = 0, pokud i = j ● A(i,j) = r, pokud vede hrana z i do j a její ohodnocení je rovno r ● A(i,j) = ∞, jinak S takovou maticí bude muset umět funkce pracovat. Floydův-Warshallův a...

Více

Grafové algoritmy

Grafové algoritmy Úkolem této skupiny algoritmů je nalézt nejkratší orientovanou cestu: • z daného vrcholu do daného vrcholu, • z daného výchozího vrcholu do každého vrcholu grafu, • z každého vrcholu do daného konc...

Více

Erev Shel Shoshanim

Erev Shel Shoshanim 1. Je večer růží, pojďme do zahrady, Myrha koření a kadidlo jsou jako koberec pod tvýma nohama Noc pomalu padá, a větřík z růží vane , Dovol mi šeptat pro tebe tichounce, píseň lásky. 2. Za svítání...

Více

Grafové algoritmy

Grafové algoritmy páry vrcholů (all-pair shortest path algorithm) • Vhodný pro husté grafy – v tom případě rychlejší než Dijkstra opakovaný pro všechny vrcholy • Pracuje s maticí sousednosti • Složitost O(n3) • Může...

Více