06 Grafovi

You might also like

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 60

Algoritmi i Strukture Podataka

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

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 1 2


Beograd SI1AS1
Reprezentacija grafa
• Matrična reprezentacija
– Matrica susednosti
– Matrica incidentnosti
• Ulančana reprezentacija
– Lista susednosti
– Inverzna lista susednosti
– Linearizovana lista susednosti
• Poređenje:
– Matrica susednosti pogodnija za dinamičku promenu broja grana i za
direktan pristup granama
– Lista susednosti pogodnija za dinamičku promenu broja čvorova i za
određivanje suseda
– Linearizovana lista susednosti pogodnija
ukoliko se graf ne menja dinamički u toku rada

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 1 3


Beograd SI1AS1
Matrice susednosti
• Sadržaj matrice se definiše na sledeći način:
– a[i, j] = 1 ako postoji grana između čvorova i i j
– a[i, j] = 0 ako ne postoji grana između čvorova i i j
1 2 3 4 5
– a[i, j] = w(i, j) za težinske grafove
1 0 1 0 0 1
1 2 2 1 0 1 1 1
3 0 1 0 1 0
3
4 0 1 1 0 1
5 4 5 1 1 0 1 0

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

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 1 5


Beograd SI1AS1
Linearizovana lista susednosti (1)
• Graf se predstavlja pomoću dva niza:
– niz edges[] predstavlja listu susednosti linearizovanu u niz
– niz edges[] ima onoliko elemenata koliko ima grana u grafu
– niz indices[] predstavlja indeks prvog elementa i-tog čvora
u nizu edges[]
– niz indices[] uobičajeno ima n+1 elemenata,
gde n predstavlja broj čvorova u grafu
– broj suseda i-tog čvora je određen razlikom polja
indices[i] i indices[i+1]

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 1 6


Beograd SI1AS1
Linearizovana lista susednosti (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

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 1 7


Beograd SI1AS1
Linearizovana lista susednosti (3)

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

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 1 8


Beograd SI1AS1
Zadatak 1
H
Na datom grafu ilustrovati:
D
a) obilazak grafa po širini
B I
b) obilazak grafa po dubini A
E M
C
J
F
K

OBILAZAK GRAFA:
- svaki čvor grafa poseti na sistematičan način
- samo po jednom izvrši neka obrada nad njim

- Graf nema neki poseban čvor od kojeg prirodno započinje


obilazak
- eksplicitno se zadaje kao argument operacije
- slučajno se bira
- Isti algoritam obilaska daje različite poretke čvorova
zavisno od izbora početnog čvora.
Elektrotehnički fakultet, Algoritmi i Strukture Podataka 9
Beograd
Zadatak 1 – obilazak po širini (breadth first - BFS)

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

Pretpostavlja se smer (redosled) A B C D E F H I J K


obilaska suseda u alfabetskom poretku
njihovih oznaka. A B C D E F H I J K

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

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 11


Beograd
Zadatak 1 – obilazak po dubini (depth first - DFS)
Obilazak po dubini: generalizacija preorder obilaska stabla
Rekurzivna realizacija obilaska po dubini Iterativna realizacija obilaska po dubini
DFS-VISIT_R(v) DFS-VISIT_I(v)
visit[v] = true PUSH(S, v)
POSETA(v) while not EMPTY(S) do
for { u, (v, u)  E } do v = POP(S)
if (not visit[u]) then DFS-VISIT_R(u) if (not visit[v]) then
end_if visit[v] = true
end_for POSETA(v)
for { u, (v, u)  E } do
Potprogram DFS inicijalizuje vektor visit if (not visit[u]) then
DFS(G, v) PUSH(S,u)
for i = 1 to n do end_if
visit[i] = false end_for
end_for end_if
DFS-VISIT_R(v) ili DFS-VISIT_I(v) end_while

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 12


