54
Graf

Graf

Embed Size (px)

DESCRIPTION

Graf. Graflar. Problemlerin modellenmesinde çok kullanışlıdır İçeriği : Düğümler - Vertices Kenarlar - Edges. Kenarlar bağlantıları gösterir. D. E. C. A. F. B. düğüm. kenar. Uygulamalar. Uçuş sistemi. Herbir düğüm bir şehri gösterir - PowerPoint PPT Presentation

Citation preview

Page 1: Graf

Graf

Page 2: Graf

Graph / Slide 2

Graflar Problemlerin modellenmesinde çok kullanışlıdır İçeriği:

Düğümler - Vertices Kenarlar - Edges

DE

AC

FB

düğüm

kenar

Kenarlar bağlantıları gösterir.

Page 3: Graf

Graph / Slide 3

UygulamalarUçuş sistemi

• Herbir düğüm bir şehri gösterir• Herbir 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.• Maaliyetleri kenarlara bile ekleyebiliriz. (ağırlıklı - weighted graflar), daha sonra “A’dan B’ ye en ucuz yol hangisidir” diye sorabiliriz.

Page 4: Graf

Graph / Slide 4

Another application Wireless communication

• Can be represented by a weighted complete graph (every two vertices are connected by an edge).

• Each edge represents the Euclidean distance dij between two stations.

• Each station uses a certain power i to transmit messages. Given this power i, only a few nodes can be reached (bold edges). A station reachable by i then use its own power to relay the message to other stations not reachable by i.

• A typical wireless communication problem is: how to broadcast between all stations such that they are all connected and the power consumption is minimized.

Page 5: Graf

Graph / Slide 5

Tanım Yönlendirilmemiş Graf

Bir yönlendirilmemiş graf sıralı bir ikili ile gösterilir (V,E), V düğümler kümesidir ve E kenarlar kümesidir.

{c,f}

{a,c}{a,b}

{b,d} {c,d}

{e,f}

{b,e}

Page 6: Graf

Graph / Slide 6

Terminoloji

1. Eğer v1 ve v2 bağlantılı iseler, bitişik düğümler olarak isimlendirilirler.

v1 ve v2 , {v1, v2} kenarının son noktalarıdır.

• Eğer bir kenar e is v’ ye bağlı ise , v, e’ ye gelen (incident) olarak isimlendirilir. Ayrıca, kenar e, v’ye gelen olarak isimlendirilir.

• {v1, v2} = {v2, v1}*

Page 7: Graf

Graph / Slide 7

Graf Gösterimi İki popüler gösterim vardır. Her ikisi de farklı

yönlerden düğüm ve kenar kümelerini gösterir.

1. Komşuluk Matrisi

Grafı göstermek için ‘D matris kullanılır.

2. Komşuluk Listesi

Bağlantılı listelerin bir boyutlu dizisi kullanılır.

Page 8: Graf

Graph / Slide 8

Komşuluk Matrisi

•Alan karmaşıklığı Θ(n2). Eğer graf az kenara sahipse etkili değil .•O(1) zamanda iki düğümün bağlı olup olmadığını bulur.

Page 9: Graf

Graph / Slide 9

Komşuluk Listesi

Page 10: Graf

Graph / Slide 10

Örnek

2

4

3

5

1

76

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 11: Graf

Graph / Slide 11

Örnek

2

4

3

5

1

76

9

8

0 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

Page 12: Graf

Graph / Slide 12

Komşuluk matrisinin depolanması Dizi Θ(n) kadar alan tutar.

v derecesini tanımla, deg(v), v’ye gelen (giriş) kenarların sayısını tutar. Öyleyse, grafı depolamak için gereken alan aşağıdaki ile orantılıdır.

Grafın bir kenarı e={u,v}, deg(u) değerini bir attırır ve deg(v) değerini 1 arttırır.

Böylece , Σvertex vdeg(v) = 2m, m kenarların toplamıdır.

Sonuç olarak, komşuluk listesi Θ(n+m) kadar yer tutar. Eğer m = O(n2), komşuluk matrisinin ve listesinin herikiside Θ(n2) kadar alan

