Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Graf. Graph / Slide 2 Graflar * Problemlerin modellenmesinde çok kullanışlıdır * İçeriği: n Düğümler - Vertices n Kenarlar - Edges D E A C F B düğüm kenar.

Benzer bir sunumlar


... konulu sunumlar: "Graf. Graph / Slide 2 Graflar * Problemlerin modellenmesinde çok kullanışlıdır * İçeriği: n Düğümler - Vertices n Kenarlar - Edges D E A C F B düğüm kenar."— Sunum transkripti:

1 Graf

2 Graph / Slide 2 Graflar * Problemlerin modellenmesinde çok kullanışlıdır * İçeriği: n Düğümler - Vertices n Kenarlar - Edges D E A C F B düğüm kenar Kenarlar bağlantıları gösterir.

3 Graph / Slide 3 Uygulamalar Uç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.

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

5 Graph / Slide 5 Tanım * Yönlendirilmemiş Graf n 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}

6 Graph / Slide 6 Terminoloji 1. Eğer v 1 ve v 2 bağlantılı iseler, bitişik düğümler olarak isimlendirilirler.  v 1 ve v 2, {v 1, v 2 } kenarının son noktalarıdır. 2. 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. 3. {v 1, v 2 } = {v 2, v 1 }*

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

8 Graph / Slide 8 Komşuluk Matrisi Alan karmaşıklığı Θ(n 2 ). Eğer graf az kenara sahipse etkili değil. O(1) zamanda iki düğümün bağlı olup olmadığını bulur.

9 Graph / Slide 9 Komşuluk Listesi

10 Graph / Slide 10 Örnek

11 Graph / Slide 11 Örnek

12 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 v deg(v) = 2m, m kenarların toplamıdır. * Sonuç olarak, komşuluk listesi Θ(n+m) kadar yer tutar. n Eğer m = O(n 2 ), komşuluk matrisinin ve listesinin herikiside Θ(n 2 ) kadar alan kullanır. n 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.

13 Graph / Slide 13 Komşulık Listesinin ve Matrisinin Karşılaştırılması * Komşuluk Listeleri n Komşuluk matrislerinden daha az yer kaplar eğer graf az kenara sahipse n Eğer bir kenar varsa, kenarın bulunması için daha fazla zaman harcanır. * Komşuluk Matrisi n Her zaman n 2 alan gerektirir  Eğer kenarlar seyrekse, alan israfına yol açar n Eğer bir kenar varsa kolaylıkla bulunabilir

14 Graph / Slide 14 Düğümler arası yol * Bir yol (path ) düğümlerin bir sırasıdır (v 0, v 1, v 2,… v k ) öyleki: n 0 ≤ i < k için, {v i, v i+1 } bir kenardır n 0 ≤ i < k-1 için, v i ≠ v i+2 Yani, kenarlar {v i, v i+1 } ≠ {v i+1, v i+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.

15 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 v 0 = v k  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

16 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?

17 Graph / Slide 17 Graf Gezme * Örnek n 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)) l Ağırlıklandırılmamış grafta en kısa yolu bul  Derinlik Öncelikli Arama (Depth-First Search (DFS)) l Topolojik Sıralama l Sıkı bağlanmış elemanları bul (strongly connected components)

18 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 s=vertex 1 için 1 uzaklığında bulunan düğümler 2, 3, 7, s Örnek 2 uzaklığında bulunan düğümler? 8, 6, 5, 4 3 uzaklığında bulunan düğümler? 0

19 Graph / Slide 19 BSF algoritması Neden Kuyruk Kullanıyoruz? FIFO ya ihtiyaç var

20 Graph / Slide 20 Örnek Komşuluk Listesi kaynak 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

21 Graph / Slide 21 Örnek Komşuluk listesi kaynak 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.

22 Graph / Slide 22 Örnek Komşuluk Listesi 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

23 Graph / Slide 23 Örnek Komşuluk Listesi 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 ’in ziyaret edilmemiş komşularını kuyruğa ekle. -- 2’ nın eklenmediğine dikkat edin. Daha ince ziyaret edilmişti! komşular kaynak

24 Graph / Slide 24 Örnek Komşuluk Listesi 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 ’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

25 Graph / Slide 25 Örnek Komşuluk Listesi 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 ’ ün ziyatet edilmemiş komşusu yok! Komşular kaynak

26 Graph / Slide 26 Örnek Komşuluk Listesi Ziyaret Tablosu (T/F) T T T T T F F T T T Q = { 0, 9, 3, 7 } → { 9, 3, 7 } Çıkar ’ ın ziyaret edilmemiş komşusu yok! Komşular kaynak

27 Graph / Slide 27 Örnek Komşuluk Listesi Ziyaret Tablosu (T/F) T T T T T F F T T T Q = { 9, 3, 7 } → { 3, 7 } Çıkar ’un ziyaret edilmiş komşusu yok! Komşular kaynak

28 Graph / Slide 28 Örnek Komşuluk Listesi Ziyaret Tablosu (T/F) T T T T T T F T T T Q = { 3, 7 } → { 7, 5 } Çıkar ’i kuyruğa ekle. Komşular kaynak Yeni ziyaret düğüm 5’ i işaretle

29 Graph / Slide 29 Örnek Komşuluk Listesi Ziyaret Tablosu (T/F) T T T T T T T T T T Q = { 7, 5 } → { 5, 6 } Çıkar ’ yı kuyruğa ekle. Komşular kaynak Yeni ziyaret düğüm 6’ yı işaretle

30 Graph / Slide 30 Örnek Komşuluk Listesi Ziyaret Tablosu (T/F) T T T T T T T T T T Q = { 5, 6} → { 6 } Çıkar ’in ziyaret edilmemiş komşusu yok. Komşular kaynak

