Algoritmi i Strukture Podataka 1 6 Grafovi 1

  • Slides: 26
Download presentation
Algoritmi i Strukture Podataka 1 6. Grafovi (1)

Algoritmi i Strukture Podataka 1 6. Grafovi (1)

Grafovi • Graf je struktura podataka koja se sastoji od skupa čvorova i skupa

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 1 2 2 3 5 Elektrotehnički fakultet, Beograd 4 3 5 Algoritmi i Strukture Podataka 1 4 2

Reprezentacija grafa • Matrična reprezentacija – Matrica susednosti – Matrica incidentnosti • Ulančana reprezentacija

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, Beograd Algoritmi i Strukture Podataka 1 3

Matrice susednosti • Sadržaj matrice se definiše na sledeći način: – a[i, j] =

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 – a[i, j] = w(i, j) za težinske grafove 1 2 3 5 1 4 2 3 5 4 Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 3 4 5 1 0 0 1 2 1 0 1 1 1 3 0 1 0 4 0 1 1 0 1 5 1 1 0 1 2 3 4 5 1 0 0 1 2 0 0 1 1 0 3 0 0 0 1 0 4 0 0 1 5 0 1 0 0 0 4

Lista susednosti • Graf se predstavlja pomoću: – vektora zaglavlja za svaki čvor –

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 3 5 4 Elektrotehnički fakultet, Beograd 1 2 5 2 1 3 3 2 4 4 2 3 5 5 1 2 4 1 2 5 2 3 4 4 5 5 2 Algoritmi i Strukture Podataka 1 4 5 5

Linearizovana lista susednosti (1) • Graf se predstavlja pomoću dva niza: – niz edges[]

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, Beograd Algoritmi i Strukture Podataka 1 6

Linearizovana lista susednosti (2) Niz edges[] 1 2 3 4 5 6 7 8

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 3 7 9 12 15 Niz indices[] Elektrotehnički fakultet, Beograd 1 3 5 Algoritmi i Strukture Podataka 1 2 4 7

Linearizovana lista susednosti (3) Niz edges[] 1 2 3 4 5 6 7 2

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 3 5 6 7 8 Niz indices[] Elektrotehnički fakultet, Beograd 1 3 5 Algoritmi i Strukture Podataka 1 2 4 8

Zadatak 1 Na datom grafu ilustrovati: a) obilazak grafa po širini b) obilazak grafa

Zadatak 1 Na datom grafu ilustrovati: a) obilazak grafa po širini b) obilazak grafa po dubini OBILAZAK GRAFA: - svaki čvor grafa poseti na sistematičan način - samo po jednom izvrši neka obrada nad njim (rezultat posećivanja) - 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, Beograd Algoritmi i Strukture Podataka 1 9

Zadatak 1 – obilazak po širini (breadth first - BFS) BFS(G, v) for i

Zadatak 1 – obilazak po širini (breadth first - BFS) BFS(G, v) for i = 1 to n do visit[i] = false end_for visit[v] = true POSETA(v) INSERT(Q, v) while (not QUEUE-EMPTY(Q)) do v = DELETE(Q) for { u : (v, u) E} do if (not visit[u]) then visit[u] = true POSETA(u) INSERT(Q, u) end_if end_for end_while Elektrotehnički fakultet, Beograd Od pomoćnih struktura, koriste se: • neprioritetni red (FIFO) • vektor visit Uloga vektora visit je da spreči višestruke obilaske nekog čvora Posećivanje čvora u se implementira procedurom POSETA(u) Algoritmi i Strukture Podataka 1 10

Zadatak 1 – obilazak po širini (breadth first - BFS) A A B C

Zadatak 1 – obilazak po širini (breadth first - BFS) A A B C Pretpostavlja se smer (redosled) obilaska suseda u alfabetskom poretku njihovih oznaka. Rešenje: ABCDEFHIJKM Elektrotehnički fakultet, Beograd A B C D E F H I J A B C D E F H I J K A B C D E F H I J K M Algoritmi i Strukture Podataka 1 11

Zadatak 1 – obilazak po dubini (depth first - DFS) Obilazak po dubini: generalizacija

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

Zadatak 1 – obilazak po dubini (depth first - DFS) A B C B

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

Zadatak 2 Za dati graf naći minimalno obuhvatno stablo: a) upotrebom Prim-ovog algoritma b)

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, Beograd Algoritmi i Strukture Podataka 1 14

