Graf

Preview:

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

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.

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.

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.

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}

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}*

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.

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.

Graph / Slide 9

Komşuluk Listesi

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

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

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(

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

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.

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

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?

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)

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

Graph / Slide 19

BSF algoritması

Neden Kuyruk Kullanıyoruz?

FIFO ya ihtiyaç var

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

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.

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

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

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

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

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

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

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

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

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

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

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

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)

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

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).

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.

Graph / Slide 37

BFS + Yol Bulma

ilklendir pred[v] to -1

Nerden geldiğini kaydet

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

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

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

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.

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.

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

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

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

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.

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.

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

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

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

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.

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.

Graph / Slide 53

En kısa mesafeleri nasıl kaydederiz

d(v) = ;

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

d(s) = 0;

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.

Recommended