You are on page 1of 32

ATVSS NIŠ

MULTIMEDIJALNE KOMUNIKACIONE TEHNOLOGIJE

AKTIVNI MREŽNI UREĐAJI

Teorija grafova

Profesor: Prof. dr Dušan Stefanović


Student: Natalija Mihailović MKT 18/19

Niš, 2021.
Sadržaj
1. Uvod...........................................................................3

2. Tipovi grafikona............................................................5

3. Neusmereni graf...........................................................5

4. Usmereni graf..............................................................5

5. Ponderisani grafikoni.....................................................6

6. Specijalni grafikoni........................................................7

7. Drvo (stablo)................................................................7

8. Ukorenjeno stablo.........................................................7

9. Usmereni aciklicni grafikoni (DAG)...................................7

10. Dvoparni graf...............................................................8

11. Kompletni grafikoni.......................................................8

12. Matrica susednosti........................................................9

13. Lista susednosti.............................................................9

14. Lista ivica....................................................................10

15. Problem najkraćeg puta.................................................11

16. Čvrsto povezane komponente.........................................12

17. Problem putujućeg trgovca.............................................12

18. Mostovi........................................................................13

19. Problem artikulacije.......................................................13

20. Drvo minimalnog raspona...............................................14

21. Protok mreze................................................................15

22. Pretraga u dubinu (Depth first search DFS).......................16

23. Pretraga u širinu (Breadth first search BFS).......................22

24. BFS najkraća putanja na mreži........................................26

25. Literatura.....................................................................31

2
Uvod

U matematici, teorija grafova je proučavanje grafova, koji su


matematičke strukture korišćene za modeliranje uparenih odnosa
između objekata. Grafikon u ovom kontekstu čine vrhovi (koji se
nazivaju i čvorovi ili tačke) koji su povezani ivicama (koje se nazivaju i
veze ili linije). Razlikuju se neusmereni grafovi, gde ivice simetrično
povezuju dva vrha, i usmereni grafovi, gde ivice asimetrično povezuju
dva vrha. Grafovi su jedan od glavnih predmeta proučavanja diskretne
matematike.

U računarskim naukama, grafovi se koriste za predstavljanje mreža


komunikacije, organizacije podataka, računarskih uređaja, toka
izračunavanja, itd. Na primer, struktura veze veb stranice može biti
predstavljena usmerenim grafom, u kome vrhovi predstavljaju veb
stranice a usmerene ivice predstavljaju veze sa jedne stranice na
drugu. Sličan pristup može se primeniti i na problemima u društvenim
mrežama, putovanjima, biologiji, dizajnu računarskog čipa, i mnogim
drugim oblastima. Razvoj algoritama za rukovanje grafovima je stoga
od velikog interesa za računarstvo. Transformacija grafova je često
formalizovana i predstavljena sistemima za prepisivanje grafova.

Problem teorije grafova može biti: s obzirom na ograničenja, koliko


različitih kompleta odeće mogu da napravim izborom članaka iz svake
kategorije?

3
Primer kanonske teorije grafova je društvena mreža prijatelja. Ovo
omogućava zanimljiva pitanja poput: koliko prijatelja osoba x ima? Ili
koliko stepena razdvajanja postoji između osobe x i osobe y?

4
TIPOVI GRAFIKONA

Neusmereni graf
Neusmereni graf je graf u kome ivice nemaju orijentaciju. Ivica
(u, v) je identična ivici (v, u)

Na ovom grafikonu čvorovi bi mogli predstavljati gradove, a


ivice dvosmerni put

Usmereni graf
Usmereni graf ili diagraf je graf u kome ivice imaju orijentacije. Na
primer, ivica (u, v) je ivica od čvora u do čvora v

Na grafikonu iznad čvorovi mogu predstavljati ljude, a ivica (u, v)


može predstavljati osobu u koja je kupila osobi v poklon