Zadatak 2 - rešenje • Minimalno obuhvatno stablo (MST – minimum cost spanning tree)

Zadatak 2 - rešenje • 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, Beograd Algoritmi i Strukture Podataka 1 15

Zadatak 2 – Prim-ov algoritam PRIM(G, s) U = {s} E' = while (U

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, Beograd Algoritmi i Strukture Podataka 1 16

Zadatak 2 – Prim-ov algoritam Čvor A je odabran za koren stabla 19 A

Zadatak 2 – Prim-ov algoritam Čvor A je odabran za koren stabla 19 A F A 8 B A-B, B-H 19 A F 34 8 18 C B 3 H Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 17

Zadatak 2 – Prim-ov algoritam 19 A A 34 8 B H A-B, B-H,

Zadatak 2 – Prim-ov algoritam 19 A A 34 8 B H A-B, B-H, H-C, C-D F C 18 B 3 6 D 13 H 19 A F 14 34 8 12 C B 3 6 D 13 H Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 18

Zadatak 2 – Prim-ov algoritam Čvor A je odabran za koren stabla 19 A

Zadatak 2 – Prim-ov algoritam Čvor A je odabran za koren stabla 19 A A C F 14 34 8 D B B 12 C D 6 3 H H A-B, B-H F A A-B, B-H, H-C, C-D 14 8 C B A-B, B-H, H-C, C-D, C-F 3 12 D 6 H Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 19

Zadatak 2 – Kruskal-ov algoritam KRUSKAL(G) E' = for each (u, v) E do

Zadatak 2 – Kruskal-ov algoritam KRUSKAL(G) E' = for each (u, v) E do PQ-INSERT(PQ, w(u, v)) end_for num = 0 while (num < n - 1) do w(u, v) = PQ-MIN-DELETE(PQ) if ((u Ti) and (v Tj) and (i j)) then E' = E' + {(u, v)} Tk = Ti + Tj num = num + 1 end_if end_while MST = (V, E') Elektrotehnički fakultet, Beograd Inicijalno, graf se posmatra kao potpuno nepovezan (nepovezane komponente) Skup grana E se uređuje po neopadajućoj težini (prioritetni red, sortiran niz. . . ) Nova grana se dodaje samo ako spaja dve odvojene komponente (T) Algoritmi i Strukture Podataka 1 20

Zadatak 2 – Kruskal-ov algoritam 3 8 12 13 14 18 19 34 6

Zadatak 2 – Kruskal-ov algoritam 3 8 12 13 14 18 19 34 6 8 12 13 14 18 19 34 F 19 A 14 34 8 6 C 18 B 3 6 12 D 8 12 13 14 18 19 34 13 13 14 18 19 34 H 14 18 19 34 34 Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 21

Zadatak 2 – Kruskal-ov algoritam H-B, H-C, B-A, C-D H-B, H-C, B-A, C-D, C-F

Zadatak 2 – Kruskal-ov algoritam H-B, H-C, B-A, C-D H-B, H-C, B-A, C-D, C-F Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 22

Zadatak 3 – Primena MST Na slici je prikazana šema jedne računarske mreže, koja

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, Beograd Algoritmi i Strukture Podataka 1 23

Zadatak 3 – Primena MST Legenda: Ruter Server Terminal Elektrotehnički fakultet, Beograd Algoritmi i

Zadatak 3 – Primena MST Legenda: Ruter Server Terminal Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 Mb/s Megabita u sekundi Gb/s Gigabita u sekundi 24

Zadatak 3 - rešenje • Čvorovi predstavljaju pojedinačne uređaje • Težine grana: brzine veza

Zadatak 3 - rešenje • Čvorovi predstavljaju pojedinačne uređaje • Težine grana: brzine veza prikazane u jedinici Mb/s • Traži se veća brzina maksimalno obuhvatno stablo Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 25

Zadatak 3 - rešenje • Čvorovi predstavljaju pojedinačne uređaje • Težine grana: brzine veza

Zadatak 3 - rešenje • Čvorovi predstavljaju pojedinačne uređaje • Težine grana: brzine veza prikazane u jedinici Mb/s • Traži se veća brzina maksimalno obuhvatno stablo Elektrotehnički fakultet, Beograd Algoritmi i Strukture Podataka 1 26