Beograd
Zadatak 1 – obilazak po dubini (depth first - DFS)
H
A
D
B I B C
A
E M B F
C
J B K
F
B E M
K
B E H
Pretpostavlja se smer (redosled)
B E
obilaska suseda u alfabetskom poretku
njihovih oznaka. B I J
Koristi se iterativni algoritam.
B I I
Rešenje: ACFKMHEJIBD B
Pitanje: da li je isti rezultat D
kod rekurzivnog algoritma?
Elektrotehnički fakultet, Algoritmi i Strukture Podataka 13
Beograd
Zadatak 2
Za dati graf naći minimalno obuhvatno stablo:
a) upotrebom Prim-ovog algoritma
b) upotrebom Kruskal-ovog algoritma

- Obuhvatno stablo (spanning tree) grafa je stablo koje


- sadrži sve čvorove grafa
- sadrži neke grane grafa tako da se povežu svi čvorovi
ali da se ne formiraju ciklusi
- Posledica: između svaka dva čvora postoji tačno jedan put
- Obuhvatna stabla se generišu algoritmima za obilazak grafa
po širini ili dubini
- Za isti graf može postojati više obuhvatnih stabala

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 14


Beograd
Zadatak 2

• Minimalno obuhvatno stablo


(MST – minimum cost spanning tree)
– svaka grana ima cenu (težinu)
– cena obuhvatnog stabla je suma cena grana
– minimalno obuhvatno stablo ima najmanju cenu
– može biti više takvih stabala (ista cena)
• Najpoznatiji algoritmi
– Prim-ov
– Kruskal-ov

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 15


Beograd
Zadatak 2 – Prim-ov algoritam

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

Algoritam radi inkrementalno, počevši od proizvoljnog čvora (s)


koji postaje koren stabla.

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 16


Beograd
Zadatak 2 – Prim-ov algoritam

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

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 17


Beograd
Zadatak 2 – Kruskal-ov algoritam

KRUSKAL(G) Inicijalno, graf se posmatra


E' =  kao potpuno nepovezan
for each (u, v)  E do (nepovezane komponente)
PQ-INSERT(PQ, w(u, v))
end_for Skup grana E se uređuje
num = 0 po neopadajućoj težini
while (num < n - 1) do (prioritetni red, sortiran niz...)
w(u,v) = PQ-MIN-DELETE(PQ)
if ((u  Ti) and (v  Tj) and (i  j)) then
Nova grana se dodaje
E' = E' + {(u, v)} samo ako spaja dve
Tk = Ti + Tj odvojene komponente (T)
num = num + 1
end_if
end_while
MST = (V, E')

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 18


Beograd
Zadatak 2 – Kruskal-ov algoritam

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

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 19


Beograd
Zadatak 3 – Primena MST
Na slici je prikazana šema jedne računarske mreže, koja se
sastoji od servera, terminala i rutera. Uloga rutera
je da prosleđuju komunikaciju između servera i
terminala preko najbržih veza. Pri tome,
oni obezbeđuju da između bilo koja dva uređaja
(rutera, servera ili terminala) postoji tačno jedan put.

a) Objasniti kako bi se neka računarska mreža modelirala


grafom. Nacrtati graf ekvivalentan prikazanoj mreži.

b) Predložiti algoritam za određivanje veza preko kojih


ruteri treba da primaju i prosleđuju poruke prema
uslovima zadatka. Proces određivanja veza prikazati u
koracima.

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 20


Beograd
Zadatak 3 – Primena MST

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

1 Gb/s 100 Mb/s Megabita


Mb/s
100 Mb/s u sekundi
100 Mb/s
100 Mb/s Gigabita u
10 Mb/s Gb/s
sekundi

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 21


Beograd
Zadatak 3 – Rešenje

S1 T2

T1 100 10 T3 • Čvorovi predstavljaju


100
R1
100
R2
10
pojedinačne uređaje
100

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

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 22


Beograd
Zadatak 4

Programski sistem se sastoji od programskih modula P1, P2, P3, P4,


P5. Ovaj sistem je predstavljen datim usmerenim grafom u kome su
čvorovi moduli, a grane pozivi između njih, tako da grana (i,j)
odgovara pozivu modula Pj, od strane modula Pi. Odrediti koji su
moduli rekurzivni.