5
Ponderisani grafikoni
Mnogi grafovi mogu imati ivice koje sadrže određenu težinu (vrednost)
i mogu da predstavljaju proizvoljnu vrednost kao što su cena,
udaljenost, količina itd

6
Specijalni grafikoni

Drvo (stablo)
Drvo (stablo) je usmereni graf bez krugova. Ekvivalentno, to je
povezani graf sa N čvorovima i N -1 ivicama.

Ukorenjeno stablo
Ukorenjeno stablo je stablo sa naznačenim korenskim čvorom gde
svaka ivica pokazuje ili od ili prema korenovom čvoru. Kada se ivice
usmeravaju od korena, grafikon se naziva arborescencija (izvan
stabla-out tree) a prema korenu anti-arborescencija (ka stablu-in
tree). Cesce se koristi out-tree.

Usmereni aciklični grafikoni DAG


DAG su usmereni grafovi bez ciklusa. Ovi grafikoni igraju važnu ulogu
u predstavljanju struktura koje su zavisne. Postoji nekoliko efikasnih
algoritama za rad na DAG-ovima

7
Dvoparni graf
Dvoparni graf je onaj čija temena se mogu podeliti u dve nezavisne
grupe U, V tako da se svaka ivica povezuje između U i V
Postoje i druge definicije kao što su: Grafikon je dvobojan ili ne postoji
ciklus neparne dužine.

Kompletni grafikoni
Kompletan graf je onaj gde postoji jedinstvena ivica između svakog
para čvorova. Kompletni graf sa n vrhom označava se kao graf Kn.

8
Predstavljanje grafikona

Matrica susednosti
Matrica susednosti m je vrlo jednostavan način predstavljanja grafa.
Ideja je da ćelija m [i] [j] predstavlja težinu ivice koja ide od čvora i
do čvora j.
Napomena: Često se pretpostavlja da ivica koja ide sa čvora na samu
sebe vredi nula

Prednosti Mane
Prostor efikasan za predstavljanje Zahteva 0 (V2) prostora
gustog grafa Iteriranje preko svih ivica traje 0
Pregled težine ivica je 0 (1) (V2) vremena
Najjednostavniji prikaz grafikona

Lista susednosti
Lista susednosti je način predstavljanja grafa kao mape od čvorova do
liste ivica, gde pratimo dve stvari, cvor gde idemo i vrednost potrebna
da stignemo do njega

Prednosti Mane
9
Prostor efikasan za predstavljanje Manje efikasan prostor za gušće
proređenih grafova grafove
Iteriranje preko svih ivica je efikasno Pregled težine ivica je 0 (E)
Nešto složeniji prikaz grafa

Lista ivica
Lista ivica je način da se grafikon predstavi jednostavno kao
neuređena lista ivica. Pretpostavimo da oznaka za bilo koji triplet (u,
v, v) znači: trošak od čvora u do čvora v je w
Ova reprezentacija se retko koristi zbog nedostatka u strukturi.
Međutim, konceptualno je jednostavan i praktičan u dosta algoritama

Prednosti Mane
Prostor efikasan za predstavljanje Manje efikasan prostor za gušće
proređenog grafa grafove
Iteriranje preko svih ivica je efikasno Pregled težine ivica je 0 (E)
Vrlo jednostavna struktura

Uobičajeni problemi teorije grafova

Problem najkraćeg puta


10
Problem najkraceg puta je najcesci problem. S obzirom na ponderisani
graf, pronađite najkraći put ivica od čvora A do čvora H.

Ako ovo predstavlja put i zelimo da odemo od A do H, algoritam treba


da odredi putanju po kojoj cemo doci do cvora H uz najmanji trosak.
Algoritmi:BFS, Dijkstra’s, Bellman-Ford, Floyd-Warshall…

Povezanost
Da li postoji putanja između čvora A i čvora B? Nije nam bitan
minimalan trosak, vec da li uopste moze da se dodje iz jednog cvora u
drugi.

Rešenje: Koristiti uniju pronalazenja strukture podataka ili bilo koji


