İçerik : gra flar
DESCRIPTION
İçerik : Gra flar. Tanım Yönlendirilmiş ve y önlendirilmemiş graflar Ağırlıklı graflar Gösterim Komşuluk Matrisi Komşuluk Listesi Dolaşma Algoritmaları BFS ( Breath F irst Search ) DFS ( Depth-First Search ). Graflar. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: İçerik : Gra flar](https://reader036.vdocuments.net/reader036/viewer/2022062422/56813ac1550346895da2d0fe/html5/thumbnails/1.jpg)
1
İçerik: Graflar• Tanım
– Yönlendirilmiş ve yönlendirilmemiş graflar– Ağırlıklı graflar
• Gösterim– Komşuluk Matrisi– Komşuluk Listesi
• Dolaşma Algoritmaları– BFS (Breath First Search)– DFS (Depth-First Search)
![Page 2: İçerik : Gra flar](https://reader036.vdocuments.net/reader036/viewer/2022062422/56813ac1550346895da2d0fe/html5/thumbnails/2.jpg)
2
Graflar• Graf, matematiksel anlamda, düğümlerden
ve bu düğümler arasındaki ilişkiyi gösteren kenarlardan oluşan bir kümedir.
– Bağlantılı listeler ve ağaçlar grafların özel örneklerindendir.
• Bir G grafı D ile gösterilen düğümlerden (node veya vertex) ve K ile gösterilen kenarlardan (Edge) oluşur.
– Her kenar iki düğümü birleştirir.
• Her kenar, iki bilgi (Düğüm) arasındaki ilişkiyi gösterir ve (u,v) şeklinde ifade edilir.
– (u,v) iki düğümü göstermektedir.
![Page 3: İçerik : Gra flar](https://reader036.vdocuments.net/reader036/viewer/2022062422/56813ac1550346895da2d0fe/html5/thumbnails/3.jpg)
Graflar - Örnek
• G = (D, K) grafı aşağıda verilmiştir.– D = {A, B, C, D, E, F}– K = {(A, B), (A, D), (B, C), (C, D), (C, E), (D,
E)}
3
A
B C
D
F
E
![Page 4: İçerik : Gra flar](https://reader036.vdocuments.net/reader036/viewer/2022062422/56813ac1550346895da2d0fe/html5/thumbnails/4.jpg)
Uygulama Alanları• Elektronik devreler
– Baskı devre kartları (PCB)– Entegre devreler
• Ulaşım Ağları– Otoyol Ağı– Havayolu Ağı
• Bilgisayar Ağları– Lokal alan ağları– İnternet
• Veritabanları– Entity-relationship diyagram
4
![Page 5: İçerik : Gra flar](https://reader036.vdocuments.net/reader036/viewer/2022062422/56813ac1550346895da2d0fe/html5/thumbnails/5.jpg)
Graflar – Kenar Türleri• Yönlendirilmiş Kenar (Directed Edge)
– Sıralı kenar çiftleri ile ifade edilir. • (u, v) ile (v, u) aynı değildir.
– İlk kenar orijin ikinci kenar ise hedef olarak adlandırılır.
• Yönlendirilmemiş Kenar (Undirected Edge)– Sırasız kenar çiftleri ile ifade edilir.
• (u, v) ile (v, u) aynı şeyi ifade ederler.
• Yönlendirilmiş Graf (Directed Graphs)– Bütün kenarları yönlendirilmiş graftır. – Digraph şeklinde de ifade edilirler.
• Yönlendirilmemiş Graf (Undirected Graphs)– Hiçbir kenarı yönlendirilmemiş graftır.
5
![Page 6: İçerik : Gra flar](https://reader036.vdocuments.net/reader036/viewer/2022062422/56813ac1550346895da2d0fe/html5/thumbnails/6.jpg)
Graflar - Tanımlar• Komşu(Adjacent): Eğer (u, v) ∈ K ise u
ve v düğümleri komşudur.– (A, B) komşudur.– (B, D), (C, F) komşu değildir.
6
A
B C
D
F
E
![Page 7: İçerik : Gra flar](https://reader036.vdocuments.net/reader036/viewer/2022062422/56813ac1550346895da2d0fe/html5/thumbnails/7.jpg)
Graflar - Tanımlar• Graf kenarları üzerinde ağırlıkları
olabilir. Eğer kenarlar üzerinde ağırlıklar varsa bu tür graflara ağırlıklı/maliyetli graf (Weighted Graphs) denir.– Ağırlık uygulamadan uygulamaya değişir.
• Şehirler arasındaki uzaklık.• Routerler ararı bant genişliği
7
![Page 8: İçerik : Gra flar](https://reader036.vdocuments.net/reader036/viewer/2022062422/56813ac1550346895da2d0fe/html5/thumbnails/8.jpg)
Graf Gösterimi• Zaman ve yer karmaşıklığı aşağıdaki
her iki ifade ile de ölçülür.– Düğüm sayısı = |D| = n– Kenar sayısı = |K| = k
• Graf gösterimi için iki farklı yol vardır.– Komşuluk matrisi– Komşuluk listesi
8
![Page 9: İçerik : Gra flar](https://reader036.vdocuments.net/reader036/viewer/2022062422/56813ac1550346895da2d0fe/html5/thumbnails/9.jpg)
Komşuluk Matrisi Gösterimi
9
• Komşuluk Matrisi Gösterimi: 1 (u,v) K’nın içindeyse
0 diğerM(u, v) =
A
B C
D
F
E
A B C D E F
A 0 1 0 1 0 0
B 0 0 1 0 0 0
C 0 0 0 1 1 0
D 0 0 0 0 1 0
E 0 0 0 0 0 0
F 0 0 0 0 0 0
Yer? O(n2)
![Page 10: İçerik : Gra flar](https://reader036.vdocuments.net/reader036/viewer/2022062422/56813ac1550346895da2d0fe/html5/thumbnails/10.jpg)
10
Komşuluk Matrisi Gösterimi• Komşuluk Matrisi Gösterimi (Ağırlıklı Graf): ağırlık(u, v) (u, v) K’nın içindeyse
∞ diğerM(u, v) =
A
B C
D
F
E
A B C D E F
A ∞ 10 ∞ 5 ∞ ∞
B ∞ ∞ 20 ∞ ∞ ∞
C ∞ ∞ ∞ 30 50 ∞
D ∞ ∞ ∞ ∞ 15 ∞
E ∞ ∞ ∞ ∞ ∞ ∞
F ∞ ∞ ∞ ∞ ∞ ∞
10
20
5
3050
15
![Page 11: İçerik : Gra flar](https://reader036.vdocuments.net/reader036/viewer/2022062422/56813ac1550346895da2d0fe/html5/thumbnails/11.jpg)
11
Komşuluk Listesi Gösterimi• Komşuluk Listesi:
A
B C
D
F
E
Yer? n*a + 2*b*k = O(n+2k)
B D
A
D E
E
C
B
A C
C D
ab
A
B
C
D
E
F
![Page 12: İçerik : Gra flar](https://reader036.vdocuments.net/reader036/viewer/2022062422/56813ac1550346895da2d0fe/html5/thumbnails/12.jpg)
12
Komşuluk Listesi Gösterimi• Komşuluk Listesi (Yönlendirilmiş Graflar)
A
B C
D
F
E
Yer? n*a + b*k = O(n+k)
B D
C
D E
E
a
b
A
B
C
D
E
F
![Page 13: İçerik : Gra flar](https://reader036.vdocuments.net/reader036/viewer/2022062422/56813ac1550346895da2d0fe/html5/thumbnails/13.jpg)
Graf Üzerinde Dolaşma• Graf üzerinde dolaşma grafın düğümleri
ve kenarları üzerinde istenen bir işi yapacak veya bir problemi çözecek biçimde hareket etmektir.
• Graf üzerinde dolaşma yapan birçok yaklaşım yöntemi vardır. En önemli iki tanesi aşağıda listelenmiştir.– BFS (Breadth First Search) Yöntemi– DFS (Depth First Search ) Yöntemi
13
![Page 14: İçerik : Gra flar](https://reader036.vdocuments.net/reader036/viewer/2022062422/56813ac1550346895da2d0fe/html5/thumbnails/14.jpg)
14
Graf Üzerinde Dolaşma• Breath-First Search (BFS):
– Başlangıç düğümünden başla ve tüm komşuları ziyaret et.
– Daha sonra komşunun komşularını ziyaret et.– Başlangıç düğümünden başlayıp dışa doğru
dalga gibi.
• Depth-First Search (DFS)– Bir düğümden başla düğümün bir kenarında o
kenar üzerinde gidilebilecek en uzak düğüme kadar sürdür.
– Geri gel ve düğer kenarı dene– Tüm düğümler gezilene kadar devam et.
![Page 15: İçerik : Gra flar](https://reader036.vdocuments.net/reader036/viewer/2022062422/56813ac1550346895da2d0fe/html5/thumbnails/15.jpg)
15
Breath-First Search (BFS)
• Verilen G = (D, K) grafında, “s” başlangıç düğümünden başla ve s den erişilebilecek düğümleri belirle.– Bulunan ama işlenmeyen düğümler sınır düğümleridir (gri
düğümler).
• Sınır düğümlerine sırası ile gidilir ardından bunların komşuları bulunur ve bu komşulara gidilir.
s
1
1
1
2
2
2
22
2
3 3
3
33
![Page 16: İçerik : Gra flar](https://reader036.vdocuments.net/reader036/viewer/2022062422/56813ac1550346895da2d0fe/html5/thumbnails/16.jpg)
Breath-First Search (BFS)• İşlem adımları:
1. Seçilen düğümün tüm komşuları sırasıyla seçilir ve ziyaret edilir.
2. Her komşu kuyruk içerisine atılır.3. Komşu kalmadığında Kuyruk içerisindeki ilk
düğüm alınır ve 2. adıma gidilir.
16
![Page 17: İçerik : Gra flar](https://reader036.vdocuments.net/reader036/viewer/2022062422/56813ac1550346895da2d0fe/html5/thumbnails/17.jpg)
Breath-First Search (BFS)• Sonuçların gösterilmesi
– Her bir v düğümü için, d[v]’yi (s ve v arasındaki uzaklığı) kaydetmemiz gerekiyor.
• “v” ve “s” düğümleri arasındaki uzaklık, “s” den “v” ye giden yol üzerindeki minimum düğüm sayısıdır.
• Dolayısıyla d[s] = 0
– Ayrıca aile (parent) düğümünü de tutmamız gerekiyor. v den s ye giderken yoldaki ilk düğüm
• pred[s] = 0 (pred predecessor önceki)
17
![Page 18: İçerik : Gra flar](https://reader036.vdocuments.net/reader036/viewer/2022062422/56813ac1550346895da2d0fe/html5/thumbnails/18.jpg)
18
BFS – Gerçekleştirimi
• Başlangıçta tüm düğümler (başlangıç düğümü hariç) beyaza boyanır. Anlamı henüz bulunmadı demektir.
• Düğüm bulunduğu zaman, griye boyanıyor. • Gri düğüm işlendiği zaman siyaha boyanıyor.
s s s
1
1
1
2
2
2
22
2
![Page 19: İçerik : Gra flar](https://reader036.vdocuments.net/reader036/viewer/2022062422/56813ac1550346895da2d0fe/html5/thumbnails/19.jpg)
19
BFS – Gerçekleştirimi
• Arama da kuyruk (FIFO) kullanılıyor.• Ayrıca dizi de kullanılır.
– color[u], u düğümünün rengini tutar• Beyaz, gri veya siyah
– pred[u], u düğümünün önceki düğümünü tutar• u’yu bulan düğüm
– d[u], s den u’ya uzaklık
s s s
1
1
1
2
2
2
22
2
![Page 20: İçerik : Gra flar](https://reader036.vdocuments.net/reader036/viewer/2022062422/56813ac1550346895da2d0fe/html5/thumbnails/20.jpg)
20
BFS GerçekleştirimiBFS(G, s){ for each u in D- {s} { // İlk değerleri atama color[u] = white; d[u] = SONSUZ; pred[u] = NULL; } //end-for
color[s] = GRAY; // s’nin ilk değerlerini atama d[s] = 0; pred[s] = NULL; K = {s}; // s’yi kuyruğa koy while (K boş değilken){ u = Cikart(K); // u bir sonraki düğüm
for each v in Adj[u] { if (color[v] == white){ // Eğer v bulunmadı ise color[v] = gray; // … Bulundu şeklinde
işaretle d[v] = d[u] + 1; // … uzaklığı ayarla pred[v] = u; // … öncekini ayarla Ekle(v); //… kuyruğa ekle } //end-if } //end-for
color[u] = black; // u ile işimiz bitti } //end-while} //end-BFS
Çalışma Zamanı?
O(n + k)
O(1)
O(n)
O(k)
n kez
![Page 21: İçerik : Gra flar](https://reader036.vdocuments.net/reader036/viewer/2022062422/56813ac1550346895da2d0fe/html5/thumbnails/21.jpg)
21
BFS - Örnek
t s x
wvu
∞
∞∞ ∞
0
K: s
t s x
wvu
∞
1∞ ∞
10
K: v, x
t s x
wvu
∞
12 2
10
K: x, u, w
t s x
wvu
∞
12 2
10
K: u, wt s x
wvu
3
12 2
10
K: w, tt s x
wvu
3
12 2
10
K:
∞
1
1
2 2
3
![Page 22: İçerik : Gra flar](https://reader036.vdocuments.net/reader036/viewer/2022062422/56813ac1550346895da2d0fe/html5/thumbnails/22.jpg)
22
BFS Ağacı
t
s
x
wvu
3
12 2
10
0
1 1
22
3
v x
u
t
w
• BSF nin önceki işaretçisini izleyerek ters ağaç oluşturulabilir.– BFS ağacı için bir çok olasılık vardır. Aramanın
nerede başladığı ve düğümlerin hangi sıraya göre kuyruğa eklendiği önemlidir.
![Page 23: İçerik : Gra flar](https://reader036.vdocuments.net/reader036/viewer/2022062422/56813ac1550346895da2d0fe/html5/thumbnails/23.jpg)
Depth-First Search (DFS)• Bir v düğümüne gidildikten sonra v
düğümünün bir komşusu seçilir ve ziyaret edilir.
• Ardından onun bir komşusu seçilir ve ard arda komşu seçimi yapılarak devam edilir.
• Komşu kalmadığında geri dönülür.
23
![Page 24: İçerik : Gra flar](https://reader036.vdocuments.net/reader036/viewer/2022062422/56813ac1550346895da2d0fe/html5/thumbnails/24.jpg)
24
DFS - Örnek
fab
c g
ab
cc
b f
gg
fa
d ed ed e
a
b
c
f
g
d e
DFS(a) ağacı
![Page 25: İçerik : Gra flar](https://reader036.vdocuments.net/reader036/viewer/2022062422/56813ac1550346895da2d0fe/html5/thumbnails/25.jpg)
DFS - Gerçekleştirim• Yönlendirilmiş G = (V, E) grafının verildiğini
düşünelim.– Aynı algoritma yönlendirilmemiş graflar için de çalışır.
• 4 tane yardımcı dizi kullanıyoruz.– color[u]
• White – bulunmamış• Gray – bulunmuş fakat işlenmemiş• Black – işlenmiş
– pred[u], u’dan önceki eleman• u’yu bulan eleman
– İki tane zaman tutucu• d[u]: Düğümün bulunma zamanı
– BSF deki uzaklık ile karıştırmayın.• f[u]: Düğümün işlenme zamanı
25
![Page 26: İçerik : Gra flar](https://reader036.vdocuments.net/reader036/viewer/2022062422/56813ac1550346895da2d0fe/html5/thumbnails/26.jpg)
DFS - Gerçekleştirim• DFS işlem adımları
1. Önce bir başlangıç düğümü seçilir ve ziyaret edilir.
2. Seçilen düğümün bir komşusu seçilir ve ziyaret edilir.
3. 2. adımda ziyaret edilecek komşu kalmayıncaya kadar devam edilir.
4. Komşu kalmadığında tekrar geri dönülür ve önceden ziyaret edilmiş düğümler için adım 2 ve 3 tekrarlanır.
26
![Page 27: İçerik : Gra flar](https://reader036.vdocuments.net/reader036/viewer/2022062422/56813ac1550346895da2d0fe/html5/thumbnails/27.jpg)
27
DFS – GerçekleştirimDFS(G, s){ for each u in V { // İlk değerleri atama color[u] = white; pred[u] = NULL; } //end-for
time = 0; for each u in V if (color[u] == white) // Ziyaret edilmemiş düğüm
bulundu DFSVisit(u); // Yeni bir aramaya başla} // end-DFS
DFSVisit(u){ // u üzerinde yeni bir arama başlat color[u] = gray; // u’yu ziyaret edildi şeklinde
işaretle d[u] = ++time; for each v in Adj[u] { if (color[v] == white){ // Eğer komşu v bulunmadı ise pred[v] = u; // … önceki olarak kaydet DFSVisit(v); // …v’yi ziyaret et } //end-if } //end-for
color[u] = black; // u ile işimiz bitti. f[u] = ++time; } //end-while} //end-DFSVisit
Çalışma Zamanı?
O(n + k)
O(n)
O(k)
![Page 28: İçerik : Gra flar](https://reader036.vdocuments.net/reader036/viewer/2022062422/56813ac1550346895da2d0fe/html5/thumbnails/28.jpg)
28
DFS - Örnek
d e
fab
c g
1/10
a
2/5 6/9 12/13
11/14
3/4 7/8
b
c
f
gC
FB
d
eC
C
![Page 29: İçerik : Gra flar](https://reader036.vdocuments.net/reader036/viewer/2022062422/56813ac1550346895da2d0fe/html5/thumbnails/29.jpg)
29
Parantez Yapısı1/10
a
2/5 6/9 12/13
11/14
3/4 7/8
b
c
f
gC
FB
d
eC
C
1 2 3 4 5 6 7 8 9 10 11 121314
a d
b
c
f
g
e
• Zaman tutucu ile güzel bir yapı oluşturulabilir. – d[u] sol parantezi “(“– f[u] sağ parantezi “)“ temsil eder.