P1 P2

P5

P3 P4

- Rekurzija može biti direktna ili indirektna:


- direktna: modul poziva sam sebe
- indirektna: modul A poziva modul B koji poziva modul A
- Pojava ciklusa u grafu ukazuje na postojanje rekurzije

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 23


Beograd
Zadatak 4 – određivanje matrice puta (Warshall)

• Matrica puta pokazuje međusobnu povezanost čvorova


• p[i, j] = 1 ako postoji put od čvora i do j
• p[i, j] = 0 u suprotnom
• Ponekad se naziva matrica dostižnosti (reachability)

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 

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 24


Beograd
Zadatak 4 – određivanje matrice puta (Warshall)

• Matrica puta se dobija primenom Warshall-ovog algoritma


– polazi se od matrice eksplicitno zadatih puteva (putevi dužine 1)
– u svakom koraku k se u tekućoj matrici p[i,j] dodaju putevi koji se
mogu ostvariti preko čvora k

WARSHALL Optimizacija: u najugnježdenijoj petlji je


P=A
p[i,k]=const, a p[i,j] se neće menjati ako
for k=1 to n do
je p[i,k]=0. Zato ćemo najugnježdeniju
for i=1 to n do
for j=1 to n do
petlju izvršavati samo ako je p[i,k]=1
p[i,j]=p[i,j] or (p[i,k] and p[k,j]) if (p[i,k]=1) then
end_for for j=1 to n do
end_for p[i,j]=p[i,j] or p[k,j]
end_for end_for
end_if

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 25


Beograd
Zadatak 4 – određivanje matrice puta (Warshall)

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 

Polazna matrica susednosti Matrica dostižnosti preko čvora 1

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 26


Beograd
Zadatak 4 – određivanje matrice puta (Warshall)

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 

Matrica dostižnosti preko Matrica dostižnosti preko


čvorova 1 i 2 čvorova 1, 2 i 3

Primetiti da je p  2 =p  3 .

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 27


Beograd
Zadatak 4 – određivanje matrice puta (Warshall)

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 

Matrica dostižnosti preko Konačna matrica dostižnosti


čvorova 1, 2, 3 i 4 (preko svih čvorova)

Primetiti da je p  4 =p  5 . Rekurzivni su moduli 1, 2 i 4

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 

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 29


Beograd
Zadatak 4 – određivanje matrice puta
• Određivanje puta dužine tačno 2
– za (i, j) pronalazi se čvor k, tako da postoje putevi (i, k) i (k, j)
– put postoji ako p[i,k] * p[k,j] = 1
– i i j su fiksni → p[i,k] * p[k,j] je logički proizvod vrste i kolone matrice
– → matrica se množi sama sa sobom
• Put dužine tačno 3 : matrica se diže na treći stepen
• Od interesa je isključivo da li put postoji, ne koliko putanja ima

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 

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 30


Beograd
Zadatak 4 – određivanje matrice puta
0 0 1 1 0 0 1 1 0 1
1 0 0 1 1 0 
 0 0 0 1  
p (4)  0 0 0 0 0 p (5)  0 0 0 0 0
   
0 1 1 0 1 1 0 0 0 1
0 0 0 0 0   0 0 0 0 0 

Nema potrebe da se računa za stepen veći od n, 1 1 1 1 1


jer bi se napravio ciklus. 1
Matrica povezanosti dobija se kao logička  1 1 1 1 
suma svih izračunatih matrica.
p  0 0 0 0 0
p  p (1)  p (2)  p (3)  p (4)  p (5)  
1 1 1 1 1
Složenost celog postupka je O (n 4 ) 0 0 0 0 0 
Rekurzivni su moduli 1, 2 i 4

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 31


Beograd
Zadatak 5
Definisati pojmove ekscentričnosti čvora i središta grafa.
Za graf sa slike naći ekscentričnosti svih čvorova i središte grafa