algoritam pretraživanja (DFS, BFS)

Čvrsto povezane komponente

11
Čvrsto povezane komponente se mogu smatrati samostalnim
ciklusima unutar usmerenog grafa gde svaki vrh u datom ciklusu
može doći do svakog drugog vrha u istom ciklusu

Algoritmi:Tarjan’s, Kosaraju’s

Problem putujućeg trgovca


Sa datim spiskom gradova i udaljenosti između tih gradova, koja je
najkraća moguća ruta kojom bi svaki grad posetio tačno jednom i
vratio se u pocetni grad

Ako je problem levi grafikon,moguce resenje je desni, gde je ukupna


vrednost 9
Ovaj problem je NP-težak, što znači da je računski veoma izazovan
problem. Nazalost to je zbog toga sto problem ima nekoliko veoma
važnih primena.
Algoritmi:Held-Karp

Mostovi
Most / presečena ivica je bilo koja ivica na grafikonu čije uklanjanje
povećava broj povezanih komponenata

12
Mostovi (koji su na grafikonu oznaceni roze) su važni u teoriji grafova
jer često nagoveštavaju slabe tačke, uska grla ili ranjivosti na
grafikonu

Problem artikulacije
Tačka artikulacije / izrezani vrh je bilo koji čvor na grafikonu čije
uklanjanje povećava broj povezanih komponenata

Artikulacione tačke (koji su na grafikonu oznaceni roze) su važne u


teoriji grafova jer često nagoveštavaju slabe tačke, uska grla ili
ranjivosti na grafikonu

Drvo minimalnog raspona

13
Drvo minimalnog raspona je podskup ivica povezanog grafa,
ponderisanih ivica koji povezuje sve temene zajedno, bez ikakvih
ciklusa i sa najmanjom mogućom ukupnom vrednosti ivice

Algoritmi:Kruskal’s, Prims’s-Boruvka’s,

Primer:Ovo stablo ima ukupnu težinu 14. Moguce je da stabla


minimalnog raspona na grafikonu nisu uvek jedinstvena

Ova stabla se vide u mnogim aplikacijama, uključujući: projektovanje


mreže sa najmanje troškova, dizajn kola, transportnu mrežu itd

Protok mreže: maksimalan protok


14
Pitanje koje se postavlja je: Sa beskonačnim ulaznim izvorom, koliki
protok možemo ocekivati kroz mrežu?

Pretpostavimo da su ivice putevi sa automobilima, cevi sa vodom ili


hodnici puni ljudi. Protok predstavlja količinu vode koja moze da teče
cevima, broj automobila koje putevi mogu izdrzati u saobraćaju i
maksimalan broj ljudi koji mogu da se kreću kroz hodnike.
Ovako mozemo pronaci uska grla koja usporavaju mrezu i popraviti
ivice koje imaju manji kapacitet.
Algoritmi:Ford-Fulkenson, Edmonds-Karp-Dinic

Pretraga u dubinu
15
Pretraga u dubinu (na engleskom Depth-first search - DFS) je
algoritam za pretragu struktura podataka (stabla i grafova). Početak
algoritma je u korenu stabla (kod grafa se neki čvor odredi za koren),
a zatim se pretražuje duž svih grana koliko god je to moguće pre
povratka u koren.

Primer stabla

Formalna definicija
Obilazak započinje iz proizvoljnog zadatog čvora r, korena pretrage u
dubinu. Koren se označava kao posećen. Zatim se bira proizvoljni
neoznačeni čvor r1, susedan sa r, pa se iz čvora r1 rekurzivno startuje
pretraga u dubinu. Iz nekog nivoa rekurzije izlazi se kad se naiđe na
čvor u kome su svi susedi (ako ih ima) već označeni. Ako su u
trenutku završetka pretrage iz r1, svi susedi čvora r označeni, onda se
pretraga za čvor r završava. U protivnom, bira se sledeći proizvoljni
neoznačeni sused r2 čvora r, izvršava se pretraga polazeći od r2, itd.

