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

İçerik : Gra flar

Embed Size (px)

DESCRIPTION

İçerik : Gra flar. 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 F irst Search ) DFS ( Depth-First Search ). Graflar. - PowerPoint PPT Presentation

Citation preview

Page 1: İçerik : Gra flar

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)

Page 2: İçerik : Gra flar

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.

Page 3: İçerik : Gra flar

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

Page 4: İçerik : Gra flar

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

Page 5: İçerik : Gra flar

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

Page 6: İçerik : Gra flar

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

Page 7: İçerik : Gra flar

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

Page 8: İçerik : Gra flar

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

Page 9: İçerik : Gra flar

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

A B C D E F

A 0 1 0 1 0 0

B 0 0 1 0 0 0

C 0 0 0 1 1 0

D 0 0 0 0 1 0

E 0 0 0 0 0 0

F 0 0 0 0 0 0

Bellek?

O(n2)

Page 10: İçerik : Gra flar

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ğerM(u, v) =

A

B C

D

F

E

A B C D E F

A ∞ 10 ∞ 5 ∞ ∞

B ∞ ∞ 20 ∞ ∞ ∞

C ∞ ∞ ∞ 30 50 ∞

D ∞ ∞ ∞ ∞ 15 ∞

E ∞ ∞ ∞ ∞ ∞ ∞

F ∞ ∞ ∞ ∞ ∞ ∞

10

20

5

3050

15

Page 11: İçerik : Gra flar

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

A C

C D

A

B

C

D

E

F

Page 12: İçerik : Gra flar

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

Page 13: İçerik : Gra flar

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

Page 14: İçerik : Gra flar

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.

Page 15: İçerik : Gra flar

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

Page 16: İçerik : Gra flar

16

Breadth-First Search Algorithm

BFS(G, s)for each u V {s} do

color[u] WHITEpred[u] NIL; d [u]

color[s] GRAYpred[s] NIL; d [s] 0Q {s}while Q do

u head[Q]for each v in Adj[u] do

if color[v] WHITE thencolor[v] GRAYpred[v] ud [v] d [u] 1ENQUEUE(Q, v)

DEQUEUE(Q)color[u] BLACK

Page 17: İçerik : Gra flar

17

Breadth-First SearchSample Graph:

a

b

g

c

f

d

e

h

i

0 s

FIFO just afterqueue Q processing vertex

a -

Page 18: İçerik : Gra flar

18

Breadth-First Search

a

b

g

c

f

d

e

h

i

0

1

1

s FIFO just afterqueue Q processing vertex

a -a,b,c a

Page 19: İçerik : Gra flar

19

Breadth-First Search

a

b

g

c

f

d

e

h

i

0

1

1

2

s FIFO just afterqueue Q processing vertex

a -a,b,c aa,b,c,f b

Page 20: İçerik : Gra flar

20

Breadth-First Search

a

b

g

c

f

d

e

h

i

0

1

1

2

2

s FIFO just afterqueue Q processing vertex

a -a,b,c aa,b,c,f ba,b,c,f,e c

Page 21: İçerik : Gra flar

21

Breadth-First Search

a

b

g

c

f

d

e

h

i

0

1

1

2

2

s

3 3

FIFO just afterqueue Q processing vertex

a -a,b,c aa,b,c,f ba,b,c,f,e ca,b,c,f,e,g,h f

Page 22: İçerik : Gra flar

22

Breadth-First Search

a

b

g

c

f

d

e

h

i

0

1

1

2

2

s

3 3

3

3

FIFO just afterqueue Q processing vertex

a -a,b,c aa,b,c,f ba,b,c,f,e ca,b,c,f,e,g,h fa,b,c,f,e,g,h,d,i e

all distances are filled in after processing e

Page 23: İçerik : Gra flar

23

Breadth-First Search

a

b

g

c

f

d

e

h

i

0

1

1

2

2

s

3 3

3

3

FIFO just afterqueue Q processing vertex

a -a,b,c aa,b,c,f ba,b,c,f,e ca,b,c,f,e,g,h fa,b,c,f,e,g,h,d,i g

Page 24: İçerik : Gra flar

24

Breadth-First Search

a

b

g

c

f

d

e

h

i

0

1

1

2

2

s

3 3

3

3

FIFO just afterqueue Q processing vertex

a -a,b,c aa,b,c,f ba,b,c,f,e ca,b,c,f,e,g,h fa,b,c,f,e,g,h,d,i h

Page 25: İçerik : Gra flar

25

Breadth-First Search

a

b

g

c

f

d

e

h

i

0

1

1

2

2

s

3 3

3

3

FIFO just afterqueue Q processing vertex

a -a,b,c aa,b,c,f ba,b,c,f,e ca,b,c,f,e,g,h fa,b,c,f,e,g,h,d,i d

Page 26: İçerik : Gra flar

26

Breadth-First Search

a

b

g

c

f

d

e

h

i

0

1

1

2

2

s

3 3

3

3

FIFO just afterqueue Q processing vertex

a -a,b,c aa,b,c,f ba,b,c,f,e ca,b,c,f,e,g,h fa,b,c,f,e,g,h,d,i i

algorithm terminates: all vertices are processed

Page 27: İçerik : Gra flar

27

Breadth-First Search Algorithm

Running time: O(VE) 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

Vu

EuAdj )(|][|

Page 28: İçerik : Gra flar

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

Page 29: İçerik : Gra flar

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

Page 30: İçerik : Gra flar

Lecture 14 30CS 473

Depth-First Search

DFS(G)for each uV do

color[u] white pred[u] NIL

time 0for each uV do

if color[u] white then

DFS-VISIT(G, u)

DFS-VISIT(G, u)color[u] gray d[u] time time 1for 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

Page 31: İçerik : Gra flar

31

Adjacency Lists

A: F GB: A HC: A DD: C FE: C D GF: E:G: :H: B:I: H:

F

A

B C G

D

E

H

I

Depth-First Search

Page 32: İçerik : Gra flar

32

F

A

B C G

D

E

H

I

dfs(A)A-F A-G

Function call stack:

Depth-First Search

Page 33: İçerik : Gra flar

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

Page 34: İçerik : Gra flar

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

Page 35: İçerik : Gra flar

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

Page 36: İçerik : Gra flar

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

Page 37: İçerik : Gra flar

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

Page 38: İçerik : Gra flar

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

Page 39: İçerik : Gra flar

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

Page 40: İçerik : Gra flar

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

Page 41: İçerik : Gra flar

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

Page 42: İçerik : Gra flar

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

Page 43: İçerik : Gra flar

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

Page 44: İçerik : Gra flar

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

Page 45: İçerik : Gra flar

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

Page 46: İçerik : Gra flar

46

F

A

B C G

D

E

H

I

dfs(A)A-F A-G

Function call stack:

Depth-First Search

Page 47: İçerik : Gra flar

47

F

A

B C G

D

E

H

I

dfs(A)A-F A-G

Function call stack:

Depth-First Search

Page 48: İçerik : Gra flar

48

F

A

B C G

D

E

H

I

Nodes reachable from A: A, C, D, E, F, G

Depth-First Search