Professional Documents
Culture Documents
10.hafta Algoritma Analizi MinumumKapsayanAğaçlar
10.hafta Algoritma Analizi MinumumKapsayanAğaçlar
Hafta
Minimum kapsayan
ağaçlar
Minimum spanning trees
(MST)
1
2
Kapsayan ağaç
Spanning Tree (ST)
Bir Kapsayan Ağaç (ST); G, grafındaki bir alt graftır
ve aşağıdaki özelliklere sahiptir.
G grafındaki tüm düğümleri içerir
Bir ağaç yapısı oluşturur.
3
Optimal altyapı
6
Optimal altyapı
7
Greedy Yaklaşımı/Yöntemi
Dolaşma yapılırken bir sonraki düğümü belirlemek
için kullanılan bir karar verme/seçme yöntemidir.
O andaki seçenekler içerisinden en iyi olarak
gözükeni seçer.
Bölgesel/yerel değerlendirmeler yapar.
Yerel optimum daima global optimum anlamına
gelmez dolayısıyla en iyi sonuca götürmeyebilir.
Fakat bazı durumlarda en iyi sonuca götürür. (MST,
en kısa yol alg. , Huffman coding)
9
Teorem' in kanıtı
12
Teorem' in kanıtı
13
Teorem' in kanıtı
14
Teorem' in kanıtı
15
MST Algoritmaları
Prim’in Algoritması
Düğüm tabanlı bir algoritmadır. Bir T ağacını her
adımda bir düğüm ekleyerek büyütür.
Bir kök düğüm ile başlar ve bütün düğümleri içine
alıncaya kadar ağaç büyütülür.
Prim’in Algoritması
20
8 7
b c d
4 2 9
4
14 e
a 11 i
7 6
8 10
g f
h 1 2
28
MST algoritmaları
42
Kruskal’ın Algoritması
8 7
b c d
4 2 9
4 14
a 11 i e
7 6
8 10
g f
h 1 2
(i,
(c, h)
d) (a, h) (b, c) (d, e) (e, f) (b, h) (d, f)
45
8 7 8 7
b c d b c d
4 9 4 2 9
2 4
4 14 14 e
a 11 i e a 11 i
7 7 6
6 10
10
8 g f 8 h g f
h 2 2
1 1
8 7 8 7
b c d b c d
4 2 9 4 2 9
4 4 14
a i 14 e a 11 i e
11 7 7
6 6
10 10
8 g f 8 h g f
h 2 2
1 1
46
8 7
8 7 b c d
b c d 4 9
2
4 2 9 4
4 a i 14 e
14 e 11 7
a 11 i 6
7 6 10
10 8 g f
8 g f h 2
h 2 1
1
8 7 8 7
b c d b c d
4 2 9 4 9
4 2
14 e 4 14
a 11 i a 11 i e
7 6 7
10 6
10
8 h g f 8 f
2 h g
1 2
1
47
8 8 7
7 c d
b c d b
4 4 2 9
2 9
4 4
14 14 e
i e a 11 i
a 11 7 6
7 6
10 10
8 f 8 g f
h g h 2
2 1
1
(i,
(c, h)
d) (a, h) (b, c) (d, e) (e, f) (b, h) (d, f)
48
Sollin’in Algoritması
66
b c h
a i d
e f g
Başlangıç durumu
Düğümler sıralanır {a,b,c,d,e,f,g,h,i}
ve sıradaki
her düğüm için minimum maliyetli yollar seçilir.
68
8 7
b c h
4 2 9
4
2
a i d
11
7
6
10
8 f g
e
14
1
En kısa yollar I
Shortest Paths I
73
74
Konular
En kısa yollar
77
En uygun altyapı
78
Üçgen eşitsizliği
d[v]=
d[u] d[v]
d[x]
79
Tek-kaynaklı (single-source)
En kısa yollar
81
Dijkstra Algoritması:
Ağırlıklı ve yönlü graflar için geliştirilmiştir.
Graf üzerindeki kenarların ağırlıkları 0 veya
sıfırdan büyük sayılar olmalıdır.
Negatif ağırlıklar için çalışmaz.
Bellman ve Ford Algoritması:
Negatif ağırlıklı graflar için geliştirilmiştir.
Floyd-Warshall Algoritması
Negatif ağırlıklı graflar için geliştirilmiştir.
82
Dijkstra Algoritması
Başlangıç olarak sadece başlangıç düğümünün en
kısa yolu bilinir. (0 dır.)
Güncelleme
Adım-1 de seçilen düğüm u olsun.
u düğümünün komşularının maliyetini güncelleme
işlemi aşağıdaki şekilde yapılır.
s’den v’ye gitmek için iki yol vardır.
Kırmızı yol izlenebilir. Maliyet 11.
veya mavi yol izlenebilir. Önce s’den u’ya 3 maliyeti
ile gidilir. Daha sonra (u, v) kenarı üzerinden 8
maliyetle v’ye ulaşılır.
u
u 5 v
5 v 3
s
3 Güncelle(u, v) s 8
11 0
0
84
Guncelle(u, v){
if (maliyet[u] + w(u, v) < maliyet[v]){ // U üzerinden yol daha kısa ise
maliyet[v] = maliyet[u] + w(u, v); // Evet! Güncelle
pred[v] = u; // u’dan geldiğimizi kaydet.
}
}
84
85
Dijkstra algoritması
86
Dijkstra algoritması
87
O((V+E)logV)
100
Doğruluk —Bölüm I
d[s] d[v]
3
s 2
2
3
d[u] u
Doğruluk —Bölüm II
102
A A
A
DFS(A) BFS(A)
B C B E C
B
C
D E E D
D
105
Ağırlıklandırılmamış grafikler
106
Ağırlıklandırılmamış grafikler
107
3 5
A B A B
Her kenara
2 2 ekle 4
-2 0
C C
113