Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Algoritmalar Ders 12 En kısa yollar I En kısa yolların özellikleri Dijkstra algoritması Doğruluk Analiz November 14, 2005Copyright © 2001-5 by Erik D.

Benzer bir sunumlar


... konulu sunumlar: "Algoritmalar Ders 12 En kısa yollar I En kısa yolların özellikleri Dijkstra algoritması Doğruluk Analiz November 14, 2005Copyright © 2001-5 by Erik D."— Sunum transkripti:

1 Algoritmalar Ders 12 En kısa yollar I En kısa yolların özellikleri Dijkstra algoritması Doğruluk Analiz November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.1

2 Graflarda yollar w : E → R ayrıt-ağırlık fonksiyonu olan bir G = (V, E) yönlü grafı olduğunu düşünün. p = v 1 → v 2 →..... → v k yolunun ağırlığı k − 1 w( p) = ∑ w(v i, v i + 1 ) olarak tanımlanır. i = 1 November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.2

3 Graflarda yollar November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.3 w : E → R ayrıt-ağırlık fonksiyonu olan bir G = (V, E) yönlü grafı olduğunu düşünün. p = v 1 → v 2 →..... → v k yolunun ağırlığı k − 1 w( p) = ∑ w(v i, v i + 1 ) olarak tanımlanır. i = 1 v 1 v 3 V 2 v 4 V 5 4–2–51 w(p) = –2 Örnek:

4 En kısa yollar u' dan v ' ye en kısa yol, u ' dan v ' ye en az ağırlıklı yoldur. u ' dan v ' ye en kısa yolun ağırlığı δ (u, v) = min{w(p) olarak tanımlanır: p, u dan v ye bir yoldur}. Not:u ' dan v ' bir yol yoksa δ (u, v) = ∞ November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.4

5 En uygun altyapı November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.5 Teorem.En kısa yolun alt yolu, bir en kısa yoldur.

6 En uygun altyapı Teorem.En kısa yolun alt yolu, bir en kısa yoldur. Kanıt.Kes ve yapıştır: November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.6

7 En uygun altyapı Teorem.En kısa yolun alt yolu, bir en kısa yoldur. Kanıt.Kes ve yapıştır: November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.7

8 Üçgen eşitsizliği November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.8 Teorem.Tüm u, v, x ∈ V' ler için, δ (u, v) ≤ δ (u, x) + δ (x, v).

9 Üçgen eşitsizliği u x v δ (u, x) δ(x, v)δ(x, v) Teorem.Tüm u, v, x ∈ V' ler için, δ (u, v) ≤ δ (u, x) + δ (x, v). Kanıt. November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.9 δ (u, v)

10 En kısa yolların iyi tanımlanırlığı November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.10 Bir G grafı negatif ağırlık döngüsü içeriyorsa, bazı en kısa yollar var olmayabilir.

11 En kısa yolların iyi tanımlanırlığı Örnek: u November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.11 v … < 0< 0 Bir G grafı negatif ağırlık döngüsü içeriyorsa, bazı en kısa yollar var olmayabilir.

12 Tek-kaynaklı en kısa yollar November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.12 Problem. s ∈ V ' deki verilen bir kaynak tepeden, tüm v ∈ V' ler için, δ(s, v) en kısa yol ağırlıklarını bulun. Tüm w(u, v) ayrıt ağırlıkları eksi değilse bütün en kısa yol ağırlıklarının olması gerekir. Fikir:Açgözlü. 1. s ' den başlayan ve S içindeki tüm tepelere olan en kısa yol uzunlukları bilinen tepelerin kümesini koru. 2.Her adımda S' ye, s' ye olan uzaklık tahmini en az olan v ∈ V – S tepesine ekle. 3.v' ye bitişik tepelerin uzaklık tahminlerini güncelle.

13 Dijkstra algoritması November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.13 d[s] ← 0 for each v ∈ V – {s} do d[v] ← ∞ S ← ∅ Q ← V ⊳ Q,V – S'yi koruyan bir öncelikli sıradır.

14 Dijkstra algoritması November 14, 2005Copyright © by Erik D. Demaine and Charles E. Leiserson while Q ≠ ∅ u ← E XTRACT -M IN (Q) S ← S ∪ {u} for each v ∈ Adj[u] do if d[v] > d[u] + w(u, v) then d[v] ← d[u] + w(u, v) d[s] ← 0 for each v ∈ V – {s} do d[v] ← ∞ S ← ∅ Q ← V ⊳ Q,V – S'yi koruyan bir öncelikli sıradır.

15 Dijkstra algoritması November 14, 2005Copyright © by Erik D. Demaine and Charles E. Leiserson while Q ≠ ∅ u ← E XTRACT -M IN (Q) S ← S ∪ {u} for each v ∈ Adj[u] do if d[v] > d[u] + w(u, v) then d[v] ← d[u] + w(u, v) d[s] ← 0 for each v ∈ V – {s} do d[v] ← ∞ S ← ∅ Q ← V ⊳ Q,V – S'yi koruyan bir öncelikli sıradır. Implicit D ECREASE -K EY

