Professional Documents
Culture Documents
6.046J/18.401J
Ders 17
En ksa yollar I En ksa yollarn zellikleri Dijkstra algoritmas Doruluk zmleme Enine arama Prof. Erik Demaine
November 14, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L17.1
Grafiklerde yollar
p = v1 v 2 L v k
w : E R kenar-arlk fonksiyonu olan bir G = (V, E) ynlendirilmi grafii olduunu dnn. Yolun arl olan
w( p ) = w(vi , vi +1 )
i =1
k 1
olarak tanmlanr.
L17.2
Grafiklerde yollar
p = v1 v 2 L v k
w : E R kenar-arlk fonksiyonu olan bir G = (V, E) ynlendirilmi grafii olduunu dnn. Yolun arl olan
k 1
v11 v
v22 v
v33 v
v44 v
v55 v w(p) = 2
L17.3
En ksa yollar
u' dan v ' ye en ksa yol, u ' dan v ' ye en az arlkl yoldur. u ' dan v ' ye en ksa yolun arl (u, v) = min{w(p) olarak tanmlanr: p, u dan v ye bir yoldur}.
L17.4
En uygun altyap
Teorem.En ksa yolun alt yolu, bir en ksa yoldur.
L17.5
En uygun altyap
Teorem.En ksa yolun alt yolu, bir en ksa yoldur.
Kant.Kes ve yaptr:
L17.6
En uygun altyap
Teorem.En ksa yolun alt yolu, bir en ksa yoldur.
Kant.Kes ve yaptr:
L17.7
gen eitsizlii
Teorem.Tm u, v, x V' ler iin, (u, v) (u, x) + (x, v).
L17.8
gen eitsizlii
Teorem.Tm u, v, x V' ler iin, (u, v) (u, x) + (x, v).
Kant. u u
(u, x) (u, v)
v v
(x, v)
x x
November 14, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L17.9
L17.10
<0
u u
November 14, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson
v v
L17.11
Tm w(u, v) kenar arlklar eksi deilse btn en ksa yol arlklarnn olmas gerekir. Fikir:Agzl. 1. s ' den balayan ve S iindeki tm kelere olan
en ksa yol uzunluklar bilinen kelerin kmesini koru. 2. Her admda S' ye, s' ye olan uzaklk tahmini en az olan v V S kesine ekle. 3. v' ye bitiik kelerin uzaklk tahminlerini gncelle.
November 14, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L17.12
Dijkstra algoritmas
d[s] 0 (her)for each v V {s} (iin) (yap) do d[v] S QV Q, V S'yi koruyan bir ncelikli sradr.
L17.13
Dijkstra algoritmas
d[s] 0 (her) for each v V {s} (iin) (yap) do d[v] S while Q (-iken) (yap) do u EXTRACT-MIN(Q) (en az kar) S S {u} (her) for each v Adj[u] (iin) (yap eer)do if d[v] > d[u] + w(u, v) (sonra) then d[v] d[u] + w(u, v)
L17.14
Dijkstra algoritmas
d[s] 0 (her) for each v V {s}(iin) (yap) do d[v] S QV Q is a priority queue maintaining V S while Q (-iken) (yap) do u EXTRACT-MIN(Q)(en az kar) S S {u} (her) for each v Adj[u] (iin) Geveme (yap eer) do if d[v] > d[u] + w(u, v) (sonra) then d[v] d[u] + w(u, v) Adm
B B
1 4
2 8
D D
7 9
A A
3
C C
E E
L17.16
B B
1 4
2 8
D D
7 9
0 A Q: A B C D E
0
C C
E E
S: {}
November 14, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L17.17
10
B B
1 4
2 8
D D
7 9
0 A Q: A B C D E
0
C C
E E
S: { A }
November 14, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L17.18
10
10 B B
1 4
2 8
D D
7 9
0 A Q: A B C D E
0 10 3
C C 3
E E
S: { A }
November 14, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L17.19
10
10 B B
1 4
2 8
D D
7 9
0 A Q: A B C D E
0 10 3
C C 3
E E
S: { A, C }
November 14, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L17.20
10
7 B B
1 4
2 8
11 D D
7 9
0 A Q: A B C D E
0 10 7 3 11 5
C C 3
E E 5
S: { A, C }
L17.21
10
7 B B
1 4
2 8
11 D D
7 9
0 A Q: A B C D E
0 10 7 3 11 5
C C 3
E E 5
S: { A, C, E }
L17.22
10
7 B B
1 4
2 8
11 D D
7 9
0 A Q: A B C D E
0 10 7 7 3 11 11 5
C C 3
E E 5
S: { A, C, E }
L17.23
10
7 B B
1 4
2 8
11 D D
7 9
0 A Q: A B C D E
0 10 7 7 3 11 11 5
C C 3
E E 5
S: { A, C, E, B }
L17.24
10
7 B B
1 4
2 8
9 D D
7 9
0 A Q: A B C D E
0 10 7 7 3 11 11 9 5
C C 3
E E 5
S: { A, C, E, B }
L17.25
10
7 B B
1 4
2 8
9 D D
7 9
0 A Q: A B C D E
0 10 7 7 3 11 11 9 5
C C 3
E E 5
S: { A, C, E, B, D }
L17.26
Doruluk Blm I
n kuram. d[s] 0 ve d[v] ' yi tm v V {s}' ler iin ilklendirme, d[v] (s, v)'yi salartm v V ' ler iin: Ve bu deimez dizideki tm gevetme admlarnda korunur.
L17.27
Doruluk Blm II
nkuram. d[s] 0 ve d[v] ' yi tm v V {s}' ler iin ilklendirme d[v] (s, v)' yi salartm v V ' ler iin: Ve bu deimez dizideki tm gevetme admlarmda korunur.
Kant.unun olmadn dnn. v, d[v] < (s, v)' deki ilk ke olsun ve u' da d[v]' yi deitiren ilk ke olsun: d[v] = d[u] + w(u, v). O zaman, d[v] < (s, v) kabul (s, u) + (u, v) gen eitsizlii (s,u) + w(u, v) ksa yol zel yol d[u] + w(u, v) v ilk ihlal eliki.
November 14, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson
Doruluk Blm II
n kuram. u, s' den v' ye en ksa yolda v'nin atas olsun. O durumda, eer d[u] = (s, u) ve kenar (u, v)gevetilmise, gevemeden sonra elimizde d[v] = (s, v) olur.
L17.29
Doruluk Blm II
n kuram. u, s' den v' ye en ksa yolda v' nin atas olsun. O durumda, eer d[u] = (s, u)ve kenar (u, v) gevetilmise, gevemeden sonra elimizde d[v] = (s, v) olur.
Kant. (s, v) = (s, u) + w(u, v) olduuna dikkat edin. Gevetmeden nce d[v] > (s, v) olduunu farzedin. (Dier trl, bitirmitik.) Sonra, d[v] > d[u] + w(u, v) testi baarl, 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.
L17.30
L17.31
s s
x x
y y
L17.32
Eer u, belirlenen deimezi ihlal eden ilk ke ise d[x] = (s, x) elde ederiz . x, S' ye eklendiinde kenar (x, y) gevetildi ki bu d[y] = (s, y) (s, u) < d[u] anlamna gelir. Fakat, bizim u seimimizle d[u] d[y] olur. eliki.
November 14, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L17.33
Dijkstra' nn zmlemesi
(-iken)while
Q (yap) do u EXTRACT-MIN(Q) (en az kar) S S {u} (her) for each v Adj[u] (iin) (yap eer) do if d[v] > d[u] + w(u, v) (sonra) then d[v] d[u] + w(u, v)
L17.34
Dijkstra' nn zmlemesi
(-iken) while
|V | kere
Q (yap) do u EXTRACT-MIN(Q) (en az kar) S S {u} (her) for each v Adj[u] (iin) (yap eer) do if d[v] > d[u] + w(u, v) (sonra) then d[v] d[u] + w(u, v)
L17.35
Dijkstra' nn zmlemesi
|V | kere Q (yap) do u EXTRACT-MIN(Q) (en az kar) S S {u} for each v Adj[u](iin) (u)derecesi (her) do if d[v] > d[u] + w(u, v) (yap eer) kere (sonra) then d[v] d[u] + w(u, v)
(-iken) while
L17.36
Dijkstra' nn zmlemesi
|V | kere Q (yap)do u EXTRACT-MIN(Q) (en az kar) S S {u} for each v Adj[u] (iin) (u)derecesi (her)do if d[v] > d[u] + w(u, v) (yap eer) kere (sonra) then d[v] d[u] + w(u, v)
(-iken)while
L17.37
Dijkstra' nn zmlemesi
|V | kere Q (yap) do u EXTRACT-MIN(Q) (en az kar) S S {u} for each v Adj[u] (iin) (u)derecesi (her)do if d[v] > d[u] + w(u, v) (yap eer) kere (sonra) then d[v] d[u] + w(u, v)
(-iken)while
(azaltlm anahtar)
Toplam
L17.39
Q dizilim
Toplam
O(V2)
L17.40
Toplam O(V2)
ikili yn
O(E lg V)
L17.41
Toplam O(V2)
ikili yn
O(E lg V) O(E + V lg V)
en kt durum
L17.42
Arlklandrlmam grafikler
Tm (u, v) E'ler iin w(u, v) = 1 olduunu farzedin. Dijkstra algoritmas gelitirilebilir mi?
L17.43
Arlklandrlmam grafikler
Tm (u, v) E'ler iin w(u, v) = 1 olduunu farzedin. Dijkstra algoritmas gelitirilebilir mi? Bir ncelik sras yerine basit FIFO sras kullann.
L17.44
Arlklandrlmam grafikler
Tm (u, v) E'ler iin w(u, v) = 1 olduunu farzedin. Dijkstra algoritmas gelitirilebilir mi? Bir ncelik sras yerine basit FIFO sras kullann. arama
(-iken)while
Q (yap)do u DEQUEUE(Q) (sradan kar) (her) for each v Adj[u] (iin) (yap eer) do if d[v] = (sonra) then d[v] d[u] + 1 ENQUEUE(Q, v)(sraya ekle)
Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson
L17.45
Arlklandrlmam grafikler
Tm (u, v) E'ler iin w(u, v) = 1 olduunu farzedin. Dijkstra algoritmas gelitirilebilir mi? Bir ncelik sras yerine basit FIFO sras kullann. S ncelikli arama
(-iken)while
Q (yap)do u DEQUEUE(Q) (sradan kar) (her) for each v Adj[u] (iin) (yap eer) do if d[v] = (sonra) then d[v] d[u] + 1 ENQUEUE(Q, v) (sraya ekle)
Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson
L17.46
ff g g
h h
ii
a a d d b b e e c c Q: a
0
ff g g
h h
ii
L17.48
a a b b
ff g g
h h
d d
1
e e c c
1 1
ii
Q: a b d
November 14, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L17.49
a a b b
ff g g
h h
d d
1
e e
2
ii
c c
2 1 2 2
Q: a b d c e
November 14, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L17.50
a a b b
ff g g
h h
d d
1
e e
2
ii
2 2
c c
Q: a b d c e
November 14, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L17.51
a a b b
ff g g
h h
d d
1
e e
2
ii
2
c c
Q: a b d c e
November 14, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L17.52
a a b b
ff
3
h h
d d
1
g g ii
3
e e
2
c c
2 3 3
Q: a b d c e g i
November 14, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L17.53
a a b b
ff
3
h h
d d
1
g g ii
3 3 4
e e
2
c c
Q: a b d c e g i f
November 14, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L17.54
a a b b
ff
3
h h
d d
1
g g ii
3 4 4
e e
2
c c
Q: a b d c e g i f h
November 14, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L17.55
a a b b
ff
3
h h
d d
1
g g ii
3 4
e e
2
c c
Q: a b d c e g i f h
November 14, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L17.56
a a b b
ff
3
h h
d d
1
g g ii
3
e e
2
c c
Q: a b d c e g i f h
November 14, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L17.57
a a b b
ff
3
h h
d d
1
g g ii
3
e e
2
c c
Q: a b d c e g i f h
November 14, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L17.58
Anahtar fikir: Enine aramadaki FIFO Q, Dijkstra' nn ncelikli sralamasndaki kuyruk Q' yu taklit eder. Deimez: Q'da v, u' dan sonra gelirse bu d[v] = d[u] ya da d[v] = d[u] + 1 anlamna gelir.
November 14, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L17.59
Q (yap)do u DEQUEUE(Q) (sradan kar) (her) for each v Adj[u] (iin) (yap eer) do if d[v] = (sonra) then d[v] d[u] + 1 ENQUEUE(Q, v)(sraya ekle)