33
VERİ YAPILARI GRAPH’LAR Düzce Üniversitesi Teknoloji Fakültesi ÖĞR.GÖR.GÜNAY TEMÜR 1

VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

Embed Size (px)

Citation preview

Page 1: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

VERİ YAPILARIGRAPH’LAR

Düzce Üniversitesi

Teknoloji Fakültesi

ÖĞR.GÖR.GÜNAY TEMÜR 1

Page 2: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

GRAPH (ÇİZGE - GRAF)

Terminoloji

Çizge Kullanım Alanları

Çizge Gösterimi

Komşuluk Matrisi

Komşuluk Listesi

Çizge Üzerinde Gezinme

DFS

BFS

İlgili Algoritmalar

Toplojik Sıralama

ÖĞR.GÖR.GÜNAY TEMÜR 2

Page 3: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

ÇİZGE (GRAPH) GİRİŞ

•Köşe (vertex) isimli düğümlerden ve kenar (edge) isimli

köşeleri birbirine bağlayan bağlantılardan oluşan veri

yapısıdır.

•Ağaçlar gibi çizgeler de doğrusal olmayan veri yapılarıgrubuna girerler.

ÖĞR.GÖR.GÜNAY TEMÜR 3

düğüm

C

D

E

A F

B

kenar

Page 4: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

ÇİZGE (GRAPH) GİRİŞ (DEVAM…)

• Bir G çizgesi G(V, E) şeklinde gösterilir:

a. V = V(G) Kümesi: Küme elemanları, G’nin düğümleri

(nodes), noktaları (points) veya köşeleri (vertices)

b. E = E(G) Kümesi: Küme elemanları G’nin kenarları

(edges) olarak adlandırılan sırasız düğüm ikililerini içerir.

ÖĞR.GÖR.GÜNAY TEMÜR 4

Page 5: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

ÇİZGE (GRAPH) GİRİŞ (DEVAM…)

Çizgeler, düzlemsel diyagramlarla gösterilir.

V kümesindeki her v düğümü bir nokta (ya da küçük çember) iletemsil edilir ve her e = {v1, v2} kenarı, v1 ve v2 uç noktalarınıbağlayan bir çizgi ile gösterilir.

Örnek:

ÖĞR.GÖR.GÜNAY TEMÜR 5

V = {A, B, C, D}

E = {e1, e2, e3, e4, e5}

Page 6: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

YÖNLÜ VE YÖNSÜZ KENAR

Yönsüz Kenar (undirected edge): Çizgi seklinde yönü belirtilmeyen kenarlar yönsüz kenarlardır.

Yönsüz kenarlarda (v1,v2) olması ile (v2,v1) olması arasında fark yoktur.

Yönlü Kenar (directed edge): Ok şeklinde gösterilen kenarlar yönlü kenarlardır.

ÖĞR.GÖR.GÜNAY TEMÜR 6

Page 7: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

TERMİNOLOJİ

1. Komşu Köşeler (Adjacent): Aralarındadoğrudan bağlantı (kenar) bulunan i ve jköşeleri komşudur. Diğer köşe çiftleri komşudeğildir.

2. Bağlantı (incident): Komşu i ve j köşeleriarasındaki kenar (i, j) bağlantıdır.

3. Bir Köşenin Derecesi (degree): Bir köşeyebağlı olan kenarların sayısıdır.

ÖĞR.GÖR.GÜNAY TEMÜR 7

Soru1: Komşu olmayan köşeler hangileridir?

Soru2: 1’in derecesi kaçtır?

Page 8: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

TERMİNOLOJİ (DEVAM…)

4. Yönsüz Çizge (undirected graph): Tüm kenarlarıyönsüz olan çizgeye yönsüz çizge denilir. Yönsüzçizgede bir köşe çifti arasında en fazla bir kenarolabilir.

5. Yönlü Çizge (directed graph, digraph): Tümkenarları yönlü olan çizgeye yönlü çizge adı verilir.Yönlü çizgede bir köşe çifti arasında ters yönlerdeolmak üzere en fazla iki kenar olabilir.

6. Döngü (Loop): (i, i) seklinde gösterilen ve bir köşeyikendine bağlayan kenar.

ÖĞR.GÖR.GÜNAY TEMÜR 8

Page 9: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

TERMİNOLOJİ (DEVAM…)

Yönlü Çizge ve Döngü (Loop)

ÖĞR.GÖR.GÜNAY TEMÜR 9

• G=(V, E)

• V={0,1,2,3,4}

• E={(0,1), (1,2), (0,3), <3,0>, <2,2>, <4,3>}

0

4

1

2

3

Page 10: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

TERMİNOLOJİ (DEVAM…)

7. Ağırlıklı (Weighted) Çizge: Çizge kenarları üzerindeağırlıkları olabilir. Eğer kenarlar üzerinde ağırlıklarvarsa bu tür çizgelere ağırlıklı/maliyetli çizge(Weighted Graphs) denir. Ağırlık uygulamadanuygulamaya değişir.

Şehirler arasındaki uzaklık