16 Dijkstra algoritmasına örnek A November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.16 BD CE Eksi olmayan ayrıt ağırlıklarıyla grafik:

17 A November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.17 B ∞D∞D C∞C∞ E∞E∞ İlklendirme: Initialization: 0 ∞ Q: A B C D E 0 ∞∞∞∞ S: {} Dijkstra algoritmasına örnek

18 A ∞B∞B ∞D∞D C∞C∞ November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.18 E∞E∞ “A” ← E XTRACT -M IN (Q): Q: A B C D E 0 ∞∞∞∞ S: { A } Dijkstra algoritmasına örnek

19 A 10 B November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.19 ∞D∞D C3C3 E∞E∞ A'dan ayrılan tüm ayrıtları gevşetin: Q: A B C D E 0 ∞∞∞∞ 10 3∞∞ 0 S: { A } Dijkstra algoritmasına örnek

20 A 10 B ∞D∞D C3C3 November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.20 E∞E∞ “C” ← E XTRACT -M IN (Q): Q: A B C D E 0 ∞∞∞∞ 10 3∞∞ 0 S: { A, C }S: { A, C } Dijkstra algoritmasına örnek

21 A 7BB7BBB 11D C CC3CC3E EE5EE Q: A B C D E 0 ∞∞∞∞ 10 3 ∞∞ 7 0 S: { A, C }S: { A, C } November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.21 C'den ayrılan tüm ayrıtları gevşetin: Dijkstra algoritmasına örnek

22 A 7BB7BBB 11D C CC3CC3 November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.22 E EE5EE5 “E” ← E XTRACT -M IN (Q): Q: A B C D E 0 ∞∞∞∞ 10 3∞∞ S: { A, C, E } Dijkstra algoritmasına örnek

23 A 7BB7BBB 11D C CC3CC3E EE5EE Q: A B C D E 0 ∞∞∞∞ 10 3∞∞ 7 0 S: { A, C, E } November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.23 E'den ayrılan tüm ayrıtları gevşetin: Dijkstra algoritmasına örnek

24 A 7BB7BBB November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL D C CC3CC3E EE5EE5 “B” ← E XTRACT -M IN (Q): Q: A B C D E 0 S: { A, C, E, B } Dijkstra algoritmasına örnek 0 ∞∞∞∞ 10 3∞∞

25 A 7BB7BBB 9DD9DDD C CC3CC3 November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.25 E EE5EE5 B'den ayrılan tüm ayrıtları gevşetin: Q: A B C D E 0 ∞∞∞∞ 10 3∞∞ 7 0 S: { A, C, E, B } Dijkstra algoritmasına örnek

26 A 7BB7BBB 9DD9DDD C CC3CC3 November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.26 E EE5EE5 “D” ← E XTRACT -M IN (Q): Q: A B C D E 0 ∞∞∞∞ 10 3∞∞ 7 0 S: { A, C, E, B, D } Dijkstra algoritmasına örnek

27 Doğruluk —Bölüm I November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.27 Ön kuram. d[s] ← 0 ve d[v] ← ∞ ' yi tüm v ∈ V – {s}' ler için ilklendirme, d[v] ≥ δ (s, v)'yi sağlar- tüm v ∈ V ' ler için: Ve bu değişmez dizideki tüm gevşetme adımlarında korunur.

28 Önkuram. d[s] ← 0 ve d[v] ← ∞ ' yi tüm v ∈ V – {s}' ler için ilklendirme d[v] ≥ δ (s, v)' yi sağlar- tüm v ∈ V ' ler için: Ve bu değişmez dizideki tüm gevşetme adımlarımda korunur. Kanıt.Şunun olmadığını düşünün.v, d[v] < δ (s, v)' deki ilk köşe olsun ve u' dad[v]' yi değiştiren ilk tepe olsun: d[v] = d[u] + w(u, v).O zaman, d[v] < δ (s, v) ≤ δ (s, u) + δ (u, v) ≤ δ (s,u) + w(u, v) ≤ d[u] + w(u, v) kabul üçgen eşitsizliği kısa yol ≤ özel yol v ilk ihlal Çelişki. Doğruluk —Bölüm II November 14, 2005Copyright © by Erik D. Demaine and Charles E. Leiserson

29 Doğruluk —Bölüm II November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.29 Ön kuram. u, s' den v' ye en kısa yolda v'nin atası olsun. O durumda, eğer d[u] = δ (s, u) ve ayrıt (u, v)gevşetilmişse, gevşemeden sonra elimizde d[v] = δ (s, v) olur.

30 Ön kuram. u, s' den v' ye en kısa yolda v' nin atası olsun. O durumda, eğer d[u] = δ (s, u)ve ayrıt (u, v) gevşetilmişse, gevşemeden sonra elimizde d[v] = δ (s, v) olur. Kanıt. δ (s, v) = δ (s, u) + w(u, v) olduğuna dikkat edin. Gevşetmeden önce d[v] > δ (s, v) olduğunu farzedin. (Diğer türlü, bitirmiştik.)Sonra, d[v] > d[u] + w(u, v) testi başarılı, çünkü d[v] > δ (s, v) = δ (s, u) + w(u, v) = d[u] + w(u, v) ve algoritma d[v] = d[u] + w(u, v) = δ (s, v)' yi ayarlar. Doğruluk —Bölüm II November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.30