7
4 3
4

5
3
8
1 2
2

Ekscentričnost čvora v se definiše kao


maksimum najkraćih rastojanja d[i, v] od svih čvorova grafa i do čvora v,
ecc(v) = max {d[i, v] : i  V }

Središte grafa se definiše kao čvor koji ima najmanju ekscentričnost


(min {ecc(v), v  V})

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 32


Beograd
Zadatak 5 – rešenje (Floyd)
• Ekscentričnost: potrebno je odrediti
– za svaki čvor, najkraća rastojanja od svih ostalih čvorova do tog čvora
– za svaki čvor, maksimum tako izračunatih najkraćih rastojanja
• Problem se rešava Floyd-ovim algoritmom

FLOYD(W) Ulaz algoritma: matrica težina W (n x n):


D=W
for k = 1 to n do w[i, j] = 0 ako je i = j,
for i = 1 to n do
for j = 1 to n do w[i, j] = w(i, j) ako je i  j i (i, j)  E,
if (d[i, j] > d[i, k] + d[k, j]) then
t[i, j] = t[k, j] w[i, j] =  ako je i  j i (i, j)  E
d[i, j] = d[i, k] + d[k, j]
end_if
end_for Izlaz algoritma:
end_for - matrica D, d[i,j] je najkraće rastojanje i-j
end_for - matrica T, t[i,j] je pretposlednji čvor na putu i-j

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 33


Beograd
Zadatak 5 – rešenje (Floyd)
7 7
4 3 4 3
 0 2 8  0 1 1 0 4 4
 0 3 4  0 0 2 2 5
3 5
D  T 
3

  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

Rekonstrukcija najkraćeg puta


PATH(i, j) 0 1 2 2
if (i = j) then 4
PRINT(i) 0 2 2 
return T 
4 1 0 3
else  
if (t[i, j] = 0) then PRINT(Nema puta između i i j) 4 1 2 0
else
PATH(i, t[i, j])
PRINT(j)
end_if
end_if

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 35


Beograd
Zadatak 6
Definisati pojmove ekcentričnosti čvora i središta grafa.
Za graf sa slike naći ekcentričnosti svih čvorova i središte grafa.

8
1 3
4
6 7
5
5

2 4
2
8

Ekscentričnosti čvorova:
1: 6
2: 15
3: 8
4: 9

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 36


Beograd
Zadatak 7
Kakva je namena Dijkstra algoritma?
Za graf sa slike naći najkraće puteve od čvora 6 do ostalih čvorova
primenom Dijkstra-inog algoritma.
Dati izgled vektora najkraćih rastojanja i vektora prethodnika
posle svake iteracije.

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

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 37


Beograd
Zadatak 7 – rešenje
Dijkstra: Određivanje najkraćih puteva od jednog čvora grafa do svih ostalih
DIJKSTRA(W)
S = {x}
for i = 1 to n, i≠x do Ulaz predstavlja matrica težina W.
d[i] = w[x, i]
if (w[x, i]  ) then t[i] = x Izlaz čine:
else t[i] = 0 - vektor d (dužina n-1)
end_if - vektor t (dužina n-1)
end_for
for k = 1 to n - 1 do gde je:
find min {d[i] : i  (V – S) } - d[i] najkraće rastojanje
if (d[i] = ) break od polaznog čvora x do čvora i,
S = S + {i}
for each j  (V – S) do - t[i] je čvor-prethodnik čvora i
if (d[i] + w[i, j] < d[j]) then
na najkraćem putu od čvora x
d[j] = d[i] + w[i, j]
t[j] = i
end_if
end_for
end_for
Elektrotehnički fakultet, Algoritmi i Strukture Podataka 38
Beograd
3
2 5 3

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

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 1 39


Beograd SI1AS1
3
2 5 3

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

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 1 40


Beograd SI1AS1
Zadatak 8

Za graf sa slike naći najkraće puteve od čvora 4 do ostalih


čvorova primenom Dijkstra-inog algoritma.
Dati izgled vektora najkraćih rastojanja i vektora prethodnika
posle svake iteracije.

