tisk
Transkript
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
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...
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...
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...
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í...
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...
UIN009 Efektivní algoritmy