/
1 İçerik : Gra flar Tanım 1 İçerik : Gra flar Tanım

1 İçerik : Gra flar Tanım - PowerPoint Presentation

tatyana-admore
tatyana-admore . @tatyana-admore
Follow
392 views
Uploaded On 2018-03-11

1 İçerik : Gra flar Tanım - PPT Presentation

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 DepthFirst Search 2 ID: 647414

search dfs kom

Share:

Link:

Embed:

Download Presentation from below link

Download Presentation The PPT/PDF document "1 İçerik : Gra flar Tanım" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.


Presentation Transcript

Slide1

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

F

irst

Search

)

DFS (

Depth-First Search

)Slide2

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

Graflar - ÖrnekG = (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)}3AB

C

D

F

ESlide4

Uygulama AlanlarıElektronik devrelerBaskı devre kartları (PCB)Entegre devrelerUlaşım AğlarıOtoyol AğıHavayolu AğıBilgisayar AğlarıLokal alan ağlarıİnternetVeritabanlarıEntity-relationship diyagram4Slide5

Graflar – Ayrıt TürleriYö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.5Slide6

Graflar - TanımlarKomş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.6A

B

C

D

F

ESlide7

Graflar - TanımlarGrafı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 maliyeti7Slide8

Graf GösterimiZaman ve yer karmaşıklığı aşağıdaki her iki ifade ile de ölçülür.Düğüm sayısı = |V| = nAyrıt sayısı = |E| = mGraf gösterimi için iki farklı yol vardır.Komşuluk matrisiKomşuluk listesi8Slide9

Komşuluk Matrisi Gösterimi9Komş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(n

2

)Slide10

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

A

B

C

D

E

F

A

10

5

B

20

C

30

50

D

15

E

F

10

20

5

30

50

15Slide11

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

FSlide12

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

FSlide13

Graf Üzerinde DolaşmaGraf ü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öntemiDFS (Depth First Search ) Yöntemi13Slide14

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

15Breadth-First Search AlgorithmMaintains 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 listSlide16

16Breadth-First Search AlgorithmBFS(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]  1ENQUEUE(Q, v)DEQUEUE(Q)color[u]  BLACKSlide17

17Breadth-First SearchSample Graph:

FIFO just after

queue

Q

processing vertex

a -Slide18

18Breadth-First Search

FIFO just after

queue

Q

processing vertex

a -

a,b,c aSlide19

19Breadth-First Search

FIFO just after

queue

Q

processing vertex

a -

a,b,c a

a,b,c,f bSlide20

20Breadth-First Search

FIFO just after

queue

Q

processing vertex

a -

a,b,c a

a,b,c,f b

a,b,c,f,e cSlide21

21Breadth-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 fSlide22

22Breadth-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 eSlide23

23Breadth-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 gSlide24

24Breadth-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 hSlide25

25Breadth-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 dSlide26

26Breadth-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 processedSlide27

27Breadth-First Search AlgorithmRunning time: O(VE

)  considered linear time in graphsinitialization: (

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 Slide28

Breath-First Search (BFS)Sonuçların gösterilmesiHer 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] = 0Ayrıca aile (parent) düğümünü de tutmamız gerekiyor. v den s ye giderken yoldaki ilk düğümpred[s] = 0 (pred  predecessor  önceki)28Slide29

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

CS 473Lecture 1430Depth-First SearchDFS(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

)

DFS-V

ISIT

(

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 1Slide31

31Adjacency ListsA: 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 SearchSlide32

32FAB

C

G

D

E

H

I

dfs(A)

A-F A-G

Function call stack:

Depth-First SearchSlide33

33FAB

C

G

D

E

H

I

dfs(A)

A-F A-G

Function call stack:

visit(F)

F-E

Depth-First SearchSlide34

34FAB

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 SearchSlide35

35FAB

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 SearchSlide36

36FAB

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 SearchSlide37

37FAB

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 SearchSlide38

38FAB

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 SearchSlide39

39FAB

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 SearchSlide40

40FAB

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 SearchSlide41

41FAB

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 SearchSlide42

42FAB

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 SearchSlide43

43FAB

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 SearchSlide44

44FAB

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 SearchSlide45

45FAB

C

G

D

E

H

I

dfs(A)

A-F A-G

Function call stack:

dfs(F)

F-E

Depth-First SearchSlide46

46FAB

C

G

D

E

H

I

dfs(A)

A-F A-G

Function call stack:

Depth-First SearchSlide47

47FAB

C

G

D

E

H

I

dfs(A)

A-F A-G

Function call stack:

Depth-First SearchSlide48

48FAB

C

G

D

E

H

I

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

Depth-First Search