Algoritmalara Giriş 6.046J/18.401J Ders 17 En kısa yollar I En kısa yolların özellikleri Dijkstra algoritması Doğruluk Çözümleme Enine arama Prof. Erik Demaine November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.1
Grafiklerde yollar w : E R kenar-ağırlık fonksiyonu olan bir G = (V, E) yönlendirilmiş grafiği olduğunu düşünün. Yolun ağırlığı olan p = v 1 v L v k k 1 w ( p) = w( v i, v i + 1) olarak tanımlanır. i= 1 November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.
Grafiklerde yollar w : E R kenar-ağırlık fonksiyonu olan bir G = (V, E) yönlendirilmiş grafiği olduğunu düşünün. Yolun ağırlığı olan p = v 1 v L v k Örnek: k 1 w ( p) = w( v i, v i + 1) olarak tanımlanır. i= 1 v 1 v v 3 v 5 v v 4 4 5 1 w(p) = November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.3
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, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.4
En uygun altyapı Teorem.En kısa yolun alt yolu, bir en kısa yoldur. November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.5
En uygun altyapı Teorem.En kısa yolun alt yolu, bir en kısa yoldur. Kanıt.Kes ve yapıştır: November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.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, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.7
Üçgen eşitsizliği Teorem.Tüm u, v, x V' ler için, δ(u, v) δ(u, x) + δ(x, v). November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.8
Üçgen eşitsizliği Teorem.Tüm u, v, x V' ler için, δ(u, v) δ(u, x) + δ(x, v). Kanıt. uu δ(u, v) vv δ(u, x) δ(x, v) xx November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.9
En kısa yolların iyi tanımlanırlığı Bir G grafiği negatif ağırlık döngüsü içeriyorsa, bazı en kısa yollar var olmayabilir. November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.10
En kısa yolların iyi tanımlanırlığı Bir G grafiği negatif ağırlık döngüsü içeriyorsa, bazı en kısa yollar var olmayabilir. Örnek: < 0 uu vv November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.11
Tek-kaynaklı en kısa yollar Problem. s V ' deki verilen bir kaynak köşeden, tüm v V' ler için, δ(s, v) en kısa yol ağırlıklarını bulun. Tüm w(u, v) kenar 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 köşelere olan en kısa yol uzunlukları bilinen köşelerin kümesini koru.. Her adımda S' ye, s' ye olan uzaklık tahmini en az olan v V S köşesine ekle. 3. v' ye bitişik köşelerin uzaklık tahminlerini güncelle. November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.1
Dijkstra algoritması d[s] 0 for each v V {s} do d[v] S Q V Q, V S'yi koruyan bir öncelikli sıradır. November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.13
Dijkstra algoritması d[s] 0 for each v V {s} do d[v] S while Q do u EXTRACT-MIN(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) November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.14
Dijkstra algoritması d[s] 0 for each v V {s} do d[v] S Q V while Q do u EXTRACT-MIN(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) Q is a priority queue maintaining V S Gevşeme Adımı Implicit DECREASE-KEY November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.15
Dijkstra algoritmasına örnek Eksi olmayan kenar ağırlıklarıyla grafik: AA 10 BB D 8 1 4 7 9 3 CC EE November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.16
Dijkstra algoritmasına örnek İlklendirme: 10 BB D 0 A 8 1 4 7 9 Q: A B C D E 0 3 S: {} CC EE November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.17
Dijkstra algoritmasına örnek A EXTRACT-MIN(Q): 0 A 10 BB D 8 1 4 7 9 Q: A B C D E 0 3 CC S: { A } EE November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.18
Dijkstra algoritmasına örnek A'dan ayrılan tüm kenarları gevşetin: 0 A 10 10 BB D 8 1 4 7 9 Q: A B C D E 0 10 3 3 CC S: { A } EE 3 November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.19
Dijkstra algoritmasına örnek C EXTRACT-MIN(Q): 0 A 10 10 BB D 8 1 4 7 9 Q: A B C D E 0 10 3 3 CC S: { A, C } EE 3 November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.0
Dijkstra algoritmasına örnek C'den ayrılan tüm kenarları gevşetin: 0 A 10 7 11 BB D 8 1 4 7 9 Q: A B C D E 0 10 3 7 11 5 3 S: { A, C } CC EE 3 5 November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.1
Dijkstra algoritmasına örnek E EXTRACT-MIN(Q): 0 A 10 7 11 BB D 8 1 4 7 9 Q: A B C D E 0 10 3 7 11 5 3 CC EE 3 5 S: { A, C, E } November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.
Dijkstra algoritmasına örnek E'den ayrılan tüm kenarları gevşetin: 0 A 10 7 11 BB D 8 1 4 7 9 Q: A B C D E 0 10 3 7 11 5 7 11 3 CC EE 3 5 S: { A, C, E } November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.3
Dijkstra algoritmasına örnek B EXTRACT-MIN(Q): 0 A 10 7 11 BB D 8 1 4 7 9 Q: A B C D E 0 10 3 7 11 5 7 11 3 CC EE 3 5 S: { A, C, E, B } November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.4
Dijkstra algoritmasına örnek B'den ayrılan tüm kenarları gevşetin: 0 A 10 7 9 BB D 8 1 4 7 9 Q: A B C D E 0 10 3 7 11 5 7 11 9 3 CC S: { A, C, E, B } EE 3 5 November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.5
Dijkstra algoritmasına örnek D EXTRACT-MIN(Q): 0 A 10 7 9 BB D 8 1 4 7 9 Q: A B C D E 0 10 3 7 11 5 7 11 9 3 CC EE 3 5 S: { A, C, E, B, D } November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.6
Doğruluk Bölüm I Ön kuram. d[s] 0 ve d[v] ' yi tüm v V {s}' ler için ilklendirme, d[v] δ(s, v)'yi sağlartüm v V ' ler için: Ve bu değişmez dizideki tüm gevşetme adımlarında korunur. November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.7
Önkuram. d[s] 0 ve d[v] ' yi tüm v V {s}' ler için ilklendirme d[v] δ(s, v)' yi sağlartü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' da d[v]' yi değiştiren ilk köşe olsun: d[v] = d[u] + w(u, v). O zaman, d[v] < δ(s, v) kabul δ(s, u) + δ(u, v) üçgen eşitsizliği δ(s,u) + w(u, v) kısa yol özel yol d[u] + w(u, v) v ilk ihlal Çelişki. November 14, 005 Doğruluk Bölüm II Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson
Doğruluk Bölüm II Ön kuram. u, s' den v' ye en kısa yolda v'nin atası olsun. O durumda, eğer d[u] = δ(s, u) ve kenar (u, v)gevşetilmişse, gevşemeden sonra elimizde d[v] = δ(s, v) olur. November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.9
Doğruluk Bölüm II Ön kuram. u, s' den v' ye en kısa yolda v' nin atası olsun. O durumda, eğer d[u] = δ(s, u)ve kenar (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. November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.30
Doğruluk Bölüm III Teorem. Dijkstra algoritması tüm v V için d[v] = δ(s, v) ile sonlanır. November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.31
Doğruluk Bölüm III 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 köşe olduğunu düşünün.y, s' den u' ya en kısa yol boyunca V S de ilk köşe olsun, x de onun atası olsun: u' yu eklemeden önceki S. ss xx yy uu November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.3
Doğruluk Bölüm III(devamı) ss S xx yy uu Eğer u, belirlenen değişmezi ihlal eden ilk köşe ise d[x] = δ(s, x) elde ederiz. x, S' ye eklendiğinde kenar (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. November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.33
Dijkstra' nın çözümlemesi while Q do u EXTRACT-MIN(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) November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.34
Dijkstra' nın çözümlemesi V kere while Q do u EXTRACT-MIN(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) November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.35
Dijkstra' nın çözümlemesi V kere (u)derecesi kere while Q do u EXTRACT-MIN(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) November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.36
Dijkstra' nın çözümlemesi V kere (u)derecesi kere while Q do u EXTRACT-MIN(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) Tokalaşma önkuramı Θ(E) implicit (gizli) DECREASE-KEY s. November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.37
Dijkstra' nın çözümlemesi V kere (u)derecesi kere while Q do u EXTRACT-MIN(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) Tokalaşma önkuramı Θ(E) implicit (gizli) 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, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.38
Dijkstra' nın çözümlemesi (devamı) Time (süre) = Θ(V) T EXTRACT -MIN + Θ(E) T DECREASE-KEY Q TEXTRACT-MIN T DECREASE -KEY Toplam November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.39
Dijkstra' nın çözümlemesi (devamı) Time (süre) = Θ(V) T EXTRACT -MIN + Θ(E) T DECREASE-KEY Q TEXTRACT-MIN T DECREASE -KEY Toplam dizilim O(V) O(1) O(V ) November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.40
Dijkstra' nın çözümlemesi (devamı) süre = Θ(V) T EXTRACT -MIN + Θ(E) T DECREASE-KEY Q TEXTRACT-MIN T DECREASE -KEY Toplam dizilim O(V) O(1) O(V ) ikili yığın O(lg V) O(lg V) O(E lg V) November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.41
Dijkstra' nın çözümlemesi (devamı) Süre = Θ(V) T EXTRACT -MIN + Θ(E) T DECREASE-KEY Q TEXTRACT-MIN T DECREASE -KEY Toplam dizilim O(V) O(1) O(V ) ikili yığın Fibonacci yığını O(lg V) O(lg V) O(E lg V) O(lg V) amortize O(1) amortize O(E + V lg V) en kötü durum November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.4
Ağırlıklandırılmamış grafikler Tüm (u, v) E'ler için w(u, v) = 1 olduğunu farzedin. Dijkstra algoritması geliştirilebilir mi? November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.43
Ağırlıklandırılmamış grafikler Tüm (u, v) E'ler için w(u, v) = 1 olduğunu farzedin. Dijkstra algoritması geliştirilebilir mi? Bir öncelik sırası yerine basit FIFO sırası kullanın. November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.44
Ağırlıklandırılmamış grafikler Tüm (u, v) E'ler için w(u, v) = 1 olduğunu farzedin. Dijkstra algoritması geliştirilebilir mi? Bir öncelik sırası yerine basit FIFO sırası kullanın. arama while Q do u DEQUEUE(Q) for each v Adj[u] do if d[v] = then d[v] d[u] + 1 ENQUEUE(Q, v) November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.45
Ağırlıklandırılmamış grafikler Tüm (u, v) E'ler için w(u, v) = 1 olduğunu farzedin. Dijkstra algoritması geliştirilebilir mi? Bir öncelik sırası yerine basit FIFO sırası kullanın. Sığ öncelikli arama while Q do u DEQUEUE(Q) for each v Adj[u] do if d[v] = then d[v] d[u] + 1 ENQUEUE(Q, v) Çözümleme: Time(süre)= O(V + E). November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.46
Enine arama için örnek aa bb cc dd ee f gg hh ii Q: November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.47
Enine arama için örnek 0 aa bb cc dd ee f gg hh ii 0 Q: a November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.48
Enine arama için örnek 0 1 1 aa bb cc dd ee 1 1 Q: a b d f gg hh ii November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.49
Enine arama için örnek 0 1 1 aa bb cc dd ee 1 Q: a b d c e f gg hh ii November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.50
Enine arama için örnek 0 1 1 aa bb cc dd ee Q: a bdc e f gg hh ii November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.51
Enine arama için örnek 0 1 1 aa bb cc dd ee Q: a bdce f gg hh ii November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.5
Enine arama için örnek 0 1 1 aa bb cc dd ee 3 f gg 3 3 3 Q: a b d c e g i hh ii November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.53
Enine arama için örnek 0 1 aa bb cc 1 dd ee 3 4 f gg 3 3 4 Q: a b d c e g i f hh ii November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.54
Enine arama için örnek 0 1 aa bb cc 1 dd ee 3 4 4 f gg 3 4 4 Q: a b d c e g i f h hh ii November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.55
Enine arama için örnek 0 1 aa bb cc 1 dd ee 3 4 4 f gg 3 4 Q: a b d c e g i f h hh ii November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.56
Enine arama için örnek 0 1 aa bb cc 1 dd ee 3 4 4 f gg 3 Q: a b d c e g i f h hh ii November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.57
Enine arama için örnek 0 1 aa bb cc 1 dd ee 3 4 4 f gg 3 Q: a b d c e g i f h hh ii November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.58
(BFS)Enine arama'nın doğruluğu while Q do u DEQUEUE(Q) for each v Adj[u] do if d[v] = then d[v] d[u] + 1 ENQUEUE(Q, v) Anahtar fikir: Enine aramadaki FIFO Q, Dijkstra' nın öncelikli sıralamasındaki kuyruk Q' yu taklit eder. Değişmez: Q'da v, u' dan sonra gelirse bu d[v] = d[u] ya da d[v] = d[u] + 1 anlamına gelir. November 14, 005 Copyright 001-5 by Erik D. Demaine and Charles E. Leiserson L17.59