Vremenska i prostorna analiza


Vremenska i prostorna analiza pretrage u dubinu razlikuje se od
područja primene samog algoritma. U teorijskom računarstvu obično
se koristi za prolaske kroz cele grafove i za to je potrebno vreme
linearno veličini grafa. Kod tih aplikacija je prostorna složenost velika
jer se čuvaju čvorovi trenutne putanje, kao i skup već posećenih
čvorova. U ovom slučaju su vremenska i prostorna složenost ista kao
kod pretrage u širinu (BFS) i izbor koji od ova dva algoritma koristiti
manje zavisi od složenosti a više od toga šta koji algoritam daje na
kraju.

Primer za sledeći graf:

16
pretraga u dubinu počinje od čvora A, uz pretpostavku da se leve ivice
biraju pre desnih ivica grafa i da pretraga pamti prethodno posećene
čvorove pa ih neće ponavljati. Čvorovi će biti posećeni u sledećem
redosledu: A, B, D, F, E, C, G. Grane kroz koje se prošlo formiraju
Trémaux stablo, strukturu sa važnim primenama u teoriji grafova.
Isto pretraživanje bez pamćenja prethodno posećenih čvorova izgleda
ovako: A, B, D, F, E, A, B, D, F, E, itd. zauvek, zapetljano u A, B, D, F,
E ciklus. Ovakva pretraga nikad neće posetiti čvorove C i G.

Povratne vrednosti pretrage u dubinu


Nakon pretrage u dubinu dobijamo odgovarajuće razapinjujuće stablo.
U tom stablu postoje četiri vrste grana:
1. grana stabla (povezuje oca sa sinom)
2. povratna grana (povezuje potomka sa pretkom)
3. direktna grana (povezuje pretka sa potomkom)
4. poprečna grana (povezuje čvorove koji nisu srodnici u stablu)

Pseudokod algoritma
Ulaz: graf G i njegov čvor v, Izlaz: graf pretrage u dubinu
1 funkcija PretragaUDubinu(G,v):
2 označi v kao posećen
3 for sve grane e u G.obižnjeGrane(v) do
4 if grane e je neposećena then
5 w ← G.obižnjiČvor(v,e)
6 if čvor w je neposećen then
7 označi e kao posećen
8 rekurzivan poziv PretragaUDubinu(G,w)
9 else
10 označi e kao zadnju granu
17
Ne rekurzivna implementacija pretrage u dubinu:
1 funkcija PretragaUDubinu-iterativno(G,v):
2 označi v kao posećen
3 neka S bude stek
4 S.push(v)
5 while S nije prazan
6 t ← S.top
7 if t ono što tražimo:
8 return t
9 for sve grane e u G.obližnjeGrane(t) do
10 if grana e već označena
11 continue sa sledećom granom
12 w ← G.obližnjiČvor(t,e)
13 if čvor w nije otkriven i nije posećen
14 označi e kao ivicu stabla
15 označi w kao otkriven
16 S.push(w)
17 continue at 5
18 else if čvor w is otkriven
19 označi e kao zadnja ivica
20 else
21 // čvor w je posećen
22 označi e kao napred ili kros ivica
23 označi t kao posećen
24 S.pop()

Primer pretrage u dubinu (dupli klik za pocetak animacije)

Primene
Neki algoritmi koji koriste pretragu u dubinu kao gradivni element:
18
 Pronalaženje povezanih komponenti
 Topološko sortiranje
 Pronalaženje dve (grane ili čvora) povezane komponente.
 Pronalaženje tri (grane ili čvora) povezane komponente.
 Pronalaženje mostova grafa
 Pronalaženje snažno-povezanih komponenti
 Rešavanje zagonetki sa samo jednim rešenjem (npr. lavirint)
 Generisanje lavirinata

Komponente povezanosti

19
Graf sa tri povezane komponente.

U teoriji grafova, povezana komponenta neusmerenog grafa je podgraf u kom su