5 3 7
1 2 5 7
3 4
2 7
8 9 6 6
5
3 4 9 8
2 8 5

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 41


Beograd
Zadatak 8 – rešenje

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

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 42


Beograd
Zadatak 9
Pronaći kritičan put i dozvoljena kašnjenja na projektu
opisanom grafom sa slike.
a6=7
3 4
a2=3 a9=5
a5=6

1 a8=9 6
a4=9
a1=5 a7=8
2 5
a3=2

• Grafom je prikazan redosled odvijanja faza projekta


• Grana od faze X ka fazi Y označava da faza Y počinje
nakon što se neophodan deo faze X završi
• Težina grane označava trajanje neophodnog dela faze X
Elektrotehnički fakultet, Algoritmi i Strukture Podataka 43
Beograd
Zadatak 9 – rešenje

• Da bi se odredio kritičan put i dozvoljena kašnjenja,


potrebno je odrediti za svaki čvor:
– najranije vreme otpočinjanja (earliest start time) EST
EST[i] = max{EST[j] + w(j, i) : j  P(i) }
po definiciji: EST[1] = 0

– najkasnije vreme otpočinjanja (latest start time) LST


LST[i] = min{LST[j] - w(i, j) : j  S(i) }
po definiciji: LST[n] = EST[n]

– Dozvoljeno kašnjenje:
L[i] = LST[i] – EST[i]
Za događaje na kritičnom putu kašnjenje nije dozvoljeno (L=0)

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 44


Beograd
Zadatak 9 – rešenje
CRITICAL-PATH(G)
TOP-SORT(G, T) P(i) : skup prethodnika čvora i
EST [ T[1] ] = 0
for u = 2 to n do
i = T[u]
for each j  P(i) do
EST[i] = max{ EST[j] + w(j, i) }
end_for
end_for
S(i) : skup sledbenika čvora i
LST[ T[n] ] = EST[ T[n] ]
for u = n-1 downto 1 do
i = T[u]
for each j  S(i) do
LST[i] = min{ LST[j] - w(i, j) }
end_for
end_for
for i = 1 to n do
L[i] = LST[i] – EST[i]
end_for

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 45


Beograd
Zadatak 9 – rešenje
a6=7
3 4
a2=3 a5=6
a9=5 i EST LST L
1 0 0 0
1 a8=9 6
a4=9 2 5 7 2
a1=5 a7=8
3 3 3 0
2 5
a3=2 5 9 9 0
4 18 18 0
6 23 23 0

1 2 3 5 4 6

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 46


Beograd
Zadatak 10

Pronaći kritičan put i dozvoljena kašnjenja na projektu


opisanom grafom sa slike.

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

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 47


Beograd
Zadatak 10 – rešenje 1
5
2
3
5
3 4
7

2 7
8 9 6 6
5

3 4 9 8
TOP-SORT(G, T) 2 8 5

A=V Uklanja se čvor 1


B=E 2
3
5 7
for i = 1 to n do 7
3 4
6
find u  A : din(u) = 0 9 6
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

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 48


Beograd
Zadatak 10 – rešenje
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

a7=7
a5=9

a3=8 a4=2 a6=8 a8=3 a9=3 a10=4 a12=6


1 3 4 9 2 5 6 7 8
a2 =2 a13=5
a1=5
a11=5

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 49


Beograd
Zadatak 10 – rešenje
a7=7
a5=9

a3=8 a4=2 a6=8 a8=3 a9=3 a10=4 a12=6


1 3 4 9 2 5 6 7 8 l=LST[j]-EST[i]-w[i,j]

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

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 50


Beograd
PERT – Project Evaluation & Review Technique

• Šta je PERT graf? Šta je kritičan put i kolika je ukupna


