You are on page 1of 16

Algoritmi i strukture podataka

Algoritmi i strukture podataka


Gomila
Gomila
Sortiranje gomilom
Sortiranje gomilom
Osnovni pojmovi
Osnovni pojmovi

prioritetni red
prioritetni red
je struktura podataka koja donekle podsje
je struktura podataka koja donekle podsje

a na obi
a na obi

ni
ni
red
red
sli sli nost nost s obi s obi nim redom je u tome nim redom je u tome to se podaci mogu dodavati (ubacivati) to se podaci mogu dodavati (ubacivati)
u prioritetni red te skidati (izbacivati) iz njega. u prioritetni red te skidati (izbacivati) iz njega.
razlika razlika je u tome je u tome to se ne skida onaj podatak koji je prvi bio dodan, ve to se ne skida onaj podatak koji je prvi bio dodan, ve
onaj koji ima najve onaj koji ima najve u vrijednost (najve u vrijednost (najve i prioritet) i prioritet)

prioritetni red mo
prioritetni red mo

e se prikazati na razne na
e se prikazati na razne na

ine:
ine:
sortiranom vezanom listom sortiranom vezanom listom
sortiranim binarnim stablom sortiranim binarnim stablom

najprirodniji i naju
najprirodniji i naju

inkovitiji na
inkovitiji na

in prikaza prioritetnog reda je


in prikaza prioritetnog reda je
pomo
pomo

u gomile (hrpe,
u gomile (hrpe,
heap
heap
)
)
Gomila
Gomila

gomila je
gomila je
potpuno
potpuno
binarno stablo gdje se
binarno stablo gdje se

vorovi mogu usporeivati


vorovi mogu usporeivati
nekom ureajnom relacijom
nekom ureajnom relacijom
(npr. <=) i gdje je bilo koji
(npr. <=) i gdje je bilo koji

vor u smislu
vor u smislu
te relacije ve
te relacije ve

i ili jednak od svoje djece (ako postoje)


i ili jednak od svoje djece (ako postoje)
75
75
46
46
13
13
26
26
6
6
31
31
Oblikovanje strukture gomila
Oblikovanje strukture gomila

naj
naj

e
e

e se
e se
n
n
elemenata slo
elemenata slo

i u gomilu, pa je najjednostavnije
i u gomilu, pa je najjednostavnije
koristiti potpuno binarno stablo za prikazivanje gomile, makar b
koristiti potpuno binarno stablo za prikazivanje gomile, makar b
i i
i i
druga binarna stabla mogla zadovoljavati
druga binarna stabla mogla zadovoljavati
to se ostvaruje ubacivanjem to se ostvaruje ubacivanjem jednog po jednog jednog po jednog elementa u gomilu, elementa u gomilu, uvaju uvaju i i
svojstvo gomile svojstvo gomile
po po inje se od prazne gomile inje se od prazne gomile
na "dno" (list) gomile dodaje se na "dno" (list) gomile dodaje se lan koji se onda usporeuje i zamjenjuje sa lan koji se onda usporeuje i zamjenjuje sa
svojim roditeljem, praroditeljem, prapraroditeljem itd. dok ne p svojim roditeljem, praroditeljem, prapraroditeljem itd. dok ne postane manji ostane manji
ili jednak nekoj od tih vrijednosti ili jednak nekoj od tih vrijednosti
GomiluStvori
Analiza najgoreg slu
Analiza najgoreg slu

aja
aja

za analizu najgoreg slu
za analizu najgoreg slu

aja algoritma uzmimo


aja algoritma uzmimo
n
n
elemenata
elemenata
na na i i- -toj razini potpunog binarnog stabla ima najvi toj razini potpunog binarnog stabla ima najvi e e 2 2
i i- -1 1
vorova vorova
na svim ni na svim ni im razinama do tada ima ukupno im razinama do tada ima ukupno 2 2
i i- -1 1
- - 1 1 vorova, za vorova, za i i > 1 > 1. .
stablo s stablo s k k razina ima najvi razina ima najvi e e 2 2
k k
- -1 1 vorova vorova
stablo s stablo s k k- -1 1 razinom ima najvi razinom ima najvi e e 2 2
k k- -1 1
- -1 1 vorova. vorova.