bilo koja dva čvora međusobno povezana putevima, i koji nije povezan sa
dodatnim čvorovima u supergrafu. Na primer, u grafu prikazanom na ilustraciji
sa desne strane se nalaze tri povezane komponente. Graf koje je povezan sam sa
sobom, ima tačno jednu povezanu komponentu, čineći ceo graf.

Relacija ekvivalencije
Alternativni način da se definiše povezana komponenta uključuje klase
ekvivalencije od relacije ekvivalencije koja je definisana na čvorovima grafa. U
neusmerenom grafu, čvor v je dostižan od čvora u ako postoji put od u do v. U
ovoj definiciji, jedan čvor se računa kao put dužine nula, a isti čvor može da se
pojavi više od jednog puta u obilasku. Dostizanje je relacija ekvivalencije, pošto
je:

-Refleksivna: Postoji trivijalni put od dužine nula od bilo kog čvora do samog
sebe.

-Simetrična: Ako postoji put od u do v, sama grana formira put od v do u.

-Tranzitivna: Ako postoji put od u do v i put od v do w, ova dva puta mogu biti
spojena zajedno tako da formiraju put od u do w.

Povezane komponente su onda indukovani podgrafi koje formiraju klase


ekvivalencije u ovoj relaciji.

20
Broj komponenti povezanosti
Broj komponenti povezanosti je važna topološka varijanta grafa. U topološkoj
teoriji grafova, broj komponenti povezanosti može da se interpretira kao nulti
Betijev broj grafa. U algebarskoj teoriji grafova broj komponenti povezanosti je
jednak višestrukosti 0 kao sopstveni vektor od grafa Laplasove matrice. Takođe
je i indeks prvog koeficijenta različitog od nule od hromatskog polinoma grafa.
Broj komponenti povezanosti igraju ključnu ulogu u Tutovoj teoremi
karakterišući grafove koji imaju savršeno poklapanje, i u definiciji težine grafova.

Algoritmi
Jednostavno je da se izračunaju komponente povezanosti grafa u linearnom
vremenu (u pogledu broja čvorova i puteva grafa) korišćenjem bilo pretrage u
širinu ili pretrage u dubinu. U bilo kom slučaju, pretraga koja počinje u nekom
određenom čvoru v pronaći će celokupnu povezanu komponentu koja sadrži v (i
ne više) pre povratka. Da bismo pronašli sve povezane komponente grafa, idemo
petljom kroz čvorove, započinjući novu pretragu u širinu ili dubinu kad god
petlja dostigne čvor koji već nije uključen u prethodno pronađenoj komponenti
povezanosti.

Postoje i efikasni algoritmi za dinamičko praćenje povezanih komponenti grafa


dok se čvorovi i grane dodaju, kao jednostavna primena sistema disjunktnih
struktura podataka. Ovi algoritmi zahtevaju amortizovano O(α(n)) vreme
operacije, kod kojih dodajući čvorove i puteve, i određivanje povezane
komponente, gde su obe operacija, i α(n) je vrlo sporo rastuća inverzna, od vrlo
brzo rastuće Akermanove funkcije. Sličan problem predstavlja praćenje
povezanih komponenti dok se sve grane brišu iz grafa, jedna po jedna; postoji
algoritam za rešavanje ovog konstantnog vremena po upitu, i O(|V||E|) vreme da
se održi struktura podataka; ovo je amortizovana cena od O(|V|) po brisanju puta.
Za drveta, cena može da se smanji do O(q + |V| log |V|), ili O(log |V|)
amortizovana cena po obrisanom putu.

21
Pretraga u širinu
Pretraga u širinu (BFS; Breadth-first search) je algoritam za
pretraživanje ili kretanje kroz stablo ili graf strukturu podataka.
Počinje iz proizvoljnog zadatog čvora r koji se označava kao posećen i
dodaje kao jedini element reda. Potom se ponavljaju sledeći koraci,
dok god red ne postane prazan: čvor sa početka reda se briše i svaki
neposećeni sused ovog čvora se označava kao posećen i dodaje na
kraj reda.