vremenska složenost odredjivanja kritičnog puta? Naći
najranije i najkasnije trenutke započinjanja aktivnosti za
projekat čiji je PERT graf dat na slici, kao i dozvoljeno
kašnjenje za svaku od njih. Navesti kritične aktivnosti.
a4=4
B G a12=4
a5=6
a1=3
a9=3
a6=3 E a13=6 J
a2=5
A C a7=4
H
a14=7
a10=6
a3=3
F K
D a8=2 a11=4 I a15=4

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 51


Beograd
PERT – Project Evaluation & Review Technique

• 1958: US DoD – US Navy Special Projects Office


• Razvijen kao deo projekta "Polaris"
• PERT graf se još naziva PERT mreža (network)
• Napredniji od CPM
– procene (optimistična, najverovatnija, pesimistična)
– procena vremena (o + 4*n + p)/6

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 52


Beograd
Rešenje

• Šta je kritičan put i kolika je ukupna vremenska


složenost odredjivanja kritičnog puta?

• Put najveće dužine između početnog i završnog čvora


grafa kojim je predstavljen projekat, a koji određuje
vreme trajanja projekta
• Vremenska složenost: O(e+n)

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 53


Beograd
a l
Rešenje 1 1
2 2
a4=4
B G 3 0
a5=6 a12=4 i EST LST L
a1=3 4 6
a6=3 E a9=3 a13=6 J A 0 0 0 5 1

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

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 54


Beograd
Zadatak 11

• Šta je PERT graf? Šta je kritičan put i kolika je ukupna


vremenska složenost odredjivanja kritičnog puta? Naći
najranije i najkasnije trenutke započinjanja aktivnosti za
projekat čiji je PERT graf dat na slici, kao i dozvoljeno
kašnjenje za svaku od njih. Navesti kritične aktivnosti.
a4=3
B G a9=8
a1=2 a5=6
H
a6=5 E a10=10
a2=7
A C J
a7=4 a12=8
a3=5
F
D a8=11 a11=9 I

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 55


Beograd
Zadatak 11 – Rešenje
a4=3 a l
B G
a5=6
a9=8 i EST LST L 1 7
a1=2 H
a6=5 E A 0 0 0 2 3
a10=10
a2=7 3 0
A C J B 2 9 7
4 8
a7=4 a12=8 C 7 10 3
a3=5
F 5 7
D a8=11 a11=9 I D 5 5 0
6 3
E 12 15 3
7 5
F 16 16 0 8 0
G 5 13 8 9 12
H 13 25 12 10 3

I 25 25 0 11 0

J 22 25 3 12 5

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 56


Beograd
Tipično ispitno pitanje
• Kakvom strukturom se modeliraju složeni projekti?
Skicirati i objasniti algoritam za nalaženje kritičnog puta.
Kako se nalaze dozvoljena kašnjenja aktivnosti? Izvesti
vremensku složenost algoritma.

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 57


Beograd
Tipičan ispitni zadatak
• Definisati pojmove ekcentričnosti čvora i središta grafa.
Za graf sa slike naći ekcentričnosti svih čvorova i središte
grafa.

2
1 3
6

4
3 3
8
5

2 3 4
5

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 58


Beograd
Rešenje

• Ekscentričnost čvora v se definiše kao


maksimum najkraćih rastojanja d[i, v] od svih
čvorova grafa i do čvora v,
ecc(v) = max {d[i, v] : i  V }
• Središte grafa se definiše kao čvor koji ima najmanju
ekscentričnost
(min {ecc(v), v  V})
2
1 3
6
Ekscentričnost: Središte grafa: čvor 4.
4
3 3
1: 7, 6, 4 => 7
8
5 2: 7, 5, 8 => 8
2 3 4 3: 2, 6, 3 => 6
5 4: 5, 3, 3 => 5

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 59


Beograd
Tipičan ispitni zadatak

• Šta je obuhvatno stablo i koliko grana ima? Skicirati i


objasniti algoritam za generisanje obuhvatnog stabla po
širini. Izvesti složenost i za matičnu i za ulančanu
reprezentaciju grafa.

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

Elektrotehnički fakultet, Algoritmi i Strukture Podataka 60


Beograd

You might also like