DSL9 Graph
DSL9 Graph
z Graf gösterimi
z Uygulama alanları
z Graf terminolojisi
z Depth first dolaşma
z Breadth first dolaşma
z Topolojik sıralama
Graflar
node
edge
1
Graflar
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
Graflar
Örnek gösterim:
849 PVD
1843 ORD 2
SFO 14
802
43 LGA
17
337
7
HNL 2555 138 10
99
1233
LAX DFW 1120
MIA
2
Graflar
Kenar türleri:
Graflar (Terminoloji)
Komşu (Adjacent)
v k
(u, v)
u w
u ve v komşudur
v ve w komşu değildir
3
Graflar (Terminoloji - devam)
Yol ve basit yol
z Bir yol v1 den vk ya kadar sıralı node’ları (v1, v2), (v2, v3), …, (vk-1,
vk) kenarlarıyla birbirine bağlar.
z Bir basit yolda her bir node sadece bir kez bulunur.
v2 v3
v1
v2
v1 v3
4
Graflar (Terminoloji - devam)
Bağlı ve bağlı olmayan graf
z Eğer bir graftaki tüm node’lar arasında en azından bir yol varsa
bağlı graftır.
z Eğer bir grafta herhangi iki node arasında yol bulunmuyorsa
bağlı olmayan graftır.
v2
v1 v3
v4 v5
bağlı graf
v1 v3 v7 v8
v2
v4 v5
v6 v9
5
Graflar (Terminoloji - devam)
Bağlı eleman (connected component)
z Eğer bir graf bağlı değilse, bağlı alt gruplara göre parçalanabilir.
Bu parçaların herbirine bağlı eleman denir.
v2 v7 v8
v1 v3
v4 v5
v6 v9
z Eğer bir graftaki her iki node arasında bir kenar varsa komple
graftır.
6
Graflar (Terminoloji - devam)
Alt graf
v2 v2
v1 v3 v3
v4 v5 v4 v5
G H
1000
3500
İzmir
G
G. Ü. Bilgisayar Mühendisliği Bölümü
7
Graflar (Terminoloji - devam)
Multigraf
z Multigraf iki node arasında birden fazla kenara sahip olan veya
bir node’un kendi kendisini gösteren kenara sahip olan graftır.
V
a b
h j
U d X Z
c e i
W g
f
Y
G. Ü. Bilgisayar Mühendisliği Bölümü
8
Graflar (Terminoloji - devam)
Yönlendirilmiş graf (Directed graph - Digraph)
Directed edge
2000 3500
İzmir
G
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Oluşturulması)
9
Graflar (Oluşturulması-Komşu Matrisi)
z Yönlendirilmiş graf için komşu matrisi
Matris[i][j] = 1 if (vi, vj)∈E
0 if (vi, vj)∉E 1 2 3 4 5
v1 v2 v3 v4 v5
v2 1 v1 0 1 0 0 0
v1 v3
2 v2 0 0 0 1 0
3 v3 0 1 0 1 0
v4 v5
4 v4 0 0 0 0 0
G 5 v5 0 0 1 1 0
10
Graflar (Oluşturulması-Komşu Matrisi)
Örnek
1 2 1
3 2 3
4
1 2 3 1 2 3 4
1 0 0 1 1 0 1 1 0
2 0 1 0 2 1 0 0 0
3 1 1 0 3 1 0 0 0
4 0 0 0 0
G. Ü. Bilgisayar Mühendisliği Bölümü
1 v1 → v2
v2 2 v2 → v4
v1 v3
3 v3 → v2 → v4
4 v4
v4 v5
5 v5 → v3 → v4
G
11
Graflar (Oluşturulması-Komşu Listesi)
z Yönlendirilmiş ve ağırlıklandırılmış graf için komşu
listesi
v2
v1 2 v3
5
4 3 7
v4
8 v5
1 v1 → v2(5)
G 2 v2 → v1(5) → v3(2) → v4(4)
3 v3 → v2(2) → v4(3) → v5(7)
4 v4 → v2(4) → v3(3) → v5(8)
5 v5 → v3(7) → v4(8)
G. Ü. Bilgisayar Mühendisliği Bölümü
1 2 1
3 2 3
4
1 Æ 2 Æ3
1 Æ 3
2 Æ 1
2 Æ 2
3 Æ 1
3 Æ 1Æ2
4 Æ
G. Ü. Bilgisayar Mühendisliği Bölümü
12
Graflar (Komşu Matrisi-Komşu Listesi)
z Avantajları dezavantajları
Komşu matrisi
z Çok fazla alana ihtiyaç duyar.
z Daha az hafızaya ihtiyaç duyulması için sparse matris
tekniklerinin kullanılması gerekir.
z Herhangi iki node’un komşu olup olmadığına çok kısa
sürede karar verilebilir.
Komşu listesi
z Bir node’un tüm komşularına hızlı bir şekilde ulaşılır.
z Daha az alana ihtiyaç duyar.
z Oluşturulması matrise göre daha zor olabilir.
13
Graflar (Dolaşma - Traversal)
z Depth first arama işlem adımları
1. Önce bir başlangıç node’u seçilir ve ziyaret edilir.
2. Seçilen node’un bir komşusu seçilir ve ziyaret edilir.
3. [Link]ım ziyaret edecek komşu kalmayıncaya kadar tekrar
edilir.
4. Komşu kalmadığında tekrar geri dönülür ve önceki ziyaret
edilmiş node’lar için adım 2 ve 3 tekrar edilir.
9
8
14
Graflar (Dolaşma - Traversal)
z Depth first arama 0
3
0 1
4
2
3
7 6
9
8
3
0 1
7
4
2
3
7 6
9
8
15
Graflar (Dolaşma - Traversal)
z Depth first arama 0
3
0 1
7
4 8
2
3
7 6
9
8
3
0 1
7
4 8
2
3 9
7 6
9
8
16
Graflar (Dolaşma - Traversal)
z Depth first arama 0
3
0 1
7
4 8
2
3 9
5 6
7 6
9
8
3
0 1
7
4 8
2
3 9
5 6
2
7 6
9
8
17
Graflar (Dolaşma - Traversal)
z Depth first arama 0
3
0 1
7
4 8
2
3 9
5 6
2
7 6
5
9
8
3
0 1
7
4 8
2
3 9
5 6
2
7 6
5
9
8
18
Graflar (Dolaşma - Traversal)
z Depth first arama 0
3
0 1
7
4 8
2
3 9
5 6
2
7 6
5 4
9
8
3
0 1
7
4 8
2
3 9
5 6
2
7 6
5 4
9 1
8
19
Graflar (Dolaşma - Traversal)
z Depth first arama 0
3
0 1
7
4 8
2
3 9
5 6
2
7 6
5 4
9 1
8
3
0 1
7
4 8
2
3 9
5 6
2
7 6
5 4
9 1
8
20
Graflar (Dolaşma - Traversal)
z Depth first arama 0
3
0 1
7
4 8
2
3 9
5 6
2
7 6
5 4
9 1
8
3
0 1
7
4 8
2
3 9
5 6
2
7 6
5 4
9 1
8
21
Graflar (Dolaşma - Traversal)
z Depth first arama 0
3
0 1
7
4 8
2
3 9
5 6
2
7 6
5 4
9 1
8
22
Graflar (Dolaşma - Traversal)
z Breadth first arama
0
0 1
4
2
3
7 6
9
8
4
2
3
7 6
9
8
123
23
Graflar (Dolaşma - Traversal)
z Breadth first arama
0
0 1
3 2 1
4
2 7 8 6
3
7 6
9
8
68712
4
2 7 8 6 4 5
3
7 6
9
8
456871
24
Graflar (Dolaşma - Traversal)
z Breadth first arama
0
0 1
3 2 1
4
2 7 8 6 4 5
3
7 6
9
8
45687
4
2 7 8 6 4 5
3
7 6
9
8
4568
25
Graflar (Dolaşma - Traversal)
z Breadth first arama
0
0 1
3 2 1
4
2 7 8 6 4 5
3
9
5
7 6
9
8
9456
4
2 7 8 6 4 5
3
9
5
7 6
9
8
9456
26
Graflar (Dolaşma - Traversal)
z Breadth first arama
0
0 1
3 2 1
4
2 7 8 6 4 5
3
9
5
7 6
9
8
945
4
2 7 8 6 4 5
3
9
5
7 6
9
8
94
27
Graflar (Dolaşma - Traversal)
z Breadth first arama
0
0 1
3 2 1
4
2 7 8 6 4 5
3
9
5
7 6
9
8
4
2 7 8 6 4 5
3
9
5
7 6
9
8
28
Graflar (Toplojik sıralama)
z Topolojik sıralama
z Toplojik sıralama bir graftaki tüm node’ların doğrusal
sıralamasıdır.
z Node’lar arasında öncelik sırası gözönüne alınır.
b d
a
c e
1- a, c, b, e, d
a b c e d
2- c, a, b, e, d
Graflar
Haftalık Ödev:
z 10 tane şehir için bir graf yapısı oluşturunuz. Her
şehirden komşu şehirlere olan uzaklık kenar ağırlıkları
olarak kullanılacaktır. 200
10 1
95
90
z Herhangi bir şehirden 200 80
4
başlayarak tüm şehirleri 2
3 75
dolaşmak için gerekli olan
160
algoritmayı depth first 220
110
5
dolaşmayla yapınız.
7 230 6
100
50 125
9
8
29