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
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.
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(VE
) 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
uV
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