You are on page 1of 59

Algoritmalara Giri

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.

November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

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

w( p ) = w(vi , vi +1 ) olarak tanmlanr.


rnek:
i =1

k 1

v11 v

v22 v

v33 v

v44 v

v55 v w(p) = 2
L17.3

November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

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}.

Not:u ' dan v ' bir yol yoksa (u, v) =

November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

L17.4

En uygun altyap
Teorem.En ksa yolun alt yolu, bir en ksa yoldur.

November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

L17.5

En uygun altyap
Teorem.En ksa yolun alt yolu, bir en ksa yoldur.

Kant.Kes ve yaptr:

November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

L17.6

En uygun altyap
Teorem.En ksa yolun alt yolu, bir en ksa yoldur.

Kant.Kes ve yaptr:

November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

L17.7

gen eitsizlii
Teorem.Tm u, v, x V' ler iin, (u, v) (u, x) + (x, v).

November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

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

En ksa yollarn iyi tanmlanrl


Bir G grafii negatif arlk dngs ieriyorsa, baz en ksa yollar var olmayabilir.

November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

L17.10

En ksa yollarn iyi tanmlanrl


Bir G grafii negatif arlk dngs ieriyorsa, baz en ksa yollar var olmayabilir.
rnek:

<0

u u
November 14, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

v v
L17.11

Tek-kaynakl en ksa yollar


Problem. s V ' deki verilen bir kaynak keden, tm v V' ler iin, (s, v) en ksa yol arlklarn bulun.

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.

November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

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)

November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

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

Implicit DECREASE-KEY(azaltlm anahtar)


November 14, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L17.15

Dijkstra algoritmasna rnek


Eksi olmayan kenar arlklaryla grafik:
10

B B
1 4

2 8

D D
7 9

A A
3

C C

E E

November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

L17.16

Dijkstra algoritmasna rnek


lklendirme:
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: {}
November 14, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L17.17

Dijkstra algoritmasna rnek


A EXTRACT-MIN(Q):
(en az kar)

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

Dijkstra algoritmasna rnek


A'dan ayrlan tm kenarlar gevetin:

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

Dijkstra algoritmasna rnek


C EXTRACT-MIN(Q):
(en az kar)

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

Dijkstra algoritmasna rnek


C'den ayrlan tm kenarlar gevetin:

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

November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

Dijkstra algoritmasna rnek


E EXTRACT-MIN(Q):
(en az kar)

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

November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

Dijkstra algoritmasna rnek


E'den ayrlan tm kenarlar gevetin:

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

November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

Dijkstra algoritmasna rnek


B EXTRACT-MIN(Q):
(en az kar)

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

November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

Dijkstra algoritmasna rnek


B'den ayrlan tm kenarlar gevetin:

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

November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

Dijkstra algoritmasna rnek


D EXTRACT-MIN(Q):
(en az kar)

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

November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

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.

November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

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.

November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

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.

November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

L17.30

Doruluk Blm III


Teorem. Dijkstra algoritmas tm v V iin d[v] = (s, v) ile sonlanr.

November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

L17.31

Doruluk Blm III


Kant.v, S' ye eklenirken, her v V iin d[v] = (s, v) olduunu gstermek yeterlidir. Her d[u] > (s, u) iin u' nun S' ye eklenen ilk ke olduunu dnn.y, s' den u' ya en ksa yol boyunca V S de ilk ke olsun, x de onun atas olsun:

Teorem. Dijkstra algoritmas tm v V iin d[v] = (s, v) ile sonlanr.

u u u' yu eklemeden nceki S.


November 14, 2005

s s

x x

y y
L17.32

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

Doruluk Blm III(devam)


S s s x x y y u u

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)

November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

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)

November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

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

November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

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

Tokalama nkuram (E) implicit (gizli) DECREASE-KEYs.


(azaltlm anahtar)

November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

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

Tokalama nkuram (E) implicit (gizli) DECREASE-KEYs.


Time(sre) = (VTEXTRACT-MIN + ETDECREASE-KEY)
(azaltlm anahtar)

Not: Primin en az kapsayan aa algoritmasnn zmlemesinde de ayn forml.


November 14, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L17.38

Time (sre) = (V)TEXTRACT-MIN + (E)TDECREASE-KEY

Dijkstra' nn zmlemesi (devam)


TEXTRACT-MIN TDECREASE-KEY
(en az kar)

(azaltlm anahtar)

Toplam

November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

L17.39

Dijkstra' nn zmlemesi (devam)


Time (sre) = (V)TEXTRACT-MIN + (E)TDECREASE-KEY
(en az kar) (azaltlm anahtar)

Q dizilim

TEXTRACT-MIN TDECREASE-KEY O(V) O(1)

Toplam

O(V2)

November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

L17.40

Dijkstra' nn zmlemesi (devam)


sre = (V)TEXTRACT-MIN + (E)TDECREASE-KEY Q
dizilim
(en az kar) (azaltlm anahtar)

TEXTRACT-MIN TDECREASE-KEY O(V) O(lg V) O(1) O(lg V)

Toplam O(V2)

ikili yn

O(E lg V)

November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

L17.41

Dijkstra' nn zmlemesi (devam)


Sre = (V)TEXTRACT-MIN + (E)TDECREASE-KEY Q
dizilim
(en az kar) (azaltlm anahtar)

TEXTRACT-MIN TDECREASE-KEY O(V) O(lg V) O(1) O(lg V) O(1) amortize


edilmi

Toplam O(V2)

ikili yn

O(E lg V) O(E + V lg V)
en kt durum
L17.42

Fibonacci O(lg V) yn amortize


edilmi
November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

Arlklandrlmam grafikler

Tm (u, v) E'ler iin w(u, v) = 1 olduunu farzedin. Dijkstra algoritmas gelitirilebilir mi?

November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

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.

November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

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

November 14, 2005

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

zmleme: Time(sre)= O(V + E).


November 14, 2005

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

Enine arama iin rnek


a a d d b b e e c c Q:
November 14, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L17.47

ff g g

h h

ii

Enine arama iin rnek


0

a a d d b b e e c c Q: a
0

ff g g

h h

ii

November 14, 2005

Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson

L17.48

Enine arama iin rnek


0

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

Enine arama iin rnek


0

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

Enine arama iin rnek


0

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

Enine arama iin rnek


0

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

Enine arama iin rnek


0

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

Enine arama iin rnek


4 0

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

Enine arama iin rnek


4 0 4

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

Enine arama iin rnek


4 0 4

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

Enine arama iin rnek


4 0 4

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

Enine arama iin rnek


4 0 4

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

(BFS)Enine arama'nn doruluu


(-iken)while

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)

You might also like