31 Graph / Slide 31 Örnek Komşuluk Listesi Ziyaret Tablosu (T/F) T T T T T T T T T T Q = { 6 } → { } Çıkar ’nın ziyaret edilmemiş komşusu yok. Komşular kaynak

32 Graph / Slide 32 Örnek Komşuluk Listesi 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

33 Graph / Slide 33 BFS ’ nin Zaman Karmaşılığı ( Komşuluk Listesi kullanarak ) * Komşuluk listesi olduğunu varsayalım n 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)

34 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

35 Graph / Slide 35 BFS’ nin Zaman Karmaşıklığı ( Komşuluk Matrisi kullanarak ) * Komşuluk matrisi olduğunu varsayalım n 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(n 2 ). O(n 2 ) Böylece, komşuluk matrisi ile, BFS O(n 2 ) m kenar sayısına bağlı değildir. Bağlantılı liste ile, BFS O(n+m); Eğer m=O(n 2 ) ise yoğun graf gibi çalışır, O(n+m)=O(n 2 ).

36 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. n Yolu söylemez! n Yolu kaydetmek için algoritmayı modifiye etmemiz gerekir. - * Nasıl yapabiliriz? n Not: v’ ye ulaşana kadar yolda olan düğümleri bilmiyoruz. n 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.

37 Graph / Slide 37 BFS + Yol Bulma ilklendir pred[v] to -1 Nerden geldiğini kaydet

38 Graph / Slide 38 Örnek Komşuluk Listesi 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

39 Graph / Slide 39 Örnek F F T F F F F F F F Q = { 2 } Flag that 2 has been visited. Ekle Komşuluk Listesi Ziyaret Tablosu (T/F) kaynak onceki

40 Graph / Slide 40 Örnek 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 Komşuluk Listesi Ziyaret Tablosu (T/F) kaynak onceki

41 Graph / Slide 41 Örnek T T T F T F F F T T Q = { 8, 1, 4 } → { 1, 4, 0, 9 } Çıkar ’in ziyaret edilmemiş komşularını ekle. Komşular Komşuluk Listesi Ziyaret Tablosu (T/F) kaynak onceki Komşular ziyaret edildi olarak işaretle. Oncekine 8’den gelindiğini kaydet.

42 Graph / Slide 42 Örnek T T T T T F F T T T Q = { 1, 4, 0, 9 } → { 4, 0, 9, 3, 7 } Çıkar Ziyaret edilmemiş komşuları ekle. -- 3,7 Komşular Komşuluk Listesi Ziyaret Tablosu (T/F) kaynak onceki Komşular ziyaret edildi olarak işaretle. Oncekine 1’den gelindiğini kaydet.

43 Graph / Slide 43 Örnek T T T T T F F T T T Q = { 4, 0, 9, 3, 7 } → { 0, 9, 3, 7 } Çıkar ’ün ziyaret edilmemiş komşusu yok! Komşular Komşuluk Listesi Ziyaret Tablosu (T/F) kaynak onceki

44 Graph / Slide 44 Örnek T T T T T F F T T T Q = { 0, 9, 3, 7 } → { 9, 3, 7 } Çıkar ’ın ziyaret edilmemiş komşusu yok! Komşular Komşuluk Listesi Ziyaret Tablosu (T/F) kaynak onceki

45 Graph / Slide 45 Örnek T T T T T F F T T T Q = { 9, 3, 7 } → { 3, 7 } Çıkar ’un ziyaret edilmemiş komşusu yok! Komşular Komşuluk Listesi Ziyaret Tablosu (T/F) kaynak onceki

46 Graph / Slide 46 Örnek T T T T T T F T T T Q = { 3, 7 } → { 7, 5 } Çıkar Komşu 5’i kuyruğa ekle. Komşular Komşuluk Listesi Ziyaret Tablosu (T/F) kaynak onceki Komşular ziyaret edildi olarak işaretle. Oncekine 3’den gelindiğini kaydet.

47 Graph / Slide 47 Örnek T T T T T T T T T T Q = { 7, 5 } → { 5, 6 } Çıkar Komşu 6’yı kuyruğa ekle. Komşular Komşuluk Listesi Ziyaret Tablosu (T/F) kaynak onceki Komşular ziyaret edildi olarak işaretle. Oncekine 7’den gelindiğini kaydet.

48 Graph / Slide 48 Örnek T T T T T T T T T T Q = { 5, 6} → { 6 } Çıkar ’in ziyaret edilmemiş komşusu yok. Komşular Komşuluk Listesi Ziyaret Tablosu (T/F) kaynak onceki

49 Graph / Slide 49 Örnek T T T T T T T T T T Q = { 6 } → { } Çıkar ’nın ziyaret edilmemiş komşusu yok. Komşular Komşuluk Listesi Ziyaret Tablosu (T/F) kaynak onceki

50 Graph / Slide 50 Örnek 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! Komşuluk Listesi Ziyaret Tablosu (T/F) kaynak onceki

51 Graph / Slide 51 Yolun Gösterilmesi nodesvisited from Örnekler deneyelim, s’ ten v’ ye yolları bulalım: Yol(0) -> Yol (6) -> Yol (1) -> Bulunan yollar en kısa yollardır.

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

53 Graph / Slide 53 En kısa mesafeleri nasıl kaydederiz d(v) =  ; d(w)=d(v)+1; d(s) = 0;

54 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! n Ormandaki herbir ağaç bağlantılı elemandır.


"Graf. Graph / Slide 2 Graflar * Problemlerin modellenmesinde çok kullanışlıdır * İçeriği: n Düğümler - Vertices n Kenarlar - Edges D E A C F B düğüm kenar." indir ppt

Benzer bir sunumlar


Google Reklamları