31 Teorem. Dijkstra algoritması tüm v ∈ V için d[v] = δ(s, v) ile sonlanır. November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.31 Doğruluk —Bölüm III

32 Teorem. Dijkstra algoritması tüm v ∈ V için d[v] = δ(s, v) ile sonlanır. Kanıt.v, S' ye eklenirken, her v ∈ V için d[v] = δ(s, v) olduğunu göstermek yeterlidir.Her d[u] > δ (s, u) için u' nun S' ye eklenen ilk tepe olduğunu düşünün.y, s' den u' ya en kısa yol boyunca V – S de ilk tepe olsun, x de onun atası olsun:u November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.32 s x y y u' yu eklemeden önceki S. Doğruluk —Bölüm III

33 s x y y u S Eğer u, belirlenen değişmezi ihlal eden ilk tepe ise d[x] = δ (s, x) elde ederiz. x,S' ye eklendiğinde ayrıt (x, y) gevşetildi ki bu d[y] = δ (s, y) ≤ δ (s, u) < d[u] anlamına gelir.Fakat, bizim u seçimimizle d[u] ≤ d[y] olur.Çelişki. Doğruluk —Bölüm III(devamı) November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.33

34 while Q ≠ ∅ do u ← E XTRACT -M IN (Q) S ← S ∪ {u} for each v ∈ Adj[u] if d[v] > d[u] + w(u, v) then d[v] ← d[u] + w(u, v) November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.34 Dijkstra' nın Analizi

35 November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.35 |V | kere Dijkstra' nın Analizi while Q ≠ ∅ do u ← E XTRACT -M IN (Q) S ← S ∪ {u} for each v ∈ Adj[u] if d[v] > d[u] + w(u, v) then d[v] ← d[u] + w(u, v)

36 |V | kere November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.36 Dijkstra' nın Analizi (u)derecesi kere while Q ≠ ∅ do u ← E XTRACT -M IN (Q) S ← S ∪ {u} for each v ∈ Adj[u] if d[v] > d[u] + w(u, v) then d[v] ← d[u] + w(u, v)

37 Dijkstra' nın Analizi (u)derecesi kere |V | kere Tokalaşma önkuramı ⇒ Θ (E) implicit DECREASE-KEY’ s. November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.37 while Q ≠ ∅ do u ← E XTRACT -M IN (Q) (en azı çıkar) S ← S ∪ {u} for each v ∈ Adj[u] if d[v] > d[u] + w(u, v) then d[v] ← d[u] + w(u, v)

38 Dijkstra' nın Analizi (u)derecesi kere |V | kere Tokalaşma önkuramı ⇒ Θ (E) implicit DECREASE-KEY’ s. Time(süre) = Θ (V·T EXTRACT - MIN + E·T DECREASE - KEY ) Not: Prim’in en az kapsayan ağaç algoritmasının çözümlemesinde de aynı formül. November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.38 while Q ≠ ∅ do u ← E XTRACT -M IN (Q) (en azı çıkar) S ← S ∪ {u} for each v ∈ Adj[u] if d[v] > d[u] + w(u, v) then d[v] ← d[u] + w(u, v)

39 Time (süre) = Θ (V)·T EXTRACT - MIN + Θ (E)·T DECREASE - KEY T E XTRACT - M IN T D ECREASE - K EY November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.39 Q Dijkstra' nın Analizi (devamı)

40 Time (süre) = Θ (V)·T EXTRACT - MIN + Θ (E)·T DECREASE - KEY T E XTRACT - M IN T D ECREASE - K EY November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.40 Q Dijkstra' nın Analizi (devamı) dizilim O(V)O(V)O(1)O(V2)O(V2)

41 Time (süre) = Θ (V)·T EXTRACT - MIN + Θ (E)·T DECREASE - KEY T E XTRACT - M IN T D ECREASE - K EY November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.41 Q Dijkstra' nın Analizi (devamı) O(V)O(1) O(lg V)O(lg V) dizilim ikili yığın O(V2)O(V2) O(E lg V)O(E lg V)

42 Time (süre) = Θ (V)·T EXTRACT - MIN + Θ (E)·T DECREASE - KEY T E XTRACT - M IN T D ECREASE - K EY November 14, 2005Copyright © by Erik D. Demaine and Charles E. LeisersonL17.42 Q Dijkstra' nın Analizi (devamı) dizilim ikili yığın Fibonacci yığını O(lg V) O(1)O(E + V lg V) O(V)O(1) O(lg V)O(lg V) O(V2)O(V2) O(E lg V)O(E lg V)


"Algoritmalar Ders 12 En kısa yollar I En kısa yolların özellikleri Dijkstra algoritması Doğruluk Analiz November 14, 2005Copyright © 2001-5 by Erik D." indir ppt

Benzer bir sunumlar


Google Reklamları