kullanır. Eğer m = O(n), komşuluk listesi, komşuluk matrisinden daha avantajlıdır.

Buna karşılık, hiçkimse O(1) zaman biriminde iki düğümün bağlı olup olmadığını söyleyemez.

v

vvertex

)deg(

Page 13: Graf

Graph / Slide 13

Komşulık Listesinin ve Matrisinin Karşılaştırılması

Komşuluk Listeleri Komşuluk matrislerinden daha az yer kaplar eğer graf az kenara

sahipse Eğer bir kenar varsa, kenarın bulunması için daha fazla zaman

harcanır.

Komşuluk Matrisi Her zaman n2 alan gerektirir

Eğer kenarlar seyrekse, alan israfına yol açar Eğer bir kenar varsa kolaylıkla bulunabilir

Page 14: Graf

Graph / Slide 14

Düğümler arası yol Bir yol (path ) düğümlerin bir sırasıdır (v0, v1, v2,

… vk) öyleki:

0 ≤ i < k için , {vi, vi+1} bir kenardır

0 ≤ i < k-1 için, vi ≠ vi+2 Yani, kenarlar {vi, vi+1} ≠ {vi+1, vi+2}

Not: bir yolun aynı düğüm veya aynı kenar üzerinden herhangi bir sayıda geçmesine izin verilmiştir.

Bir yolun uzunluğu (length ) yol üzerindeki kenar sayısının toplamıdır.

Page 15: Graf

Graph / Slide 15

Yol Tipleri

Bir yol basittir (simple ) ancak ve ancak bir düğüm bir yolda birden fazla kullanılmamışsa.

Bir yol döngüdür (cycle ) ancak ve ancak v0= vk

Başlangıç ve bitiş aynı düğüm!

Bir yol birden fazla döngü içerebilir eğer bazı düğümler iki veya daha fazla görünürse

Page 16: Graf

Graph / Slide 16

Örnekler

1. {a,c,f,e}

2. {a,b,d,c,f,e}

3. {a, c, d, b, d, c, f, e}

4. {a,c,d,b,a}

5. {a,c,f,e,b,d,c,a}

Bunlar bir yol mu?

Döngü var mı?

Yolun uzunluğu nedir?

Page 17: Graf

Graph / Slide 17

Graf Gezme Örnek

Verilen bir graf gösterimi ve bir s düğümü için grafta s ‘ ten diğer düğümlere olan bütün yolları bul.

En çok bililen iki bilinen graf gezme algoritması Genişlik Öncelikli Arama - (Breadth-First Search (BFS))

Ağırlıklandırılmamış grafta en kısa yolu bul Derinlik Öncelikli Arama (Depth-First Search (DFS))

Topolojik Sıralama Sıkı bağlanmış elemanları bul (strongly connected

components)

Page 18: Graf

Graph / Slide 18

BFS ve En kısa Yol Problemi Verilen herhangi bir düğüm s için,, BFS s’ ten artan

(uzaklaşan) bir şekilde diğer düğümleri ziyaret eder. Bunu yaparken, BFS s’ten diğer düğümlere olan yolları bulur.

Uzaklık ile kastedilen şey nedir? S’ten başlayan yol üzerindeki kenar sayısıdır.

2

4

3

5

1

76

9

8

0s=vertex 1 için

1 uzaklığında bulunan düğümler 2, 3, 7, 91

1

1

12

22

2

s

Örnek

2 uzaklığında bulunan düğümler? 8, 6, 5, 4

3 uzaklığında bulunan düğümler? 0

Page 19: Graf

Graph / Slide 19

BSF algoritması

Neden Kuyruk Kullanıyoruz?

FIFO ya ihtiyaç var

Page 20: Graf

Graph / Slide 20

Örnek

2

4

3

5

1

76

9

8

0

Komşuluk Listesi

kaynak

0

1

2

3

4

5

6

7

8

9

Ziyaret tablosu (T/F)

F

F

F

F

F

F

F

F

F

F

Q = { }

Ziyaret tablosunu ilklendir (hepsi False)

Q ‘ yu boş olarak ilklendir

Page 21: Graf

Graph / Slide 21

Örnek

2

4

3

5

1

76

9

8

0

Komşuluk listesi

kaynak

0

1

2

3

4

5

6

7

8

9

Ziyaret Tablosu (T/F)

F

F

T

F

F

F

F

F

F

F

Q = { 2 }

2 ziyaret edildiği için bayrak koy

Kuyruğa 2 yi ekle.

Page 22: Graf

Graph / Slide 22

Örnek

2

4

3

5

1

76

9

8

0

Komşuluk Listesi

0

1

2

3

4

5

6

7

8

9

Ziyaret Tablosu (T/F)

F

T

T

F

T

F

F

F

T

F

Q = {2} → { 8, 1, 4 }

Komşuları ziyaret edildi diye işaretle

Çıkar 2. 2’ nin ziyaret edilmemiş komşularını kuyruğa ekle

Neighbors

kaynak

Page 23: Graf

Graph / Slide 23

Örnek

2

4

3

5

1

76

9

8

0

Komşuluk Listesi

0

1

2

3

4

5

6

7

8

9

Ziyaret Tablosu (T/F)

T

T

T

F

T

F

F

F

T

T

Q = { 8, 1, 4 } → { 1, 4, 0, 9 }

Yeni ziyaret edilen komşuları işaretle

Çıkar 8. -- 8’in ziyaret edilmemiş komşularını kuyruğa ekle. -- 2’ nın eklenmediğine dikkat edin. Daha ince ziyaret edilmişti!

komşular

kaynak

Page 24: Graf

Graph / Slide 24

Örnek

2

4

3

5

1

76

9

8

0

Komşuluk Listesi

0

1

2

3

4

5

6

7

8

9

Ziyaret Tablosu (T/F)

T

T

T

T

T

F

F

T

T

T

Q = { 1, 4, 0, 9 } → { 4, 0, 9, 3, 7 }

Çıkar 1. -- 1’in ziyaret edilmemiş komşularını kuyruğa ekle. -- Sadece 3 ve 7 henüz ziyaret edilmedi.

Komşular

kaynak

Yeni ziyaret edilen komşuları işaretle

Page 25: Graf

Graph / Slide 25

Örnek

2

4

3

5

1

76

9

8

0

Komşuluk Listesi

0

1

2

3

4

5

6

7

8

9

Ziyaret Tablosu (T/F)

T

T

T

T

T

F

F

T

T

T

Q = { 4, 0, 9, 3, 7 } → { 0, 9, 3, 7 } Çıkar 4. -- 4’ ün ziyatet edilmemiş komşusu yok!

Komşularkaynak

Page 26: Graf

Graph / Slide 26

Örnek

2

4

3

5

1

76

9

8

0

Komşuluk Listesi

0

1

2

3

4

5

6

7

8

9

Ziyaret Tablosu (T/F)

T

T

T

T

T

F

F

T

T

T

Q = { 0, 9, 3, 7 } → { 9, 3, 7 } Çıkar 0. -- 0’ ın ziyaret edilmemiş komşusu yok!

Komşular

kaynak

Page 27: Graf

Graph / Slide 27

Örnek

2

4

3

5

1

76

9

8

0

Komşuluk Listesi

0

1

2

3

4

5

6

7

8

9

Ziyaret Tablosu (T/F)

T

T

T

T

T

F

F

T

T

T

Q = { 9, 3, 7 } → { 3, 7 } Çıkar 9. -- 9’un ziyaret edilmiş komşusu yok!

Komşular

kaynak

Page 28: Graf

Graph / Slide 28

Örnek

2

4

3

5

1

76

9

8

0

Komşuluk Listesi

0

1

2

3

4

5

6

7

8

9

Ziyaret Tablosu (T/F)

T

T

T

T

T

T

F

T

T

T

Q = { 3, 7 } → { 7, 5 } Çıkar 3. -- 5’i kuyruğa ekle.

Komşular

kaynak

Yeni ziyaret düğüm5’ i işaretle

Page 29: Graf

Graph / Slide 29

Örnek

2

4

3

5

1

76

9

8

0

Komşuluk Listesi

0

1

2

3

4

5

6

7

8

9

Ziyaret Tablosu (T/F)

T

T

T

T

T

T

T

T

T

T

Q = { 7, 5 } → { 5, 6 } Çıkar 7. -- 6’ yı kuyruğa ekle.

Komşular

kaynak

Yeni ziyaret düğüm6’ yı işaretle

Page 30: Graf

Graph / Slide 30

Örnek

2

4

3

5

1

76

9

8

0

Komşuluk Listesi

0

1

2

3

4

5

6

7

8

9

Ziyaret Tablosu (T/F)

T

T

T

T

T

T

T

T

T

T

Q = { 5, 6} → { 6 } Çıkar 5. -- 5’in ziyaret edilmemiş komşusu yok.

Komşularkaynak

Page 31: Graf

Graph / Slide 31

Örnek

2

4

3

5

1

76

9

8

0

Komşuluk Listesi

0

1

2

3

4

5

6

7

8

9

Ziyaret Tablosu (T/F)

T

T

T

T

T

T

T

T

T

T

Q = { 6 } → { } Çıkar 6. -- 6’nın ziyaret edilmemiş komşusu yok.

Komşular

kaynak

Page 32: Graf

Graph / Slide 32

Örnek

2

4

3

5

1

76

9

8

0

Komşuluk Listesi

0

1

2

3

4

5

6

7

8

9

Ziyaret Tablosu (T/F)

T

T

T

T

T

T

T

T

T

T

Q = { }

Dur!!! Q boş!!!

Neyi keşfettik?

Ziyaret tablosuna bak.

Grafta kaynak düğüm 2’den bütün düğümlere bir yol vardır.

kaynak

Page 33: Graf

Graph / Slide 33

BFS’ nin Zaman Karmaşılığı(Komşuluk Listesi kullanarak)

Komşuluk listesi olduğunu varsayalım n = düğüm sayısı m = kenar sayısı

Herbir düğümen fazla bir kere Q’ ya girecek

Herbir iterasyon deg(v) + 1 ifadesine orantılı olarak zaman alacaktır (1 sayısı deg(v) = 0 olduğu durumu içerir).

O(n + m)

Page 34: Graf

Graph / Slide 34

Çalışma Zamanı m kenarlı verilen bir graf için, toplam derece nedir?

While döngüsünun toplam çalışma zamanı

Bu toplam while döngü içerisindeki bütün iterasyonları kapsar.

O( Σvertex v (deg(v) + 1) ) = O(n+m)

Σvertex v deg(v) = 2m

Page 35: Graf

Graph / Slide 35

BFS’ nin Zaman Karmaşıklığı(Komşuluk Matrisi kullanarak)

Komşuluk matrisi olduğunu varsayalım n = düğüm sayısı m = kenar sayısı

V’nin komşu düğümlerini bulmak satırdaki bütün elemanları kontrol etmeyi gerektirir. Bu lineer zaman alır O(n).

n iterasyonun toplamı ile birlikte toplam çalışma zamanı O(n2).

O(n2)

Böylece, komşuluk matrisi ile, BFS O(n2) m kenar sayısına bağlı değildir. Bağlantılı liste ile, BFS O(n+m); Eğer m=O(n2) ise yoğun graf gibi çalışır, O(n+m)=O(n2).

Page 36: Graf

Graph / Slide 36

En Kısa Yolun Kaydedilmesi BFS, kaynak s’ ten diğer v düğümlerine bir yolun olup

olmadığını bize söyler. Yolu söylemez! Yolu kaydetmek için algoritmayı modifiye etmemiz gerekir. -

Nasıl yapabiliriz? Not: v’ ye ulaşana kadar yolda olan düğümleri bilmiyoruz. Etkili çözüm:

Ek bir dizi kullan onceki[0..n-1] onceki[w] = v düğüm w’ye v ‘den ulaşıldığı manasına gelir.

Page 37: Graf

Graph / Slide 37

BFS + Yol Bulma

ilklendir pred[v] to -1

Nerden geldiğini kaydet

Page 38: Graf

Graph / Slide 38

Örnek

2

4

3

5

1

76

9

8

0

Komşuluk Listesi

0

1

2

3

4

5

6

7

8

9

Ziyaret Tablosu (T/F)

F

F

F

F

F

F

F

F

F

F

Q = { }

Ziyaret tablosunu ilklendir (hepsiFalse)

onceki’ ni -1 yap

Q ilk başta boş

-

-

-

-

-

-

-

-

-

-

onceki

kaynak

Page 39: Graf

Graph / Slide 39

Örnek

2

4

3

5

1

76

9

8

0

0

1

2

3

4

5

6

7

8

9

F

F

T

F

F

F

F

F

F

F

Q = { 2 }

Flag that 2 has been visited.

Ekle 2.

-

-

-

-

-

-

-

-

-

-

Komşuluk Listesi Ziyaret Tablosu (T/F)

kaynak

onceki

Page 40: Graf

Graph / Slide 40

Örnek

2

4

3

5

1

76

9

8

0

0

1

2

3

4

5

6

7

8

9

F

T

T

F

T

F

F

F

T

F

Q = {2} → { 8, 1, 4 }

Komşular ziyaret edildi olarak işaretle.

Oncekine 2’den gelindiğini kaydet.

çıkar 2. 2’nin ziyaret edilmemiş bütün komşularını kuyruğa ekle

Komşular

-

2

-

-

2

-

-

-

2

-

Komşuluk Listesi Ziyaret Tablosu (T/F)

kaynak

onceki

Page 41: Graf

Graph / Slide 41

Örnek

2

4

3

5

1

76

9

8

0

0

1

2

3

4

5

6

7

8

9

T

T

T

F

T

F

F

F

T

T

Q = { 8, 1, 4 } → { 1, 4, 0, 9 }

Çıkar 8. -- 8’in ziyaret edilmemiş komşularını ekle.

Komşular

8

2

-

-

2

-

-

-

2

8

Komşuluk Listesi Ziyaret Tablosu (T/F)

kaynak

oncekiKomşular ziyaret edildi olarak işaretle.

Oncekine 8’den gelindiğini kaydet.

Page 42: Graf

Graph / Slide 42

Örnek

2

4

3

5

1

76

9

8

0

0

1

2

3

4

5

6

7

8

9

T

T

T

T

T

F

F

T

T

T

Q = { 1, 4, 0, 9 } → { 4, 0, 9, 3, 7 }

Çıkar 1. -- Ziyaret edilmemiş komşuları ekle . -- 3,7

Komşular

8

2

-

1

2

-

-

1

2

8

Komşuluk Listesi Ziyaret Tablosu (T/F)

kaynak

oncekiKomşular ziyaret edildi olarak işaretle.

Oncekine 1’den gelindiğini kaydet.

Page 43: Graf

Graph / Slide 43

Örnek

2

4

3

5

1

76

9

8

0

0

1

2

3

4

5

6

7

8

9

T

T

T

T

T

F

F

T

T

T

Q = { 4, 0, 9, 3, 7 } → { 0, 9, 3, 7 } Çıkar 4. -- 4’ün ziyaret edilmemiş komşusu yok!

Komşular

8

2

-

1

2

-

-

1

2

8

Komşuluk Listesi Ziyaret Tablosu (T/F)

kaynak

onceki

Page 44: Graf

Graph / Slide 44

Örnek

2

4

3

5

1

76

9

8

0

0

1

2

3

4

5

6

7

8

9

T

T

T

T

T

F

F

T

T

T

Q = { 0, 9, 3, 7 } → { 9, 3, 7 } Çıkar 0. -- 0’ın ziyaret edilmemiş komşusu yok!

Komşular8

2

-

1

2

-

-

1

2

8

Komşuluk Listesi Ziyaret Tablosu (T/F)

kaynak

onceki

Page 45: Graf

Graph / Slide 45

Örnek

2

4

3

5

1

76

9

8

0

0

1

2

3

4

5

6

7

8

9

T

T

T

T

T

F

F

T

T

T

Q = { 9, 3, 7 } → { 3, 7 } Çıkar 9. -- 9’un ziyaret edilmemiş komşusu yok!

Komşular

8

2

-

1

2

-

-

1

2

8

Komşuluk Listesi Ziyaret Tablosu (T/F)

kaynak

onceki

Page 46: Graf

Graph / Slide 46

Örnek

2

4

3

5

1

76

9

8

0

0

1

2

3

4

5

6

7

8

9

T

T

T

T

T

T

F

T

T

T

Q = { 3, 7 } → { 7, 5 } Çıkar 3. -- Komşu 5’i kuyruğa ekle.

Komşular

8

2

-

1

2

3

-

1

2

8

Komşuluk Listesi Ziyaret Tablosu (T/F)

kaynak

oncekiKomşular ziyaret edildi olarak işaretle.

Oncekine 3’den gelindiğini kaydet.

Page 47: Graf

Graph / Slide 47

Örnek

2

4

3

5

1

76

9

8

0

0

1

2

3

4

5

6

7

8

9

T

T

T

T

T

T

T

T

T

T

Q = { 7, 5 } → { 5, 6 } Çıkar 7. -- Komşu 6’yı kuyruğa ekle.

Komşular

8

2

-

1

2

3

7

1

2

8

Komşuluk Listesi Ziyaret Tablosu (T/F)

kaynak

oncekiKomşular ziyaret edildi olarak işaretle.

Oncekine 7’den gelindiğini kaydet.

Page 48: Graf

Graph / Slide 48

Örnek

2

4

3

5

1

76

9

8

0

0

1

2

3

4

5

6

7

8

9

T

T

T

T

T

T

T

T

T

T

Q = { 5, 6} → { 6 } Çıkar 5. -- 5’in ziyaret edilmemiş komşusu yok.

Komşular

8

2

-

1

2

3

7

1

2

8

Komşuluk Listesi Ziyaret Tablosu (T/F)

kaynak

onceki

Page 49: Graf

Graph / Slide 49

Örnek

2

4

3

5

1

76

9

8

0

0

1

2

3

4

5

6

7

8

9

T

T

T

T

T

T

T

T

T

T

Q = { 6 } → { } Çıkar 6. -- 6’nın ziyaret edilmemiş komşusu yok.

Komşular

8

2

-

1

2

3

7

1

2

8

Komşuluk Listesi Ziyaret Tablosu (T/F)

kaynak

onceki

Page 50: Graf

Graph / Slide 50

Örnek

2

4

3

5

1

76

9

8

0

0

1

2

3

4

5

6

7

8

9

T

T

T

T

T

T

T

T

T

T

Q = { }

Dur!!! Q boş!!!

Şimdi yolu rapor etmek için onceki geriye doğru izlenebilir!

8

2

-

1

2

3

7

1

2

8

Komşuluk Listesi Ziyaret Tablosu (T/F)

kaynak

onceki

Page 51: Graf

Graph / Slide 51

Yolun Gösterilmesi

8

2

-

1

2

3

7

1

2

8

0

1

2

3

4

5

6

7

8

9

nodes visited from

Örnekler deneyelim, s’ ten v’ ye yolları bulalım:Yol(0) ->Yol(6) ->Yol(1) ->

Bulunan yollar en kısa yollardır.

Page 52: Graf

Graph / Slide 52

BFS ağacı

BFS ile bulan yollar genellikle köklü bir ağaç olarak çizilebilir. (BFS ağaç olarak isimlendirilir), Kökte başlangıç düğümü tutulur.

BFS düğüm s=2 için.

Page 53: Graf

Graph / Slide 53

En kısa mesafeleri nasıl kaydederiz

d(v) = ;

d(w)=d(v)+1;

d(s) = 0;

Page 54: Graf

Graph / Slide 54

BFS’nin Uygulamaları

Bir graftaki bağlantılı elemanları nasıl bulmak için kullanılır.

Eğer bir grafta birden fazla bağlantılı eleman varsa, BFS, bir BFS-orman (sadece BFS-ağaç değil) kurar! Ormandaki herbir ağaç bağlantılı elemandır.