Graflar (Graphs)
z
Graf gösterimi
z
Uygulama alanları
z
Graf terminolojisi
z
Depth first dolaşma
z
Breadth first dolaşma
z
Topolojik sıralama
Yrd.Doç.Dr. M. Ali Akcayol G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar
zz Graflar bilgi parçaları arasındaki ilişkileri gösterirler.Graflar bilgi parçaları arasındaki ilişkileri gösterirler.
zz Bir G graf V ile gösterilen node’lardan (verteks) ve E ile Bir G graf V ile gösterilen node’lardan (verteks) ve E ile gösterilen kenarlardan (Edge) oluşur. Her kenar iki node’u gösterilen kenarlardan (Edge) oluşur. Her kenar iki node’u birleştirir.
birleştirir.
z
z Her node bir bilgi parçasını gösterir.Her node bir bilgi parçasını gösterir.
z
z Her kenar iki bilgi arasındaki ilişkiyi gösterir ve (u, v) şeklinde Her kenar iki bilgi arasındaki ilişkiyi gösterir ve (u, v) şeklinde ifade edilir. (u, v) iki node’u gösterir.
ifade edilir. (u, v) iki node’u gösterir.
node
edge
G. Ü. Bilgisayar Mühendisliği Bölümü
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:
z Aşağıdaki şekilde herbir node üç karakter kodlanmış olarak bir havaalanını göstermektedir.
z Herbir kenar iki node arasındaki uçuş rotasını ifade etmekte ve iki node arasındaki uzaklığı ifade etmektedir.
ORD PVD
DFW MIA SFO
LAX
LGA HNL
849
802 1743 1387
1843
1099 1233 1120
337 2555
142
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar
Kenar türleri:
z Directed edge (Yönlendirilmiş kenar)
z Sıralı node çiftleriyle ifade edilir. (u, v) ile (v, u) aynı değildir.
z İlk node orijin ve ikinci node ise hedef olarak adlandırılır.
z Örnek: iki nokta arasındaki uçuş.
z Undirected edge (Yönlendirilmemiş kenar)
z Sırasız node çiftleriyle ifade edilir. (u, v) ile (v, u) aynı şeyi ifade ederler.
z Örnek: uçuş rotası z Yönlendirilmiş graf
z Bütün kenarları yönlendirilmiş graftır.
z Yönlendirilmemiş graf
z Hiçbir kenarı yönlendirilmemiş graftır.
Graflar (Terminoloji)
Komşu (Adjacent)
z Eğer (u, v)
∈ ∈
E ise u ve v node’ları komşudur.v k
u w (u, v)
u ve v komşudur
v ve w komşu değildir
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Terminoloji - devam)
Yol ve basit yol
z Bir yol v1den vkya 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.
v
1v
2v
4v
3v
5- v
2,v
3,v
4,v
2,v
1bir yoldur.
- v
2,v
3,v
4,v
5bir basit yoldur.
Graflar (Terminoloji - devam)
Cycle ve basit cycle
z Bir cycle bir yoldur ve başlama ve bitiş node’ları aynıdır.
z Bir basit cycle’da başlangıç ve bitiş node’ları hariç tüm node’lar sadece bir kez bulunur.
v
1v
4v
3v
5- v
2,v
3,v
4,v
5 ,v
3,v
2bir cycle’dır - v
2,v
3,v
4,v
2bir basit cycle’dır
v
2G. Ü. Bilgisayar Mühendisliği Bölümü
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.
v
1v
4v
3v
5v
2bağlı graf
Graflar (Terminoloji - devam)
Bağlı ve bağlı olmayan graf (devam)
v
1v
4v
3v
5v
2v
7v
6v
8v
9bağlı olmayan graf
G. Ü. Bilgisayar Mühendisliği Bölümü
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.
v
1v
4v
3v
5v
2v
7v
6v
8v
9Graflar (Terminoloji - devam)
Komple graf
z Eğer bir graftaki her iki node arasında bir kenar varsa komple graftır.
3 node ile komple graf 4 node ile komple graf
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Terminoloji - devam)
Alt graf
z G (V, E) şeklinde gösterilen bir grafın alt grafı H(U, F) ise U
⊆ ⊆
Vve F
⊆ ⊆
E olur.v
1v
4v
3v
5v
2G
v
4v
3v
5v
2H
Graflar (Terminoloji - devam)
Ağırlıklandırılmış graf
z Eğer G (V, E) şeklinde gösterilen bir grafta her E kenarına bir ağırlık değeri atanmış ise ağırlıklandırılmış graf olarak adlandırılır.
İzmir İstanbul 2000
1000 3500
Ankara
G. Ü. Bilgisayar Mühendisliği Bölümü
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.
Multiple edge Self edge
Graflar (Terminoloji - devam)
z a,b ve d kenarları V node’unun kenar bağlantılarıdır.
z X node’unun derecesi 5’ tir.
z h ve i çoklu (multiple) kenarlardır.
z j kendi kendisine döngüdür (self loop).
X U
V
W
Z
Y a
c
b
e d
f g
h
i
j
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Terminoloji - devam)
Yönlendirilmiş graf (Directed graph - Digraph)
z Eğer G (V, E) şeklinde gösterilen bir grafta her E kenarı bir yöne (directed edge) sahipse G yönlendirilmiş graftır.
G
Directed edge
İzmir İstanbul 1000
2000 3500
Ankara
Graflar (Oluşturulması)
zz
Komşu matrisi (Adjacency matrix) Graf iki boyutlu matrisle gösterilir.
Graf iki boyutlu matrisle gösterilir.
z
z
Komşu listesi (Adjacency list)
Graph n elemanlı m tane bağlı listeyle Graph n elemanlı m tane bağlı listeyle gösterilir. n ilgili node’a komşu olan node gösterilir. n ilgili node’a komşu olan node
sayısını, m ise toplam node sayısını ifade eder.
sayısını, m ise toplam node sayısını ifade eder.
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Oluşturulması-Komşu Matrisi)
z
Yönlendirilmiş graf için komşu matrisi
v
1v
4v
3v
5v
2G 5 5 v v
550 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 v v
444 4
0 0 1 1 0 0 1 1 0 0 v v
333 3
0 0 1 1 0 0 0 0 0 0 v v
222 2
0 0 0 0 0 0 1 1 0 0 v v
111 1
v v
55v v
44v v
33v v
22v v
115 5 4 4 3 3 2 2 1 1 Matris[i][j] = 1 if (v
i, v
j)∈E
0 if (v
i, v
j)∉E
Graflar (Oluşturulması-Komşu Matrisi)
z
Ağırlıklandırılmış ancak yönlendirilmemiş graf için komşu matrisi
v
1v
4v
3v
5v
2G 5 5 v v
55∞ ∞ ∞ ∞ 7 7 8 8 ∞ ∞ 8 8
∞ ∞ 3 3 4 4
∞ ∞ v v
444 4
7 7 3 3
∞ ∞ 2 2
∞ ∞ v v
333 3
∞ ∞ 4 4 2 2
∞ ∞ 5 5 v v
222 2
∞ ∞
∞ ∞
∞ ∞ 5 5
∞ ∞ v v
111 1
v v
55v v
44v v
33v v
22v v
115 5 4 4 3 3 2 2 1 1
Matris[i][j] = w(v
i, v
j) if (v
i, v
j)∈E or (v
j, v
i)∈E
∞ otherwise
5 2
3 7
8
4
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Oluşturulması-Komşu Matrisi)
Örnek
1 2 3 1 2 3 1
1 0 0 1 0 0 1 2
2 0 1 0 0 1 0 3
3 1 1 0 1 1 0 1
3
2
2 3
1
4
1 2 3 4 1 2 3 4 1
1 0 1 1 0 0 1 1 0 2
2 1 0 0 0 1 0 0 0 3
3 1 0 0 0 1 0 0 0 4 4 0 0 0 0 0 0 0 0
Graflar (Oluşturulması-Komşu Listesi)
z
Yönlendirilmiş graf için komşu listesi
v
1v
4v
3v
5v
2G
v v
44→ → v v
33→ → v v
555 5
v v
444 4
v v
44→ → v v
22→ → v v
333 3
v v
44→ → v v
222 2
v v
22→ →
v
v
111
1
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Oluşturulması-Komşu Listesi)
z
Yönlendirilmiş ve ağırlıklandırılmış graf için komşu listesi
v
1v
4v
3v
5v
2G
5 2
3 7
8 4
v v
44(8) (8) v v
33(3) (3) v v
44(3) (3) v v
33(2) (2)
→ →
→ →
→ →
v v
55(8) (8) v v
55(7) (7) v v
44(4) (4)
→ → v v
33(7) (7)
→ → v v
555 5
→ → v
v
22(4) (4)
→ → v v
444 4
→ → v
v
22(2) (2)
→ → v v
333 3
→ → v
v
11(5) (5)
→ → v v
222 2
v v
22(5) (5)
→ → v v
111 1
Graflar (Oluşturulması-Komşu Listesi) Örnek
1 Æ 1 Æ 3 3 2 Æ 2 Æ 2 2 3 Æ 3 Æ 1 Æ 1 Æ 2 2
1
3
2
2 3
1
4
1 Æ 1 Æ 2 Æ 2 Æ 3 3
2 Æ 2 Æ 1 1
3 Æ 3 Æ 1 1
4 4 Æ Æ
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Komşu Matrisi-Komşu Listesi)
z
Avantajları dezavantajları Komşu matrisi
Komşu matrisi
z
z
Çok fazla alana ihtiyaç duyar. Çok fazla alana ihtiyaç duyar.
z
z
Daha az hafızaya ihtiyaç duyulması için sparse matris Daha az hafızaya ihtiyaç duyulması için sparse matris tekniklerinin kullanılması gerekir.
tekniklerinin kullanılması gerekir.
zz
Herhangi iki node’un komşu olup olmadığına çok kısa Herhangi iki node’un komşu olup olmadığına çok kısa sürede karar verilebilir.
sürede karar verilebilir.
Komşu listesi Komşu listesi
zz
Bir node’un tüm komşularına hızlı bir şekilde ulaşılır. Bir node’un tüm komşularına hızlı bir şekilde ulaşılır.
zz
Daha az alana ihtiyaç duyar. Daha az alana ihtiyaç duyar.
zz
Oluşturulması matrise göre daha zor olabilir. Oluşturulması matrise göre daha zor olabilir.
Graflar (Dolaşma - Traversal)
z
Depth first dolaşma
zBir v node’una gidildikten sonra v node’unun 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.
z
Breadth first dolaşma
zBir v node’una gidildikten sonra v node’unun sırasıyla tüm komşu node’larına gidilir ardından tüm komşu node’ların komşu node’larına gidilir.
G. Ü. Bilgisayar Mühendisliği Bölümü
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.2.adı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.
Graflar (Dolaşma - Traversal)
z
Depth first arama
0 1
2 4
5 3
6 7
8 9
1.
s node’unu seç
2.
visit s
// örn. ekrana yaz
3.
for each edge <s, U>
// U komşu node
4.
if U is not visit
5.
DFS(G, U)
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Dolaşma - Traversal)
z
Depth first arama
0 1
2 4
5 3
6 7
8 9
0 3
Graflar (Dolaşma - Traversal)
z
Depth first arama
0 1
2 4
5 3
6 7
8 9
0 3 7
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Dolaşma - Traversal)
z
Depth first arama
0 1
2 4
5 3
6 7
8 9
0 3 7 8
Graflar (Dolaşma - Traversal)
z
Depth first arama
0 1
2 4
5 3
6 7
8 9
0 3 7 8 9
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Dolaşma - Traversal)
z
Depth first arama
0 1
2 4
5 3
6 7
8 9
0 3 7 8 9 6
Graflar (Dolaşma - Traversal)
z
Depth first arama
0 1
2 4
5 3
6 7
8 9
0 3 7 8 9 6 2
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Dolaşma - Traversal)
z
Depth first arama
0 1
2 4
5 3
6 7
8 9
0 3 7 8 9 6 2 5
Graflar (Dolaşma - Traversal)
z
Depth first arama
0 1
2 4
5 3
6 7
8 9
0 3 7 8 9 6 2 5
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Dolaşma - Traversal)
z
Depth first arama
0 1
2 4
5 3
6 7
8 9
0 3 7 8 9
2 5 4
6
Graflar (Dolaşma - Traversal)
z
Depth first arama
0 1
2 4
5 3
6 7
8 9
0 3 7 8 9
2 5 4
1 6
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Dolaşma - Traversal)
z
Depth first arama
0 1
2 4
5 3
6 7
8 9
0 3 7 8 9
2 5 4
1 6
Graflar (Dolaşma - Traversal)
z
Depth first arama
03 7 8 9
2 5 4
1 6
0 1
2 4
5 3
6 7
8 9
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Dolaşma - Traversal)
z
Depth first arama
03 7 8 9
2 5 4
1 6
0 1
2 4
5 3
6 7
8 9
Graflar (Dolaşma - Traversal)
z
Depth first arama
03 7 8 9
2 5 4
1 6
0 1
2 4
5 3
6 7
8 9
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Dolaşma - Traversal)
z
Depth first arama
03 7 8 9
2 5 4
1 6
0 1
2 4
5 3
6 7
8 9
Graflar (Dolaşma - Traversal)
z
Breadth first arama işlem adımları
1.Breadth first arama ağaçlardaki level order aramaya benzer.
2.Seçilen node’un tüm komşuları sırayla seçilir ve ziyaret edilir.
3.Her komşu queue içerisine atılır.
4.Komşu kalmadığında Queue içerisindeki ilk node alınır ve 2.adıma gidilir.
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Dolaşma - Traversal)
z
Breadth first arama
0 1
2 4
5 3
6 7
8 9
0
0
Graflar (Dolaşma - Traversal)
z
Breadth first arama
0 1
2 4
5 3
6 7
8 9
0
3 2 1
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Dolaşma - Traversal)
z
Breadth first arama
0 1
2 4
5 3
6 7
8 9
68712
0
3 2 1
7 8 6
Graflar (Dolaşma - Traversal)
z
Breadth first arama
0 1
2 4
5 3
6 7
8 9
456871
0
3 2 1
7 8 6 4 5
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Dolaşma - Traversal)
z
Breadth first arama
0 1
2 4
5 3
6 7
8 9
45687
0
3 2 1
7 8 6 4 5
Graflar (Dolaşma - Traversal)
z
Breadth first arama
0 1
2 4
5 3
6 7
8 9
0
3 2 1
7 8 6 4 5
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Dolaşma - Traversal)
z
Breadth first arama
0 1
2 4
5 3
6 7
8 9
9456
0
3 2 1
7 8 6 4 5
9
Graflar (Dolaşma - Traversal)
z
Breadth first arama
0 1
2 4
5 3
6 7
8 9
9456
0
3 2 1
7 8 6 4 5
9
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Dolaşma - Traversal)
z
Breadth first arama
0 1
2 4
5 3
6 7
8 9
945
0
3 2 1
7 8 6 4 5
9
Graflar (Dolaşma - Traversal)
z
Breadth first arama
0 1
2 4
5 3
6 7
8 9
0
3 2 1
7 8 6 4 5
9
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Dolaşma - Traversal)
z
Breadth first arama
0 1
2 4
5 3
6 7
8 9
9
0
3 2 1
7 8 6 4 5
9
Graflar (Dolaşma - Traversal)
z
Breadth first arama
0 1
2 4
5 3
6 7
8 9
0
3 2 1
7 8 6 4 5
9
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Toplojik sıralama)
z
Topolojik sıralama
zToplojik sıralama bir graftaki tüm node’ların doğrusal sıralamasıdır.
zNode’lar arasında öncelik sırası gözönüne alınır.
zÖrnekteki grafta topolojik sıralama aşağıdaki gibi yapılabilir.
1- a, c, b, e, d 2- c, a, b, e, d
b d
c e a
a b c 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.
z
Herhangi bir şehirden başlayarak tüm şehirleri dolaşmak için gerekli olan algoritmayı depth first dolaşmayla yapınız.
10 1
2 4
5 3
6 7
9
200 90
200
95 80 75
110
100 125 230 220 160
50