ako je stablo potpuno, zapo
ako je stablo potpuno, zapo

eta je posljednja razina, pa vrijedi


eta je posljednja razina, pa vrijedi
2
2
k k- -1 1
-
-
1 <
1 <
n
n

2
2
k k
-
-
1
1
iz ovoga slijedi: iz ovoga slijedi:
2 2
k k- -1 1
< < n + n + 1 1 ( (k k 1) log 2 1) log 2 < log ( < log (n + n + 1) 1) k k < log < log
2 2
( (n + n + 1) + 1 1) + 1
n + 1 n + 1 2 2
k k
log (n+1) log (n+1) k k log log 2 2 log log
2 2
(n+1) (n+1) k k
log log
2 2
(n+1) (n+1) k < k < log log
2 2
( (n + n + 1) + 1 1) + 1 odnosno odnosno k = k = log log
2 2
(n+ (n+1 1) )
Primjer
Primjer

za
za
n
n
= 14 treba
= 14 treba

log
log
2 2
15
15

=
=

ln
ln
15/ln 2
15/ln 2

=
=

2.70805/0.693147
2.70805/0.693147

=
=

3.9
3.9

= 4 razine
= 4 razine

za
za
n
n
= 15 treba
= 15 treba

log
log
2 2
16
16

=
=

4
4

= 4 razine
= 4 razine

za
za
n
n
= 16 treba
= 16 treba

log
log
2 2
17
17

=
=

4.087
4.087

= 5 razina
= 5 razina
Ubrzanje algoritma
Ubrzanje algoritma
-
-
I
I

u najgorem slu
u najgorem slu

aju, petlja
aju, petlja
while
while
izvr
izvr

ava se proporcionalno broju


ava se proporcionalno broju
razina u gomili
razina u gomili
skup podataka koji predstavlja najgori slu skup podataka koji predstavlja najgori slu aj za ovaj algoritam je polje s aj za ovaj algoritam je polje s
rastu rastu im podacima im podacima

tada svaki novi element, onaj koji se ubacuje u gomilu pozivom
tada svaki novi element, onaj koji se ubacuje u gomilu pozivom
funkcije
funkcije
ubaci
ubaci
, postaje korijen pa se kroz
, postaje korijen pa se kroz
k
k
razina obavlja
razina obavlja
zamjena
zamjena

vrijeme izvoenja je tada
vrijeme izvoenja je tada
O(n log
O(n log
2 2
n)
n)

za prosje
za prosje

ne podatke vrijeme za stvaranje gomile iz skupa podataka


ne podatke vrijeme za stvaranje gomile iz skupa podataka
je
je
O(n)
O(n)
,
,

to je za red veli
to je za red veli

ine bolje
ine bolje
Ubrzanje algoritma
Ubrzanje algoritma
-
-
II
II

za pobolj
za pobolj

anje brzine obavljanja zadanih operacija stvoren je


anje brzine obavljanja zadanih operacija stvoren je
algoritam koji kre
algoritam koji kre

e od krajnjih
e od krajnjih

vorova prema korijenu, razinu po


vorova prema korijenu, razinu po
razinu
razinu

samo podatak u korijenu mo
samo podatak u korijenu mo

e naru
e naru

avati svojstvo gomile, dok


avati svojstvo gomile, dok
podstabla zadr
podstabla zadr

avaju to svojstvo
avaju to svojstvo

tada je samo potrebno tu nepravilnost ispraviti i opet dobivamo
tada je samo potrebno tu nepravilnost ispraviti i opet dobivamo

eljenu gomilu.
eljenu gomilu.
to to ini funkcija ini funkcija podesi podesi u primjeru u primjeru
za krajnje za krajnje vorove svojstvo gomile je zadovoljeno, pa treba u vorove svojstvo gomile je zadovoljeno, pa treba u
stvori_gomilu stvori_gomilu funkciji provesti popravljanje svojstva gomile samo za funkciji provesti popravljanje svojstva gomile samo za
korijen stabla korijen stabla
GomiluPodesi