Redosled kojim se čvorovi proširuju

Kod BFS pretrage kada se stigne do nekog čvora x grafa G, najpre se


obilaze njegovi neposećeni i neposredni susedi. Nakon toga se
nastavlja BFS algoritam, tj. posećuju se svi neposećeni susedi iz
prethodnog nivoa pretrage. Zbog toga se koristi FIFO(first in, first out)
red.

Skica rešenja:
1. Polazni čvor x grafa G.
o Smesti se u red.
o Poseti se.
o Označi se kao posećen.
o Upišu se susedi čvorova x na kraj reda.
2. Poseti se sledeći čvor iz reda, označi kao posećen, njegovi
neposećeni susedi se upišu na kraj reda.
3. Ponavlja se korak 2 dok ima neposećenih čvorova u redu.
4. 1 /* a = матрица суседства, n= број чворова графа G */
5. 2 void BFS (int a[][50], int n )

22
6. 3 {
7. 4 int x; /* чвор графа */
8. 5 int m[50]; /* m је низ означених чворова графа */
9. 6 /* иницијализација низа означених чворова на 0, јер
су на почетку сви непосећени */
10. 7 for (x = 0 ; x < n ;
x++ )
11. 8 m[x] = 0;
12. 9 /* посета графа
почев од првог непосећеног чвора */
13. 10 for (x = 0 ; x <
n ; x++ )
14. 11 if (!m[x] )
15. 12 poseti (x, a,
n, m )
16. 13 }
17. 14 /* s = пролази чвор
претраге по ширини, a = матрица суседства */
18. 15 /* n = број чворова
графа, m = низ посећених чворова */
19. 16
20. 17
21. 18 void poseti(int s, int
a [][50], int n, int m[] )
22. 19 {
23. 20 int i, k; /*
бројачи у циклусу */
24. 21 int v; /* чвор
графа */
25. 22 int red[50]; /*
низ чворова графа поређаних у поретку BFS претраге */
26. 23
/*иницијализација низа m, ред у односу на полазну чвор
претраге s */
27. 24 m[s] = 1;
28. 25 red[0] = s;
29. 26 k = 1;
30. 27 /* обилазак
непосредних суседа чвора s, разлика од DFSа */

23
31. 28 for (i = 0 ; i < k ;
i++ )
32. 29 {
33. 30 s = red[i];
34. 31 for (v = 0 ; v <
n ; v++ )
35. 32 if(!m[v] &&
a[s][v] )
36. 33 {
37. 34 m[v] = 1;
38. 35 red[k++]
= v;
39. 36 }
40. 37 }
41. 38 /*испис -{BFS}-
поретка*/
42. 39 for (i = 0 ; i < k ;
i++ )
43. 40 printf("%d" ,
red[i] );
44. 41 }
Svaka grana pregleda se tačno dva puta, jednom sa svakog kraja.
Prema tome, vremenska složenost je proporcionalna broju grana. S
druge strane, broj rekurzivnih pokretanja algoritma je V, pa se
složenost algoritma može opisati izrazom O(|V|+|E|). Ako je
korišćeno matrično predstavljanje, imamo vremensku složenost od
O(|V|²), a ukoliko je korišćeno ulančano predstavljanje, složenost je
O(|V|+|E|). Ulančano predstavljanje daje bolje vremenske
performanse.

24
Primer pretrage u sirinu (dupli klik za pocetak animacije)

Problemi koji se rešavaju obilaskom grafa


 Topološko sortiranje.
 Minimalno povezujuće stablo.
 Transportne mreže.
 Uparivanje, Hopkroft-Karp algoritam.
 Tranzitivno zatvorenje.
 Najkraći putevi iz datog čvora, Dajkstrin algoritam.
 Svi najkraći putevi, Flojd-Voršalov algoritam.
 Pronalaženje artikulacionih tačaka.
 Pronalaženje mostova.

Korišćenje reda