Routerler arası bant genişliği

ÖĞR.GÖR.GÜNAY TEMÜR 10

Sakarya

Bilecik İzmit

5

8

4

Page 11: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

YOL (PATH)

Basit Yol (Simple Path): Tüm düğümlerin farklı olduğu yoldur.

Daire (Cycle): Başlangıç ve bitiş düğümleri aynı olan basit yol.(Tamamlanmış Graf)

Uzunluk: Bir yol üzerindeki kenarların sayısının toplamıdır.

ÖĞR.GÖR.GÜNAY TEMÜR 11

Basit Yol: Sakarya, İzmit veya Sakarya, Bilecik

Daire: Sakarya, İzmit, Bilecik, Sakarya

Sakarya

Bilecik İzmit

5

8

4

Page 12: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

ÇİZGE KULLANIM ALANLARI

Bilgisayar ağlarında, elektriksel ve diğer ağların analizinde,

Kimyasal bileşiklerin moleküler yapılarının araştırılmasında,

Ulaşım ağlarında (kara, deniz ve havayolları),

Planlama projelerinde,

Sosyal alanlarda ve diğer pek çok alanda kullanılmaktadır.

Not: Eğer bir problemin çözümü GRAF veri modelinebenzetilebiliyorsa, o problem için algoritmik birdurum elde edilmiş olur.

ÖĞR.GÖR.GÜNAY TEMÜR 12

Page 13: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

ÇİZGE KULLANIM ALANLARI (DEVAM…)

ÖĞR.GÖR.GÜNAY TEMÜR13

Örnek (Generic)

• V = 6 kişi: sırasıyla yaşları:

• Ahmet, Hilal, Cem, Deniz, Derya ve Yunus,

• 12, 15, 12, 15, 13 ve 13.

• E ={(x, y) | Eğer x, y den daha genç ise}

Ahmet Cem

Hilal Deniz

Derya Yunus

Page 14: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

ÇİZGE KULLANIM ALANLARI (DEVAM…)

ÖĞR.GÖR.GÜNAY TEMÜR 14

Örnek (Uçuş sistemi)• Her bir düğüm bir şehri gösterir

• Her bir kenar iki şehir arasındaki doğrudan uçuşu gösterir

• Doğrudan uçuşların sorgulanmasında cevap bir kenardır.

• Bir yere ulaşmak için “A’ dan B’ ye yol varmı” sorusu sorulur.

• Maliyetleri kenarlara bile ekleyebiliriz. (ağırlıklı), daha sonra

“A’dan B’ ye en ucuz yol hangisidir?” diye sorabiliriz.

Page 15: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

ÇİZGE GÖSTERİMİ

İki popüler gösterim bulunmaktadır. Her ikisi de farklı yönlerden düğüm ve kenar kümelerini gösterir.

1. Komşuluk Matrisi: Çizgeyi göstermek için D matrisi kullanılır.

2. Komşuluk Listesi: Bağlantılı listelerin bir boyutlu dizisi kullanılır.

ÖĞR.GÖR.GÜNAY TEMÜR 15

Page 16: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

KOMŞULUK MATRİSİ

ÖĞR.GÖR.GÜNAY TEMÜR 16

Page 17: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

KOMŞULUK MATRİSİ (DEVAM…)

ÖĞR.GÖR.GÜNAY TEMÜR 17

2

4

3

5

1

7

6

9

8

0

0 1 2 3 4 5 6 7 8 9

0 0 0 0 0 0 0 0 0 1 0

1 0 0 1 1 0 0 0 1 0 1

2 0 1 0 0 1 0 0 0 1 0

3 0 1 0 0 1 1 0 0 0 0

4 0 0 1 1 0 0 0 0 0 0

5 0 0 0 1 0 0 1 0 0 0

6 0 0 0 0 0 1 0 1 0 0

7 0 1 0 0 0 0 1 0 0 0

8 1 0 1 0 0 0 0 0 0 1

9 0 1 0 0 0 0 0 0 1 0

Page 18: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

KOMŞULUK MATRİSİ (DEVAM…)

İki boyutlu dizi ile gerçekleştirilebilir.

Uygulaması basittir.

Kenar Oluşturmak ve kaldırmak kolaydır.

Hafızada fazla yer kaplar.

ÖĞR.GÖR.GÜNAY TEMÜR 18

Page 19: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

KOMŞULUK LİSTESİ

ÖĞR.GÖR.GÜNAY TEMÜR 19

Page 20: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

KOMŞULUK LİSTESİ (DEVAM…)

ÖĞR.GÖR.GÜNAY TEMÜR 20

0

1

2

3

4

5

6

7

8

9

2 3 7 9

8

1 4 8

1 4 5

2 3

3 6

5 7

1 6

0 2 9

1 8

2

4

3

5

1

7

6

9

8

0

Page 21: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

KOMŞULUK LİSTESİ (DEVAM…)

Bağlı liste içeren dizi ile gerçekleştirimi yapılır.

Uygulaması daha karmaşıktır.