Stvaranje gomile za ulazni niz podataka:
Stvaranje gomile za ulazni niz podataka:
10,63,18,71,7,51,32
10,63,18,71,7,51,32
Primjer stvaranja gomile
Primjer stvaranja gomile
10 10
63 63
18 18
71 71 7 7 51 51 32 32
10 10
63 63
51 51
71 71 7 7 18 18 32 32
10 10
71 71
51 51
63 63 7 7 18 18 32 32
71 71
63 63
51 51
10 10 7 7 18 18 32 32
Ubrzanje algoritma
Ubrzanje algoritma

za
za
n
n
podataka,
podataka,
2
2
k k- -1 1

n < 2
n < 2
k k
, broj razina je
, broj razina je
k =
k =

log
log
2 2
(n+1)
(n+1)


za najgori slu
za najgori slu

aj broj iteracija u
aj broj iteracija u
podesi
podesi
iznosi
iznosi
k
k
-
-
i
i
za
za

vor na
vor na
razini
razini
i
i
gdje ima najvi
gdje ima najvi

e
e
2
2
i i- -1 1

vorova
vorova
vrijeme izvoenja za vrijeme izvoenja za stvori_gomilu stvori_gomilu je: je:
s slijedi ekvivalentni izraz kad se izbaci faktor lijedi ekvivalentni izraz kad se izbaci faktor
0
0 i obrne redosl i obrne redosli ijed sumacije: jed sumacije:
( )

k
i
i
i k
1
1
2 eksponent se mijenja od eksponent se mijenja od 0 0 do do k k - -1 1, ,
a faktor od a faktor od k k - -1 1 do do 0 0
) ( 2
2
2 2 2
1
1
1
1
1
1
1
1
n O n
i
n i i
k
i
i
k
i
i k
k
i
i k
= =


=

=

2
2
k k- -1 1

n
n
suma reda te suma reda te i i
prema prema 2 2
Ubrzanje algoritma
Ubrzanje algoritma

v
v
rijeme izvoenja za najgori slu
rijeme izvoenja za najgori slu

aj algoritma
aj algoritma
stvori_gomilu
stvori_gomilu
je
je
O(n)
O(n)
,
,

to je za red veli
to je za red veli

ine bolje od
ine bolje od
O(n log
O(n log
2 2
n)
n)
za uzastopno
za uzastopno
kori
kori

tenje funkcije
tenje funkcije
ubaci
ubaci

f
f
unkcija
unkcija
stvori_gomilu
stvori_gomilu
tra
tra

i da su svi elementi za stvaranje


i da su svi elementi za stvaranje
gomile ve
gomile ve

prisutni, dok
prisutni, dok
ubaci
ubaci
mo
mo

e ubaciti novi element u gomilu


e ubaciti novi element u gomilu
bilo kada
bilo kada
funkcije koje gomila treba brzo obaviti i radi kojih je napravlj funkcije koje gomila treba brzo obaviti i radi kojih je napravljena ta struktura ena ta struktura
podataka su ubacivanje novih i brisanje najve podataka su ubacivanje novih i brisanje najve eg elementa iz skupa eg elementa iz skupa
podataka podataka
b brisanje najve risanje najve eg podatka obavlja se izbacivanjem korijena i pozivanjem eg podatka obavlja se izbacivanjem korijena i pozivanjem
funkcije funkcije podesi podesi, a ubacivanje novih radi se funkcijom , a ubacivanje novih radi se funkcijom ubaci ubaci
- - t tako se posti ako se posti e da se obje e da se obje eljene funkcije obavljaju u eljene funkcije obavljaju u vremen vremenu u O(log O(log
2 2
n) n)
Ubrzanje algoritma
Ubrzanje algoritma

g
g
omila mo
omila mo

e
e
biti napravljena za razne relacije njenih elemenata
biti napravljena za razne relacije njenih elemenata
gomilu s relacijom gomilu s relacijom ve ve i od i od zovemo zovemo max heap max heap
gomilu gomilu s relacijom s relacijom manji od manji od zovemo zovemo min heap min heap
Sortiranje gomilom
Sortiranje gomilom

h
h
eap sort:
eap sort:

element s vrha gomile zamjenjuje se s posljednjim elementom
element s vrha gomile zamjenjuje se s posljednjim elementom
polja
polja

gomila se skra
gomila se skra

uje za 1 element i pode


uje za 1 element i pode

ava
ava

s
s
lo
lo

enost pode
enost pode

avanja je
avanja je
O(log
O(log
2 2
n)
n)

t
t
o se obavlja
o se obavlja
n
n
puta pa je slo
puta pa je slo

enost sorta
enost sorta
O(nlog
O(nlog
2 2
n)
n)
razlika u vremenu izvoenja za razliite redove veliine
sloenosti postane znaajna za veliki n

Sortovi
Sortovi
Zadaci za vje
Zadaci za vje

bu
bu

Zadan je niz ulaznih podataka:
Zadan je niz ulaznih podataka:
12, 15, 5, 3, 7, 2 18, 11, 4, 10
12, 15, 5, 3, 7, 2 18, 11, 4, 10
a) a) treba nacrtati potpuno binarno stablo koje je nastalo slijednim treba nacrtati potpuno binarno stablo koje je nastalo slijednim upisom upisom
ulaznih podataka ulaznih podataka
b) b) treba nacrtati podatkovnu strukturu gomila u koju su pohranjeni treba nacrtati podatkovnu strukturu gomila u koju su pohranjeni ulazni ulazni
podaci podaci
c) c) koliko iznosi apriorno vrijeme izvoenja za pretvorbu potpunog b koliko iznosi apriorno vrijeme izvoenja za pretvorbu potpunog binarnog inarnog
stabla u strukturu gomila? stabla u strukturu gomila?
Zadaci za vje
Zadaci za vje

