Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

1 İçerik: Graflar •Tanım –Yönlü ve yönsüz graflar –Ağırlıklı graflar •Gösterim –Komşuluk Matrisi –Komşuluk Listesi •Dolaşma Algoritmaları –BFS (Breath.

Benzer bir sunumlar


... konulu sunumlar: "1 İçerik: Graflar •Tanım –Yönlü ve yönsüz graflar –Ağırlıklı graflar •Gösterim –Komşuluk Matrisi –Komşuluk Listesi •Dolaşma Algoritmaları –BFS (Breath."— Sunum transkripti:

1 1 İçerik: Graflar •Tanım –Yönlü ve yönsüz graflar –Ağırlıklı graflar •Gösterim –Komşuluk Matrisi –Komşuluk Listesi •Dolaşma Algoritmaları –BFS (Breath First Search) –DFS (Depth-First Search)

2 2 Graflar •Graf, matematiksel anlamda, tepelerden ve bu düğümler arasındaki ilişkiyi gösteren ayrıtlardan oluşan bir kümedir. –Bağlantılı listeler ve ağaçlar grafların özel örneklerindendir. •Bir G grafı V ile gösterilen tepelerden (node veya vertex) ve E ile gösterilen ayrıtlardan (Edge) oluşur. –Her ayrıt iki tepeyi birleştirir. •Her ayrıt, iki bilgi (tepe) arasındaki ilişkiyi gösterir ve (u,v) şeklinde ifade edilir. –(u,v) iki tepeyle gösterilen bir ayrıttır.

3 Graflar - Örnek •G = (V, E) grafı aşağıda verilmiştir. –V = {A, B, C, D, E, F} –E = {(A, B), (A, D), (B, C), (C, D), (C, E), (D, E)} 3 A B C D F E

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

5 Graflar – Ayrıt Türleri •Yönlü Ayrıt (Directed Edge) –Sıralı tepe çiftleri ile ifade edilir. •(u, v) ile (v, u) aynı değildir. –İlk tepe orijin ikinci tepe ise hedef olarak adlandırılır. •Yönsüz Ayrıt (Undirected Edge) –Sırasız tepe çiftleri ile ifade edilir. •(u, v) ile (v, u) aynı şeyi ifade ederler. •Yönlü Graf (Directed Graphs) –Bütün ayrıtları yönlü olan graftır. –Digraph şeklinde de ifade edilirler. •Yönsüz Graf (Undirected Graphs) –Tüm ayrıtları yönsüz olan bir graftır. 5

6 Graflar - Tanımlar •Komşu(Adjacent): Eğer (u, v) ∈ E ise u ve v tepeleri komşudur. –(A, B) komşudur. –(B, D) komşu değildir. –(C, F) komşu değildir. 6 A B C D F E

7 Graflar - Tanımlar •Grafın ayrıtları üzerinde ağırlıkları olabilir. Eğer ayrıtlar üzerinde ağırlıklar varsa bu tür graflara ağırlıklı/maliyetli graf (Weighted Graphs) denir. –Ağırlık uygulamadan uygulamaya değişir. •Şehirler arasındaki uzaklık. •Routerler ararı bant genişliği. •İstasyonlar(petrol, elektirik vs.) arasındaki kurulum maliyeti 7

8 Graf Gösterimi •Zaman ve yer karmaşıklığı aşağıdaki her iki ifade ile de ölçülür. –Düğüm sayısı = |V| = n –Ayrıt sayısı = |E| = m •Graf gösterimi için iki farklı yol vardır. –Komşuluk matrisi –Komşuluk listesi 8

9 Komşuluk Matrisi Gösterimi 9 •Komşuluk Matrisi Gösterimi: 1 (u,v) E’nin içindeyse 0 diğer M(u, v) = A B C D F E ABCDEF A B C D E F Bellek? O(n 2 )

10 10 Komşuluk Matrisi Gösterimi •Komşuluk Matrisi Gösterimi (Ağırlıklı Graf): ağırlık (u, v) (u, v) E’nin içindeyse ∞ diğer M(u, v) = A B C D F E ABCDEF A∞10∞5∞∞ B∞∞20∞∞∞ C∞∞∞3050∞ D∞∞∞∞15∞ E∞∞∞∞∞∞ F∞∞∞∞∞∞

11 11 Komşuluk Listesi Gösterimi •Komşuluk Listesi: (Yönsüz Graflar) A B C D F E Yer? n + 2*m = O(n+m) B D A D E E C B AC CD A B C D E F

12 12 Komşuluk Listesi Gösterimi •Komşuluk Listesi (Yönlü Graflar) A B C D F E Yer? n + m = O(n+m) B D C D E E A B C D E F

13 Graf Üzerinde Dolaşma •Graf üzerinde dolaşma grafın düğümleri ve kenarları üzerinde istenen bir işi yapacak veya bir problemi çözecek biçimde hareket etmektir. •Graf üzerinde dolaşma yapan birçok yaklaşım yöntemi vardır. En önemli iki tanesi aşağıda listelenmiştir. –BFS (Breadth First Search) Yöntemi –DFS (Depth First Search ) Yöntemi 13

14 14 Graf Üzerinde Dolaşma •Breath-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 gibi. •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 ve düğer kenarı dene –Tüm düğümler gezilene kadar devam et.

15 15 Breadth-First Search Algorithm Maintains the following fields for each u  V •color[u]: color of u  WHITE : not discovered yet  GRAY : discovered and to be or being processed  BLACK: discovered and processed •pred [u]: parent of u (NIL of u  s or u is not discovered yet) •d[u]: distance of u from s Processing a vertex  scanning its adjacency list

16 16 Breadth-First Search Algorithm BFS(G, s) for each u  V  {s} do color[u]  WHITE pred[u]  NIL; d [u]   color[s]  GRAY pred[s]  NIL; d [s]  0 Q  {s} while Q   do u  head[Q] for each v in Adj[u] do if color[v]  WHITE then color[v]  GRAY pred[v]  u d [v]  d [u]  1 ENQUEUE(Q, v) DEQUEUE(Q) color[u]  BLACK

17 17 Breadth-First Search Sample Graph: FIFO just after queue Q processing vertex  a  -

18 18 Breadth-First Search FIFO just after queue Q processing vertex  a  -  a,b,c  a

19 19 Breadth-First Search FIFO just after queue Q processing vertex  a  -  a,b,c  a  a,b,c,f  b

20 20 Breadth-First Search FIFO just after queue Q processing vertex  a  -  a,b,c  a  a,b,c,f  b  a,b,c,f,e  c

21 21 Breadth-First Search FIFO just after queue Q processing vertex  a  -  a,b,c  a  a,b,c,f  b  a,b,c,f,e  c  a,b,c,f,e,g,h  f

22 22 Breadth-First Search FIFO just after queue Q processing vertex  a  -  a,b,c  a  a,b,c,f  b  a,b,c,f,e  c  a,b,c,f,e,g,h  f  a,b,c,f,e,g,h,d,i  e all distances are filled in after processing e

23 23 Breadth-First Search FIFO just after queue Q processing vertex  a  -  a,b,c  a  a,b,c,f  b  a,b,c,f,e  c  a,b,c,f,e,g,h  f  a,b,c,f,e,g,h,d,i  g

24 24 Breadth-First Search FIFO just after queue Q processing vertex  a  -  a,b,c  a  a,b,c,f  b  a,b,c,f,e  c  a,b,c,f,e,g,h  f  a,b,c,f,e,g,h,d,i  h

25 25 Breadth-First Search FIFO just after queue Q processing vertex  a  -  a,b,c  a  a,b,c,f  b  a,b,c,f,e  c  a,b,c,f,e,g,h  f  a,b,c,f,e,g,h,d,i  d

26 26 Breadth-First Search FIFO just after queue Q processing vertex  a  -  a,b,c  a  a,b,c,f  b  a,b,c,f,e  c  a,b,c,f,e,g,h  f  a,b,c,f,e,g,h,d,i  i algorithm terminates: all vertices are processed

27 27 Breadth-First Search Algorithm Running time: O(V  E)  considered linear time in graphs •initialization:  (V) •queue operations: O(V)  each vertex enqueued and dequeued at most once  both enqueue and dequeue operations take O(1) time •processing gray vertices: O(E)  each vertex is processed at most once and

28 Breath-First Search (BFS) •Sonuçların gösterilmesi –Her bir v düğümü için, d[v]’yi (s ve v arasındaki uzaklığı) kaydetmemiz gerekiyor. •“v” ve “s” düğümleri arasındaki uzaklık, “s” den “v” ye giden yol üzerindeki minimum düğüm sayısıdır. •Dolayısıyla d[s] = 0 –Ayrıca aile (parent) düğümünü de tutmamız gerekiyor. v den s ye giderken yoldaki ilk düğüm •pred[s] = 0 (pred  predecessor  önceki) 28

29 Depth-First Search (DFS) •Bir v düğümüne gidildikten sonra v düğümünün 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. 29

30 CS 473Lecture 1430 Depth-First Search DFS(G) for each u  V do color[u]  white pred[u]  NIL time  0 for each u  V do if color[u]  white then DFS-VISIT(G, u) color[u]  gray d[u]  time  time  1 for each v  Adj[u] do if color[v]  white then pred[v]  u DFS-V ISIT (G, v) color[u]  black f[u]  time  time  1

31 31 Adjacency Lists A: F G B: A H C: A D D: C F E: C D G F: E: G: : H: B: I: H: F A B C G D E H I Depth-First Search

32 32 F A B C G D E H I dfs(A) A-F A-G Function call stack: Depth-First Search

33 33 F A B C G D E H I dfs(A) A-F A-G Function call stack: visit(F) F-E Depth-First Search

34 34 F A B C G D E H I dfs(A) A-F A-G Function call stack: dfs(F) F-E dfs(E) E-C E-D E-G Depth-First Search

35 35 F A B C G D E H I dfs(A) A-F A-G Function call stack: dfs(F) F-E dfs(E) E-C E-D E-G dfs(C) C-A C-D Depth-First Search

36 36 F A B C G D E H I dfs(A) A-F A-G Function call stack: dfs(F) F-E dfs(E) E-C E-D E-G dfs(C) C-A C-D Depth-First Search

37 37 F A B C G D E H I dfs(A) A-F A-G Function call stack: dfs(F) F-E dfs(E) E-C E-D E-G dfs(C) C-A C-D dfs(D) D-C D-F Depth-First Search

38 38 F A B C G D E H I dfs(A) A-F A-G Function call stack: dfs(F) F-E dfs(E) E-C E-D E-G dfs(C) C-A C-D dfs(D) D-C D-F Depth-First Search

39 39 F A B C G D E H I dfs(A) A-F A-G Function call stack: dfs(F) F-E dfs(E) E-C E-D E-G dfs(C) C-A C-D dfs(D) D-C D-F Depth-First Search

40 40 F A B C G D E H I dfs(A) A-F A-G Function call stack: dfs(F) F-E dfs(E) E-C E-D E-G dfs(C) C-A C-D Depth-First Search

41 41 F A B C G D E H I dfs(A) A-F A-G Function call stack: dfs(F) F-E dfs(E) E-C E-D E-G Depth-First Search

42 42 F A B C G D E H I dfs(A) A-F A-G Function call stack: dfs(F) F-E dfs(E) E-C E-D E-G Depth-First Search

43 43 F A B C G D E H I dfs(A) A-F A-G Function call stack: dfs(F) F-E dfs(E) E-C E-D E-G dfs(G) Depth-First Search

44 44 F A B C G D E H I dfs(A) A-F A-G Function call stack: dfs(F) F-E dfs(E) E-C E-D E-G Depth-First Search

45 45 F A B C G D E H I dfs(A) A-F A-G Function call stack: dfs(F) F-E Depth-First Search

46 46 F A B C G D E H I dfs(A) A-F A-G Function call stack: Depth-First Search

47 47 F A B C G D E H I dfs(A) A-F A-G Function call stack: Depth-First Search

48 48 F A B C G D E H I Nodes reachable from A: A, C, D, E, F, G Depth-First Search


"1 İçerik: Graflar •Tanım –Yönlü ve yönsüz graflar –Ağırlıklı graflar •Gösterim –Komşuluk Matrisi –Komşuluk Listesi •Dolaşma Algoritmaları –BFS (Breath." indir ppt

Benzer bir sunumlar


Google Reklamları