Hafıza kullanımı komşuluk matrisine göre daha optimaldir.

ÖĞR.GÖR.GÜNAY TEMÜR 21

Page 22: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

ÖRNEK – YÖNLÜ ÇİZGE

ÖĞR.GÖR.GÜNAY TEMÜR 22

Komşuluk Listesi

Komşuluk Matrisi

Page 23: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

ÇİZGE ÜZERİNDE GEZİNME (TRAVERSE)

Çizge üzerinde dolaşma; çizge düğümleri vekenarları üzerinde istenen bir işi yapacak veya birproblemi çözecek biçimde hareket etmektir.

Çizge üzerinde dolaşma yapan birçok yaklaşım veyöntem bulunmaktadır. En önemli iki tanesi aşağıdakigibidir:

BFS (Breadth First Search) (Sığ Öncelikli Arama) Yöntemi

DFS (Depth First Search) (Derin Öncelikli Arama) Yöntemi

ÖĞR.GÖR.GÜNAY TEMÜR 23

Page 24: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

ÇİZGE ÜZERİNDE GEZİNME (DEVAM…)

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 (backtracking) ve diğer kenarı dene.

Tüm düğümler gezilene kadar devam et.

Breadth-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 gibiilerle.

ÖĞR.GÖR.GÜNAY TEMÜR 24

Page 25: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

DFS GÖSTERİM

ÖĞR.GÖR.GÜNAY TEMÜR 25

Çizge

ÇIKTI : a

STACK

c f e b g h d

fc

d b

ea

g

h

Page 26: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

BFS GÖSTERİM

ÖĞR.GÖR.GÜNAY TEMÜR 26

Çizge

ÇIKTI : a

YIĞIN

c d f h e b g

fc

d b

ea

g

h

Page 27: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

GRAFLARIN BELLEK ÜZERİNDE TUTULMASI

Bellek

Gereksinimi

Bağlantı

Sorugulama

Bağlantı

Ekleme

Matris Üzerinde N2*b O(1) O(1)

İki Dizi Üzerinde ((2*m-c)+(N+1)*b O(d) O(m)

Bağlantılı Liste İle N*(b+(d*a)) O(N2) O(N2)

Dizi-Bağlantılı Liste (N+2*m)*(b+a) O(d) O(d)

ÖĞR.GÖR.GÜNAY TEMÜR 27

N= Düğüm Sayısı

m= Kenar sayısı

d= Düğüm derecesi

c= Çevrimli kenar sayısı

b= Veri türü boyutu

a= Bellek adres boyutu

Page 28: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

TOPLOJİK SIRALAMA

Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan biralgoritmadır.

Hatırlayalım:

ÖĞR.GÖR.GÜNAY TEMÜR 28

f

d b

e

a f

d b

e

a

DöngülüDöngüsüz

Page 29: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

ÖRNEK:

C1,C2,C3,C4,C5 alınması gereken 5 adet ders olsun. Buna bağlı

olarak;

C1 ve C2 nin ön şartı yok,

C3, C1 ve C2 yi ön şart alıyor,

C4, C3 ü ön şart alıyor,

C5, C3 ve C4 ü ön şart alıyor,

Bu şartlara bağlı olarak öğrencilerin dersleri alma sırasını oluşturalım.

ÖĞR.GÖR.GÜNAY TEMÜR 29

Page 30: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

ÖRNEK: (DEVAM...)

Dersleri grafların köşeleri, ön şartları da yönlü kenarlar kabul ederek, bir graf oluşturalım;

ÖĞR.GÖR.GÜNAY TEMÜR 30

c3

c2 c5

c4c1

Page 31: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

ÖRNEK: (DEVAM...)

NASIL SIRALANACAK: İndirge ve Çöz yöntemiyle kendisine gelen vekenar bulunmayan bir düğümü kaynak olarak seçip graftan çıkarıpişlemler (n-1) düğümlü graf ile devam ettirilir. Graf ta hiç düğümkalmayınca çözüm tamamlanmış olur.

ÖĞR.GÖR.GÜNAY TEMÜR 31

c3

c2 c5

c4c1

c3

c2

c5c4

c1

Eşit Olduğu İçin

Page 32: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

İYİ ÇALIŞMALAR…

ÖĞR.GÖR.GÜNAY TEMÜR 32

Page 33: VERİ YAPILARI GRAPH’LARakademik.duzce.edu.tr/Content/Dokumanlar/gunaytemur/... ·  · 2016-12-23Bu algoritma yönlü döngüsüz graflar üzerinde tanımlanan bir algoritmadır

YARARLANILAN KAYNAKLAR

•Ders Kitabı:

•Data Structures through JAVA, V.V.Muniswamy

•Yardımcı Okumalar:

•Data Structures and Algorithms in Java, NarashimaKarumanchi

•Data Structures, Algorithms and Applications in Java, SartajSahni

•Algorithms, Robert Sedgewick

•Yrd. Doç. Dr. Deniz KILINÇ, Celal Bayar Üniversitesi

ÖĞR.GÖR.GÜNAY TEMÜR 33