Graflar (Graphs)

Transkript

Graflar (Graphs)
Graflar (Graphs)
z
z
z
z
z
z
Graf gösterimi
Uygulama alanları
Graf terminolojisi
Depth first dolaşma
Breadth first dolaşma
Topolojik sıralama
Yrd.Doç.Dr. M. Ali Akcayol
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar
z
Graflar bilgi parçaları arasındaki ilişkileri gösterirler.
z
Bir G graf V ile gösterilen node’lardan (verteks) ve E ile
gösterilen kenarlardan (Edge) oluşur. Her kenar iki node’u
birleştirir.
z
Her node bir bilgi parçasını gösterir.
z
Her kenar iki bilgi arasındaki ilişkiyi gösterir ve (u, v) şeklinde
şeklinde
ifade edilir. (u, v) iki node’u gösterir.
node
edge
G. Ü. Bilgisayar Mühendisliği Bölümü
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
G. Ü. Bilgisayar Mühendisliği Bölümü
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.
2555
337
HNL
43
17
LAX
1233
849
ORD
802
SFO
1843
DFW
7
138
2
14
PVD
LGA
1120
10
99
MIA
G. Ü. Bilgisayar Mühendisliği Bölümü
2
Graflar
Kenar türleri:
Directed edge (Yönlendirilmiş kenar)
z
z
z
z
Sıralı node çiftleriyle ifade edilir. (u, v) ile (v, u) aynı değildir.
İlk node orijin ve ikinci node ise hedef olarak adlandırılır.
Örnek: iki nokta arasındaki uçuş.
Undirected edge (Yönlendirilmemiş kenar)
z
z
z
Sırasız node çiftleriyle ifade edilir. (u, v) ile (v, u) aynı şeyi ifade
ederler.
Örnek: uçuş rotası
Yönlendirilmiş graf
z
z
Bütün kenarları yönlendirilmiş graftır.
Yönlendirilmemiş graf
z
z
Hiçbir kenarı yönlendirilmemiş graftır.
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Terminoloji)
Komşu (Adjacent)
z
Eğer (u, v) ∈ E ise u ve v node’ları komşudur.
v
(u, v)
u
u ve v komşudur
v ve w komşu değildir
k
w
G. Ü. Bilgisayar Mühendisliği Bölümü
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
v1
- v2, v3, v4, v2, v1 bir yoldur.
v3
v5
v4
- v2, v3, v4, v5 bir basit yoldur.
G. Ü. Bilgisayar Mühendisliği Bölümü
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.
v2
v1
- v2, v3, v4, v5 , v3, v2 bir cycle’dır v4
v3
v5
- v2, v3, v4, v2 bir basit cycle’dır
G. Ü. Bilgisayar Mühendisliği Bölümü
4
Graflar (Terminoloji - devam)
Bağlı ve bağlı olmayan graf
z
z
Eğer bir graftaki tüm node’lar arasında en azından bir yol varsa
bağlı graftır.
Eğer bir grafta herhangi iki node arasında yol bulunmuyorsa
bağlı olmayan graftır.
v2
v1
v3
v5
v4
bağlı graf
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Terminoloji - devam)
Bağlı ve bağlı olmayan graf (devam)
v7
v3
v1
v8
v2
v4
v5
v6
v9
bağlı olmayan graf
G. Ü. Bilgisayar Mühendisliği Bölümü
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
v1
v4
v7
v3
v5
v6
v8
v9
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (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ü
6
Graflar (Terminoloji - devam)
Alt graf
z
G (V, E) şeklinde gösterilen bir grafın alt grafı H(U, F) ise U ⊆ V
ve F ⊆ E olur.
v2
v1
v2
v3
v5
v4
v3
v5
v4
H
G
G. Ü. Bilgisayar Mühendisliği Bölümü
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.
İstanbul
Ankara
2000
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.
Multiple edge
Self edge
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Terminoloji - devam)
z
z
z
z
a,b ve d kenarları V node’unun kenar bağlantılarıdır.
X node’unun derecesi 5’ tir.
h ve i çoklu (multiple) kenarlardır.
j kendi kendisine döngüdür (self loop).
a
U
V
b
d
h
Z
X
c
e
W
j
i
g
f
Y
G. Ü. Bilgisayar Mühendisliği Bölümü
8
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.
İstanbul
Ankara
1000
Directed edge
2000
3500
İzmir
G
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Oluşturulması)
z Komşu
matrisi (Adjacency matrix)
Graf iki boyutlu matrisle gösterilir.
z Komşu
listesi (Adjacency list)
Graph n elemanlı m tane bağlı listeyle
gösterilir. n ilgili node’a komşu olan node
sayısını, m ise toplam node sayısını ifade eder.
G. Ü. Bilgisayar Mühendisliği Bölümü
9
Graflar (Oluşturulması-Komşu Matrisi)
z
Yönlendirilmiş graf için komşu matrisi
Matris[i][j] = 1
0
if (vi, vj)∈E
if (vi, vj)∉E
2
3
4
5
v1 v2 v3 v4 v5
v2
v1
1
v3
v5
v4
G
1 v1 0
1
0
0
0
2 v2 0
0
0
1
0
3 v3 0
1
0
1
0
4 v4 0
0
0
0
0
5 v5 0
0
1
1
0
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Oluşturulması-Komşu Matrisi)
z
Ağırlıklandırılmış ancak yönlendirilmemiş graf için
komşu matrisi
Matris[i][j] = w(vi, vj)
∞
v1
v2
5
4
G
v3
2
3
8
v4
if (vi, vj)∈E or (vj, vi)∈E
otherwise
7
v5
1
2
3
4
5
v1
v2
v3
v4
v5
1
v1
∞
5
∞
∞
∞
2
v2
5
∞
2
4
∞
3
v3
∞
2
∞
3
7
4
v4
∞
4
3
∞
8
5
v5
∞
∞
7
8
∞
G. Ü. Bilgisayar Mühendisliği Bölümü
10
Graflar (Oluşturulması-Komşu Matrisi)
Örnek
1
1
2
3
1
2
3
1
0
0
1
2
0
1
1
2
3
1
0
0
1
2
3
4
3
4
1
0
1
1
0
2
1
0
0
0
3
1
0
0
0
4
0
0
0
0
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Oluşturulması-Komşu Listesi)
z
Yönlendirilmiş graf için komşu listesi
1 v1 → v2
v2
v1
v3
v5
v4
2 v2 → v4
3 v3 → v2 → v4
4 v4
5 v5 → v3 → v4
G
G. Ü. Bilgisayar Mühendisliği Bölümü
11
Graflar (Oluşturulması-Komşu Listesi)
z
Yönlendirilmiş ve ağırlıklandırılmış graf için komşu
listesi
v2
v1
5
4
v4
v3
2
3
8
7
v5
1
2
3
4
5
G
v1
v2
v3
v4
v5
→
→
→
→
→
v2(5)
v1(5)
v2(2)
v2(4)
v3(7)
→
→
→
→
v3(2) → v4(4)
v4(3) → v5(7)
v3(3) → v5(8)
v4(8)
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Oluşturulması-Komşu Listesi)
Örnek
1
1
2
3
1 Æ 3
2 Æ 2
3 Æ 1Æ2
2
1
2
3
4
Æ
Æ
Æ
Æ
4
3
2 Æ3
1
1
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.
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Dolaşma - Traversal)
z
Depth first dolaşma
z Bir 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
z Bir 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ü
13
Graflar (Dolaşma - Traversal)
z
Depth first arama işlem adımları
Önce bir başlangıç node’u seçilir ve ziyaret edilir.
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.
1.
2.
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Dolaşma - Traversal)
z
Depth first arama
0
1.
1
2.
4
2
3
5
7
4.
5.
6
8
3.
s node’unu seç
visit s
// örn. ekrana yaz
for each edge <s, U>
// U komşu node
if U is not visit
DFS(G, U)
9
G. Ü. Bilgisayar Mühendisliği Bölümü
14
Graflar (Dolaşma - Traversal)
z
Depth first arama
0
3
1
4
2
3
0
5
7
6
9
8
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Dolaşma - Traversal)
z
Depth first arama
0
0
3
1
7
4
2
3
5
7
6
8
9
G. Ü. Bilgisayar Mühendisliği Bölümü
15
Graflar (Dolaşma - Traversal)
z
Depth first arama
0
0
3
1
7
4
2
3
8
5
7
6
9
8
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Dolaşma - Traversal)
z
Depth first arama
0
0
3
1
7
4
2
3
8
9
5
7
6
8
9
G. Ü. Bilgisayar Mühendisliği Bölümü
16
Graflar (Dolaşma - Traversal)
z
Depth first arama
0
0
3
1
7
4
2
3
9
5
7
8
6
6
9
8
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Dolaşma - Traversal)
z
Depth first arama
0
0
3
1
7
4
2
3
8
9
5
6
2
7
6
8
9
G. Ü. Bilgisayar Mühendisliği Bölümü
17
Graflar (Dolaşma - Traversal)
z
Depth first arama
0
0
3
1
7
4
2
3
8
9
5
6
2
7
6
5
9
8
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Dolaşma - Traversal)
z
Depth first arama
0
0
3
1
7
4
2
3
8
9
5
6
2
7
6
8
5
9
G. Ü. Bilgisayar Mühendisliği Bölümü
18
Graflar (Dolaşma - Traversal)
z
Depth first arama
0
0
3
1
7
4
2
3
8
9
5
7
6
2
6
5
4
9
8
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Dolaşma - Traversal)
z
Depth first arama
0
0
3
1
7
4
2
3
8
9
5
6
2
7
6
8
5
9
4
1
G. Ü. Bilgisayar Mühendisliği Bölümü
19
Graflar (Dolaşma - Traversal)
z
Depth first arama
0
0
3
1
7
4
2
3
8
9
5
6
2
7
6
5
4
1
9
8
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Dolaşma - Traversal)
z
Depth first arama
0
0
3
1
7
4
2
3
8
9
5
6
2
7
6
8
5
9
4
1
G. Ü. Bilgisayar Mühendisliği Bölümü
20
Graflar (Dolaşma - Traversal)
z
Depth first arama
0
0
3
1
7
4
2
3
8
9
5
6
2
7
6
5
4
1
9
8
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Dolaşma - Traversal)
z
Depth first arama
0
0
3
1
7
4
2
3
8
9
5
6
2
7
6
8
5
9
4
1
G. Ü. Bilgisayar Mühendisliği Bölümü
21
Graflar (Dolaşma - Traversal)
z
Depth first arama
0
0
3
1
7
4
2
3
8
9
5
6
2
7
6
8
5
9
4
1
G. Ü. Bilgisayar Mühendisliği Bölümü
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ü
22
Graflar (Dolaşma - Traversal)
z
Breadth first arama
0
0
1
4
2
3
5
7
6
9
8
0
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Dolaşma - Traversal)
z
Breadth first arama
0
0
1
3
1
4
2
3
2
5
7
6
9
8
123
G. Ü. Bilgisayar Mühendisliği Bölümü
23
Graflar (Dolaşma - Traversal)
z
Breadth first arama
0
0
1
3
4
2
3
7
8
2
1
6
5
7
6
9
8
68712
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Dolaşma - Traversal)
z
Breadth first arama
0
0
1
3
4
2
3
7
8
2
6
4
1
5
5
7
6
9
8
456871
G. Ü. Bilgisayar Mühendisliği Bölümü
24
Graflar (Dolaşma - Traversal)
z
Breadth first arama
0
0
1
3
4
2
3
7
8
2
6
4
1
5
5
7
6
9
8
45687
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Dolaşma - Traversal)
z
Breadth first arama
0
0
1
3
4
2
3
7
8
2
6
4
1
5
5
7
6
9
8
4568
G. Ü. Bilgisayar Mühendisliği Bölümü
25
Graflar (Dolaşma - Traversal)
z
Breadth first arama
0
0
1
3
4
2
3
7
6
4
1
5
9
5
7
8
2
6
9
8
9456
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Dolaşma - Traversal)
z
Breadth first arama
0
0
1
3
4
2
3
5
7
7
8
2
6
4
1
5
9
6
9
8
9456
G. Ü. Bilgisayar Mühendisliği Bölümü
26
Graflar (Dolaşma - Traversal)
z
Breadth first arama
0
0
1
3
4
2
3
7
6
4
1
5
9
5
7
8
2
6
9
8
945
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Dolaşma - Traversal)
z
Breadth first arama
0
0
1
3
4
2
3
5
7
7
8
2
6
4
1
5
9
6
9
8
94
G. Ü. Bilgisayar Mühendisliği Bölümü
27
Graflar (Dolaşma - Traversal)
z
Breadth first arama
0
0
1
3
4
2
3
7
6
4
1
5
9
5
7
8
2
6
9
8
9
G. Ü. Bilgisayar Mühendisliği Bölümü
Graflar (Dolaşma - Traversal)
z
Breadth first arama
0
0
1
3
4
2
3
5
7
7
8
2
6
4
1
5
9
6
8
9
G. Ü. Bilgisayar Mühendisliği Bölümü
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
a
c
d
e
Örnekteki grafta topolojik sıralama aşağıdaki gibi
yapılabilir.
z
1- a, c, b, e, d
2- c, a, b, e, d
a
b
c
e
d
G. Ü. Bilgisayar Mühendisliği Bölümü
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ı
200
olarak kullanılacaktır.
10
z
Herhangi bir şehirden
başlayarak tüm şehirleri
dolaşmak için gerekli olan
algoritmayı depth first
dolaşmayla yapınız.
1
90
200
5
110
230
6
125
50
8
4
75
160
220
7
80
2
3
95
100
9
G. Ü. Bilgisayar Mühendisliği Bölümü
29

Benzer belgeler

Graf Üzerinde Dolaşma

Graf Üzerinde Dolaşma a,b ve d kenarları V node’unun kenar bağlantılarıdır. X node’unun derecesi 5’ tir. h ve i çoklu (multiple) kenarlardır. j kendi kendisine döngüdür (self loop).

Detaylı