Algoritmalar En kısa yollar I En kısa yolların özellikleri Ders 12 En kısa yollar I En kısa yolların özellikleri Dijkstra algoritması Doğruluk Analiz November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
Graflarda yollar p = v1 → v2 → ..... → vk yolunun ağırlığı w : E → R ayrıt-ağırlık fonksiyonu olan bir G = (V, E) yönlü grafı olduğunu düşünün. p = v1 → v2 → ..... → vk yolunun ağırlığı k −1 w( p) = ∑ w(vi , vi+1) olarak tanımlanır. i=1 November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
Graflarda yollar p = v1 → v2 → ..... → vk yolunun ağırlığı w : E → R ayrıt-ağırlık fonksiyonu olan bir G = (V, E) yönlü grafı olduğunu düşünün. p = v1 → v2 → ..... → vk yolunun ağırlığı k −1 w( p) = ∑ w(vi , vi+1) olarak tanımlanır. i=1 Örnek: v1 v 3 V 5 4 –2 –5 1 V 2 v 4 w(p) = –2 November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
En kısa yollar Not:u ' dan v ' bir yol yoksa δ(u, v) = ∞ 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, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
En uygun altyapı Teorem.En kısa yolun alt yolu, bir en kısa yoldur. November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
En uygun altyapı Teorem.En kısa yolun alt yolu, bir en kısa yoldur. Kanıt.Kes ve yapıştır: November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
En uygun altyapı Teorem.En kısa yolun alt yolu, bir en kısa yoldur. Kanıt.Kes ve yapıştır: November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
Üçgen eşitsizliği Teorem.Tüm u, v, x ∈ V' ler için, δ(u, v) ≤ δ(u, x) + δ(x, v). November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
Üçgen eşitsizliği Teorem.Tüm u, v, x ∈ V' ler için, δ(u, v) ≤ δ(u, x) + δ(x, v). Kanıt. δ(u, v) uu vv δ(u, x) δ(x, v) xx November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
En kısa yolların iyi tanımlanırlığı Bir G grafı negatif ağırlık döngüsü içeriyorsa, bazı en kısa yollar var olmayabilir. November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
En kısa yolların iyi tanımlanırlığı Bir G grafı negatif ağırlık döngüsü içeriyorsa, bazı en kısa yollar var olmayabilir. Örnek: … < 0 uu vv November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
Tek-kaynaklı en kısa yollar 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. Her adımda S' ye, s' ye olan uzaklık tahmini en az olan v ∈ V – S tepesine ekle. v' ye bitişik tepelerin uzaklık tahminlerini güncelle. November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
Dijkstra algoritması d[s] ← 0 do d[v] ← ∞ S ← ∅ for each v ∈ V – {s} do d[v] ← ∞ S ← ∅ Q ← V ⊳ Q, V – S'yi koruyan bir öncelikli sıradır. November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
Dijkstra algoritması d[s] ← 0 do d[v] ← ∞ S ← ∅ for each v ∈ V – {s} do d[v] ← ∞ S ← ∅ Q ← V ⊳ Q, V – S'yi koruyan bir öncelikli sıradır. while Q ≠ ∅ 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, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
Dijkstra algoritması Implicit DECREASE-KEY d[s] ← 0 do d[v] ← ∞ S ← ∅ for each v ∈ V – {s} do d[v] ← ∞ S ← ∅ Q ← V ⊳ Q, V – S'yi koruyan bir öncelikli sıradır. while Q ≠ ∅ 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) Implicit DECREASE-KEY November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
Dijkstra algoritmasına örnek 2 Eksi olmayan ayrıt ağırlıklarıyla grafik: B D 10 8 A 1 4 7 9 3 C E 2 November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
Dijkstra algoritmasına örnek ∞ ∞ D İlklendirme: Initialization: 2 B 10 8 A 1 4 7 9 3 Q: A B C D E 0 ∞ ∞ ∞ ∞ C ∞ E ∞ 2 S: {} November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
Dijkstra algoritmasına örnek ∞ B ∞ D “A” ← EXTRACT-MIN(Q): 10 2 8 A 1 4 7 9 3 Q: A B C D E 0 ∞ ∞ ∞ ∞ C ∞ E ∞ 2 S: { A } November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
Dijkstra algoritmasına örnek 10 B ∞ D A'dan ayrılan tüm ayrıtları gevşetin: 10 2 8 A 1 4 7 9 3 Q: A B C D E C 3 E ∞ 2 0 ∞ ∞ ∞ ∞ 10 3 ∞ ∞ S: { A } November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
Dijkstra algoritmasına örnek 10 B ∞ D “C” ← EXTRACT-MIN(Q): 10 2 8 A 1 4 7 9 3 Q: A B C D E C 3 E ∞ 2 0 ∞ ∞ ∞ ∞ 10 3 ∞ ∞ S: { A, C } November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
Dijkstra algoritmasına örnek 7 BB 11 DD C'den ayrılan tüm ayrıtları gevşetin: 2 10 8 A 1 4 7 9 3 Q: A B C D E CC 3 EE 5 2 0 ∞ ∞ ∞ ∞ 10 3 ∞ ∞ 7 11 5 S: { A, C } November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
Dijkstra algoritmasına örnek 7 BB 11 DD “E” ← EXTRACT-MIN(Q): 10 2 8 A 1 4 7 9 3 Q: A B C D E CC 3 EE 5 2 0 ∞ ∞ ∞ ∞ 10 3 ∞ ∞ 7 11 5 S: { A, C, E } November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
Dijkstra algoritmasına örnek 7 BB 11 DD E'den ayrılan tüm ayrıtları gevşetin: 2 10 8 A 1 4 7 9 3 Q: A B C D E CC 3 EE 5 2 0 ∞ ∞ ∞ ∞ 10 3 ∞ ∞ 7 11 5 11 S: { A, C, E } November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
Dijkstra algoritmasına örnek 7 BB 11 DD “B” ← EXTRACT-MIN(Q): 10 2 8 A 1 4 7 9 3 Q: A B C D E CC 3 EE 5 2 ∞ 10 3 7 11 5 S: { A, C, E, B } November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
Dijkstra algoritmasına örnek 7 BB 9 DD B'den ayrılan tüm ayrıtları gevşetin: 10 2 8 A 1 4 7 9 3 Q: A B C D E CC 3 EE 5 2 0 ∞ ∞ ∞ ∞ 10 3 ∞ ∞ 7 11 5 11 9 S: { A, C, E, B } 7 November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
Dijkstra algoritmasına örnek 7 BB 9 DD “D” ← EXTRACT-MIN(Q): 10 2 8 A 1 4 7 9 3 Q: A B C D E CC 3 EE 5 2 0 ∞ ∞ ∞ ∞ 10 3 ∞ ∞ 7 11 5 11 S: { A, C, E, B, D } 7 9 November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
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ğlar- tüm v ∈ V ' ler için: Ve bu değişmez dizideki tüm gevşetme adımlarında korunur. November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
d[v] = d[u] + w(u, v). O zaman, Doğruluk —Bölüm II Ö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' da d[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. November 14, 2005 Copyright © 2001-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 ayrıt (u, v)gevşetilmişse, gevşemeden sonra elimizde d[v] = δ(s, v) olur. November 14, 2005 Copyright © 2001-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 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. November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
Doğruluk —Bölüm III Teorem. Dijkstra algoritması tüm v ∈ V için d[v] = δ(s, v) ile sonlanır. November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
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 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: uu ss xx u' yu eklemeden önceki S. y y November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
Doğruluk —Bölüm III(devamı) S uu ss xx y y 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. November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
Dijkstra' nın Analizi while Q ≠ ∅ S ← S ∪ {u} for each v ∈ Adj[u] do u ← EXTRACT-MIN(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, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
Dijkstra' nın Analizi while Q ≠ ∅ S ← S ∪ {u} for each v ∈ Adj[u] |V | do u ← EXTRACT-MIN(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) |V | kere November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
Dijkstra' nın Analizi while Q ≠ ∅ S ← S ∪ {u} for each v ∈ Adj[u] do u ← EXTRACT-MIN(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) |V | kere (u)derecesi kere November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
Dijkstra' nın Analizi while Q ≠ ∅ do u ← EXTRACT-MIN(Q) (en azı çıkar) S ← S ∪ {u} |V | kere for each v ∈ Adj[u] if d[v] > d[u] + w(u, v) (u)derecesi kere then d[v] ← d[u] + w(u, v) Tokalaşma önkuramı ⇒ Θ(E) implicit DECREASE-KEY’s. November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
Dijkstra' nın Analizi while Q ≠ ∅ do u ← EXTRACT-MIN(Q) (en azı çıkar) S ← S ∪ {u} |V | kere for each v ∈ Adj[u] if d[v] > d[u] + w(u, v) (u)derecesi kere then d[v] ← d[u] + w(u, v) Tokalaşma önkuramı ⇒ Θ(E) implicit DECREASE-KEY’s. Time(süre) = Θ(V·TEXTRACT-MIN + E·TDECREASE-KEY) Not: Prim’in en az kapsayan ağaç algoritmasının çözümlemesinde de aynı formül. November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
TEXTRACT-MIN TDECREASE-KEY Dijkstra' nın Analizi (devamı) Time (süre) = Θ(V)·TEXTRACT-MIN + Θ(E)·TDECREASE-KEY Q TEXTRACT-MIN TDECREASE-KEY November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
TEXTRACT-MIN TDECREASE-KEY Dijkstra' nın Analizi (devamı) Time (süre) = Θ(V)·TEXTRACT-MIN + Θ(E)·TDECREASE-KEY Q TEXTRACT-MIN TDECREASE-KEY dizilim O(V) O(1) O(V2) November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
TEXTRACT-MIN TDECREASE-KEY Dijkstra' nın Analizi (devamı) Time (süre) = Θ(V)·TEXTRACT-MIN + Θ(E)·TDECREASE-KEY Q O(V) O(1) O(lg V) O(lg V) TEXTRACT-MIN TDECREASE-KEY dizilim ikili yığın O(V2) O(E lg V) November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson
TEXTRACT-MIN TDECREASE-KEY Dijkstra' nın Analizi (devamı) Time (süre) = Θ(V)·TEXTRACT-MIN + Θ(E)·TDECREASE-KEY Q TEXTRACT-MIN TDECREASE-KEY dizilim ikili yığın Fibonacci yığını O(V) O(1) O(lg V) O(lg V) O(V2) O(E lg V) O(lg V) O(1) O(E + V lg V) November 14, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson