Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
YayınlayanHanefi Baykal Değiştirilmiş 10 yıl önce
1
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 © by Erik D. Demaine and Charles E. Leiserson
2
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 © by Erik D. Demaine and Charles E. Leiserson
3
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 V 5 4 –2 –5 1 V v w(p) = –2 November 14, 2005 Copyright © by Erik D. Demaine and Charles E. Leiserson
4
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 © by Erik D. Demaine and Charles E. Leiserson
5
En uygun altyapı Teorem.En kısa yolun alt yolu, bir en kısa yoldur.
November 14, 2005 Copyright © by Erik D. Demaine and Charles E. Leiserson
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, 2005 Copyright © by Erik D. Demaine and Charles E. Leiserson
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, 2005 Copyright © by Erik D. Demaine and Charles E. Leiserson
8
Üçgen eşitsizliği Teorem.Tüm u, v, x ∈ V' ler için,
δ(u, v) ≤ δ(u, x) + δ(x, v). November 14, 2005 Copyright © by Erik D. Demaine and Charles E. Leiserson
9
Üç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 © by Erik D. Demaine and Charles E. Leiserson
10
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 © by Erik D. Demaine and Charles E. Leiserson
11
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 © by Erik D. Demaine and Charles E. Leiserson
12
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 © by Erik D. Demaine and Charles E. Leiserson
13
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 © by Erik D. Demaine and Charles E. Leiserson
14
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 © by Erik D. Demaine and Charles E. Leiserson
15
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 © by Erik D. Demaine and Charles E. Leiserson
16
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 © by Erik D. Demaine and Charles E. Leiserson
17
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 © by Erik D. Demaine and Charles E. Leiserson
18
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 © by Erik D. Demaine and Charles E. Leiserson
19
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 © by Erik D. Demaine and Charles E. Leiserson
20
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 © by Erik D. Demaine and Charles E. Leiserson
21
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 © by Erik D. Demaine and Charles E. Leiserson
22
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 © by Erik D. Demaine and Charles E. Leiserson
23
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 © by Erik D. Demaine and Charles E. Leiserson
24
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 © by Erik D. Demaine and Charles E. Leiserson
25
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 © by Erik D. Demaine and Charles E. Leiserson
26
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 © by Erik D. Demaine and Charles E. Leiserson
27
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 © by Erik D. Demaine and Charles E. Leiserson
28
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 © by Erik D. Demaine and Charles E. Leiserson
29
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 © by Erik D. Demaine and Charles E. Leiserson
30
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 © by Erik D. Demaine and Charles E. Leiserson
31
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 © by Erik D. Demaine and Charles E. Leiserson
32
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 © by Erik D. Demaine and Charles E. Leiserson
33
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 © by Erik D. Demaine and Charles E. Leiserson
34
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 © by Erik D. Demaine and Charles E. Leiserson
35
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 © by Erik D. Demaine and Charles E. Leiserson
36
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 © by Erik D. Demaine and Charles E. Leiserson
37
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 © by Erik D. Demaine and Charles E. Leiserson
38
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 © by Erik D. Demaine and Charles E. Leiserson
39
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 © by Erik D. Demaine and Charles E. Leiserson
40
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 © by Erik D. Demaine and Charles E. Leiserson
41
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 © by Erik D. Demaine and Charles E. Leiserson
42
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 © by Erik D. Demaine and Charles E. Leiserson
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.