bu
bu

Zadan je niz ulaznih podataka tipa
Zadan je niz ulaznih podataka tipa
int
int
:
:
12, 5, 4, 10, 7, 8 11
12, 5, 4, 10, 7, 8 11
a) a) t treba nacrtati stablo koje predstavlja strukturu reba nacrtati stablo koje predstavlja strukturu gomila gomila, takvu da omogu , takvu da omogu uje uje
rje rje enje zadatka pod b) enje zadatka pod b)
b) b) t treba ilustrirati kako radi silazno sortiranje kori reba ilustrirati kako radi silazno sortiranje kori tenjem strukture gomila tenjem strukture gomila
( (heap sort heap sort) )
c) c) k koliko je apriorno vrijeme potrebno za sortiranje oliko je apriorno vrijeme potrebno za sortiranje
n
n podataka? podataka?
Zadaci za vje
Zadaci za vje

bu
bu

Napisati program koji
Napisati program koji

e u cjelobrojnom polju od
e u cjelobrojnom polju od
n
n

lanova prona
lanova prona

i
i
k
k
-
-
ti najve
ti najve

i
i

lan polja.
lan polja.
a) a) U U itano polje sortirati po padaju itano polje sortirati po padaju im vrijednostima i ispisati im vrijednostima i ispisati lan s lan s
indeksom indeksom k k- -1 1. .
b) b) U U itati itati k k lanova polja, sortirati ih po padaju lanova polja, sortirati ih po padaju im vrijednostima. U im vrijednostima. U itavati itavati
preostale preostale lanove polja. Ako je pojedini lanove polja. Ako je pojedini lan manji od onoga s indeksom lan manji od onoga s indeksom
k k- -1 1, ignorirati ga, ako je ve , ignorirati ga, ako je ve i umetnuti ga na pravo mjesto, a izbaciti i umetnuti ga na pravo mjesto, a izbaciti lan lan
polja koji bi sad imao indeks polja koji bi sad imao indeks k k. .
c) c) Varirati postupke sortiranja te odrediti pripadna apriorna vreme Varirati postupke sortiranja te odrediti pripadna apriorna vremena i na i
izmjeriti aposteriorna vremena izvoenja izmjeriti aposteriorna vremena izvoenja. .

Odrediti apriorna vremena trajanja, a izmjeriti aposteriorna
Odrediti apriorna vremena trajanja, a izmjeriti aposteriorna
vremena. Varirati postupak sortiranja.
vremena. Varirati postupak sortiranja.

You might also like