Teorija Grafova

You might also like

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

OSNOVE TEORIJE

GRAFOVA
Neusmjereni grafovi
Neusmjereni graf je uređeni par skupova
(V,E). Elementi skupa V nazivaju se čvorovi
(vrhovi, točke), a elementi skupa E nazivaju
se bridovi (grane, veze).
Brid grafa je par elemenata iz skupa V,
odnosno, on povezuje dva čvora iz skupa V.
Kada se crta graf, sasvim je nebitan raspored
čvorova i veza u prostoru, što je vidljivo i iz
sljedeće slike.
Ove dvije slike predstavljaju isti graf
Osnovni pojmovi u teoriji
grafova
Definicija 1 (definicija grafa): Jednostavan graf G sastoji
se od nepraznog konačnog skupa V(G) čije elemente
nazivamo vrhovi i konačnog skupa E(G), različitih parova
elemenata iz V(G),koje nazivamo bridovi

Definicija 2: Za vrhove u i v kažemo da su susjedni ako


postoji brid e=uv u tom grafu koji ih spaja. Za bridove ei f
kaže se da su susjedni ako postoji vrh u tom grafu koji je
njima zajednički.
Definicija 3: Put u grafu G je konačan slijed bridova
v1v2v3…vn-1vn u kojem su svaka dva brida susjedna i svi
su vrhovi različiti, osim eventualno početni i krajnji.
Definicija 4: Za graf g kažemo da je povezan ako i samo ako
postoji put između svaka dva vrha.

povezani grafovi

nepovezani grafovi
Graf se može prikazati tablicom incidencije u kojoj prvi redak i
stupac predstavljaju vrhove grafa, a preostala polja u tablici
predstavljaju težinu (vrijednost) brida koji spaja dotične vrhove.
Težina obično predstavlja mjeru udaljenosti dva vrha.
Ako vrhovi nisu spojeni bridom tada se udaljenost među njima
određuje s  .

Dan je graf s označenim udaljenostima na slici

Za dotični se graf može formirati tablica incidencije


 

Ova je tablica simetrična obzirom na glavnu dijagonalu. Vrijednosti 0 na


glavnoj dijagonali predstavljaju udaljenosti pojedinog vrha od sebe samog
Razapinjuća stabla
 Minimalno razapinjuće stablo predstavlja graf
u kojem između svaka dva čvora postoji put,
ali da pritom u njemu ne postoji niti jedan
ciklus.
 Minimalna razapinjuća stabla mogu se dobiti
uz pomoć dva jednostavna algoritma, a to su
Primov algoritam i Kruskalov algoritam
Primov algoritam
 Algoritam koji nam omogućava dobiti minimalno
razapinjuće stablo je dan s:
Stablo = O
Izaberi proizvoljan vrh iz V(grafa) i stavi ga u
V(stablo). Dok je broj vrhova (stablo)<broj
vrhova(graf) ponavljaj postupak
Izaberi vrh koji nije u V (stablo), a susjedan je
nekom d vrhova iz V(stablo) i pri tome je težina
brida koja ih spaja minimalna. Stavi taj vrh
zajedno s njemu pripadajućim bridom u stablo
Tablični način provođenja Primovog algoritma
Kruskalov algoritam
 Kruskalov algoritam koji nam omogućava dobiti
minimalno razapinjuće stablo je dan s:
Stablo = O
Bridove grafova poredaj u padajući niz.
Dok postoji brid čije dodavanje u stablo ne tvori
ciklus ponavljaj postupak.Uzmi najmanji brid koji
ne tvori ciklus s bridovima iz stabla i dodaj ga u
stablo.
NAJKRAĆE UDALJENOSTI U GRAFU
 Udaljenost u grafu definira se kao suma
težine bridova koje čine put od početnog vrha
do onog krajnjeg.
 Za pronalaženje najkraćeg puta u grafu
koristi se Dijkstrin i Floydov algoritam
DIJKSTRIN ALGORITAM
 Dijkstrin algoritam predstavlja proširenje Primovog
algoritma.
 Dijkstrin algoritam glasi:

Stablo = O
Stavi u stablo početni vrh i označi ga s udaljenošću 0.
Dok je broj vrhova za stablo< broj vrhova graf
ponavljaj postupak. Za sve vrhove koji su susjedni
nekom vrhu iz stabla izračunaj najmanju udaljenost
od početnog vrha kao udaljenost vrha kojem je taj
vrh susjedan + težina brida koja ih spaja. Od svih
vrhova odaberi onaj koji ima najmanju vrijednost.
Tablični prikaz algoritma
Floydov algoritam za
pronalaženje najkraćih puteva
 Floydov algoritam je tipičan primjer
dinamičkog programiranja. Njime se
pronalaze najmanje udaljenosti između svih
parova vrhova u grafu da bi se potom
formirao graf optimalne strukture.
 Matricu incidencije označavamo s G[i,j]
Floydov algoritam glasi

Za vrh_kroz = 1do broj_vrhova


Za vrh_od = 1 do broj_vrhova
Ako G[vrh_od, vrh_kroz]! = ∞
Za vrh_do=1 do broj_vrhova
Ako G [ vrh_kroz, vrh_do]!= ∞
Ako G [ vrh_od, vrh_do]!= ∞∞ ili
G [ vrh_od, vrh_do]> G[vrh_od, vrh_kroz]+ G [ vrh_kroz, vrh_do]
G [ vrh_od, vrh_do]=G[vrh_od, vrh_kroz]+ G [ vrh_kroz, vrh_do]
Primjer;
Krećemo od vrha A i kroz njega pokušavamo poboljšati put
između ostalih vrhova te zapisujemo redom puteve koji se žele
poboljšati

Kroz vrh A se matrica incidencije ne može poboljšati te ostaje


ista, a mi prelazimo na vrh B te istim postupkom dobivamo
 U trećem se koraku koristi vrh C pa se dobiva

 Algoritam se nastavlja vrhom D te se dobiva:


 Matrica incidencije koju dobivamo je:

Posljednji vrh koji koristimo je vrh E te dobivamo:


Konačna dobivena matrica incidencije je:

Prateći izvođenje algoritma mogu se rekonstruirati putevi na načina da se


prati kako su se mijenjale težine u matrici incidencije kroz svaki korak te
se dobiva:

You might also like