Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

İçerik: Graflar Tanım Gösterim Dolaşma Algoritmaları

Benzer bir sunumlar


... konulu sunumlar: "İçerik: Graflar Tanım Gösterim Dolaşma Algoritmaları"— Sunum transkripti:

1 İçerik: Graflar Tanım Gösterim Dolaşma Algoritmaları
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 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)} B C A F D E

4 Uygulama Alanları Elektronik devreler Ulaşım Ağları Bilgisayar Ağları
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

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.

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. B C A F D 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

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

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

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 E F 10 5 20 30 50 15 20 A B C D F E 10 30 50 5 15

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

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

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

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 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 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 Breadth-First Search FIFO just after queue Q processing vertex a -
Sample Graph: FIFO just after queue Q processing vertex a

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

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

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

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.

30 Depth-First Search DFS-VISIT(G, u) color[u] gray d[u] time  time 1
DFS(G) for each uV do color[u] white pred[u]  NIL time  0 if color[u]  white then DFS-VISIT(G, u) 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-VISIT(G, v) color[u] black f[u] time  time 1 CS 473 Lecture 14

31 Depth-First Search 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: B H C G I D E F

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


"İçerik: Graflar Tanım Gösterim Dolaşma Algoritmaları" indir ppt

Benzer bir sunumlar


Google Reklamları