Professional Documents
Culture Documents
06 Grafovi
06 Grafovi
06 Grafovi
Grafovi
Grafovi
• Graf je struktura podataka koja se sastoji
od skupa čvorova i skupa grana
– Grane predstavljaju odnose (veze) između čvorova
– Koristi se za modeliranje proizvoljnih nelinearnih relacija
– Postoje usmereni i neusmereni grafovi
1 2 1 2
3 3
5 4 5 4
1 2 3 4 5
1 2 1 0 1 0 0 1
2 0 0 1 1 0
3
3 0 0 0 1 0
4 0 0 0 0 1
5 4
5 0 1 0 0 0
Elektrotehnički fakultet, Algoritmi i Strukture Podataka 1 4
Beograd SI1AS1
Lista susednosti
• Graf se predstavlja pomoću:
– vektora zaglavlja za svaki čvor
– ulančane liste suseda za svaki čvor
– element liste odgovara grani
1 2
1 2 5
2 1 3 4 5
3 3 2 4
4 2 3 5
5 4 5 1 2 4
1 2
1 2 5
2 3 4
3 3 4
4 5
5 4 5 2
Niz edges[]
1 2 3 4 5 6 7 8 9 10 11 12 13 14
2 5 1 3 4 5 2 4 2 3 5 1 2 4
1 2 3 4 5 6 1 2
1 3 7 9 12 15
3
Niz indices[] 5 4
Niz edges[]
1 2 3 4 5 6 7
2 5 3 4 4 5 2
1 2 3 4 5 6 1 2
1 3 5 6 7 8
3
Niz indices[] 5 4
OBILAZAK GRAFA:
- svaki čvor grafa poseti na sistematičan način
- samo po jednom izvrši neka obrada nad njim
BFS(G, v)
for i = 1 to n do
visit[i] = false
Od pomoćnih struktura, koriste se:
end_for • neprioritetan red (FIFO)
visit[v] = true • vektor visit
POSETA(v)
INSERT(Q, v)
while (not QUEUE-EMPTY(Q)) do Uloga vektora visit je da spreči
v = DELETE(Q) višestruke obilaske nekog čvora
for { u : (v, u) E} do
if (not visit[u]) then
visit[u] = true
POSETA(u)
INSERT(Q, u) Posećivanje čvora u se implementira
end_if procedurom POSETA(u)
end_for
end_while
Elektrotehnički fakultet, Algoritmi i Strukture Podataka 10
Beograd
Zadatak 1 – obilazak po širini (breadth first - BFS)
H
A
D
B I A B C
A
E M
A B C D E
C
J A B C D E F
F
A B C D E F H
K
A B C D E F H I J
A B C D E F H I J K
Rešenje: ABCDEFHIJKM A B C D E F H I J K
A B C D E F H I J K M
PRIM(G, s)
U = {s}
E' =
while (U V) do
find (u, v) min {w(u, v) : (u U) and (v (V- U)) }
U = U + {v}
E' = E' + {(u, v)}
end_while
MST = (U, E')
F
A-B
19
A-B, B-H
A 14
34
8
12 D A-B, B-H, H-C
C
B 18 A-B, B-H, H-C, C-D
6
13
3 H A-B, B-H, H-C, C-D, C-F
A 14
Čvor A je odabran za koren stabla 12 D
8 C
B
6
3 H
F H-B
19
14
H-B, H-C
A 34
8
12 D H-B, H-C, B-A
C
B 18 H-B, H-C, B-A, C-D
6
13 H-B, H-C, B-A, C-D, C-F
3 H
A 14
Od korena stabla mora da polazi 12 D
grana najmanje težine. Ovde se 8 C
bira čvor H. B
6
3 H
Objašnjenje:
100 Mb/s
10 Mb/s
100 Mb/s 100 Mb/s Ruter
10 Mb/s
Server
10 Mb/s 10 Mb/s
Terminal
100 Mb/s
S1 T2
10
10 • Težine grana: brzine
100
10 veza prikazane u
T6 R3
1000
R4
100
jedinici Mb/s
100
S4 10 100 100 S2
T5
• Traži se veća brzina
T4 S3
maksimalno
obuhvatno stablo
P1 P2
P5
P3 P4
1 1 1 1 1
1 1 1 1 1
P1 P2
P5 p 0 0 0 0 0
P3 P4
1 1 1 1 1
0 0 0 0 0
0 0 1 1 0 0 0 1 1 0
1 0 0 0 1 1 0 1 1 1
p 0 0 0 0 0 p (1) 0 0 0 0 0
0 1 1 0 1 0 1 1 0 1
0 0 0 0 0 0 0 0 0 0
0 0 1 1 0 0 0 1 1 0
1 0 1 1 1 1 0 1 1 1
p (2) 0 0 0 0 0 p (3) 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0
Primetiti da je p 2 =p 3 .
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
p (4) 0 0 0 0 0 p (5) 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0
Elektrotehnički fakultet, 28
Beograd Algoritmi i Strukture Podataka
Zadatak 4 – određivanje matrice puta
• Drugi način:
– Polazimo od reprezentacije grafa u vidu matrice susednosti
– p[i,j] = 1 → postoji put dužine 1 između i i j (direktan put)
(1)
– Obeležimo matricu sa p
0 0 1 1 0
1 0 0 0 1
P1 P2
P5 p (1) 0 0 0 0 0
P3 P4 0 1 1 0 1
0 0 0 0 0
0 1 1 0 1 1 0 0 0 1
0 0 1 1 0 1
0 1 1 0
p (2) 0 0 0 0 0 p (3) 0 0 0 0 0
1 0 0 0 1 0 0 1 1 0
0 0 0 0 0 0 0 0 0 0
7
4 3
4
5
3
8
1 2
2
0 7 0 0 0 3
8
1 2 1 2
2
5 0
2
4 0 0 0
8
k=1 k=3
0 2 8 0 1 1 0 0 2 5 6 0 1 2 2
0 3 4 0 0 2 2 0 3 4 0 0 2 2
D T D T
0 7 0 0 0 3 0 7 0 0 0 3
5 7 1 3 0 4 1 1 0 5 7 10 0 4 1 2 0
k=2 k=4
0 2 5 6 0 1 2 2 0 2 5 6 0 1 2 2
0 3 4 0 0 2 2 9 0 3 4 4 0 2 2
D T D T
0 7 0 0 0 3 12 14 0 7 4 1 0 3
5 7 10 0 4 1 2 0 5 7 10 0 4 1 2 0
Elektrotehnički fakultet, Algoritmi i Strukture Podataka 34
Beograd
Zadatak 5 – rešenje (Floyd)
0 2 5 6 Maksimumi najkraćih rastojanja:
9 0 3 1 : 12
4
D 2 : 14
12 14 0 7 3 : 10
5 7 10 0 4:7 središte grafa je čvor 4
8
1 3
4
6 7
5
5
2 4
2
8
Ekscentričnosti čvorova:
1: 6
2: 15
3: 8
4: 9
3
2 5 3
2
8
6 5
1 2
5
5
3 6 4
3 5
4 4
2
4 9
4 7
5
Zadatak 7 – rešenje 1
2
6 5
2
8
5
5
3 6 4
3 5
4 4
2
4 9
4 7
5
D T
S
1 2 3 4 5 7 8 9 1 2 3 4 5 7 8 9
6 - ∞ 6 ∞ ∞ ∞ ∞ 2 3 0 6 0 0 0 0 6 6
6,8 8 ∞ 6 ∞ ∞ 5 ∞ 2 3 0 6 0 0 8 0 6 6
6,8,9 9 ∞ 6 ∞ ∞ 5 ∞ 2 3 0 6 0 0 8 0 6 6
6,8,9,5 5 ∞ 6 ∞ ∞ 5 ∞ 2 3 0 6 0 0 8 0 6 6
6,8,9,5,2 2 8 6 ∞ ∞ 5 ∞ 2 3 2 6 0 0 8 0 6 6
6,8,9,5,2,1 1 8 6 13 12 5 ∞ 2 3 2 6 1 1 8 0 6 6
Zadatak 7 – rešenje 1
2
6 5
2
8
5
5
3 6 4
3 5
4 4
2
4 9
4 7
5
D T
S
1 2 3 4 5 7 8 9 1 2 3 4 5 7 8 9
6,8,9,5,2,1,4 4 8 6 13 12 5 17 2 3 2 6 1 1 8 4 6 6
6,8,9,5,2,1,4,3 3 8 6 13 12 5 17 2 3 2 6 1 1 8 4 6 6
6,8,9,5,2,1,4,3,7 7 8 6 13 12 5 17 2 3 2 6 1 1 8 4 6 6
5 3 7
1 2 5 7
3 4
2 7
8 9 6 6
5
3 4 9 8
2 8 5
D T
S
1 2 3 5 6 7 8 9 1 2 3 5 6 7 8 9
4 - ∞ 9 2 7 ∞ ∞ ∞ 8 0 4 4 4 0 0 0 4
4,3 3 10 9 2 7 ∞ ∞ ∞ 8 3 4 4 4 0 0 0 4
4,3,5 5 10 9 2 7 10 ∞ ∞ 8 3 4 4 4 5 0 0 4
4,3,5,9 9 10 9 2 7 10 ∞ 13 8 3 4 4 4 5 0 9 4
4,3,5,9,2 2 10 9 2 7 10 ∞ 13 8 3 4 4 4 5 0 9 4
4,3,5,9,2,1 1 10 9 2 7 10 ∞ 13 8 3 4 4 4 5 0 9 4
4,3,5,9,2,1,6 6 10 9 2 7 10 14 13 8 3 4 4 4 5 6 9 4
4,3,5,9,2,1,6,8 8 10 9 2 7 10 14 13 8 3 4 4 4 5 6 9 4
4,3,5,9,2,1,6,8,7 7 10 9 2 7 10 14 13 8 3 4 4 4 5 6 9 4
1 a8=9 6
a4=9
a1=5 a7=8
2 5
a3=2
– Dozvoljeno kašnjenje:
L[i] = LST[i] – EST[i]
Za događaje na kritičnom putu kašnjenje nije dozvoljeno (L=0)
1 2 3 5 4 6
a1=5 a8=3
1 2 5 a10=4 7
a9=3
a2 =2 a5=9
a3=8 a7=7
6 a12=6
a13=5
3 4 9 8
a4=2 a6=8 a11=5
2 7
8 9 6 6
5
3 4 9 8
TOP-SORT(G, T) 2 8 5
T[i] = u 3
2
4
8
9
5
8
A = A – {u}
Uklanja se čvor 3
for all v, (u, v) B do 3
2 5 7
B = B - {(u, v)} 3 4
7
end_for 9 6
5
6
end_for 4 9 8
8 5
Uklanja se čvor 4
3
2 5 7
3 4
6 6
5
9 8
5
a13=5
3 4 9 8
a4=2 a6=8 a11=5
a7=7
a5=9
a2 =2 a13=5
aktivnost l
a1=5
a11=5 1 14
2 8
i EST LST L 3 0
1 0 0 0 Najveće dozvoljeno 4 0
3 8 8 0 vreme kašnjenja 5 0
aktivnosti
4 10 10 0 6 12
7 5
9 18 30 12
Najveće dozvoljeno
8 0
2 19 19 0 vreme kašnjenja
događaja 9 0
5 22 22 0
10 0
6 25 25 0
11 12
7 29 29 0 12 0
8 35 35 0 13 5
A
a2=5
C a7=4
H B 3 4 1 6 2
a14=7
a10=6 C 5 7 2 7 3
a3=3
F K
D a8=2 a11=4 I a15=4 D 3 3 0 8 0
E 9 10 1 9 1
F 5 5 0 10 0
a4=4 G 12 13 1 11 1
a5=6 a12=4
a1=3
a6=3
a7=4
a9=3 a13=6
H 11 11 0 12 1
A B C D E F G H I J K
a2=5 a8=2
a10=6 I 9 10 1 13 0
a11=4 a14=7
a3=3
a15=4
J 17 17 0 14 1
K 13 17 4 15 4
I 25 25 0 11 0
J 22 25 3 12 5
2
1 3
6
4
3 3
8
5
2 3 4
5
• Stablo
– sadrži sve čvorove grafa
– postoji tačno jedan put između dva čvora
– ne postoje ciklusi
• Složenost:
– O(n2) – matrična reprezentacija
– O(e) – ulančana reprezentacija (lista susednosti)