25
BFS algoritam koristi strukturu podataka redosleda da bi pratio koji
čvor treba sledeći da poseti. Po dolasku do novog čvora algoritam ga
dodaje u red da bi ga kasnije posetio. Struktura podataka o redu radi
isto kao i redovi iz stvarnog sveta, kao što je cekanje u redu u
restoranu. Ljudi mogu ili da uđu u red (enqueue) ili da sednu
(dequeue).

BFS najkraća putanja na mreži

Motivacija
Mnogi problemi u teoriji grafova mogu se predstaviti pomoću mreže.
Mreža je forma implicitnog grafa, jer se mogu odrediti susedni čvorovi
na osnovu naše lokacije unutar mreže.
Vrsta problema koja uključuje pronalaženje puta kroz mrežu je
rešavanje lavirinta:

26
Još jedan primer može biti rutiranje kroz prepreke (drveće, reke,
stene itd.) da bi se dobila lokacija:

Teorija grafova na mrežama


Uobičajeni pristup rešavanju problema teorije grafova na mrežama je
prvo pretvaranje mreže u poznati format kao što je lista / matrica
susedstva. U osnovi, ovo su strukture podataka koje skladište
informacije o susedstvu unutar grafikona.

27
Jednom kada imamo listu / matricu susedstva, možemo pokrenuti bilo
koji specijalizovani algoritam grafikona da bismo rešili naš problem,
kao što su: najkraći put, povezane komponente itd.
Međutim, transformacije između prikaza grafikona obično se mogu
izbeći zbog strukture mreže.

Vektori smera
Zbog strukture mreže, ako smo na crvenoj kugli u sredini, znamo da
se možemo kretati levo, desno, gore i dole da bismo došli do susednih
ćelija:

Matematički, ako je crvena kugla na koordinati reda-kolone (r, c),


možemo dodati vektore redova (-1,0), (1,0), (0,1) i (0, -1) da bi se
došlo do susednih ćelija.
28
Ako problem koji pokušavate da rešite dozvoljava dijagonalno
kretanje, možete uključiti i vektore redova:(-1, -1),(-1,1),(1,1),(1,-1)

Ovo predstavlja vrlo lak pristup susednim ćelijama sa trenutne


pozicije:

29
Problem tamnice
Pretpostavimo da ste zarobljeni u 2D tamnici i treba da pronađete
najbrži izlaz! Tamnica je sastavljena od jedinstvenih kockica koje
mogu ili ne moraju biti ispunjene kamenom. Potreban je jedan minut
za pomeranje bilo na sever, jug, istok ili zapad. Ne možete se kretati
dijagonalno, a lavirint je sa svih strana okružen čvrstim kamenjem.

Tamnica ima veličinu RxC gde je R broj redova, a C broj kolona.Kreće


se od ćelije S, a izlaz je kod ćelije E. Ćelija puna kamena označena je
sa #, a prazne ćelije predstavljene su tačkom.

U datom primeru, moglo bi se izvući jedno rešenje kao gore u zelenoj


ruti. Naš pristup je da napravimo BFS počev od ćelije S, sve dok ne
pronađemo izlaznu ćeliju E.

30
Koristili smo red za čuvanje tačaka koje ćemo kasnije posetiti na
grafikonu. I ovde koristimo isto. Počinjemo od ćelije (0,0) i dodajemo
je u naš red. Jednom kada je posetimo, u red dodajemo sve susede
posećene ćelije. Ćelija (0,0) ima dva suseda, (0,1) i (1,0). Red
čekanja postaje veći i veći kako ga posećujemo i dodajemo više
suseda u red, iterativno. Ovaj proces zaustavljamo kada ispunimo
izlazni uslov, tj. posetimo izlaznu ćeliju E (4,3). Tada se mozemo
vratiti istim putem, od izlaza do starta.

31
Literatura

1. https://www.youtube.com/watch?v=09_LlHjoEiY

2. https://towardsdatascience.com

32

You might also like