Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062...

177
[email protected] www.matf.bg.ac.rs/ ~ ezivkovm [email protected] www.matf.bg.ac.rs/ ~ vesnap

Transcript of Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062...

Page 1: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

Algoritmi i strukture podatakaMaterijal sa predavaa

Miodrag ivkovi

e-mail: [email protected]

URL: www.matf.bg.ac.rs/~ezivkovm

Vesna Marinkovi

e-mail: [email protected]

URL: www.matf.bg.ac.rs/~vesnap

Matematiqki fakultet, Beograd

1

Page 2: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

2

Autori:prof. dr Miodrag ivkovi, redovni profesor Matematiqkog fakultetau Beogradudr Vesna Marinkovi, docent Matematiqkog fakulteta u Beogradu

ALGORITMI I STRUKTURE PODATAKA

Sva prava zadrana. Nijedan deo ovog materijala ne moe biti reprodukovan

niti smexten u sistem za pretraivae ili transmitovae u bilo kom obliku,

elektronski, mehaniqki, fotokopiraem, smaeem ili na drugi naqin, bez

prethodne pismene dozvole autora.

Page 3: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

Sadraj

Sadraj 3

1 Uvod 51.1 Uvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.2 Algoritmi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.3 Sortirae umetaem . . . . . . . . . . . . . . . . . . . . . . . 81.4 Analiza algoritama . . . . . . . . . . . . . . . . . . . . . . . 101.5 Konstrukcija algoritama primenom razlagaa . . . . . . . . 141.6 Analiza algoritama zasnovanih na razlagau . . . . . . . . 181.7 Zadaci za vebu . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2 Strukture podataka 252.1 Primitivne strukture podataka . . . . . . . . . . . . . . . . 252.2 Stek i red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.3 Povezane liste . . . . . . . . . . . . . . . . . . . . . . . . . . . 302.4 Stabla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352.5 Hip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382.6 Binarno stablo pretrage (ureeno binarno stablo) . . . . . 432.7 AVL stabla . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482.8 Skupovne operacije . . . . . . . . . . . . . . . . . . . . . . . . 522.9 Hex tabele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552.10 Grafovi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622.11 Zadaci za vebu . . . . . . . . . . . . . . . . . . . . . . . . . . 63

3 Sortirae 693.1 Hip sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693.2 Sortirae razvrstavaem . . . . . . . . . . . . . . . . . . . . 723.3 Sortirae razdvajaem (kvik sort) . . . . . . . . . . . . . . 733.4 Doa granica sloenosti za sortirae . . . . . . . . . . . . 773.5 Zadaci za vebu . . . . . . . . . . . . . . . . . . . . . . . . . . 79

4 Analiza algoritama 814.1 Uvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814.2 Asimptotska oznaka 𝑂 . . . . . . . . . . . . . . . . . . . . . . 824.3 Vremenska i prostorna sloenost . . . . . . . . . . . . . . . 84

3

Page 4: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

Sadraj 4

4.4 Sumirae . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 854.5 Diferencne jednaqine . . . . . . . . . . . . . . . . . . . . . . 884.6 Zadaci za vebu . . . . . . . . . . . . . . . . . . . . . . . . . . 95

5 Grafovski algoritmi 975.1 Obilasci grafova . . . . . . . . . . . . . . . . . . . . . . . . . 985.2 Zadaci za vebu . . . . . . . . . . . . . . . . . . . . . . . . . . 109

6 Algoritamske strategije 1116.1 Algoritmi grube sile . . . . . . . . . . . . . . . . . . . . . . 1116.2 Pohlepni algoritmi . . . . . . . . . . . . . . . . . . . . . . . 1136.3 Algoritmi zasnovani na razlagau . . . . . . . . . . . . . . . 1186.4 Pretraga sa vraaem . . . . . . . . . . . . . . . . . . . . . . 134

7 Generisae kombinatornih objekata 1517.1 Uvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1517.2 Podskupovi i particije . . . . . . . . . . . . . . . . . . . . . 1537.3 Kombinacije . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1567.4 Permutacije . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1577.5 Zadaci za vebu . . . . . . . . . . . . . . . . . . . . . . . . . . 157

8 Traee reqi u tekstu 1638.1 Zadaci za vebu . . . . . . . . . . . . . . . . . . . . . . . . . . 168

9 Algoritmi numeriqke optimizacije 1699.1 Izraqunavae vrednosti polinoma . . . . . . . . . . . . . . . 1699.2 Lagranov interpolacioni polinom . . . . . . . . . . . . . . 1709.3 Priblino rexavae jednaqina . . . . . . . . . . . . . . . . 172

Literatura 177

Page 5: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

Glava 1

Uvod

1.1 Uvod

Svrha ovog poglava (videti uvodni deo kige [1]) je uvod u naqin razmix-aa prilikom konstrukcije i analize algoritama. Bie prikazan naqinspecificiraa algoritama, dve osnovne strategije za konstrukciju al-goritama i neke osnovne ideje koje se koriste pri analizi algoritama,odnosno dokazivau korektnosti algoritama.

Dva algoritma koji e biti prikazani rexavaju problem sortiraa(ureivaa u neopadajuem poretku) datog niza od 𝑛 brojeva. Algoritmise izlau u obliku pseudokoda, koji, iako se ne moe direktno prevestiu bilo koji standardni programski jezik, opisuje strukturu algoritmadovono jasno, tako da programer moe da ga realizuje na programskomjeziku po svom izboru. Prikazuju se algoritam sortiraa umetaem, kojikoristi inkrementalni pristup, i sortirae objediavaem, algoritamkoji koristi ideju razlagaa (podeli-pa-vladaj, divide-and-conquer). Iakovreme potrebno za izvrxavae ova dva algoritma raste sa 𝑛, brzine rastatih vremena nisu iste. Odrediemo vremena izvrxavaa ovih algoritamai upoznati se sa korisnom notacijom za ihovo izraavae.

1.2 Algoritmi

Neformalno, algoritam je precizno definisana procedura izraquna-vaa, koja, polazei od neke vrednosti ili skupa vrednosti kao ulaza,proizvodi neku vrednost, ili skup vrednosti, kao izlaz.

Algoritam takoe moemo posmatrati kao sredstvo za rexavae preci-zno definisanog (raqunarskog) problema. Postavka problema preciziraeeni odnos izlaza sa ulazom. Algoritam opisuje specijalnu proceduruizraqunavaa kojom se postie eeni odnos izlaza sa ulazom.

Na primer, neka je potrebno poreati qlanove datog niza brojeva takoda qine neopadajui niz. Na ovaj problem se qesto nailazi; on moe daposlui kao dobra podloga za uvoee mnogih standardnih tehnika zakonstrukciju i analizu. Formalno se problem sortiraa definixe nasledei naqin:

Ulaz: Niz brojeva (𝑎1, 𝑎2, . . . , 𝑎𝑛).

5

Page 6: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

1.2. Algoritmi 6

Izlaz: Permutacija (𝑎′1, 𝑎′2, . . . , 𝑎

′𝑛) ulaznog niza takva da je 𝑎′1 ≤ 𝑎′2 ≤

· · · ≤ 𝑎′𝑛.

Na primer, za dati niz (31, 41, 59, 26, 41, 58) algoritam sortiraa kaoizlaz daje niz (26, 31, 41, 41, 58, 59). Svaki ovakav ulazni niz zove se in-stanca problema sortiraa. Uopxte, instancu problema qini ulaz(koji zadovoava sva ograniqea koja proistiqu iz formulacije problema)neophodan da bi se izraqunalo rexee problema.

Sortirae je fundamentalna operacija (mnogi programi je koristekao meukorak), pa je zbog toga razvijen veliki broj dobrih algoritamaza sortirae. Koji algoritam je najboi za konkretnu primenu zavisi,pored ostalog, od:

∙ duine niza koji treba sortirati,

∙ moguih ograniqea za qlanove niza,

∙ od toga u kojoj su meri qlanovi niza ve sortirani,

∙ tipa ureaja u kome je niz smexten (operativna memorija, disk, . . .).

Kae se da je algoritam korektan ako za se za svaku instancu zavrxavasa taqnim izlazom. Tada kaemo da algoritam rexava dati problem.

Algoritam moe biti specificiran na srpskom jeziku, kao raqunarskiprogram, ili qak kao projekat ureaja koji ga izvrxava. Jedini zahtev jeda specifikacija mora da obezbedi precizan opis procedure izraqunavaa.

Sortirae, naravno, nije jedini problem za qije rexavae su razvijenialgoritmi. Navodimo primere problema koji se rexavaju algoritmima:

∙ Jedan od cieva pruqavaa udskog genoma je identifikacija svihoko 100000 gena u udskoj DNK, odreivae redosleda oko tri mili-jarde baznih parova koji qine udsku DNK, smextae tih informa-cija u baze podataka, i razvijae alata za analizu podataka. Svakiod tih koraka zahteva sofisticirane algoritme. Ci je postizaeuxteda u utroxenom vremenu, i za ude i raqunare, kao i dobijaexto vixe podataka.

∙ Internet omoguuje udima xirom sveta da se brzo povezuju i dapronalaze velike koliqine podataka. Problemi koje pri tome trebarexavati su pronalaee dobrih puteva kojim e podaci biti usme-reni, kao i upotreba pretraivaqa za brzo pronalaee stranicana kojima se eena informacija nalazi.

∙ Elektronska trgovina omoguuje da se roba i usluge razmeuju elek-tronski. Pri tome je od suxtinskog znaqaja bezbedno quvae podatakakao xto su brojevi kreditnih kartica, lozinke i brojevi bankovnihraquna. Agoritmi za xifrovae sa javnim kuqem i digitalni pot-pisi koji se za te potrebe koriste zasnivaju se na numeriqkim algo-ritmima i teoriji brojeva.

Page 7: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

7 1. Uvod

1.2.1 Efikasnost algoritama

Pretpostavimo na trenutak da su raqunari beskonaqno brzi i da jememorija besplatna. Da li bi tada bilo potrebe da se prouqavaju algoritmi?Odgovor je - da, u najmau ruku zato xto treba dokazati da se nax metodrexavaa zavrxava (zaustava) i da daje korektan odgovor.

Ako bi raqunari bili beskonaqno brzi, bilo koji korektan metod zarexavae problema bio bi prihvativ. I dae bi postojao zahtev da jerealizacija algoritma dobra, odnosno dobro dokumentovana, ali bi se o-biqno meu metodima birao onaj qija je realizacija najjednostavnija.

U stvarnosti, raqunari jesu brzi, ali ne beskonaqno brzi. Memorijamoe biti jeftina, ali nije besplatna. Zbog toga algoritmi moraju bitiefikasni u pogledu potrebnog vremena i memorijskog prostora.

Algoritmi nameeni rexavau istog problema qesto se drastiqno raz-likuju u pogledu efikasnosti. U nastavku emo razmotriti dva algoritmaza sortirae. Trajae izvrxavaa prvog od ih | sortiraa umeta-em je 𝑐1𝑛

2 ako se sortira niz duine 𝑛, gde je 𝑐1 konstanta koja nezavisi od 𝑛. Drugim reqima, utroxeno vreme proporcionalno je sa 𝑛2.Trajae izvrxavaa drugog algoritma, sortiraa objediavaem, je𝑐2𝑛 log 𝑛, gde je log 𝑛 = log2 𝑛, a 𝑐2 je druga konstanta, koja takoe ne zavisiod 𝑛. Obiqno je konstanta za sortirae umetaem maa od konstante zasortirae objediavaem, odnosno 𝑐1 < 𝑐2. Videemo da konstantni fak-tori mnogo mae utiqu na vreme izvrxavaa nego oblik zavisnosti odveliqine ulaza 𝑛. U izrazu kod sortiraa objediavaem imamo faktorlog 𝑛, a kod sortiraa umetaem faktor 𝑛, koji je mnogo vei. Iako jesortirae umetaem obiqno bre od sortiraa objediavaem za nizovemale duine, kad veliqina ulaza 𝑛 postane dovono velika, prednostsortiraa objediavaem u odnosu log 𝑛/𝑛 dovona je da kompenzuje razlikuu konstantnim faktorima. Koliko god 𝑐1 bilo mae od 𝑐2, uvek e postojatigraniqna vrednost 𝑛, posle koje e sortirae objediavaem biti bre.

Pretpostavimo da hoemo da uporedimo bri raqunar 𝐴 na kome seizvrxava sortirae umetaem i sporiji raqunar 𝐵 na kome se izvrxavasortirae objediavaem. Oba raqunara treba da sortiraju niz od milionbrojeva. Neka raqunar 𝐴 izvrxava milijardu operacija u sekundi, a ra-qunar 𝐵 samo deset miliona operacija u sekundi, odnosno da je raqunar 𝐴100 puta bri od raqunara 𝐵. Pretpostavimo pored toga da je najvextijiprogramer na svetu napisao program za sortirae umetaem na maxinskomjeziku za raqunar 𝐴, tako da dobijeni program izvrxava 2𝑛2 instrukcijapri sortirau niza duine 𝑛 (odnosno 𝑐1 = 2). S druge strane, programza sortirae objediavae za raqunar 𝐵 napisao je osredi programerna visokom jeziku, koristei neefikasni prevodilac, tako da dobijeniprogram izvrxava 50𝑛 log 𝑛 instrukcija (odnosno 𝑐2 = 50). Za sortiraemilion brojeva raqunaru 𝐴 potrebno je

2 · (106)2instrukcija

109instrukcija/sec= 2000sec,

dok je raqunaru 𝐵 potrebno

50 · 106 log 106instrukcija

107instrukcija/sec≃ 100sec.

Page 8: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

1.3. Sortirae umetaem 8

Koristei algoritam qije vreme izvrxavaa sporije raste sa 𝑛, qaki sa loxijim prevodiocem, raqunar 𝐵 je bri 20 puta od raqunara 𝐴.Prednost sortiraa objediavaem postaje jox znaqajnija kada se sortiradeset miliona brojeva: tada je za sortirae objediavaem potrebno 2.3dana, a sortirae objediavaem zavrxava se posle mae od 20 min. Uop-xte, sa porastom veliqine niza raste prednost sortiraa objediavaem.

1.3 Sortirae umetaem

Sortirae umetaem je efikasan algoritam za sortirae malog brojaelemenata. Algoritam radi na naqin na koji veina udi rea u rucikarte za igrae. Zapoqiemo sa praznom levom rukom i nekoliko karatana stolu, okrenutih licem na dole. Zatim uzimamo jednu po jednu kartusa stola i umeemo je na eno mesto u levoj ruci, kao xto je to prikazanona slici 1. U svakom trenutku su karte u levoj ruci poreane po veliqini(sortirane); pri tome su to karte koje su bile na vrhu gomile karata nastolu.

Slika 1.1: Sortirae karata primenom sortiraa umetaem

Algoritam se moe opisati pseudokodom. Ulazni parametri algoritmasu niz 𝐴 koji treba sortirati, i 𝑛 | duina niza 𝐴. Ulazni niz sesortira u mestu: brojevi se premextaju u okviru niza 𝐴, pri qemu senajvixe konstantan broj ih zapisuje van niza u svakom trenutku. U tre-nutku zavrxetka algoritma niz 𝐴 sadri sortirani izlazni niz.

𝑆𝑜𝑟𝑡𝑖𝑟𝑎𝑛𝑗𝑒𝑈𝑚𝑒𝑡𝑎𝑛𝑗𝑒𝑚(𝐴,𝑛)1 for 𝑗 ← 2 to 𝑛 do2 𝑡← 𝐴[𝑗]3 umetnuti 𝐴[𝑗] u sortirani niz 𝐴[1..𝑗 − 1]4 𝑖← 𝑗 − 15 while 𝑖 > 0 and 𝐴[𝑖] > 𝑡 do6 𝐴[𝑖 + 1]← 𝐴[𝑖]7 𝑖← 𝑖− 18 𝐴[𝑖 + 1]← 𝑡

Page 9: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

9 1. Uvod

1.3.1 Invarijanta pete i dokaz korektnosti sortiraa

umetaem

Na slici 2.2 prikazano je kako algoritam radi za niz𝐴 = (5, 2, 4, 6, 1, 3).Indeks 𝑗 je indeks "tekue karte", karte koja se trenutno umee u levuruku. Na poqetku svakog prolaska kroz "spoaxu" for petu, kojoj od-govara indeks 𝑗, podniz 𝐴[1..𝑗−1] odgovara kartama koje se trenutno nalazeu levoj ruci, a elementi 𝐴[𝑗 + 1..𝑛] odgovaraju kartama koje se jox nalazena stolu. Preciznije, elementi 𝐴[1..𝑗 − 1] su ustvari elementi koji su sena poqetku nalazili na pozicijama od 1 do 𝑗 − 1, ali su sada poreanipo veliqini. Za tu osobinu podniza 𝐴[1..𝑗 − 1] kaemo da je invarijantapete.

Na poqetku svakog prolaska kroz for petu u linijama 1 − 8 podniz𝐴[1..𝑗−1] sastoji se od elemenata koji su na poqetku bili u podnizu 𝐴[1..𝑗−1], ali u neopadajuem poretku.

Slika 1.2: Rezultat primene algoritma 𝑆𝑜𝑟𝑡𝑖𝑟𝑎𝑛𝑗𝑒𝑈𝑚𝑒𝑡𝑎𝑛𝑗𝑒𝑚 na niz 𝐴 =(5, 2, 4, 6, 1, 3). (a)-(e) Iteracije for pete iz linija 1−8. U svakoj iteraci-ji crni kvadrat sadri broj uzet iz 𝐴[𝑗], koji se uporeuje sa vrednostimaiz sivih kvadrata levo od sebe u liniji 5. Sive strelice pokazuju brojevekoji su pomereni za jedno mesto udesno u liniji 6, a crna strelica pokazujegde je broj prepisan u liniji 8. (f) Sortirani niz na kraju.

Invarijanta pete nam pomae da shvatimo zaxto je algoritam korektan.U vezi sa invarijantom pete treba da dokaemo tri stvari:

Inicijalizacija: Tvree je taqno pre prvog prolaska kroz petu.

Odravae: Ako je tvree taqno pre prolaska kroz petu, onda jetaqno i pre narednog prolaska kroz petu.

Zavrxetak: Po zavrxetku pete taqnost invarijante pete ima za pos-ledicu tvree iz koga sledi da je algoritam korektan.

Kad su prva dva tvrea taqna onda je invarijanta pete taqna presvakog prolaska kroz petu, na osnovu principa matematiqke indukcije.Tree tvree je konaqan dokaz korektnosti algoritma. Pogledajmo ovetri osobine u sluqaju sortiraa umetaem.

Inicijalizacija: Na poqetku treba pokazati da je tvree taqno preprvog prolaska kroz petu, kad je 𝑗 = 2. Tada se podniz 𝐴[1..𝑗 − 1]sastoji samo od elementa 𝐴[1], koji je ustvari prvobitni elemenat

Page 10: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

1.4. Analiza algoritama 10

𝐴[1]. Pored toga, podniz je (trivijalno) ureen neopadajue. Prematome, invarijanta pete je taqna pre prvog prolaska kroz petu.

Odravae: Sada treba dokazati da svaki naredni prolazak kroz petuzadrava taqnost invarijante pete. Zaista, u telu spoaxe forpete elementi 𝐴[𝑗 − 1], 𝐴[𝑗 − 2], 𝐴[𝑗 − 3], . . . premextaju se po jednomesto udesno, sve dok se ne nae pravo mesto za 𝐴[𝑗] (linije 4 − 7).Tada se vrednost 𝐴[𝑗] kopira na to mesto (linija 8).

Zavrxetak: Ispitajmo xta se dexava po zavrxetku pete. Spoaxapeta se zavrxava kad 𝑗 postane vee od 𝑛, tj. kad je 𝑗 = 𝑛 + 1.Zameujui 𝑗 sa 𝑛 + 1 u invarijanti pete, dobijamo da se podniz𝐴[1..𝑛] sastoji od elemenata koji su u poqetku bili u 𝐴[1..𝑛], aliu neopadajuem poretku. Meutim, podniz 𝐴[1..𝑛] je ustvari ceo niz!Prema tome, ceo niz je sortiran, xto znaqi da je algoritam korektan.

1.3.2 Pseudokod

Za specificirae algoritma iskoristili smo specijalni neformalnijezik, pseudokod. Navodimo neka od pravila ovog jezika.

1. Uvlaqee redova odgovara blokovskoj strukturi. Na primer, forpeta koja poqie od linije 1, sastoji se od linija 2 − 8; telowhile pete koja poqie u liniji 5 sadri linije 6 − 7, ali nei liniju 8. Uvlaqee linija primeuje se na uobiqajeni naqin ina if − then − else naredbe. Svrha uvlaqea redova je poveaejasnoe koda.

2. Pete while i for , kao i uslovne naredbe if , then , else imajuznaqee sliqno kao u Paskalu. Izuzetak je da u for peti brojaqkapromeniva posle prolaska kroz petu zadrava svoju vrednost.Tako, kad se for peta iz linije 1 (for 𝑗 ← 2 to 𝑛 do ) zavrxi,bie 𝑗 = 𝑛 + 1.

3. Tekst u vitiqastim zagradama je komentar.

4. Qlan niza oznaqava se dodavaem indeksa u uglastim zagradama.Na primer, 𝐴[𝑖] je 𝑖-ti qlan niza 𝐴. Oznaka .. slui za izdvajaepodniza. Tako 𝐴[1..𝑗] oznaqava podniz niza 𝐴 koji se sastoji od 𝑗elemenata 𝐴[1], 𝐴[2],. . . ,𝐴[𝑗].

1.4 Analiza algoritama

Analiza algoritma podrazumeva predviae resursa potrebnih za egovoizvrxavae, i to najqexe vremena, odnosno memorijskog prostora. Uopxte,analizirajui nekoliko algoritama | kandidata za rexavae datog pro-blema, obiqno se lako izdvaja najefikasniji. Rezultat analize moe bitida postoji vixe od jednog prihvativog kandidata, dok se vixe loxijihalgoritama odbacuju.

Pretpostava se da se algoritam izvrxava kao raqunarski program,instrukcija po instrukcija, bez istovremenih operacija.

Page 11: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

11 1. Uvod

Preciznija analiza zahtevala bi definisae skupa instrukcija naraqunaru i ihova trajaa. To bi bilo previxe naporno i ne bi dalomnogo informacija potrebnih pri analizi i konstrukciji algoritama. Sdruge strane, ne sme se zlupotrebiti model raqunara | xta ako bismopretpostavili da raqunar ima instrukciju za sortirae? Takva pretpo-stavka je, naravno, nerealna. Dakle, pretpostavaemo da raqunar moeda izvrxava instrukcije koje postoje na obiqnim raqunarima: aritmetiqke(sabirae, oduzimae, mnoee, deee), kopirae podataka, instrukcijeza kontrolu toka (uslovni i bezusovni skok, poziv potprograma i povratakiz ega).

Analiza qak i jednostavih algoritama u ovakvom modelu moe da pred-stava izazov. Potrebni matematiqki alati su kombinatorika, teorijaverovatnoe, manipulacija sa algebarskim izrazima i sposobnost prepo-znavaa najznaqajnijih qlanova u izrazu. Zbog toga xto se algoritammoe ponaxati drugaqije za svaki mogui ulaz, potrebno je imati naraspolagau sredstva za predstavae ihovog ponaxaa jednostavnim,lako razumivim izrazima.

1.4.1 Analiza sortiraa umetaem

Vreme potrebno za 𝑆𝑜𝑟𝑡𝑖𝑟𝑎𝑛𝑗𝑒𝑈𝑚𝑒𝑡𝑎𝑛𝑗𝑒𝑚 zavisi od ulaza: sortiraehiadu brojeva traje due od sortiraa tri broja. Pored toga, 𝑆𝑜𝑟𝑡𝑖𝑟𝑎𝑛𝑗𝑒𝑈 -𝑚𝑒𝑡𝑎𝑛𝑗𝑒𝑚 moe da traje razliqito ako se sortiraju dva niza iste duine,zavisno od stepena u kome su oni ve sortirani. U opxtem sluqaju, vremekoje troxi algoritam raste sa veliqinom ulaza, pa je uobiqajeno da sevreme izvrxavaa programa izraava u zavisnosti od veliqine ulaza.Pri tome se "vreme izvrxavaa" i "veliqina ulaza" moraju paivijedefinisati.

Pojam veliqine ulaza zavisi od problema koji se rexava. Za mnogeprobleme, kao xto je sortirae, najprirodnija mera je broj elemenatau ulazu | na primer duina 𝑛 niza koji se sortira. Za mnoge drugeprobleme, kao xto je na primer mnoee dva broja, to je ukupan brojbitova potrebnih da se ulaz predstavi u binarnom obliku.

Vreme izvrxavaa algoritma za konkretan ulaz je broj primitivnihoperacija ili "koraka" koji se izvrxavaju. Uobiqajeno je da se pojamkoraka definixe tako da xto mae zavisi od konkretnog raqunara. Unaxim primerima primeniemo sledei pristup. Za izvrxavae svakelinije pseudokoda potrebno je konstantno vreme. Izvrxavae jedne linijezahteva drugaqije vreme od izvrxavaa druge linije, ali emo pretposta-viti da izvrxavae 𝑖-te linije traje 𝑐𝑖, gde je 𝑐𝑖 konstanta.

U nastavku e izraz za vreme izvrxavaa algoritma 𝑆𝑜𝑟𝑡𝑖𝑟𝑎𝑛𝑗𝑒𝑈𝑚𝑒-𝑡𝑎𝑛𝑗𝑒𝑚 evoluirati iz komplikovane formule koja koristi sve konstantnecene 𝑐𝑖 u mnogo jednostavniji izraz korixeem jednostavnije notacije.Ta jednostavnija notacija e takoe omoguiti utvrivae da li je jedanalgoritam efikasniji od drugog.

Najpre proceduru 𝑆𝑜𝑟𝑡𝑖𝑟𝑎𝑛𝑗𝑒𝑈𝑚𝑒𝑡𝑎𝑛𝑗𝑒𝑚 dopuujemo ocenama trajaainstrukcija (linija). Za svako 𝑗 = 2, 3, . . . 𝑛 neka 𝑡𝑗 oznaqava broj kolikoputa je izvrxen test uwhile peti u liniji 5 za tu vrednost 𝑗. Komentarise ne izvrxavaju, pa ne troxe vreme.

Page 12: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

1.4. Analiza algoritama 12

𝑆𝑜𝑟𝑡𝑖𝑟𝑎𝑛𝑗𝑒𝑈𝑚𝑒𝑡𝑎𝑛𝑗𝑒𝑚(𝐴,𝑛) cena broj ponavaa1 for 𝑗 ← 2 to 𝑛 do 𝑐1 𝑛2 𝑡← 𝐴[𝑗] 𝑐2 𝑛− 13 umetnuti 𝐴[𝑗] u sortirani niz 𝐴[1..𝑗 − 1] 0 𝑛− 14 𝑖← 𝑗 − 1 𝑐4 𝑛− 15 while 𝑖 > 0 and 𝐴[𝑖] > 𝑡 do 𝑐5

∑𝑛𝑗=2 𝑡𝑗

6 𝐴[𝑖 + 1]← 𝐴[𝑖] 𝑐6∑𝑛

𝑗=2(𝑡𝑗 − 1)

7 𝑖← 𝑖− 1 𝑐7∑𝑛

𝑗=2(𝑡𝑗 − 1)

8 𝐴[𝑖 + 1]← 𝑡 𝑐8 𝑛− 1

Vreme izvrxavaa algoritma je zbir vremena izvrxavaa svih in-strukcija. Ako se neka instrucija sastoji od 𝑐𝑖 koraka, a izvrxava se 𝑛puta, onda je en doprinos ukupnom vremenu 𝑐𝑖𝑛. Da bismo izraqunali𝑇 (𝑛), vreme izvrxavaa algoritam 𝑆𝑜𝑟𝑡𝑖𝑟𝑎𝑛𝑗𝑒𝑈𝑚𝑒𝑡𝑎𝑛𝑗𝑒𝑚, treba da sabe-remo proizvode u kolonama cena i broj ponavaa, pa je

𝑇 (𝑛) = 𝑐1𝑛 + 𝑐2(𝑛− 1) + 𝑐4(𝑛− 1) + 𝑐5

𝑛∑𝑗=2

𝑡𝑗 + 𝑐6

𝑛∑𝑗=2

(𝑡𝑗 − 1) +

+ 𝑐7

𝑛∑𝑗=2

(𝑡𝑗 − 1) + 𝑐8(𝑛− 1).

Qak i za ulaze zadate veliqine, vreme izvrxavaa algoritma moe dazavisi od toga koji ulaz te veliqine je zadat. Na primer, za algoritam𝑆𝑜𝑟𝑡𝑖𝑟𝑎𝑛𝑗𝑒𝑈𝑚𝑒𝑡𝑎𝑛𝑗𝑒𝑚 najboi sluqaj je kad je niz ve sortiran. Za svako𝑗 = 2, 3, . . . , 𝑛 ispostava se da je 𝐴[𝑖] ≤ 𝑡 u liniji 5 taqno kad 𝑖 ima svojupoqetnu vrednost 𝑗 − 1. Prema tome, 𝑡𝑗 = 1 za 𝑗 = 2, 3, . . . , 𝑛, pa je vremeizvrxavaa u najboem sluqaju

𝑇 (𝑛) = 𝑐1𝑛 + 𝑐2(𝑛− 1) + 𝑐4(𝑛− 1) + 𝑐5(𝑛− 1) + 𝑐8(𝑛− 1)

= (𝑐1 + 𝑐2 + 𝑐4 + 𝑐5 + 𝑐8)𝑛− (𝑐2 + 𝑐4 + 𝑐5 + 𝑐8).

Ovo vreme izvrxavaa moe se izraziti u obliku 𝑎𝑛+𝑏 za neke konstante𝑎 i 𝑏, koje zavise od cena naredbi 𝑐𝑗 ; vreme izvrxavaa je dakle linearnafunkcija od 𝑛.

Ako je niz na poqetku opadajui, dobija se najgori sluqaj. Element 𝐴[𝑗]mora se uporediti sa svakim elementom podniza 𝐴[1..𝑗 − 1], pa je 𝑡𝑗 = 𝑗za 𝑗 = 2, 3, . . . , 𝑛. Poxto je

∑𝑛𝑗=2 𝑗 = 𝑛(𝑛 + 1)/2 − 1 i

∑𝑛𝑗=2(𝑗 − 1) =

𝑛(𝑛−1)/2, dobijamo da je u najgorem sluqaju vreme izvrxavaa algoritma𝑆𝑜𝑟𝑡𝑖𝑟𝑎𝑛𝑗𝑒𝑈𝑚𝑒𝑡𝑎𝑛𝑗𝑒𝑚 jednako

𝑇 (𝑛) = 𝑐1𝑛 + 𝑐2(𝑛− 1) + 𝑐4(𝑛− 1) + 𝑐5

(𝑛(𝑛 + 1)

2− 1

)+ 𝑐6

(𝑛(𝑛− 1)

2

)+ 𝑐7

(𝑛(𝑛− 1)

2

)+ 𝑐8(𝑛− 1)

=(𝑐5

2+

𝑐62

+𝑐72

)𝑛2 +

(𝑐1 + 𝑐2 + 𝑐4 +

𝑐52− 𝑐6

2− 𝑐7

2+ 𝑐8

)𝑛

−(𝑐2 + 𝑐4 + 𝑐5 + 𝑐8).

Page 13: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

13 1. Uvod

Ovo vreme izvrxavaa moe se izraziti u obliku 𝑎𝑛2 + 𝑏𝑛 + 𝑐 za nekekonstante 𝑎, 𝑏 i 𝑐 koje zavise od cena naredbi 𝑐𝑗 ; vreme izvrxavaa jedakle kvadratna funkcija od 𝑛.

1.4.2 Analiza najgoreg i proseqnog sluqaja

U sprovedenoj analizi sortiraa umetaem razmatrali smo i najboisluqaj, kad je niz ve sortiran, i najgori sluqaj, kad je niz sortiranobrnutim redosledom, opadajue. Prilikom analize algoritama obiqnose razmatra samo vreme izvrxavaa u najgorem sluqaju. Postojinekoliko argumenata za ovakav pristup.

∙ Vreme izvrxavaa algoritma u najgorem sluqaju je gora granicaza vreme izvrxavaa algoritma za bilo koji ulaz iste veliqine.Znajui to, imamo garanciju da izvrxavae algoritma nikada neetrajati vixe od proceenog vremena.

∙ Za neke algoritme se najgori sluqaj dexava priliqno qesto. Na pri-mer, prilikom traea konkretnog podatka u bazi podataka, najgorisluqaj je kad tog podatka nema u bazi. U nekim primenama pretra-ivaa baza podataka traee odsutnog podatka moe da bude qestsluqaj.

∙ "Proseqan sluqaj" je qesto isto toliko lox koliko i najgori sluqaj.Pretpostavimo da na sluqajan naqin izaberemo 𝑛 brojeva i primenimona ih sortirae umetaem. Koliko treba vremena da se odredi gdeje u podnizu 𝐴[1..𝑗 − 1] mesto za umetae elementa 𝐴[𝑗]? U prosekuje pola elemenata 𝐴[1..𝑗 − 1] mae od 𝐴[𝑗], a pola je vee od ega. Uproseku treba proveriti pola qlanova niza 𝐴[1..𝑗−1], pa je 𝑡𝑗 = 𝑗/2.Ako ovu analizu proseqnog sluqaja sprovedemo do kraja, dobijamo daje proseqno vreme izvrxavaa takoe kvadratna funkija od 𝑛, kao iu najgorem sluqaju.

1.4.3 Brzina rasta

Prilikom analize sortiraa umetaem koristili smo neka uprox-avaa zasnovana na uopxtavau. Najpre, zanemarivali smo stvarne cenepojedinih instrukcija, korixeem konstanti 𝑐𝑖 za predstavae ihovihcena. Zatim smo zapazili da nam te konstante pruaju vixe detaa negoxto nam je potrebno: vreme izvrxavaa je 𝑎𝑛2 + 𝑏𝑛 + 𝑐 za neke konstante𝑎, 𝑏 i 𝑐 koje zavise od cena instrukcija 𝑐𝑖. Prema tome, mi smo ignorisaline samo stvarne cene instrukcija, nego i apstraktne cene 𝑐𝑖.

Sada emo uqiniti sledee uproxee zasnovano na uopxtavau. Radise o tome da nas zanima samo brzina rasta odnosno poredak rastavremena izvrxavaa. Zbog toga mi razmatramo samo vodei qlan (npr.𝑎𝑛2), jer qlanovi nieg reda postaju zanemarivi za velike vrednosti 𝑛.Prema tome, mi kaemo da, na primer, sortirae umetaem ima vreme iz-vrxavaa Θ(𝑛2) u najgorem sluqaju. Ovu oznaku koristiemo neformalno,iako je lako definisati je i precizno. Obiqno smatramo jedan algoritamefikasnijim od drugog ako egovo vreme izvrxavaa ima mau brzinurasta. Zbog konstantnih faktora i zanemarenih qlanova nieg reda, ova

Page 14: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

1.5. Konstrukcija algoritama primenom razlagaa 14

procena moe biti pogrexna za male 𝑛. Meutim, za dovono velike ulazese na primer Θ(𝑛) algoritam izvrxava bre od Θ(𝑛2) algoritma.

1.5 Konstrukcija algoritama primenom razlagaa

Postoji vixe tehnika za konstrukciju algoritama. Kod sortiraa ume-taem korixen je inkrementalni pristup: polazei od sortiranogpodniza 𝐴[1..𝑗 − 1], mi umeemo naredni elemenat 𝐴[𝑗] na odgovarajuemesto, i tako dolazimo do sortiranog podniza 𝐴[1..𝑗].

Sada emo razmotriti drugi pristup konstrukciji algoritama, zasno-van na razlagau ulaznih podataka (eng. divide-and-conquer). Koristeiovaj pristup, dolazi se do algoritma za sortirae qije je vreme izvrxavaamnogo mae nego za sortirae umetaem. Algoritmi zasnovani na ovompristupu imaju prednost da se ihovo vreme izvrxavaa lako odreuje uveoma opxtem sluqaju.

Mnogi korisni algoritmi imaju rekurzivnu strukturu: da bi rexilidati problem, oni pozivaju sebe da bi obradili blisko povezane potpro-bleme. Takvi algoritmi qesto koriste pristup zasnovan na razlagau:oni razbijaju problem na nekoliko sliqnih, ali maih potproblema, re-xavaju ih rekurzivno, a onda kombinuju ova rexea da bi formiralirexee polaznog problema.

Pristup zasnovan na razlagau ukuquje tri koraka na svakom nivourekurzije:

Razlagae problema na nekoliko maih potproblema.

Rekurzivno rexavae potproblema. U sluqaju kad je veliqina pot-problema dovono mala, potproblem se rexava direktno, tj. izlazise iz rekurzije.

Kombinovae rexea potproblema da bi se dobilo rexee polaznogproblema.

Algoritam sortirae objediavaem direktno realizuje ovu teh-niku. Intuitivno, on se izvrxava na sledei naqin.

Razlagae: Niz duine 𝑛 koji treba sortirati deli se na dva podnizaduine po 𝑛/2.

Rexavae potproblema:Dva podniza se rekurzivno sortiraju primenomistog algoritma.

Kombinovae: Dva dobijena sortirana podniza se objediavaju, i takose dobija sortirani polazni niz.

Iz rekurzije se izlazi kad podnizovi koje treba sortirati imaju duinu1: takvi nizovi su ve sortirani.

Kuqna operacija u ovom algoritmu je objediavae dva sortirananiza u koraku "kombinovae". Da bismo izvrxili objediavae, koris-timo pomonu proceduru𝑂𝑏𝑗𝑒𝑑𝑖𝑛𝑗𝑎𝑣𝑎𝑛𝑗𝑒(𝐴, 𝑝, 𝑞, 𝑟), gde je𝐴 niz, a 𝑝, 𝑞 i 𝑟 suindeksi qlanova niza 𝐴, takvi da je 𝑝 ≤ 𝑞 < 𝑟. Procedura pretpostava dasu podnizovi 𝐴[𝑝..𝑞] i 𝐴[𝑞+1..𝑟] ve sortirani. Procedura ih objediujeu jedan sortirani podniz, koji zameuje tekui podniz 𝐴[𝑝..𝑟].

Page 15: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

15 1. Uvod

Procedura𝑂𝑏𝑗𝑒𝑑𝑖𝑛𝑗𝑎𝑣𝑎𝑛𝑗𝑒 izvrxava se za vreme Θ(𝑛), gde je 𝑛 = 𝑟−𝑝+1broj elemenata koji se objediavaju, i radi na sledei naqin. Vraajuise na motiv sa kartama, pretpostavimo da su na stolu dve gomile karatalicem okrenutim navixe. Obe gomile su sortirane, tako da je najmaakarta na vrhu. Nax ci je da objedinimo dve gomile u jednu sortiranuizlaznu gomilu, u kojoj e karte biti okrenute licem nanie. Osnovnikorak je izbor mae od dve karte na vrhu gomila, skidae te karte sagomile (qime se otkriva naredna karta na istoj gomili) i eno preba-civae licem nanie na izlaznu gomilu. Osnovni korak se ponava svedok se ne isprazni jedna od ulaznih gomila; tada se druga ulazna gomilaprebacuje licem nanie na izlaznu gomilu. Za izvrxavae svakog ovakvogkoraka potrebno je konstantno vreme, jer se uporeuju samo dve karte navrhu gomila. Poxto je broj osnovnih koraka koji se izvrxavaju najvixe𝑛, vreme izvrxavaa objediavaa je Θ(𝑛).

Naredni pseudokod realizuje goru ideju, uz dopunski trik koji omo-guuje da se izbegne potreba da se u svakom osnovnom koraku proverava dali je jedna od gomila ispraena. Ideja je da se na dno obe gomile karatastavi graniqnik, karta koja sadri specijalnu vrednost, koju koristimoda bismo uprostili kod. Ovde kao vrednost graniqnika koristimo∞, takoda kad je ta karta na vrhu gomile, ona nikad ne moe biti maa od drugekarte, sem ako se i na vrhu druge gomile nalazi ta vrednost. Ali kadase to desi, sve ostale karte sem graniqnika su ve prebaqene na izlaznugomilu. Poxto mi unapred znamo da na izlaznu gomilu treba prebacititaqno 𝑟 − 𝑝 + 1 karata, zaustavamo se u trenutku kad izvrximo tolikoosnovnih koraka.

𝑂𝑏𝑗𝑒𝑑𝑖𝑛𝑗𝑎𝑣𝑎𝑛𝑗𝑒(𝐴, 𝑝, 𝑞, 𝑟)1 𝑛1 ← 𝑞 − 𝑝 + 12 𝑛2 ← 𝑟 − 𝑞3 kreirati nizove 𝐿[1..𝑛1 + 1] i 𝐷[1..𝑛2 + 1]4 for 𝑖← 1 to 𝑛1 do5 𝐿[𝑖]← 𝐴[𝑝 + 𝑖− 1]6 for 𝑗 ← 1 to 𝑛2 do7 𝐷[𝑗]← 𝐴[𝑞 + 𝑗]8 𝐿[𝑛1 + 1]←∞9 𝐷[𝑛2 + 1]←∞10 𝑖← 111 𝑗 ← 112 for 𝑘 ← 𝑝 to 𝑟 do13 if 𝐿[𝑖] ≤ 𝐷[𝑗] then14 𝐴[𝑘]← 𝐿[𝑖]15 𝑖← 𝑖 + 116 else 𝐴[𝑘]← 𝐷[𝑗]17 𝑗 ← 𝑗 + 1

Procedura 𝑂𝑏𝑗𝑒𝑑𝑖𝑛𝑗𝑎𝑣𝑎𝑛𝑗𝑒 radi na sledei naqin. U liniji 1 izra-qunava se duina 𝑛1 podniza 𝐴[𝑝..𝑞], a u liniji 2 duina 𝑛2 podniza𝐴[𝑞 + 1..𝑟]. Zatim se kreiraju nizovi 𝐿 i 𝐷 ("levi" i "desni"), duina𝑛1+1, odnosno 𝑛2+1, u liniji 3. Peta for u linijama 4−5 kopira podniz

Page 16: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

1.5. Konstrukcija algoritama primenom razlagaa 16

𝐴[𝑝..𝑞] u 𝐿[1..𝑛1], a peta for u linijama 6− 7 kopira podniz 𝐴[𝑞 + 1..𝑟] u𝐷[1..𝑛2]. Linije 8− 9 upisuju graniqnike u nizove 𝐿 i 𝐷. Linije 10− 17,kao xto je prikazano na slikama 2.3 i 1.4 izvrxavaju 𝑟 − 𝑝 + 1 osnovnihkoraka, odravajui sledeu invarijantu pete:

Na poqetku svakog prolaska kroz for petu u linijama 12− 17 podniz𝐴[𝑝..𝑘−1] sadri 𝑘−𝑝 najmaih elemenata nizova 𝐿[1..𝑛1+1] i𝐷[1..𝑛2+1],i to u sortiranom poretku. Pored toga, 𝐿[𝑖] i 𝐷[𝑗] su najmai elementi uodgovarajuim nizovima meu elementima koji jox nisu kopirani nazad u𝐴.

Slika 1.3: Izvrxavae linija 10 − 17 prilikom poziva𝑂𝑏𝑗𝑒𝑑𝑖𝑛𝑗𝑎𝑣𝑎𝑛𝑗𝑒(𝐴, 9, 12, 16) kada podniz 𝐴[9..16] sadri niz(2, 4, 5, 7, 1, 2, 33, 6). Posle kopiraa i umetaa graniqnika sadrajniza 𝐿 je (2, 4, 5, 7,∞), a sadraj niza 𝐷 je (1, 2, 3, 6,∞). Svetlo obojenielementi niza 𝐴 sadre svoje konaqne vrednosti koje treba kopiratinazad u 𝐴. Posmatrane zajedno, svetlo obojene pozicije u svakom trenutkusadre vrednosti koje su na poqetku bile u 𝐴[9..16], zajedno sa dvagraniqnika. Zatamene pozicije u 𝐴 sadre vrednosti koje e bitiprepisane novim sadrajem, a zatamene pozicije u 𝐿 i 𝐷 sadrevrednosti koje su ve bile prekopirane nazad u 𝐴. (𝑎) − (ℎ) Nizovi 𝐴,𝐿 i 𝐷 i odgovarajui indeksi 𝑘, 𝑖 i 𝑗 pre svakog prolaska kroz petuu linijama 12 − 17. (𝑗) Nizovi i indeksi prilikom zavrxetka. U tomtrenutku je podniz 𝐴[9..16] sortiran, a dva graniqnika u 𝐿 i 𝐷 u jedinielementi u ovim nizovima koji jox nisu kopirani nazad u 𝐴.

Pokazaemo sada da je invarijanta pete taqna pre prvog prolaska krozfor petu u linijama 12 − 17, da invarijanta ostaje taqna posle svakogprolaska kroz petu, i da je posledica invarijante tvree iz koga sledikorektnost algoritma kad se peta zavrxi.

Inicijalizacija: Pre prvog prolaska kroz petu je 𝑘 = 𝑝, pa je podniz𝐴[𝑝..𝑘 − 1] prazan. Ovaj prazan podniz sadri 𝑘 − 𝑝 = 0 najmaihelemenata iz 𝐿 i 𝐷, pa poxto je 𝑖 = 𝑗 = 1, 𝐿[𝑖] i 𝐷[𝑗] su najmaielementi u svojim nizovima koji nisu bili kopirani nazad u 𝐴. Tvr-ee je taqno pre prvog prolaska kroz petu.

Page 17: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

17 1. Uvod

Slika 1.4: Izvrxavae linija 10 − 17 prilikom poziva𝑂𝑏𝑗𝑒𝑑𝑖𝑛𝑗𝑎𝑣𝑎𝑛𝑗𝑒(𝐴, 9, 12, 16), drugi deo.

Odravae:Da bismo se uverili da svaki prolazak kroz petu odravainvarijantu pete, pretpostavimo najpre da je 𝐿[𝑖] ≤ 𝐷[𝑗]. Tada je𝐿[𝑖] najmai elemenat meu onima koji jox nisu kopirani nazad u𝐴. Poxto 𝐴[𝑝..𝑘 − 1] sadri 𝑘 − 𝑝 najmaih elemenata, kada se uliniji 14 𝐿[𝑖] prekopira u 𝐴[𝑘], podniz 𝐴[𝑝..𝑘] sadrae 𝑘−𝑝+1 naj-maih elemenata. Poveavae za 1 vrednosti 𝑘 (prilikom povratkau for peti) i 𝑗 (u liniji 15) obnava taqnost invarijante pet-e za sledei prolazak. Ako je pak 𝐿[𝑖] > 𝐷[𝑗], onda linije 16 − 17izvrxavaju ono xto je neophodno da se odri invarijanta pete.

Zavrxetak: Na kraju je 𝑘 = 𝑟 + 1. Na osnovu invarijante pete podniz𝐴[𝑝..𝑘− 1], xto je ustvari 𝐴[𝑝..𝑟], sadri 𝑘− 𝑝 = 𝑟− 𝑝 + 1 najmaihelemenata iz 𝐿[1..𝑛1 + 1] i 𝐷[1..𝑛2 + 1], i to u sortiranom poretku.Nizovi 𝐿 i 𝐷 sadre zajedno 𝑛1 + 𝑛2 = 𝑟 − 𝑝 + 3 elemenata. Svisem dva od ih kopiraju se nazad u 𝐴, a ta dva najvea elementa sugraniqnici.

Da bismo se uverili da je trajae procedure 𝑂𝑏𝑗𝑒𝑑𝑖𝑛𝑗𝑎𝑣𝑎𝑛𝑗𝑒 Θ(𝑛),gde je 𝑛 = 𝑟 − 𝑝 + 1, primetimo da se linije 1 − 3 i 8 − 11 izvrxavajuza konstantno vreme, da izvrxavae for peti u linijama 4 − 7 trajeΘ(𝑛1 + 𝑛2) = Θ(𝑛), kao i da se kroz for petu u linijama 12− 17 prolazi𝑛 puta, pri qemu svaki prolazak troxi konstantno vreme.

Sada moemo da iskoristimo proceduru𝑂𝑏𝑗𝑒𝑑𝑖𝑛𝑗𝑎𝑣𝑎𝑛𝑗𝑒 kao potprogramu algoritmu za sortirae objediavaem. Procedura

𝑆𝑜𝑟𝑡𝑖𝑟𝑎𝑛𝑗𝑒𝑂𝑏𝑗𝑒𝑑𝑖𝑛𝑗𝑎𝑣𝑎𝑛𝑗𝑒𝑚(𝐴, 𝑝, 𝑟)

Page 18: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

1.6. Analiza algoritama zasnovanih na razlagau 18

sortira elemente u podnizu 𝐴[𝑝..𝑟]. Ako je 𝑝 ≥ 𝑟 onda podniz ima najvixejedan element, pa je prema tome ve sortiran. U protivnom, korak razlagaajednostavno izraqunava indeks 𝑞, koji razdvaja 𝐴[𝑝..𝑟] u dva podniza: 𝐴[𝑝..𝑞]sa ⌈𝑛/2⌉ elemenata, i 𝐴[𝑞 + 1..𝑟] sa ⌊𝑛/2⌋ elemenata. Ovde ⌈𝑥⌉, odnosno ⌊𝑥⌋oznaqavaju redom najmai celi broj vei ili jednak od 𝑥, odnosno najveiceli broj mai ili jednak od 𝑥.

𝑆𝑜𝑟𝑡𝑖𝑟𝑎𝑛𝑗𝑒𝑂𝑏𝑗𝑒𝑑𝑖𝑛𝑗𝑎𝑣𝑎𝑛𝑗𝑒𝑚(𝐴, 𝑝, 𝑟)1 if 𝑝 < 𝑟 then2 𝑞 ← ⌊(𝑝 + 𝑟)/2⌋3 𝑆𝑜𝑟𝑡𝑖𝑟𝑎𝑛𝑗𝑒𝑂𝑏𝑗𝑒𝑑𝑖𝑛𝑗𝑎𝑣𝑎𝑛𝑗𝑒𝑚(𝐴, 𝑝, 𝑞)4 𝑆𝑜𝑟𝑡𝑖𝑟𝑎𝑛𝑗𝑒𝑂𝑏𝑗𝑒𝑑𝑖𝑛𝑗𝑎𝑣𝑎𝑛𝑗𝑒𝑚(𝐴, 𝑞 + 1, 𝑟)5 𝑂𝑏𝑗𝑒𝑑𝑖𝑛𝑗𝑎𝑣𝑎𝑛𝑗𝑒(𝐴, 𝑝, 𝑞, 𝑟)

Da bismo izvrxili sortirae celog niza 𝐴 = (𝐴[1], 𝐴[2], . . . , 𝐴[𝑛]),pozivamo 𝑆𝑜𝑟𝑡𝑖𝑟𝑎𝑛𝑗𝑒𝑂𝑏𝑗𝑒𝑑𝑖𝑛𝑗𝑎𝑣𝑎𝑛𝑗𝑒𝑚(𝐴, 1, 𝑛). Slika 2.4 ilustruje izvr-xavae procedure odozdo navixe kada je 𝑛 stepen dvojke. U algoritmu seobjediavaju parovi 1-qlanih podnizova u dvoqlane podnizove, zatim seobjediavaju parovi podnizova duine 2 u podnizove duine 4, i tako da-e, sve dok se na kraju dva podniza duine 𝑛/2 ne objedine u niz duine𝑛.

Slika 1.5: Rezultat primene sortiraa objediavaem na niz 𝐴 =(5, 2, 4, 7, 1, 3, 2, 6). Duine sortiranih podnizova koji se objediavajurastu sa napredovaem algoritma odozdo navixe.

1.6 Analiza algoritama zasnovanih na razlagau

Kada algoritam sadri rekurzivni poziv samog sebe, egovo vreme izvr-xavaa se qesto moe opisati rekurentnom relacijom, koja izraavaukupno vreme izvrxavaa na problemu sa ulazom veliqine 𝑛 preko vremena

Page 19: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

19 1. Uvod

izvrxavaa na maim ulazima. Tada se ovakve rekurentne relacije mogurexiti da bi se dobila granica za efikasnost algoritma.

Rekurentna relacija za vreme izvrxavaa algoritma zasnovanog narazlagau odreena je sa tri osnovna koraka ovakvog algoritma. Neka,kao i ranije, 𝑇 (𝑛) oznaqava vreme izvrxavaa na ulazu veliqine 𝑛. Akoje veliqina ulaza dovono mala, npr. 𝑛 ≤ 𝑐 za neku konstantu 𝑐, direktnorexavae traje konstantno vreme, xto se moe napisati kao Θ(1). Pret-postavimo da se razlagaem ulaza dobija 𝑎 potproblema, od kojih je svaki 𝑏puta mai od polaznog. (U algoritmu sortiraa objediavaem je 𝑎 = 𝑏 =2, ali postoje primeri ovakvih algoritama u kojima je 𝑎 = 𝑏). Ako sa 𝐷(𝑛)oznaqimo vreme potrebno da se ulaz razloi, a sa 𝐶(𝑛) da se kombinujurexea potproblema u rexee polaznog problema, dobijamo rekurentnurelaciju

𝑇 (𝑛) =

Θ(1), 𝑛 ≤ 𝑐,𝑎𝑇 (𝑛/𝑏) + 𝐷(𝑛) + 𝐶(𝑛), 𝑛 > 𝑐.

1.6.1 Analiza sortiraa objediavaem

Iako pseudokod za sortirae objediavae ispravno radi i ako duinaniza nije parna, analiza rexavaem rekurentne relacije se pojednostavujeako se pretpostavi da je poqetna duina niza stepen dvojke.

Sada emo izvesti rekurentnu relaciju za 𝑇 (𝑛), ocenu vremena izvrxa-vaa sortiraa objediavaem u najgorem sluqaju. Sortirae jednoqlanogniza traje konstantno vreme. Ako treba sortirati 𝑛 > 1 elemenata, vremeizvrxavaa razlaemo na sledei naqin.

Razlagae: Ovaj korak izraqunava sredinu niza, pa se izvrxava za kon-stantno vreme. Dakle, 𝐷(𝑛) = Θ(1).

Rexavae potproblema: Dva podniza duine 𝑛/2 se rekurzivno sor-tiraju primenom istog algoritma, xto traje 2𝑇 (𝑛/2).

Kombinovae: Videli smo da izvrxavae procedure 𝑂𝑏𝑗𝑒𝑑𝑖𝑛𝑗𝑎𝑣𝑎𝑛𝑗𝑒na podniz duine 𝑛 traje Θ(𝑛), pa je 𝐶(𝑛) = Θ(𝑛).

Sabirajui funkcije 𝐷(𝑛) i 𝐶(𝑛) prilikom analize sortiraa objedi-avaem, mi sabiramo jednu funkciju koja je Θ(𝑛) sa jednom funkcijomkoja je Θ(1). Zbir je linearna funkcija od 𝑛, odnosno Θ(𝑛). Prema tome,traena rekurentna relacija je

𝑇 (𝑛) =

Θ(1), 𝑛 = 1,2𝑇 (𝑛/2) + 𝑐𝑛, 𝑛 > 1.

gde je 𝑐 utroxeno vreme po elementu niza u koracima razlagaa i kombi-novaa.

Slika 2.5 pokazuje kako se moe rexiti ova rekurentna relacija. Zbogjednostavnosti, pretpostavimo da je 𝑛 stepen dvojke. Deo (𝑎) slike prikazuje𝑇 (𝑛), izraz koji je u delu (𝑏) razvijen u ekvivalentno stablo koje predstavarekurentnu relaciju. Qlan 𝑐𝑛 je u korenu (trajae najvixeg nivoa rekur-zije), a dva podstabla su trajaa dva maa rekurentna poziva 𝑇 (𝑛/2).Deo (𝑐) pokazuje rezultat primene istog postupka posle razvoja 𝑇 (𝑛/2).

Page 20: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

1.6. Analiza algoritama zasnovanih na razlagau 20

Trajae svakog qvora na drugom nivou rekurzije je 𝑐𝑛/2 Nastavamo sarazvijaem svakog qvora stabla egovim razbijaem na sastavne deloveodreene rekurentnom relacijom, sve dok veliqine podnizova ne dou do1. Deo (𝑑) pokazuje konaqno stablo.

Slika 1.6: Konstrukcija stabla rekurzije za rekurentnu relaciju 𝑇 (𝑛) =2𝑇 (𝑛/2) + 𝑐𝑛. Deo (𝑎) prikazuje 𝑇 (𝑛) koji se progresivno razlae udelovima (𝑏) − (𝑑) da bi se dobilo stablo rekurzije. Potpuno razvijenostablo rekurzije u delu (𝑑) ima log 𝑛 + 1 nivoa (odnosno ima visinu log 𝑛,kao xto je naznaqeno), a zbir vremena u svim qvorovima na istom nivou je𝑐𝑛. Ukupna suma je, prema tome, 𝑐𝑛 log 𝑛 + 𝑐𝑛, xto je Θ(𝑛 log 𝑛).

Posle toga mi sabiramo cene na svakom nivou stabla. Najvixi nivoima cenu 𝑐𝑛; sledei nivo ima cenu 𝑐(𝑛/2) + 𝑐(𝑛/2) = 𝑐𝑛 sledei nivoima cenu 𝑐(𝑛/4) + 𝑐(𝑛/4) + 𝑐(𝑛/4) + 𝑐(𝑛/4) = 𝑐𝑛, itd. Uopxte, nivo 𝑖 ispodkorena ima 2𝑖 qvorova sa cenom 𝑐(𝑛/2𝑖), pa je ukupna cena svih qvorova na𝑖-tom nivou ispod vrha jednaka 2𝑖𝑐(𝑛/2𝑖) = 𝑐𝑛. Na najniem nivou ima 𝑛qvorova sa cenom 𝑐, pa je ihova ukupna cena 𝑐𝑛.

Ukupan broj nivoa u "stablu rekurzije" na slici 2.4 je log 𝑛+1, xto selako pokazuje indukcijom. Da bismo dobili rexee rekurentne relacije,treba da saberemo cene na svim nivoima ovog stabla. Ukupno ima log 𝑛 +

Page 21: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

21 1. Uvod

1 nivoa sa cenom po 𝑐𝑛, pa je ukupna cena 𝑐𝑛(log 𝑛 + 1) = 𝑐𝑛 log 𝑛 + 𝑐𝑛.Zanemarujui qlan nieg reda i konstantu 𝑐, dobijamo rezultat 𝑇 (𝑛) =Θ(𝑛 log 𝑛).

1.7 Zadaci za vebu

1. Navesti neke probleme iz realnog sveta koji zahtevaju sortirae.

2. Pored brzine, koje bi se dodatne mere efikasnosti algoritma moglekoristiti?

3. Pretpostavimo da poredimo implementaciju sortiraa umetaem isortiraa objediavaem na istom raqunaru. Za ulaz veliqine 𝑛sortirae umetaem radi u 8𝑛2 koraka, a sortirae objediavaemu 64𝑛 log 𝑛 koraka. Za koje 𝑛 e sortirae umetaem raditi bre odsortiraa objediavaem?

4. Za svaku funkciju 𝑓(𝑛) i vreme 𝑡 odrediti maksimalno 𝑛 za koje seproblem moe rexiti u vremenu 𝑡, pod pretpostavkom da je vremeizvrxavaa algoritma jednako 𝑓(𝑛) nanosekundi.

1 sekund 1 minut 1 sat 1 dan 1 mesec 1 god 1 veklog 𝑛√

𝑛𝑛

𝑛 log 𝑛𝑛2

𝑛3

2𝑛

𝑛!

5. Demonstrirati primenu sortiraa umetaem na niz 31, 41, 59, 26, 41, 58

6. Izmeniti pseudokod algoritma za sortirae umetaem tako da sedobije nerastui poredak umesto neopadajueg.

7. Demonstrirati primenu sortiraa objediavaem na niz 3, 41, 52, 26, 38, 57, 9, 49

8. Prepraviti algoritam za sortirae objediavaem tako da ne koristigraniqnik, ve da staje kada jedan od nizova doe do kraja i da seonda preostali elementi iskopiraju u rezultujui niz 𝐴.

9. Matematiqkom indukcijom dokazati da je za 𝑛 = 2𝑘 rexee rekurentnejednaqine:

𝑇 (𝑛) =

2, 𝑛 = 2

2𝑇 (𝑛/2) + 𝑛, 𝑛 = 2𝑘, 𝑘 > 1.

jednako 𝑇 (𝑛) = 𝑛 log 𝑛.

Page 22: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

1.7. Zadaci za vebu 22

10. Napisati kod algoritma za sortirae izborom (engl. selection sort).Izraqunati vreme izvrxavaa ovog algoritma i dokazati egovukorektnost metodom invarijante pete.

𝑆𝑜𝑟𝑡𝑖𝑟𝑎𝑛𝑗𝑒𝐼𝑧𝑏𝑜𝑟𝑜𝑚(𝐴,𝑛)ulaz: 𝐴 - niz brojeva, 𝑛 - dimenzija nizaizlaz: niz 𝐴 sortiran neopadajue1 for 𝑖← 1 to 𝑛− 1 do2 na mesto 𝐴[𝑖] dovesti najmai element niza 𝐴[𝑖..𝑛]3 𝑖𝑛𝑑𝑒𝑘𝑠← 𝑖4 for 𝑗 ← 𝑖 + 1 to 𝑛 do5 if 𝐴[𝑗] < 𝐴[𝑖𝑛𝑑𝑒𝑘𝑠] then6 𝑖𝑛𝑑𝑒𝑘𝑠← 𝑗7 𝑖𝑛𝑑𝑒𝑘𝑠 sadri indeks najmaeg elementa niza 𝐴[𝑖..𝑛]8 zameni(𝐴[𝑖], 𝐴[𝑖𝑛𝑑𝑒𝑘𝑠])

Vreme izvrxavaa aloritma izraqunaemo kao zbir vremena izvr-xavaa svih instrukcija. Za liniju 𝑖 pretpostaviemo da je enovreme izvrxavaa 𝑐𝑖 i izraqunaemo koliko se puta ona izvrxava unajgorem sluqaju.

𝑆𝑜𝑟𝑡𝑖𝑟𝑎𝑛𝑗𝑒𝐼𝑧𝑏𝑜𝑟𝑜𝑚(𝐴,𝑛) cena br ponulaz: 𝐴 - niz brojeva, 𝑛 - dimenzija nizaizlaz: niz 𝐴 sortiran neopadajue1 for 𝑖← 1 to 𝑛− 1 do 𝑐1 𝑛2 na mesto 𝐴[𝑖] dovesti najmai element niza 𝐴[𝑖..𝑛] 0 𝑛− 13 𝑖𝑛𝑑𝑒𝑘𝑠← 𝑖 𝑐3 𝑛− 1

4 for 𝑗 ← 𝑖 + 1 to 𝑛 do 𝑐4∑𝑛−1

𝑖=1 (𝑛− 𝑖 + 1)

5 if 𝐴[𝑗] < 𝐴[𝑖𝑛𝑑𝑒𝑘𝑠] then 𝑐5∑𝑛−1

𝑖=1 (𝑛− 𝑖)

6 𝑖𝑛𝑑𝑒𝑘𝑠← 𝑗 𝑐6∑𝑛−1

𝑖=1 𝑡𝑖7 𝑖𝑛𝑑𝑒𝑘𝑠 sadri indeks najmaeg elementa niza 𝐴[𝑖..𝑛]0 𝑛− 18 zameni(𝐴[𝑖], 𝐴[𝑖𝑛𝑑𝑒𝑘𝑠]) 𝑐8 𝑛− 1

Ako je 𝑡𝑖 broj izvrxavaa linije 4 za fiksirano 𝑖, onda je u najgoremsluqaju 𝑡𝑖 = 𝑛 − 𝑖: to je sluqaj kada se uvek vrxi izmena vrednostiindeksa.

Vreme izvrxavaa u najgorem sluqaju je jednako

𝑇 (𝑛) = 𝑛𝑐1+(𝑛−1)𝑐3+∑𝑛−1

𝑖=1 (𝑛−𝑖)(𝑐4+𝑐5+𝑐6)+(𝑛−1)𝑐4+(𝑛−1)𝑐8 =𝑂(𝑛2)

tj. vreme je kvadratna funkcija veliqine ulaza 𝑛.

Za vebu: izraqunati vrednost gore sume.

Dokaz korektnosti algoritma:

Za invarijanu pete moemo uzeti sledee svojstvo: na poqetku svakogprolaska kroz for petu na pozicijama 𝐴[1..𝑖−1] nalaze se najmaih𝑖− 1 elemenata niza 𝐴 i to u sortiranom poretku.

Page 23: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

23 1. Uvod

Inicijalizacija: pre prvog prolaska kroz petu, vai da je 𝑖 =1, te je podniz prazan. Ovaj prazan podniz sadri najmaih𝑖 − 1 = 0 elemenata niza, te tvree vai pre prvog prolaskakroz petu.

Odravae: treba pokazati da svaki naredni prolazak kroz petuodrava taqnost invarijante pete. Prema pretpostavci na po-zicijama 𝐴[1..𝑖 − 2] nalaze se najmaih 𝑖 − 2 elemenata niza usortiranom poretku. Nakon toga, u narednoj iteraciji pete semeu elementima na pozicijama 𝐴[𝑖 − 1..𝑛] trai indeks mini-malnog elementa i on se smexta na poziciju 𝐴[𝑖−1]. Poxto se napozicijama 𝐴[1..𝑖−2] nalaze najmaih 𝑖−2 elemenata, niza a napoziciji 𝑖 se nalazi minimalni meu preostalim elementimaniza, moemo zakuqiti da se nakon ove iteracije pete napozicijama 𝐴[1..𝑖−1] nalaze najmaih 𝑖−1 elemenata niza. Da lisu oni poreani u rastuem poretku? Da bi ovo vailo potrebnoje dokazati da vai da se na poziciji 𝑖−1 nalazi broj koji nijemai ni od jednog od brojeva iz niza 𝐴[1..𝑖− 2]. To je taqno jerse na pozicijama 𝐴[1..𝑖−2] nalaze najmaih 𝑖−2 elemenata nizapa je element na poziciji 𝑖− 1 sigurno nije mai od ih.

Zavrxetak: Po zavrxetku pete vai da je 𝑖 = 𝑛 + 1. Na osnovutaqnosti invarijante pete zakuquje se da se na pozicijama𝐴[1..𝑛] nalaze najmaih 𝑛 elemenata niza 𝐴 sortirani u neopa-dajuem poretku, a to je ceo sortiran niz 𝐴.

11. Kako u vremenu 𝑂(𝑛 log 𝑛) ustanoviti da li u nizu 𝐴 dimenzije 𝑛 imaponovenih elemenata.

Page 24: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr
Page 25: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

Glava 2

Strukture podataka

Strukture podataka su osnovni elementi od kojih se grade algoritmi.Da bismo vladali tehnikama kontrukcije algoritama, neophodno je dobropoznavae struktura podataka, u smislu tehnika rada sa ima, kao ipoznavae sloenosti operacija sa ima. U programima se obiqno taqnozadaje tip svakog podatka (da li je u pitau ceo ili realan broj i sliqno);meutim pri konstrukciji algoritma konkretan tip podataka obiqno nijebitan. Na primer, ako algoritam radi sa listom, od interesa su operacijeumetaa elementa u listu, odnosno izbacivaa elementa iz liste i nekadje korisno da se ne precizira tip podataka. U tom sluqaju govorimo oapstraktnom tipu podataka. Najvanija karakteristika apstraktnogtipa podataka je spisak operacija koje se nad im mogu izvrxavati. Kon-centrixui pau na prirodu struktura podataka sa aspekta spiskapotrebnih operacija, a zanemarujui konkretnu realizaciju, dobija seopxtiji algoritam i konstrukcija algoritma postaje modularnija (pro-gram se sastoji od meusobno malo zavisnih celina).

2.1 Primitivne strukture podataka

Pod elementom podrazumevamo podatak kome tip nije preciziran. Tako,na primer, ako se radi o problemu sortiraa, ako su jedine operacijeuporeivae i kopirae, onda se isti algoritam moe primeniti i nacele brojeve i na imena razlika je samo u realizaciji, a ideje na kojimase zasniva algoritam su iste. Ako nas prvenstveno interesuju ideje zakonstrukciju algoritama, razumno je ignorisati konkretne tipove poda-taka elemenata.

Niz ili vektor je niz elemenata istog tipa na uzastopnim lokacijamau memoriji. Veliqina niza je broj elemenata u emu. Veliqina niza semora unapred zadati, odnosno fiksirana je, jer se unapred zna veliqinadodeene memorije. Na primer, niz od 100 elemenata od kojih se svakielement zapisuje u 8 bajtova zauzima u memoriji 800 bajtova. Ako je prvielement na lokaciji 𝑥, a veliqina elementa je 𝑎 bajtova, onda se 𝑘-tielement niza nalazi na lokaciji 𝑥 + (𝑘 − 1)𝑎 i ova vrednost se moedirektno izraqunati. Osnovna osobina ove strukture podataka jeste jednakovreme pristupa svim elementima. Glavni nedostatak niza je taj xto se

25

Page 26: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

2.1. Primitivne strukture podataka 26

egova veliqina ne moe meati dinamiqki, u toku izvrxavaa algoritma.Takoe, nekada je potrebno umetnuti ili izbaciti element iz sredine, xtoje kod niza neefikasno.

Struktura (slog ili rekord) je takoe niz elemenata koji, meutim,ne moraju biti istog tipa jedino je bitno da se fiksira kombinacijatipova elemenata. Veliqina strukture takoe mora biti unapred defini-sana. I elementima strukture se moe pristupati u konstantnom vremenu:u ove svrhe koristi se poseban niz sa poqetnim adresama elemenata struk-ture, duine jednake broju elemenata strukture.

2.1.1 Dinamiqki skupovi

Kao i u matematici, i u raqunarstvu se skupovi smatraju osnovnimpojmom. Dok se matematiqki skupovi ne meaju, skupovi koji se koriste ualgoritmima mogu da imaju promenivu veliqinu mogu da se poveavaju,da se smauju ili da se meaju tokom vremena. Ovakve skupove zvaemodinamiqkim skupovima. Naime, u algoritmima je qesto potrebno da sebroj elemenata u strukturi podataka dinamiqki mea. Kada se unapredne zna broj elemenata niza mogue je rezervisati dovono veliki prostor itako rexiti problem. Ipak, neefikasno je rezervisati memorijski prostorprema najgorem sluqaju. Pored toga, nekada je potrebno umetnuti ili o-brisati element iz sredine xto je neefikasno kod niza. Razmotriemosada osnovne tehnike za predstavae dinamiqkih skupova i ihovu ma-nipulaciju na raqunaru.

U algoritmima se izvrxavaju razliqite operacije sa skupovima. Ti-piqne operacije sa skupovima su dodavae elementa, brisae elementaiz skupa i ispitivae prisustva elementa u skupu. Ovakav dinamiqkiskup zvaemo reqnik. Ponekad se oqekuje da dinamiqki skup obezbeujeoperacije za dodavae novog elementa i za izdvajae najmaeg elementaiz skupa. Skup sa ovakve dve operacije zove se red sa prioritetom.Naravno, realizacija dinamiqkog skupa zavisi od operacija koje treba dabudu podrane.

U tipiqnoj implementaciji dinamiqkog skupa, svaki element je pred-staven objektom qijim se poima moe pristupiti ukoliko imamo po-kazivaq na objekat. Neke vrste dinamiqkih skupova pretpostavaju da jejedno od poa kuq. Ako su svi kuqevi meusobno razliqiti, moemona dinamiqki skup gledati kao na skup kuqeva. Objekat moe da sadrii satelitske podatke, koji se nalaze u drugim poima objekta, ali sene koriste u implementaciji skupa. Takoe, objekat moe da ima i poakoja koriste operacije nad skupovima: ova poa mogu da sadre podatkeili pokazivaqe na druge objekte u skupu.

Neki dinamiqki skupovi pretpostavaju da se kuqevi uzimaju iz pot-puno ureenog skupa, kao xto je npr. skup realnih brojeva. Ovo nam o-moguava da definixemo minimalni element skupa, ili da govorimo onarednom veem elementu od datog elementa u skupu.

Page 27: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

27 2. Strukture podataka

2.1.2 Operacije sa dinamiqkim skupovima

Operacije nad dinamiqkim skupovima se mogu grupisati u dve katego-rije:

∙ oqitavaa operacije koje vraaju neku informaciju o skupu,

∙ promene operacije koje meaju skup.

Sledi lista tipiqnih operacija nad dinamiqkim skupovima. Svaka kon-kretna primena obiqno zahteva implementaciju samo nekih od narednihoperacija:

Nadji(S,k) za dati skup 𝑆 i kuq 𝑘 vraa se pokazivaq 𝑥 na element skupa𝑆 za koji vai da je 𝑥.𝑘𝑙𝑗𝑢𝑐 = 𝑘 ili NULL ako takav element nepripada skupu 𝑆

Umetni(S,x) operacija izmene skupa kojom se skup 𝑆 proxiruje elementomna koji pokazuje pokazivaq 𝑥

Izbaci(S,x) operacija izmene skupa kojom se iz skupa 𝑆 izbacuje elementna koji pokazuje pokazivaq 𝑥

Minimum(S) za dati potpuno ureeni skup 𝑆 vraa se pokazivaq naelement skupa 𝑆 sa najmaom vrednoxu kuqa

Maximum(S) za dati potpuno ureeni skup 𝑆 vraa se pokazivaq na e-lement skupa 𝑆 sa najveom vrednoxu kuqa

Sledbenik(S,x) za dati potpuno ureeni skup 𝑆 i pokazivaq na element𝑥 tog skupa vraa se pokazivaq na prvi vei element u skupu 𝑆 iliNULL ukoliko je 𝑥 maksimalni element

Prethodnik(S,x) za dati potpuno ureeni skup 𝑆 i pokazivaq na element𝑥 tog skupa vraa se pokazivaq na prvi mai element u skupu 𝑆 iliNULL ukoliko je 𝑥 minimalni element

U nekim situacijama moemo proxiriti operacije Sledbenik i Pret-hodnik tako da rade i nad skupovima sa ponovenim kuqevima. Za skupod 𝑛 kuqeva, uobiqajena pretpostavka jeste da poziv funkcije Minimumza kojom sledi 𝑛−1 poziva funkcije Sledbenik daje spisak elemenata skupa𝑆 ureen rastue.

Uobiqajeno je da se vreme izvrxavaa skupovnih operacija izraavapreko broja elemenata skupa.

2.2 Stek i red

Stek i red su dinamiqki skupovi u kojima je predodreen (predefinisan)element koji se brixe (izbacuje) operacijom Izbaci. Kod steka, elementkoji se brixe iz skupa je onaj koji je posledi dodat: stek implementi-ra last-in, first-out ili politiku LIFO. Sliqno, kod reda element kojise brixe je uvek onaj koji je u skupu najdue: red implementira first-in, first-out ili politiku FIFO. Pokazaemo kako se ove dve strukturepodataka mogu implementirati korixeem niza.

Page 28: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

2.2. Stek i red 28

2.2.1 Stek

Operacija umetaa u stek se uobiqajeno naziva Push, a operacijaizbacivaa koja nema kao argument element koji treba izbaciti Pop.Ovi nazivi su nastali u analogiji sa fiziqkim stekovima, kao xto su,na primer, tacne u kafiu nareane jedna na drugu ili gomila karata.Redosled u kom se tacne uzimaju sa gomile je obrnut redosledu u kom sustavane na gomilu, s obzirom na to da je dostupna samo tacna sa vrha.Sliqno je i sa gomilom karata.

Kao xto se moe videti na slici 2.1, stek od 𝑛 elemenata moemoimplementirati korixeem niza 𝑆[1..𝑛]. Uz niz quva se i poe 𝑣𝑟ℎ(engl. 𝑡𝑜𝑝) koje indeksira najskorije umetnuti element. Stek se sastojiod elemenata 𝑆[1..𝑣𝑟ℎ], pri qemu je 𝑆[1] element na dnu steka, a 𝑆[𝑣𝑟ℎ]element sa vrha steka.

Slika 2.1: Implementacija steka preko niza. Elementi steka su obojenisvetlo sivom bojom. (a) Stek ima 4 elementa. Element na vrhu je 9. (b) Steknakon poziva Push(𝑆,17) i Push(𝑆,3). (c) Stek nakon poziva Pop(𝑆) vraaelement 3, koji je posledi umetnut. Iako se element 3 i dae nalazi unizu, on vixe nije na steku; na vrhu steka se sada nalazi element 17.

Kada je 𝑣𝑟ℎ = 0, stek ne sadri elemente i kaemo da je prazan. Da lije stek prazan moemo utvrditi korixeem operacije Stek prazan. Akopokuxamo da izbacimo element iz praznog steka, dolazi do grexke koja sezove potkoraqee, xto prouzrokuje grexku. Ako 𝑣𝑟ℎ premaxi vrednost𝑛, dolazi do prekoraqea (u implementaciji koja je data u pseudokodu,nije ukuqena provera prekoraqea steka).

Svaku od ovih operacija sa stekom moemo implementirati u samonekoliko linija koda:

Page 29: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

29 2. Strukture podataka

𝑆𝑡𝑒𝑘 𝑝𝑟𝑎𝑧𝑎𝑛(𝑆, 𝑣𝑟ℎ)1 if 𝑣𝑟ℎ = 0 then2 return 𝑇𝑅𝑈𝐸3 else return 𝐹𝐴𝐿𝑆𝐸

𝑃𝑢𝑠ℎ(𝑆, 𝑣𝑟ℎ, 𝑥)1 𝑣𝑟ℎ← 𝑣𝑟ℎ + 12 𝑆[𝑣𝑟ℎ]← 𝑥

𝑃𝑜𝑝(𝑆, 𝑣𝑟ℎ)1 if 𝑆𝑡𝑒𝑘 𝑝𝑟𝑎𝑧𝑎𝑛(𝑆) then2 error“𝑝𝑜𝑡𝑘𝑜𝑟𝑎𝑐𝑒𝑛𝑗𝑒′′

3 else4 𝑣𝑟ℎ← 𝑣𝑟ℎ− 15 return 𝑆[𝑣𝑟ℎ + 1]

2.2.2 Red

Operaciju umetaa u red zovemo Enqueue, a operaciju izbacivaa izredaDequeue. Kao xto je sluqaj sa operacijom Pop kod steka, i operacijaDequeue kao argument nema element koji se izbacuje. FIFO svojstvo redauzrokuje da se red ponaxa kao red muxterija koje qekaju u redu na kasi.Red sadri poqetak, oznaqavaemo ga sa 𝑝𝑜𝑐 (engl. ℎ𝑒𝑎𝑑) i kraj, u oznaci𝑘𝑟𝑎𝑗 (engl. 𝑡𝑎𝑖𝑙). Kada se element umee u red, on zauzima svoje mesto nakraju reda, kao xto i nova muxterija staje na kraj reda. Element kojise izbacuje iz reda je uvek onaj sa poqetka reda, kao xto je sluqaj i samuxterijom na poqetku reda koja je qekala najdue.

Na slici 2.2 prikazana je mogua implementacija reda od najvixe𝑛− 1 elemenata korixeem niza 𝑄[1..𝑛]. Red ima poe 𝑝𝑜𝑐 koje pokazujena poqetak reda. Poe 𝑘𝑟𝑎𝑗 indeksira narednu poziciju na koju e novielement biti umetnut u red. Elementi reda se nalaze na pozicijama 𝑝𝑜𝑐, 𝑝𝑜𝑐+1, . . . , 𝑘𝑟𝑎𝑗 − 1, pri qemu pozicije posmatramo cikliqno, tj. imamo \pre-motavae preko kraja niza" i pozicija 1 se nalazi odmah nakon pozicije𝑛. Kada je 𝑝𝑜𝑐 = 𝑘𝑟𝑎𝑗, red je prazan. Na poqetku vai da je 𝑝𝑜𝑐 = 𝑘𝑟𝑎𝑗 = 1.Ako pokuxamo da izbacimo element iz praznog reda, dolazi do grexkepotkoraqea reda. Kada je 𝑝𝑜𝑐 = 𝑘𝑟𝑎𝑗 + 1 (kada je 𝑘𝑟𝑎𝑗 < 𝑛) odnosno ako je𝑘𝑟𝑎𝑗 = 𝑛 i 𝑝𝑜𝑐 = 1, red je pun i ako pokuxamo da u tom momentu umetnemonovi element, dolazi do grexke prekoraqee reda.

U pseudokodu procedura Enqueue i Dequeue koje slede, izostavena jeprovera da li je doxlo do grexke zbog prekoraqea ili potkoraqea. Upseudokodu se takoe podrazumeva da je duina niza 𝑄 jednaka 𝑛.

𝐸𝑛𝑞𝑢𝑒𝑢𝑒(𝑄, 𝑝𝑜𝑐, 𝑘𝑟𝑎𝑗, 𝑥)1 𝑄[𝑘𝑟𝑎𝑗]← 𝑥2 if 𝑘𝑟𝑎𝑗 = 𝑛 then3 𝑘𝑟𝑎𝑗 ← 14 else 𝑘𝑟𝑎𝑗 ← 𝑘𝑟𝑎𝑗 + 1

Page 30: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

2.3. Povezane liste 30

Slika 2.2: Implementacija reda preko niza 𝑄[1..12]. Elementi redaobojeni su svetlo sivom bojom. (a) Red sadri 5 elementa, napozicijama 𝑄[7..11]. (b) Konfiguracija reda nakon poziva Enqueue(𝑄,17),Enqueue(𝑄,3) i Enqueue(𝑄,5). (c) Konfiguracija reda nakon pozivaDequeue(𝑄) vraa vrednost kuqa 15 koji se pre toga nalazio na poqetkureda. Novi poqetak reda je element sa kuqem 6.

𝐷𝑒𝑞𝑢𝑒𝑢𝑒(𝑄, 𝑝𝑜𝑐, 𝑘𝑟𝑎𝑗)1 𝑥← 𝑄[𝑝𝑜𝑐]2 if 𝑝𝑜𝑐 = 𝑛 then3 𝑝𝑜𝑐← 14 else5 𝑝𝑜𝑐← 𝑝𝑜𝑐 + 16 return 𝑥

2.3 Povezane liste

Povezana lista je struktura podataka u kojoj su objekti ureeni u linear-nom poretku. Za razliku od niza u kom je linearni poredak odreen nizomindeksa, poredak u povezanim listama je odreen pokazivaqem u svakom odobjekata. Povezane liste omoguuju jednostavnu i fleksibilnu reprezen-taciju dinamiqkog skupa i podravaju (ne nuno efikasno) sve pomenuteoperacije nad dinamiqkim skupovima.

Lista moe da ima nekoliko razliqitih formi. Moe biti jednostrukoili dvostruko povezana, moe biti ureena (sortirana) ili ne, i moebiti cirkularna ili ne. Ako je lista jednostruko povezana onda svakielement liste ima pokazivaq na naredni element liste, dok kod dvostrukopovezane liste svaki element liste ima dva pokazivaqa na narednielement liste i na prethodni element liste. Ako je lista ureena, line-arni poredak u listi odgovara linearnom poretku kuqeva koji se quvaju

Page 31: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

31 2. Strukture podataka

kao elementi liste u tom sluqaju je element sa minimalnom vrednoxukuqa glava liste, a element sa maksimalnim kuqem rep. Ako je listaneureena, elementi se mogu javiti u proizvonom poretku. U cirku-larnoj (krunoj) listi, pokazivaq na prethodni element glave listepokazuje na rep liste, a pokazivaq na naredni element repa liste naglavu liste. Cirkularnu listu moemo posmatrati kao prsten elemenata.U nastavku teksta podrazumevaemo da je lista sa kojom radimo neureenai dvostruko povezana.

2.3.1 Dvostruko povezane liste

Kao xto je prikazano na slici 2.3, svaki element dvostruko povezaneliste 𝐿 je objekat sa poem 𝑘𝑙𝑗𝑢𝑐 i dva dodatna pokazivaqka poa: 𝑛𝑎𝑟(engl. 𝑛𝑒𝑥𝑡) koji pokazuje na naredni element liste i 𝑝𝑟𝑒𝑡 (engl. 𝑝𝑟𝑒𝑣)koji pokazuje na prethodni element liste. Objekti, takoe, mogu da sadrei neke satelitske podatke. Za dati objekat 𝑥 u listi, 𝑥.𝑛𝑎𝑟 pokazuje nasledbenika elementa 𝑥 u listi, a 𝑥.𝑝𝑟𝑒𝑡 na egovog prethodnika. Ako je𝑥.𝑝𝑟𝑒𝑡 = NULL, element 𝑥 nema prethodnika i stoga je prvi elementliste ili glava liste. Ako je 𝑥.𝑛𝑎𝑟 = NULL, element 𝑥 nema sledbenikai stoga je on posledi element liste ili en rep. Promeniva 𝐿 pokazujena poqetak (prvi element) liste. Ukoliko je 𝐿 = NULL lista je prazna.

Slika 2.3: (a) Dvostruko povezana lista koja predstava dinamiqki skup1, 4, 9, 16. Svaki element liste je objekat koji sadri poa za kuqi pokazivaqe (prikazane strelicama) na naredni i prethodni element.Poe 𝑛𝑎𝑟 repa liste i poe 𝑝𝑟𝑒𝑡 glave liste su NULL, xto je prikazanokosom crtom. 𝐿 pokazuje na poqetak liste. (b) Nakon izvrxea operacijeList insert(𝐿,𝑥), gde je 𝑥.𝑘𝑙𝑗𝑢𝑐 = 25, povezana lista ima novi element savrednoxu kuqa 25 kao novu glavu liste. Novi objekat pokazuje na staruglavu sa vrednoxu kuqa 9. (c) Rezultat operacije List delete(𝐿,𝑥), gde 𝑥pokazuje na objekat sa vrednoxu kuqa 4.

Pronalaee elementa u povezanoj listi Procedura List search(𝐿,𝑘)trai prvi element liste 𝐿 sa vrednoxu kuqa 𝑘 prostom linearnompretragom i vraa pokazivaq na taj element. Ako se u listi ne nalaziobjekat qija je vrednost kuqa 𝑘, procedura vraa vrednost NULL.Za povezanu listu datu na slici 2.3(a), poziv List search(𝐿,4) vraapokazivaq na trei element liste, a poziv List search(𝐿,7) vraavrednost NULL.

Page 32: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

2.3. Povezane liste 32

𝐿𝑖𝑠𝑡 𝑠𝑒𝑎𝑟𝑐ℎ(𝐿, 𝑘)1 𝑥← 𝐿2 while 𝑥 = NULL and 𝑥.𝑘𝑙𝑗𝑢𝑐 = 𝑘 do3 𝑥← 𝑥.𝑛𝑎𝑟4 return 𝑥

Za listu od 𝑛 elemenata vai da je vreme izvrxavaa ove operacijeu najgorem sluqaju 𝑂(𝑛), s obzirom na to da moe da se desi da trebapretraiti celu listu.

Umetae u povezanu listu Za dati element 𝑥 qija je vrednost kuqave postavena, operacija List insert umee 𝑥 na poqetak liste, kaoxto je prikazano na slici 2.3(b).

𝐿𝑖𝑠𝑡 𝑖𝑛𝑠𝑒𝑟𝑡(𝐿, 𝑥)1 𝑥.𝑛𝑎𝑟 ← 𝐿2 if 𝐿 = NULL then3 𝐿.𝑝𝑟𝑒𝑡← 𝑥4 𝐿← 𝑥5 𝑥.𝑝𝑟𝑒𝑡← NULL

Vreme izvrxavaa ove operacije za listu od 𝑛 elemenata je u najgoremsluqaju 𝑂(1).

Slika 2.4: Umetae elementa u dvostruko povezanu listu

Brisae iz povezane liste Procedura List delete izbacuje element 𝑥iz povezane liste 𝐿. Da bi se ova operacija izvrxila neophodnoje da je dat pokazivaq na element 𝑥; element 𝑥 se iz liste izbacujeauriraem vrednosti pokazivaqa. Ako elimo da iz liste izbacimoelement sa datom vrednoxu kuqa, neophodno je da prvo pozovemoproceduru List search da bismo dobili pokazivaq na eeni element.

𝐿𝑖𝑠𝑡 𝑑𝑒𝑙𝑒𝑡𝑒(𝐿, 𝑥)1 if 𝑥.𝑝𝑟𝑒𝑡 = NULL then nije prvi element liste2 𝑥.𝑝𝑟𝑒𝑡.𝑛𝑎𝑟 ← 𝑥.𝑛𝑎𝑟

Page 33: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

33 2. Strukture podataka

3 else prvi element liste4 𝐿← 𝑥.𝑛𝑎𝑟5 if 𝑥.𝑛𝑎𝑟 = NULL nije posledi element liste6 𝑥.𝑛𝑎𝑟.𝑝𝑟𝑒𝑡← 𝑥.𝑝𝑟𝑒𝑡

Slika 2.5: Brisae elementa iz dvostruko povezane liste

Na slici 2.3(c) prikazano je kako se element izbacuje iz povezaneliste.

Procedura List delete se izvrxava u vremenu 𝑂(1). Ukoliko elimoda obrixemo element sa datom vrednoxu kuqa, vreme izvrxavaaje u najgorem sluqaju 𝑂(𝑛) jer prvo mora da se pozove proceduraList search da bi se pronaxao traeni element liste.

Kod procedure List delete bio bi mnogo jednostavniji ukoliko bismoignorisali graniqne uslove za poqetak i kraj liste:

𝐿𝑖𝑠𝑡 𝑑𝑒𝑙𝑒𝑡𝑒′(𝐿, 𝑥)1 𝑥.𝑝𝑟𝑒𝑡.𝑛𝑎𝑟 ← 𝑥.𝑛𝑎𝑟2 𝑥.𝑛𝑎𝑟.𝑝𝑟𝑒𝑡← 𝑥.𝑝𝑟𝑒𝑡

2.3.2 Dvostruko povezane liste sa graniqnikom

Graniqnik (sentinel) je \vextaqki" objekat koji nam omoguava dapojednostavimo graniqne uslove. Na primer, pretpostavimo da uz listu 𝐿prosleujemo i objekat 𝐿.𝑛𝑖𝑙 koji zameuje NULL , ali ima sve atributeostalih objekata u listi. Uvek kada imamo referencu na NULL u kodusa listama, zameujemo je referencom na graniqnik 𝐿.𝑛𝑖𝑙. Kao xto jeprikazano na slici 2.6 ova izmena transformixe standardnu dvostrukopovezanu listu u cirkularnu dvostruko povezanu listu sa graniq-nikom, pri qemu se graniqnik 𝐿.𝑛𝑖𝑙 nalazi izmeu glave i repa. Pokazivaq𝐿.𝑛𝑖𝑙.𝑛𝑎𝑟 ukazuje na glavu liste, a 𝐿.𝑛𝑖𝑙.𝑝𝑟𝑒𝑡 na rep liste. Sliqno, ipokazivaq 𝑛𝑎𝑟 repa liste i pokazivaq 𝑝𝑟𝑒𝑡 glave liste ukazuju na 𝐿.𝑛𝑖𝑙.S obzirom na to da 𝐿.𝑛𝑖𝑙.𝑛𝑎𝑟 ukazuje na glavu liste, moemo eliminisati

Page 34: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

2.3. Povezane liste 34

Slika 2.6: Cirkularna, dvostruko povezana lista sa graniqnikom. (a)Prazna lista (b) Povezana lista u kojoj glava ima vrednost kuqa 9, arep 1. (c) Lista nakon dodavaa objekta sa kuqem 25, novi objekat postajeglava liste (d) Lista nakon brisaa objekta sa kuqem 1. Novi rep jeobjekat sa kuqem 4.

pokazivaq koji ukazuje na glavu liste, zamenom referenci na ega refe-rencom na 𝐿.𝑛𝑖𝑙.𝑛𝑎𝑟.

Na slici 2.6(a) prikazano je da prazna lista sadri samo graniqniki 𝐿.𝑛𝑖𝑙.𝑛𝑎𝑟 i 𝐿.𝑛𝑖𝑙.𝑝𝑟𝑒𝑡 ukazuju na 𝐿.𝑛𝑖𝑙. Kod procedure List-search ostajekao i pre, ali sa izmeenim referencama na NULL i 𝐿.

𝐿𝑖𝑠𝑡 𝑠𝑒𝑎𝑟𝑐ℎ′(𝐿, 𝑘)1 𝑥← 𝐿.𝑛𝑖𝑙.𝑛𝑎𝑟2 while 𝑥 = 𝐿.𝑛𝑖𝑙 and 𝑥.𝑘𝑙𝑗𝑢𝑐 = 𝑘 do3 𝑥← 𝑥.𝑛𝑎𝑟4 return 𝑥

Naredna procedura se koristi za umetae elementa na poqetak dvostrukopovezane listu sa graniqnikom:

𝐿𝑖𝑠𝑡 𝑖𝑛𝑠𝑒𝑟𝑡′(𝐿, 𝑥)1 𝑥.𝑛𝑎𝑟 ← 𝐿.𝑛𝑖𝑙.𝑛𝑎𝑟2 𝐿.𝑛𝑖𝑙.𝑛𝑎𝑟.𝑝𝑟𝑒𝑡← 𝑥3 𝐿.𝑛𝑖𝑙.𝑛𝑎𝑟 ← 𝑥4 𝑥.𝑝𝑟𝑒𝑡← 𝐿.𝑛𝑖𝑙

Na slici 2.6 primerima je ilustrovano dejstvo procedura List-insert’i List-Delete’.

2.3.3 Cirkularne povezane liste

Postoje sluqajevi kada je problem koji rexavamo cirkularan i kada bibilo prirodnije iskoristiti cirkularne strukture podataka za ihovopredstavae. Generalno, prednost jednostruko povezanih cirkularnihlista je u tome xto se cela lista moe obii iz svakog elementa liste,

Page 35: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

35 2. Strukture podataka

dok kod necirkularnih listi iz elementa u sredini liste nije moguepristupiti elementima koji mu prethode. Prilikom implementacije ope-racija sa dvostruko povezanim cirkularnim listama postoji mai brojspecijalnih sluqajeva (jer svi elementi imaju prethodnika i sledbenika).Ipak, zavisno od implementacije, umetae na poqetak liste bi zahtevalopronalaee posledeg elementa liste, a to moe biti skupo. Takoe,nalaee kraja liste je tee i samim tim kontrola pete (jer ne postojiNULL marker za oznaku poqetka i kraja liste).Kod necirkularne liste obiqno imamo pokazivaq na prvi element liste.

Meutim, kod cirkularne liste (posebno jednostruko povezane) ovakavnaqin implementacije nije najboe rexee. Razlog je sledei: ukolikoimamo pokazivaq na poqetak liste i hoemo da umetnemo/obrixemo elementsa poqetka liste, morali bismo da proemo kroz celu listu da bismonaxli posledi element liste i da bismo na korektan naqin povezalinovu listu.

Jedna od stvari koju bismo mogli da uradimo jeste da dodamo i po-kazivaq na posledi element liste. Meutim, na taj naqin je prilikomizvrxavaa svake operacije nad listom potrebno voditi raquna o postav-au korektne vrednosti jox jednog atributa liste.

Druga ideja jeste da zaboravimo u potpunosti na pokazivaq na prvielement liste i da samo quvamo pokazivaq na posledi element liste,jer ako znamo pokazivaq na posledi element vrlo lako emo odrediti ipokazivaq na prvi (𝑝𝑜𝑐 = 𝑘𝑟𝑎𝑗.𝑛𝑎𝑟).

Trea mogunost jeste da postoji vodei element (sliqno kao graniqnikkod necirkularne liste) koji se postava kao prvi element cirkularneliste. Ovaj element se od ostalih moe razlikovati bilo tako xto eimati neku specijalnu vrednost (npr. ako elementi liste imaju vrednostiiz skupa pozitivnih brojeva, onda on moe imati vrednost -1) ili takoxto se svakom elementu doda jedan fleg koji ima vrednost 1 ako je u pitauvodei element, a 0 inaqe.

Slika 2.7: Primer dvostruko povezane liste sa vodeim elementom kojasadri dva elementa.

2.4 Stabla

Nizovi i povezane liste odraavaju samo redosled elemenata. Qesto jepotrebno predstaviti neku sloeniju strukturu odnosa meu elementima.Stablo je hijerarhijska struktura, ali moe da poslui kao efikasnastruktura za neke operacije nad linearnim strukturama. U okviru ovogpoglava baviemo se samo hijerarhijskim ili korenskim stablom.Korensko stablo qini skup elemenata koje emo dae zvati qvorovima iskup grana koje povezuju qvorove na specifiqan naqin. Jedan izdvojeni

Page 36: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

2.4. Stabla 36

qvor je koren stabla i on predstava vrh hijerarhije (videti primerna slici 2.8). Koren je povezan sa drugim qvorovima i za ih emo reida qine nivo 1 hijerarhije, qvorovi vezani za ih (sem korena) qine nivo 2hijerarhije itd. Sve veze su dakle izmeu qvorova i ihovih (jedinstvenih)roditea (zvaemo ga jox i prethodnik ili otac qvora); jedino korennema oca. Osnovna karakteristika stabla je da nema ciklusa, zbog qegaizmeu svaka dva qvora u stablu postoji jedinstveni put. Qvor stabla jepovezan sa ocem i nekoliko svojih sledbenika (sinova). Maksimalnibroj sinova qvora u grafu naziva se stepen stabla. Najqexe se za sinovesvakog qvora definixe redosled, pa se sinovi mogu identifikovati svojimrednim brojem. Stablo stepena dva naziva se binarno stablo. Svakiqvor binarnog stabla moe da ima najvixe dva sina: levog i desnog. Qvorkoji nema dece nazivamo list, a qvor koji nije list unutraxi qvor.Visina stabla je najvei nivo egove hijerarhije, tj. to je maksimalnorastojae izmeu qvora i korena (tj. broj grana na jedinstvenom putu odkorena do qvora). Svaki qvor ima kuq koji uzima vrednost iz nekogpotpuno ureenog skupa (npr. iz skupa celih ili realnih brojeva). Pret-postava se da su kuqevi jedinstveni. Svaki qvor moe da ima poa sapodacima qiji sadraj zavisi od primene stabla.

fff

ff

f

ffff

f f ff

ff f

1

2 3

4 6 7 85

9 10

14 15 16 17

11 12 13

Slika 2.8: Primer korenskog stabla.

U daem tekstu videemo kako moemo predstaviti stablo, a zatim ebiti reqi o binarnom stablu pretrage i hipu, kao primerima strukturapodataka koje su zasnovane na binarnom stablu.

2.4.1 Predstavae stabla

U zavisnosti od toga da li se koriste pokazivaqi ili ne, predstavastabla moe biti eksplicitna i implicitna. U eksplicitnoj predstavigrane se predstavaju pomou pokazivaqa, tj. qvor sa 𝑘 sinova se predstavastrukturom koja sadri niz od 𝑘 pokazivaqa (ponekad i dodatno pokazivaqka ocu). Zgodno je da svi qvorovi budu istog tipa tako da svaki qvorsadri 𝑚 pokazivaqa, pri qemu je 𝑚 maksimalni broj dece nekog qvora,tj. stepen stabla.

Stablo stepena veeg od 2 mogue je predstaviti korixeem samo 2pokazivaqa po qvoru: prvi pokazuje na prvog sina, a drugi na narednogbrata. Drugim reqima, sinovi qvora predstaveni su povezanom listom

Page 37: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

37 2. Strukture podataka

na koju pokazuje prvi pokazivaq u qvoru. Za povezivae elemenata listekoriste se drugi pokazivaqi u qvorovima liste. Primer jedne ovakvepredstave dat je na slici 2.9.e

eee e eeeeee eeee ee

eeee e eeeeee eeee ee

Slika 2.9: Prikazivae nebinarnog stabla sa po najvixe dva pokazivaqapo qvoru.

Kod implicitnog predstavaa stabla, ne koriste se pokazivaqi. Na-ime, svi kuqevi qvorova se smextaju u niz i veze meu ima proistiquiz ihovog mesta u nizu. Najqexe se radi na sledei naqin: koren sesmexta na poziciju 𝐴[1], levi i desni sin na 𝐴[2] i 𝐴[3], itd. Redosledkojim se qvorovi smextaju u niz ilustrovan je na slici 2.10.

mmmm mmm

1

2 3

4 5 6 7

8 9 10 11 12 13 14 15

Slika 2.10: Implicitno predstavae binarnog stabla. Broj uz qvoroznaqava egovu poziciju u nizu.

U nizu se qvorovi prikazuju u onom redosledu kojim se stablo obilazisleva udesno, nivo po nivo. Pritom se mora rezervisati prostor i zaqvorove stabla koji ne postoje. Moe se pokazati da ako je qvor smextenna poziciju 𝐴[𝑖], onda se egovi levi i desni sin nalaze na pozicijama𝐴[2𝑖] i 𝐴[2𝑖 + 1]. Pokaimo matematiqkom indukcijom da ovo vai:

baza indukcije: 𝑖 = 1, na poziciji 𝐴[1] nalazi se koren i egov levii desni sin se nalaze na pozicijama 𝐴[2] i 𝐴[3] te tvree vai za𝑖 = 1

induktivni korak: pretpostavimo da tvree vai za 𝑖 = 𝑘 i pokaimoda vai za 𝑖 = 𝑘+1. Iz induktivne hipoteze sledi da se sinovi qvora𝐴[𝑘] nalaze na pozicijama 𝐴[2𝑘] i 𝐴[2𝑘 + 1]. Jasno je da se sinoviqvora 𝐴[𝑘 + 1] nalaze odmah nakon sinova qvora 𝐴[𝑘] u implicitnojpredstavi stabla, odnosno na pozicijama 𝐴[2𝑘 + 2] i 𝐴[2𝑘 + 3], tj. na

Page 38: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

2.5. Hip 38

pozicijama 𝐴[2(𝑘 + 1)] i 𝐴[2(𝑘 + 1) + 1], te smo dokazali da tvreevai za 𝑖 = 𝑘 + 1.

Ovaj naqin predstave je zgodan zbog svoje jednostavnosti i kompaktnosti.Meutim ako je stablo neuravnoteeno (tj. neki listovi su mnogo dae odkorena od drugih), mora se rezervisati prostor za veliki broj nepostojeihqvorova. Na primer, za stablo na slici 2.11, koje sa sastoji od 8 qvorovapotrebno je rezervisati niz duine 30.

mmmm

mmmm

1

2 3

6 7

14 15

30

Slika 2.11: Primer neuravnoteenog stabla, za koje je implicitnopredstavae neefikasno.

2.5 Hip

Hip je binarno stablo koje zadovoava uslov hipa: kuq svakog qvora jevei ili jednak od kuqeva egovih sinova. Iz tranzitivnosti relacije≥ sledi da je kuq svakog qvora vei ili jednak od kuqeva svih egovihpotomaka. Qesto se u literaturi ova realizacija hipa naziva i maks-hip,dok se binarno stablo koje zadovoava uslov da je kuq svakog qvora maiili jednak od kuqeva egovih sinova naziva min-hip.

Hip je struktura podataka korisna za realizaciju reda sa priori-tetom. To je apstraktna struktura podataka za koju su definisane dveoperacije:

Umetni(𝑥) - umetni kuq 𝑥 u strukturu

Izbaci() - izbaci najvei kuq iz strukture

Hip se moe realizovati implicitno ili eksplicitno predstavenimstablom. Ovde e biti prikazana realizacija hipa na implicitno zadatomstablu, jer se dve osnovne operacije mogu izvoditi na naqin koji obezbeujeda stablo uvek bude uravnoteeno. Dakle, smatraemo da su kuqevi qvo-rova hipa smexteni u niz 𝐴[1..𝑘], pri qemu je 𝑘 gora granica za brojelemenata hipa. Ako je 𝑛 tekui broj elemenata hipa, onda se za smextaeelemenata hipa koriste lokacije u nizu 𝐴 sa indeksima od 1 do 𝑛.

Page 39: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

39 2. Strukture podataka

2.5.1 Uklaae sa hipa elementa sa najveim kuqem

Kuq najveeg elementa je 𝐴[1], pa ga je lako pronai. Posle toga trebatransformisati preostali sadraj niza tako da predstava ispravanhip. To se moe postii tako da se najpre 𝐴[𝑛] prekopira u koren (𝐴[1]←𝐴[𝑛]) i 𝑛 smai za jedan. Oznaqimo sa 𝑥 ← 𝐴[1] novi kuq korena, a sa𝑦 ← max𝐴[2], 𝐴[3] vei od kuqeva sinova korena. Podstabla sa korenimau 𝐴[2] i 𝐴[3] su ispravni hipovi; ako je 𝑥 ≥ 𝑦 (odnosno 𝑥 ≥ 𝐴[2] i 𝑥 ≥ 𝐴[3]),onda je kompletno stablo ispravan hip. U protivnom (ako je 𝑥 < 𝑦), poslezamene mesta kuqeva 𝑥 i 𝑦 u stablu (odnosno u nizu 𝐴), podstablo sanepromeenim korenom ostaje ispravan hip, a drugom podstablu je prome-en (smaen!) kuq u korenu. Na to drugo podstablo primeuje se rekur-zivno (indukcija) ista procedura koja je primeena na polazno stablo.Induktivna hipoteza je da ako je posle 𝑖 koraka 𝑥 na poziciji 𝐴[𝑗], ondasamo podstablo sa korenom𝐴[𝑗] eventualno ne zadovoava uslov hipa. Daese 𝑥 uporeuje sa 𝐴[2𝑗] i 𝐴[2𝑗+1] (ako postoje) i, ako 𝑥 nije vei ili jednakod oba ova kuqa, zameuje mesto sa veim od ih. Dakle, kuq 𝑥 spuxtase nanie dotle dok ne dospe u list ili u koren nekog podstabla u komeje vei ili jednak od kuqeva oba sina. Ova operacija opisana je kodom𝑆𝑘𝑖𝑛𝑖𝑀𝑎𝑥𝑆𝑎𝐻𝑖𝑝𝑎. Na slici 2.12 prikazan je primer uklaaa najveegelementa iz hipa.

m m m mm mm8

4 6

3 1 2 5 m m mm mm5

4 6

3 1 2

y

m m mm mm6

4 5

3 1 2

y

Slika 2.12: Uklaae najveeg elementa sa hipa.

𝑆𝑘𝑖𝑛𝑖𝑀𝑎𝑥𝑆𝑎𝐻𝑖𝑝𝑎(𝐴,𝑛)ulaz: 𝐴 - niz veliqine 𝑛 za smextae hipaizlaz: 𝑉 𝑟ℎ ℎ𝑖𝑝𝑎 - najvei element hipa,

𝐴 - novi hip, 𝑛 - nova veliqina hipa1 if 𝑛 = 0 then2 error “𝑝𝑜𝑡𝑘𝑜𝑟𝑎𝑐𝑒𝑛𝑗𝑒′′

3 else4 𝑉 𝑟ℎ ℎ𝑖𝑝𝑎← 𝐴[1]5 𝐴[1]← 𝐴[𝑛]6 𝑛← 𝑛− 17 𝑂𝑡𝑎𝑐← 18 if 𝑛 > 1 then9 𝑆𝑖𝑛← 210 while 𝑆𝑖𝑛 ≤ 𝑛 do11 if 𝑆𝑖𝑛 + 1 ≤ 𝑛 and 𝐴[𝑆𝑖𝑛] < 𝐴[𝑆𝑖𝑛 + 1] then12 𝑆𝑖𝑛← 𝑆𝑖𝑛 + 113 if 𝐴[𝑆𝑖𝑛] > 𝐴[𝑂𝑡𝑎𝑐]

Page 40: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

2.5. Hip 40

14 𝑧𝑎𝑚𝑒𝑛𝑖(𝐴[𝑂𝑡𝑎𝑐], 𝐴[𝑆𝑖𝑛])15 𝑂𝑡𝑎𝑐← 𝑆𝑖𝑛16 𝑆𝑖𝑛← 2 · 𝑆𝑖𝑛17 else18 𝑆𝑖𝑛← 𝑛 + 1 da bi se iskoqilo iz pete19 return 𝑉 𝑟ℎ ℎ𝑖𝑝𝑎

2.5.2 Umetae novog elementa u hip

Operacija se izvodi na sliqan naqin kao i prethodna. Najpre se 𝑛povea za jedan i na slobodnu poziciju 𝐴[𝑛] upixe se novi kuq. Tajkuq uporeuje se sa kuqem oca 𝐴[𝑖], gde je 𝑖 = ⌈𝑛/2⌉, pa ako je veiod ega, zameuju im se mesta. Ova zamena moe samo da povea kuq 𝐴[𝑖],pa e qvor sa kuqem 𝐴[𝑖] biti koren ispravnog hipa. Moe se pokazatida je taqna sledea induktivna hipoteza: ako je umetnuti kuq posle nizapremextaa dospeo u elemenat 𝐴[𝑗], onda stablo sa korenom 𝐴[𝑗] jesteispravan hip, a ako se to podstablo ukloni, ostatak stabla zadovoavauslov hipa. Proces se nastava premextaem novog kuqa navixe, sve dokne bude mai ili jednak od kuqa oca ili dok ne doe do korena | tadakompletno stablo zadovoava uslov hipa; videti primer na slici 2.13.

m m m mm mm6

4 5

3 1 2 9 m mm mm mm mm mm mm m6 9

4 49 6

3 31 12 25 5

y

Slika 2.13: Umetae elementa u hip.

Broj uporeivaa prilikom izvrxea obe operacije sa hipom je ograniqenvisinom stabla, odnosno sa𝑂(log 𝑛), xto znaqi da se one efikasno izvrxavaju.Nedostatak hipa je u tome xto se ne moe efikasno pronai zadati kuq.

𝑈𝑝𝑖𝑠𝑈𝐻𝑖𝑝(𝐴,𝑛, 𝑥)ulaz: 𝐴 - niz od 𝑛 kuqeva hipa, 𝑥 - brojizlaz: 𝐴 - novi hip, 𝑛 - nova veliqina hipa1 𝑛← 𝑛 + 1 pretpostavka je da novo 𝑛 nije vee od veliqine 𝐴 2 𝐴[𝑛]← 𝑥3 𝑆𝑖𝑛← 𝑛4 𝑂𝑡𝑎𝑐← 𝑛 div 25 while 𝑂𝑡𝑎𝑐 ≥ 1 do6 if 𝐴[𝑂𝑡𝑎𝑐] < 𝐴[𝑆𝑖𝑛] then7 𝑧𝑎𝑚𝑒𝑛𝑖(𝐴[𝑂𝑡𝑎𝑐], 𝐴[𝑆𝑖𝑛])8 𝑆𝑖𝑛← 𝑂𝑡𝑎𝑐9 𝑂𝑡𝑎𝑐← 𝑂𝑡𝑎𝑐div 210 else

Page 41: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

41 2. Strukture podataka

11 𝑂𝑡𝑎𝑐← 0 za iskakae iz pete

2.5.3 Min-maks hip

Nekada je potrebno obezbediti pristup i najmaem i najveem elementuu logaritamskom vremenu. Apstraktnu strukturu podataka koja podravapristup ovim operacijama nazivamo red sa prioritetom sa dva kraja.Za realizaciju ove apstraktne strukture podataka moe se koristitistruktura podataka koju nazivamo min-maks hip (eng. min-max heap).Min-maks hip je binarno stablo koje kombinuje prednosti i min-hipai maks-hipa. Umetae elementa u min-maks hip i brisae minimalnogi maksimalnog elementa mogu se izvesti u vremenu 𝑂(log 𝑛). Kao i kodklasiqnog hipa, i ova vrsta hipa se najqexe realizuje korixeem niza,odnosno implicitno.

U min-maks hipu svaki qvor zadovoava naredni uslov: kuq svakogqvora na parnom nivou stabla je mai od kuqeva svih egovih potomaka,a kuq svakog qvora na neparnom nivou je vei od kuqeva svih egovihpotomaka u stablu (videti primer na slici 2.14). Podrazumevamo da jekoren na nivou 0. Posledica je da se u korenu nalazi najmai elementstabla, dok je jedan od dva elementa na prvom nivou stabla najvei elementu ovoj strukturi. Qesto umesto parnog nivoa kaemo minimalni nivo, aumesto neparnog kaemo maksimalni nivo (u skladu sa uslovom koji vaina ovim nivoima).

Slika 2.14: Primer min-maks hipa

Kako se izvode osnovne operacije kod min-maks hipa? Umetae se, kaoi kod osnovnog hipa, vrxi tako xto se 𝑛 povea za jedan i novi element sestava na mesto 𝐴[𝑛]. Ovim se moe naruxiti neki od eenih odnosa uhipu te je hip potrebno preurediti. Dodavaem novog elemetna mogue jenaruxiti samo odnose qvorova koji se nalaze na putu od korena stabla dooca novododatog elementa. Razlikujemo dva sluqaja u zavisnosti od togada li se element dodaje na parni ili neparni nivo:

∙ ukoliko se novi element 𝐴[𝑛] nalazi na minimalnom nivou, onda seegova vrednost uporeuje sa vrednoxu egovog oca 𝐴[𝑛/2]

ako je 𝐴[𝑛/2] < 𝐴[𝑛] onda se ta dva elementa zameuju, a zatim sepoqev od qvora𝐴[𝑛/2] prolazi unazad ka korenu kroz maksimalnenivoe i vrxi preureee hipa ukoliko je naruxen uslov hipa;

Page 42: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

2.5. Hip 42

ako je 𝐴[𝑛/2] > 𝐴[𝑛] onda se poqev od qvora 𝐴[𝑛] prolazi unazadka korenu kroz minimalne nivoe i hip se preureuje, ukoliko jepotrebno

∙ ukoliko se novi element 𝐴[𝑛] nalazi na maksimalnom nivou, onda seegova vrednost uporeuje sa vrednoxu egovog ova 𝐴[𝑛/2]

ako je 𝐴[𝑛/2] > 𝐴[𝑛] onda se ta dva elementa zameuju, a zatim sepoqev od qvora 𝐴[𝑛/2] prolazi unazad ka korenu kroz minimalnenivoe i hip se preureuje ukoliko je potrebno;

ako je 𝐴[𝑛/2] < 𝐴[𝑛] onda se poqev od qvora 𝐴[𝑛] prolazi unazadka korenu kroz maksimalne nivoe i hip se preureuje, ukolikoje potrebno.

Slika 2.15: Min-maks hip sa slike 2.14 nakon dodavaa elementa 2

Preureivae samo maksimalnih, odnosno samo minimalnih nivoa radise isto kao i u standardnom hipu, samo xto za svaki qvor gledamo egovogdedu (oca egovog oca), umesto oca.

Brisae minimalnog, odnosno maksimalnog elementa izvodi se sliqnokao i kod standardnog hipa. eeni element se izbacuje iz hipa, a naegovo mesto se dovodi posledi element u hipu, a zatim je potrebnoizvrxiti neka preureea hipa koja zavise od toga da li se izbacujeminimalni ili maksimalni element hipa.

∙ Ukoliko brixemo minimalni element onda se pronalazi najmaimeu egovim sinovima i unucima (neophodno je razmatrati i sinoverazmatranog qvora jer u podstablu ne moraju postojati svi unuci imoe se desiti da neki sin ima vrednost koja je maa od svih unukatog qvora): ako je minimalni meu ima unuk i ako je on mai odposmatranog elementa, razmeuje im se mesto i proverava da li setim naruxio odnos oca tog unuka i unuka (ako jeste razmeuju im semesta) i nastava se nadole po minimalnim nivoima; ako je najmaiqvor sin i on je vei od tekueg qvora, onda im se samo razmeujumesta.

∙ Brisae maksimalnog elementa se izvodi na analogan naqin.

Page 43: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

43 2. Strukture podataka

2.6 Binarno stablo pretrage (ureeno binarno stablo)

Svaki qvor binarnog stabla ima najvixe dva sina, pa se moe fiksiratineko preslikavae skupa egovih sinova u skup levi, desni. Ovo pre-slikavae moe se iskoristiti pri iscrtavau stabla u ravni: levi sincrta se levo, a desni sin desno od oca; svi qvorovi iste generacije (nivoa)crtaju se na istoj horizontalnoj pravoj, ispod prave na kojoj su qvoroviprethodne generacije. Levom, odnosno desnom sinu korena stabla odgovaralevo, odnosno desno podstablo.

U binarnom stablu pretrage (BSP, eng. Binary Search Tree, tj. bi-narnom stablu koje omoguuje pretraivae), odnosno ureenom binar-nom stablu, kuq svakog qvora vei je od kuqeva svih qvorova levogpodstabla, a mai od kuqeva svih qvorova desnog podstabla (videtisliku 2.17). Pretpostavamo zbog jednostavnosti da su kuqevi svih qvo-rova razliqiti. BSP omoguuje efikasno izvrxavae sledee tri opera-cije:

∙ Nadji(𝑥) nai elemenat sa kuqem 𝑥 u strukturi, ili ustanovi daga tamo nema (pretpostava se da se svaki kuq u strukturi nalazinajvixe jednom);

∙ Umetni(𝑥) umetni kuq 𝑥 u strukturu, ako on ve nije u oj; uprotivnom ova operacija nema efekta, i

∙ Ukloni(𝑥) ako u strukturi podataka postoji elemenat sa kuqem𝑥, ukloni ga.

Kao xto smo ve pomenuli, apstraktna struktura podataka sa ovim ope-racijama zove se reqnik. Za enu realizaciju moe se iskoristiti BSP.Zbog vanosti dinamiqkih ubacivaa i brisaa elemenata iz reqnika,i da se ne bi morala unapred zadavati gora granica za broj elemenata,smatraemo da je odgovarajue stablo predstaveno eksplicitno. Svakiqvor stabla je struktura sa bar tri poa: 𝑘𝑙𝑗𝑢𝑐, 𝑙𝑒𝑣𝑖 i 𝑑𝑒𝑠𝑛𝑖. Drugo,odnosno tree poe su pokazivaqi ka drugim qvorovima, ili NULL (akoqvor nema levog, odnosno desnog sina). BSP je komplikovanija strukturapodataka od hipa: kod hipa se pristupa samo listovima, dok se u BSPsvaki qvor moe izbaciti.

2.6.1 Nalaee kuqa u BSP

Ovo je operacija po kojoj je struktura podataka binarno stablo pretragedobila ime. Potrebno je pronai u stablu elemenat sa zadatim kuqem 𝑥.Broj 𝑥 uporeuje se sa kuqem 𝑟 korena BSP. Ako je 𝑥 = 𝑟 onda je traeezavrxeno. Ako je pak 𝑥 < 𝑟 (odnosno 𝑥 > 𝑟) onda se traee rekurzivnonastava u levom (odnosno desnom) podstablu. Ovim se u stvari poloviinterval indeksa kuqeva.

𝑁𝑎𝑑𝑗𝑖 𝑢 𝐵𝑆𝑃 (𝑘𝑜𝑟𝑒𝑛, 𝑥)ulaz: 𝑘𝑜𝑟𝑒𝑛 - pokazivaq na koren BSP, 𝑥 - brojizlaz: 𝑐𝑣𝑜𝑟 - pokazivaq na qvor koji sadri broj 𝑥

ili NULL ukoliko takvog qvora nema

Page 44: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

2.6. Binarno stablo pretrage (ureeno binarno stablo) 44

1 if 𝑘𝑜𝑟𝑒𝑛 = NULL or 𝑘𝑜𝑟𝑒𝑛.𝑘𝑙𝑗𝑢𝑐 = 𝑥 then2 𝑐𝑣𝑜𝑟 ← 𝑘𝑜𝑟𝑒𝑛3 else4 if 𝑥 < 𝑘𝑜𝑟𝑒𝑛.𝑘𝑙𝑗𝑢𝑐 then 𝑁𝑎𝑑𝑗𝑖 𝑢 𝐵𝑆𝑃 (𝑘𝑜𝑟𝑒𝑛.𝑙𝑒𝑣𝑖, 𝑥)5 else 𝑁𝑎𝑑𝑗𝑖 𝑢 𝐵𝑆𝑃 (𝑘𝑜𝑟𝑒𝑛.𝑑𝑒𝑠𝑛𝑖, 𝑥)

2.6.2 Umetae u BSP

Umetae u BSP je takoe jednostavna operacija. Kuq 𝑥 koji trebaumetnuti najpre se trai u BSP; ako se pronae, umetae je zavrxeno;pretpostavka je da se u reqniku ne quvaju ponovene kopije istih elemenata.Ako se 𝑥 ne pronae u BSP, onda se prilikom traea doxlo do lista,ili do qvora bez jednog sina, upravo sa one strane gde treba umetnutinovi qvor. Tada se 𝑥 umee kao levi, odnosno desni sin tog qvora | akoje mai, odnosno vei od kuqa tog qvora.

𝑈𝑚𝑒𝑡𝑛𝑖 𝑢 𝐵𝑆𝑃 (𝑘𝑜𝑟𝑒𝑛, 𝑥)ulaz: 𝑘𝑜𝑟𝑒𝑛 - pokazivaq na koren BSP, 𝑥 - brojizlaz: U BSP se umee qvor sa kuqem 𝑥 na koga pokazuje pokazivaq 𝑠𝑖𝑛;

ako ve postoji qvor sa kuqem 𝑥, onda je 𝑠𝑖𝑛 = NULL1 if 𝑘𝑜𝑟𝑒𝑛 = NULL then2 kreiraj novi qvor na koga pokazuje 𝑠𝑖𝑛3 𝑘𝑜𝑟𝑒𝑛← 𝑠𝑖𝑛4 𝑘𝑜𝑟𝑒𝑛.𝑘𝑙𝑗𝑢𝑐← 𝑥5 𝑘𝑜𝑟𝑒𝑛.𝑙𝑒𝑣𝑖← NULL6 𝑘𝑜𝑟𝑒𝑛.𝑑𝑒𝑠𝑛𝑖← NULL7 else8 𝑐𝑣𝑜𝑟 ← 𝑘𝑜𝑟𝑒𝑛 tekui qvor u stablu9 𝑠𝑖𝑛← 𝑘𝑜𝑟𝑒𝑛 postava se na vrednost razliqitu od NULL 10 while 𝑐𝑣𝑜𝑟 = NULL and 𝑠𝑖𝑛 = NULL do11 if 𝑐𝑣𝑜𝑟.𝑘𝑙𝑗𝑢𝑐 = 𝑥 then 𝑠𝑖𝑛← 𝑁𝑈𝐿𝐿12 else silazak niz stablo za jedan nivo13 𝑜𝑡𝑎𝑐← 𝑐𝑣𝑜𝑟14 if 𝑥 < 𝑐𝑣𝑜𝑟.𝑘𝑙𝑗𝑢𝑐 then 𝑐𝑣𝑜𝑟 ← 𝑐𝑣𝑜𝑟.𝑙𝑒𝑣𝑖15 else 𝑐𝑣𝑜𝑟 ← 𝑐𝑣𝑜𝑟.𝑑𝑒𝑠𝑛𝑖16 if 𝑠𝑖𝑛 = NULL then novi qvor je sin qvora 𝑜𝑡𝑎𝑐 17 kreiraj novi qvor na koga pokazuje 𝑠𝑖𝑛18 𝑠𝑖𝑛.𝑘𝑙𝑗𝑢𝑐← 𝑥19 𝑠𝑖𝑛.𝑙𝑒𝑣𝑖← NULL20 𝑠𝑖𝑛.𝑑𝑒𝑠𝑛𝑖← NULL21 if 𝑥 < 𝑜𝑡𝑎𝑐.𝑘𝑙𝑗𝑢𝑐 then 𝑜𝑡𝑎𝑐.𝑙𝑒𝑣𝑖← 𝑠𝑖𝑛22 else 𝑜𝑡𝑎𝑐.𝑑𝑒𝑠𝑛𝑖← 𝑠𝑖𝑛

2.6.3 Brisae iz BSP

Brisae qvora iz BSP kome je kuq jednak zadatom broju takoe poqietraeem kuqa u stablu i nexto je komplikovanija operacija od pret-hodnih. Najjednostavnije je obrisati list: pokazivaq na ega u egovom

Page 45: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

45 2. Strukture podataka

ocu postava se na NULL . Na sliqan naqin lako je obrisati unutraxiqvor sa samo jednim sinom: taj qvor se uklaa, a podstablo sa korenomu egovom sinu se podie za jedan nivo tako da mu koren bude na mestuobrisanog qvora. Ako treba ukloniti unutraxi qvor 𝐵 sa oba sina, moese najpre u levom podstablu qvora 𝐵 pronai "najdesniji" qvor 𝑥, odnosnoqvor sa najveim kuqem (videti ilustraciju na slici 2.16); polazei odkorena tog podstabla prelazi se dokle god je to mogue iz qvora u egovogdesnog sina; na kraju tog puta dolazi se do qvora 𝑥. Kuq qvora 𝑥 kopirase u kuq 𝐵, a qvor 𝑥 uklaa se na ve opisani naqin jer je on list iliqvor sa samo jednim sinom. Posle ove operacije BSP ostaje konzistentno:kuq 𝑥 vei je od kuqeva svih qvorova u levom podstablu ispod svoje novelokacije. Qvor 𝑥 zove se prethodnik qvora 𝐵 u stablu. Isti rezultatmoe se postii pomou "najlevijeg" qvora u desnom podstablu qvora 𝐵,egovog sledbenika.

𝑈𝑘𝑙𝑜𝑛𝑖 𝑖𝑧 𝐵𝑆𝑃 (𝑘𝑜𝑟𝑒𝑛, 𝑥)ulaz: 𝑘𝑜𝑟𝑒𝑛 - pokazivaq na koren BSP, 𝑥 - brojizlaz: pokazivaq na koren promeenog stabla1 prva faza: traee qvora sa kuqem 𝑥2 𝑐𝑣𝑜𝑟 ← 𝑘𝑜𝑟𝑒𝑛3 while 𝑐𝑣𝑜𝑟 = NULL and 𝑐𝑣𝑜𝑟.𝑘𝑙𝑗𝑢𝑐 = 𝑥 do4 𝑜𝑡𝑎𝑐← 𝑐𝑣𝑜𝑟5 if 𝑥 < 𝑐𝑣𝑜𝑟.𝑘𝑙𝑗𝑢𝑐 then 𝑐𝑣𝑜𝑟 ← 𝑐𝑣𝑜𝑟.𝑙𝑒𝑣𝑖6 else 𝑐𝑣𝑜𝑟 ← 𝑐𝑣𝑜𝑟.𝑑𝑒𝑠𝑛𝑖7 if 𝑐𝑣𝑜𝑟 = NULL then8 𝑝𝑟𝑖𝑛𝑡(\𝑥 nije u BSP")9 ℎ𝑎𝑙𝑡10 brisae naenog qvora 𝑐𝑣𝑜𝑟 ili egovog prethodnika11 if 𝑐𝑣𝑜𝑟 = 𝑘𝑜𝑟𝑒𝑛 then12 if 𝑐𝑣𝑜𝑟.𝑙𝑒𝑣𝑖 = NULL then13 if 𝑥 ≤ 𝑜𝑡𝑎𝑐.𝑘𝑙𝑗𝑢𝑐 then14 𝑜𝑡𝑎𝑐.𝑙𝑒𝑣𝑖← 𝑐𝑣𝑜𝑟.𝑑𝑒𝑠𝑛𝑖15 else 𝑜𝑡𝑎𝑐.𝑑𝑒𝑠𝑛𝑖← 𝑐𝑣𝑜𝑟.𝑑𝑒𝑠𝑛𝑖16 else if 𝑐𝑣𝑜𝑟.𝑑𝑒𝑠𝑛𝑖 = NULL then17 if 𝑥 ≤ 𝑜𝑡𝑎𝑐.𝑘𝑙𝑗𝑢𝑐 then18 𝑜𝑡𝑎𝑐.𝑙𝑒𝑣𝑖← 𝑐𝑣𝑜𝑟.𝑙𝑒𝑣𝑖19 else 𝑜𝑡𝑎𝑐.𝑑𝑒𝑠𝑛𝑖← 𝑐𝑣𝑜𝑟.𝑙𝑒𝑣𝑖20 else sluqaj sa dva sina 21 𝑐𝑣𝑜𝑟1← 𝑐𝑣𝑜𝑟.𝑙𝑒𝑣𝑖22 𝑜𝑡𝑎𝑐1← 𝑐𝑣𝑜𝑟23 while 𝑐𝑣𝑜𝑟1.𝑑𝑒𝑠𝑛𝑖 = NULL do24 𝑜𝑡𝑎𝑐1← 𝑐𝑣𝑜𝑟125 𝑐𝑣𝑜𝑟1← 𝑐𝑣𝑜𝑟.𝑑𝑒𝑠𝑛𝑖26 a sada ide brisae, 𝑐𝑣𝑜𝑟1 je prethodnik qvora 𝑐𝑣𝑜𝑟27 𝑐𝑣𝑜𝑟.𝑘𝑙𝑗𝑢𝑐← 𝑐𝑣𝑜𝑟1.𝑘𝑙𝑗𝑢𝑐28 if 𝑜𝑡𝑎𝑐1 = 𝑐𝑣𝑜𝑟 then29 𝑜𝑡𝑎𝑐1.𝑙𝑒𝑣𝑖← 𝑐𝑣𝑜𝑟1.𝑙𝑒𝑣𝑖 𝑐𝑣𝑜𝑟1 je levi sin qvora 𝑜𝑡𝑎𝑐130 else31 𝑜𝑡𝑎𝑐1.𝑑𝑒𝑠𝑛𝑖← 𝑐𝑣𝑜𝑟1.𝑙𝑒𝑣𝑖 𝑐𝑣𝑜𝑟1 je desni sin qvora 𝑜𝑡𝑎𝑐1

Page 46: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

2.6. Binarno stablo pretrage (ureeno binarno stablo) 46

b bb b b bb bb

b bbb bb b

b bb b b bb bbb bb b

bb(c)

f

f

𝑥

𝑦

𝐵

𝑦

𝑥

b b bbb b b bb𝐵 f

-

-

b b bb bbbb bbbf

(a) (b)

𝐵

𝑥

𝑥

-

Slika 2.16: Brisae elementa binarnog stabla pretrage.

Operacija sledbenik definisana je i ako dati qvor 𝑥 nema desnog sina.U tom sluqaju 𝑥 ima najvei kuq u podstablu sa taqno odreenim korenom𝑦; tada je otac qvora 𝑦 sledbenik qvora 𝑥. Naravno, ako je qvor 𝑦 korenstabla, sledbenik ne postoji (videti primere na slici 2.17). Prema tome,operacija sledbenik moe se opisati sledeim kodom (analognim kodommoe se opisati operacija prethodnik).

𝑆𝑙𝑒𝑑𝑏𝑒𝑛𝑖𝑘(𝑥)ulaz: 𝑘𝑜𝑟𝑒𝑛 - pokazivaq na koren stabla,

𝑥 - pokazivaq na qvor stabla qijeg sledbenika traimoizlaz: 𝑦 - pokazivaq na sledbenika qvora 𝑥

ili NULL ukoliko takvog qvora nema1 if 𝑥.𝑑𝑒𝑠𝑛𝑖 = NULL then return 𝑀𝑖𝑛𝑖𝑚𝑢𝑚(𝑥.𝑑𝑒𝑠𝑛𝑖)2 𝑜𝑡𝑎𝑐← 𝑘𝑜𝑟𝑒𝑛3 𝑠𝑙𝑒𝑑← NULL4 while 𝑜𝑡𝑎𝑐 = NULL5 if 𝑥.𝑘𝑙𝑗𝑢𝑐 < 𝑜𝑡𝑎𝑐.𝑘𝑙𝑗𝑢𝑐6 𝑠𝑙𝑒𝑑← 𝑜𝑡𝑎𝑐7 𝑜𝑡𝑎𝑐← 𝑜𝑡𝑎𝑐.𝑙𝑒𝑣𝑖8 elseif 𝑥.𝑘𝑙𝑗𝑢𝑐 > 𝑜𝑡𝑎𝑐.𝑘𝑙𝑗𝑢𝑐9 𝑜𝑡𝑎𝑐← 𝑜𝑡𝑎𝑐.𝑑𝑒𝑠𝑛𝑖10 else11 break12 return 𝑠𝑙𝑒𝑑

𝑀𝑖𝑛𝑖𝑚𝑢𝑚(𝑥)ulaz: 𝑥 - koren binarnog stabla pretrageizlaz: 𝑥 - pokazivaq na minimalni element datog binarnog stabla pretrage1 while 𝑥.𝑙𝑒𝑣𝑖 = NULL

Page 47: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

47 2. Strukture podataka

2 𝑥← 𝑥.𝑙𝑒𝑣𝑖3 return 𝑥

Operacija𝑀𝑎𝑘𝑠𝑖𝑚𝑢𝑚(𝑥) za pronalaee maksimalnog elementa binarnogstabla pretrage sa datim korenom moe se opisati analognim kodom.

Slika 2.17: Sledbenik qvora sa kuqem 15 je qvor sa kuqem 17 jer je onminimalni kuq u desnom podstablu stabla sa korenom 15. Qvor sa kuqem13 nema desno podstablo pa je egov kuq najvei od kuqeva u podstablusa korenom u qvoru 𝑦 sa kuqem 6, a sledbenik je otac qvora 𝑦, sa kuqem15. Qvor sa kuqem 20 nema sledbenika u stablu.

Struktura binarnog stabla pretrage omoguava pronalaee sledbe-nika (prethodnika) qvora bez ikakvog poreea kuqeva ukoliko je uzqvor dat pokazivaq 𝑜𝑡𝑎𝑐. Naredna procedura vraa sledbenika qvora 𝑥 uBSP ako postoji, odnosno NULL ako je 𝑥 qvor sa najveom vrednoxu ustablu.

𝑆𝑙𝑒𝑑𝑏𝑒𝑛𝑖𝑘′(𝑥)ulaz: 𝑥 - pokazivaq na qvor stabla qijeg sledbenika traimoizlaz: 𝑦 - pokazivaq na qvor koji sadri sledbenika

ili NULL ukoliko takvog qvora nema1 if 𝑥.𝑑𝑒𝑠𝑛𝑖 = NULL then return 𝑀𝑖𝑛𝑖𝑚𝑢𝑚(𝑥.𝑑𝑒𝑠𝑛𝑖)2 𝑦 ← 𝑥.𝑜𝑡𝑎𝑐3 while 𝑦 = NULL and 𝑥 = 𝑦.𝑑𝑒𝑠𝑛𝑖4 𝑥← 𝑦5 𝑦 ← 𝑦.𝑜𝑡𝑎𝑐6 return 𝑦

2.6.4 Sloenost operacija nad BSP

Za sve tri razmatrane operacije vreme izvrxea zavisi od oblikastabla i poloaja qvora na kome se vrxi intervencija | u najgoremsluqaju se traee zavrxava u listu stabla. Prilikom brisaa kuqa uqvoru sa oba sina, nastava se sa spuxtaem nanie, ali je i u tom sluqaju

Page 48: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

2.7. AVL stabla 48

ukupan put koji se prelazi mai od visine stabla. Sve ostalo zahteva samokonstantan broj elementarnih operacija (na primer, stvarno upisivaekuqa ili zamena kuqeva pri brisau). Dakle, u najgorem sluqaju jesloenost proporcionalna visini stabla. Ako je stablo sa 𝑛 qvorova urazumnoj meri uravnoteeno, onda je egova visina proporcionalna salog2 𝑛, pa se sve tri operacije efikasno izvrxavaju. Problem nastaje akostablo nije uravnoteeno | na primer, stablo koje se dobija umetaemrastueg niza kuqeva ima visinu 𝑂(𝑛)! Ako se stablo dobija umetaem 𝑛kuqeva u sluqajno izabranom poretku, onda je oqekivana visina stabla2 ln𝑛, pa su operacije traea i umetaa efikasne. Stabla sa dugaqkimputevima mogu da nastanu kao rezultat umetaa u ureenom ili skoroureenom redosledu. Brisaa mogu da izazovu probleme qak i ako se izvodeu sluqajnom redosledu: razlog tome je asimetrija do koje dolazi ako se uvekkoristi prethodnik za zamenu obrisanog qvora. Posle qestih brisaa iumetaa, stablo moe da dostigne visinu 𝑂(

√𝑛), qak i u kod sluqajnih

umetaa i brisaa. Asimetrija se moe smaiti ako se za zamenu obrisanogqvora naizmeniqno koriste prethodnik i sledbenik.

Na sreu, postoji naqin da se izbegnu dugaqki putevi u BSP. Jedantakav metod je korixee AVL stabala, koja su podvrsta binarnih stabalapretrage.

2.7 AVL stabla

AVL stabla (koja su ime dobila po autorima, Adel~sonVel~ski iLandis, 1962.) su struktura podataka koja garantuje da sloenost ni jedneod operacija traea, umetaa i brisaa u najgorem sluqaju nije veaod 𝑂(log 𝑛), gde je 𝑛 broj elemenata. Ideja je uloiti dopunski napor dase posle svake operacije stablo uravnotei, tako da visina stabla uvekbude 𝑂(log 𝑛). Pri tome se uravnoteenost stabla definixe tako da semoe lako odravati. Preciznije, AVL stablo se definixe kao binarnostablo pretrage kod koga je za svaki qvor apsolutna vrednost razlikevisina levog i desnog podstabla maa ili jednaka od jedan (videti primerna slici 2.18).

Slika 2.18: Primer AVL stabla.

Page 49: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

49 2. Strukture podataka

Kao xto pokazuje sledea teorema, visina AVL stabla je 𝑂(log 𝑛).

Teorema 1. Za AVL stablo sa 𝑛 unutraxih qvorova visina ℎ zadovoavauslov ℎ < 1.4405 log2(𝑛 + 2)− 0.327.

Dokaz. Neka je 𝑇ℎ AVL stablo visine ℎ ≥ 0 sa najmaim moguim brojemqvorova. Stablo 𝑇0 sadri samo koren, a stablo 𝑇1 koren i jednog sina,recimo desnog. Za ℎ ≥ 2 stablo 𝑇ℎ moe se formirati na sledei naqin:egovo podstablo mae visine ℎ − 2 takoe treba da bude AVL stablo saminimalnim brojem qvorova, dakle 𝑇ℎ−2; sliqno, egovo drugo podstablotreba da bude 𝑇ℎ−1. Stabla opisana ovakvom "diferencnom jednaqinom"zovu se Fibonaqijeva stabla. Nekoliko prvih Fibonaqijevih stabala,takvih da je u svakom unutraxem qvoru visina levog podstabla maa,prikazano je na slici 2.19. Oznaqimo sa 𝑛ℎ minimalni broj unutraxihqvorova AVL stabla visine ℎ, tj. broj unutraxih qvorova stabla 𝑇ℎ;𝑛0 = 0, 𝑛1 = 1, 𝑛2 = 2, 𝑛3 = 4, . . .. Po definiciji Fibonaqijevih stabalaje 𝑛ℎ = 𝑛ℎ−1 + 𝑛ℎ−2 + 1, odnosno 𝑛ℎ + 1 = (𝑛ℎ−1 + 1) + (𝑛ℎ−2 + 1), zaℎ ≥ 2. Vidimo da brojevi 𝑛ℎ + 1 zadovoavaju istu diferencnu jednaqinukao i Fibonaqijevi brojevi 𝐹ℎ (𝐹ℎ+2 = 𝐹ℎ+1 + 𝐹ℎ za ℎ ≥ 1; 𝐹1 = 𝐹2 = 1).Uzimajui u obzir i prve qlanove niza, indukcijom se neposredno pokazujeda vai 𝑛ℎ + 1 = 𝐹ℎ+2. Prema tome, za broj 𝑛 unutraxih qvorova AVLstabla visine ℎ vai nejednakost

𝑛 ≥ 𝐹ℎ+2 − 1.

Polazei od izraza za opxti qlan Fibonaqijevog niza (videti primer udelu o rexavau linearnih diferencnih jednaqina)

𝐹ℎ =1√5

(1 +√

5

2

)ℎ

− 1√5

(1−√

5

2

)ℎ

i veze1−√

5

2= − 1

1+√5

2

dobijamo

𝑛 ≥ 1√5

(𝛼ℎ+2 −

(− 1

𝛼

)ℎ+2)− 1 >

1√5𝛼ℎ+2 − 2,

gde je sa 𝛼 = (√

5+1)/2 oznaqen pozitivan koren karakteristiqne jednaqine𝑥2 − 𝑥 − 1 = 0 linearne diferencne jednaqine 𝐹𝑛 = 𝐹𝑛−1 + 𝐹𝑛−2. Ovanejednakost ekvivalentna je sa

ℎ <1

log2 𝛼log2(𝑛 + 2)−

(2− log2 5

2 log2 𝛼

),

qime je teorema dokazana, jer je 1/ log2 𝛼 ≃ 1.44042 i log2 5/(2 log2 𝛼) ≃0.3277.

Ostaje jox da vidimo kako se posle umetaa, odnosno brisaa elementaiz AVL stabla, moe intervenisati tako da rezultat i dae bude AVLstablo.

Page 50: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

2.7. AVL stabla 50

c c c cc c c c cc c c c

c𝑇0 𝑇1 𝑇2 𝑇3

Slika 2.19: Fibonaqijeva stabla 𝑇0, 𝑇1, 𝑇2 i 𝑇3.

Prilikom umetaa novog broja u AVL stablo postupa se najpre nanaqin uobiqajen za binarno stablo pretrage: pronalazi se mesto qvoru, pase u stablo dodaje novi qvor sa kuqem jednakim zadatom broju. Qvorovimana putu koji se tom prilikom prelaze odgovaraju razlike visina levogi desnog podstabla (faktori ravnotee) iz skupa 0,±1. Posebno jeinteresantan posledi qvor na tom putu koji ima faktor ravnoteerazliqit od nule, tzv. kritiqni qvor. Ispostava se da je prilikomumetaa broja u AVL stablo dovono uravnoteiti podstablo sa korenomu kritiqnom qvoru - u to emo se uveriti kada vidimo detae postupkauravnoteavaa.

Pretpostavimo da je faktor ravnotee u kritiqnom qvoru jednak 1.Novi qvor moe da zavrxi u:

∙ desnom podstablu u tom sluqaju podstablo kome je koren kritiqniqvor ostaje AVL

∙ levom podstablu u tom sluqaju stablo prestaje da bude AVL ipotrebno je intervenisati. Prema tome da li je novi qvor dodatlevom ili desnom podstablu levog podstabla, razlikujemo dva sluqaja,videti sliku 2.20.

U prvom sluqaju se na stablo primeuje rotacija: koren levogpodstabla𝐵 (videti sliku 2.21) podie se i postaje koren podstabla(kome je koren bio kritiqan qvor), a ostatak stabla preureujese tako da stablo i dae ostane BSP. Stablo 𝑇1 se "podie" zajedan nivo ostajui i dae levo podstablo qvora 𝐵; stablo 𝑇2

ostaje na istom nivou, ali umesto desnog podstabla 𝐵 postajelevo podstablo 𝐴; desno podstablo 𝐴 spuxta se za jedan nivo.Poxto je 𝐴 kritiqan qvor, faktor ravnotee qvora 𝐵 je 0, pastabla 𝑇1 i 𝑇2 imaju istu visinu. Stabla 𝑇3 i 𝑇4 ne morajuimati istu visinu, jer qvor 𝐶 nije na putu od kritiqnog qvorado mesta umetaa (slika 2.21).

Drugi sluqaj je komplikovaniji; tada se stablo moe uravnoteitidvostrukom rotacijom, videti sliku 2.22. Novi qvor podstablaumesto kritiqnog qvora postaje desni sin levog sina kritiqnogqvora.

Zapaamo da u oba sluqaja visina podstabla kome je koren kritiqniqvor posle uravnoteavaa ostaje nepromeena. Uravnoteavae pod-stabla kome je koren kritiqan qvor zbog toga ne utiqe na ostatak stabla.

Page 51: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

51 2. Strukture podataka

bb bb b bb𝐵

𝐴

𝐶

𝑇4𝑇3

𝑇2𝑇1

bb bb b bb𝐵

𝐴

𝐶

𝑇4𝑇3

𝑇2𝑇1

novi list novi list

0

1

2

ℎ+ 1

ℎ+ 2

Slika 2.20: Umetaa koja remete AVL svojstvo stabla.

bb bb b bb𝐵

𝐴

𝐶

𝑇4𝑇3

𝑇2𝑇1

novi list

0

1

2

ℎ+ 1

ℎ+ 2

?

? b𝑇1

novi list

b𝑇2

bb b𝑇4𝑇3

b b𝐵

𝐴

𝐶-

6

Slika 2.21: Uravnoteavae AVLstabla posle umetaa | rotacija.

ℎ+ 2

ℎ+ 1

3

2

1

0

b b bb

b b

𝑇1 𝑇2

b𝑇3

𝑇4

𝐵

𝐷

𝐴

𝐶

66

?

?

novi list

b

𝑇1

b𝑇2

b𝑇3

novi list

b b𝐵

𝐷

b b

𝑇4

𝐴

-𝐶

Slika 2.22: Uravnoteavae AVLstabla posle umetaa | dvostrukarotacija.

Page 52: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

2.8. Skupovne operacije 52

Uz svaki qvor stabla quva se egov faktor ravnotee, jednak razlicivisina egovog levog i desnog podstabla; za AVL stablo su te razlikeelementi skupa −1, 0, 1. Uravnoteavae postaje neophodno ako je faktornekog qvora±1, a novi qvor se umee na "pogrexnu" stranu. Posle uravnoteavaavisine iznad kritiqnog qvora ostaju nepromeene. Kompletan postupakumetaa sa uravnoteavaem dakle izgleda ovako: idui nanie prilikomumetaa pamti se posledi qvor sa faktorom razliqitim od nule; kadse doe do mesta umetaa, ustanovava se da li je umetae na "dobroj"ili "pogrexnoj" strani u odnosu na kritiqan qvor, a onda se jox jednomprolazi put unazad do kritiqnog qvora, popravaju se faktori ravnoteei izvrxavaju eventualne rotacije.

Brisae je komplikovanije, kao i kod obiqnog BSP. U opxtem sluqajuse uravnoteavae ne moe izvesti pomou samo jedne ili dve rotacije.Na primer, da bi se Fibonaqijevo stablo 𝐹ℎ sa 𝑛 qvorova uravnoteiloposle brisaa "loxe" izabranog qvora, potrebno je izvrxiti ℎ−2, odnosno𝑂(log 𝑛) rotacija (videti sliku 2.23 za ℎ = 4). U opxtem sluqaju je granicaza potreban broj rotacija 𝑂(log 𝑛), Na sreu, svaka rotacija zahteva kon-stantni broj koraka, pa je vreme izvrxavaa brisaa takoe ograniqenoodozgo sa 𝑂(log 𝑛). Na ovom mestu preskoqiemo detae.

bib b b

b bb b bb bb

1

2

3

4

5

6

7

8

9

10

11

?

6

6

b b bb bb b bb bb

2

3

4

5

6

7

8

9

10

11

1-

b bb bb

7

8

9

10

11

b b bbb b1 3

2 5

6

4

-

?

6

6

Slika 2.23: Uravnoteavae Fibonaqijevog stabla 𝑇4 posle brisaaqvora, pomou dve rotacije.

AVL stablo je efikasna struktura podataka. Qak i u najgorem sluqajuAVL stabla zahtevaju najvixe za 45% vixe uporeivaa od optimalnihstabala. Empirijska ispitivaa su pokazala da se proseqno traee sas-toji od oko log2 𝑛 + 0.25 poreea. Osnovni nedostatak AVL stabala jepotreba za dodatnim memorijskim prostorom za smextae faktora rav-notee, kao i qienica da su programi za rad sa AVL stablima dostakomplikovani. Postoje i druge varijante uravnoteenih stabala pretrage,na primer 2− 3 stabla, 𝐵-stabla i crveno-crna stabla.

2.8 Skupovne operacije

Konaqni skupovi su uobiqajena i qesto korixena struktura podataka.Stoga je potrebno osmisliti jednostavan i efikasan naqin za ihovopredstavae i za ihovu manipulaciju, odnosno za traee, umetaei brisae elementa skupa, kao i binarne operacije sa skupovima (unija,presek, razlika, simetriqna razlika). U nastavku teksta pretpostavase da su skupovi konaqni i da su vrednosti elemenata skupa iz skupanenegativnih celih brojeva.

Page 53: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

53 2. Strukture podataka

Skupove je mogue predstaviti na vixe razliqitih naqina. Razmotri-emo dva naqina implementacije skupa, pomou sortiranog niza i pomoubitskog niza (eng. bit array).

Neka su data dva skupa: skup 𝑆1 koji sadri 𝑚 elemenata i skup 𝑆2

koji sadri 𝑛 elemenata i neka je svaki od ih predstaven sortiranimnizom elemenata skupa. U tom sluqaju operacija ispitivaa prisustvaelementa u skupu od 𝑛 elemenata svodi se na binarnu pretragu, pa se ovaoperacija moe izvesti za vreme 𝑂(log 𝑛). Za umetae novog elementa uskup se takoe moe iskoristiti binarna pretraga za odreivae egovepozicije, ali kako je u najgorem sluqaju za dodavae najmaeg elementa uskup potrebno pomeriti za jedno mesto udesno sve elemente, to je operacijaumetaa sloenosti 𝑂(𝑛). Element se brixe iz skupa tako xto se prvobinarnom pretragom ispita egovo prisustvo u skupu, a zatim se svielementi desno od ega pomeraju za jedno mesto ulevo. Kako je za brisaenajmaeg elementa skupa potrebno pomeriti sve elemente skupa za jednomesto ulevo, to je i ova operacija sloenosti 𝑂(𝑛).

Sve qetiri binarne operacije nad skupovima 𝑆1 i 𝑆2 (unija, presek,razlika, simetriqna razlika) mogu se izvrxiti na sliqan naqin kao xtose vrxi objediavae dva sortirana niza u jedan. U trenutku kada serazmatraju elementi 𝑆1[𝑖] i 𝑆2[𝑗], prilikom izraqunavaa:

∙ unije 𝑆1 ∪ 𝑆2 ako je:

𝑆1[𝑖] = 𝑆2[𝑗], u izlazni niz se kopira samo jedan broj, a obaindeksa 𝑖, 𝑗 se poveavaju za jedan,

𝑆1[𝑖] = 𝑆2[𝑗], u izlazni niz se kopira samo mai broj i napredujese sa indeksom u tom nizu,

∙ preseka 𝑆1 ∩ 𝑆2 ako je:

𝑆1[𝑖] = 𝑆2[𝑗], u izlazni niz se kopira samo jedan broj, a obaindeksa 𝑖, 𝑗 se poveavaju za jedan,

𝑆1[𝑖] = 𝑆2[𝑗], napreduje se sa indeksom u nizu koji sadri maibroj,

∙ razlike 𝑆1 ∖ 𝑆2 ako je:

𝑆1[𝑖] < 𝑆2[𝑗], u izlazni niz se kopira broj 𝑆1[𝑖] i indeks prvogniza se poveava za jedan,

𝑆1[𝑖] = 𝑆2[𝑗], napreduje se sa indeksom u oba niza,

𝑆1[𝑖] > 𝑆2[𝑗], napreduje se sa indeksom u drugom nizu,

∙ simetriqne razlike 𝑆1∆𝑆2 = (𝑆1 ∖ 𝑆2) ∪ (𝑆2 ∖ 𝑆1) ako je:

𝑆1[𝑖] = 𝑆2[𝑗], u izlazni niz se kopira mai broj i indeks togniza se poveava za jedan,

𝑆1[𝑖] = 𝑆2[𝑗], napreduje se sa indeksom u oba niza,

Page 54: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

2.8. Skupovne operacije 54

Sve qetiri osnovne binarne operacije za rad sa skupovima: nalaeeunije, preseka, razlike i simetriqne razlike su vremenske sloenosti𝑂(𝑚 + 𝑛). Na primer, ako je 𝑆1 = 2, 3, 6 i 𝑆2 = 1, 2, 4, 6, 7 dobijaju seoqekivani rezultati 𝑆1∪𝑆2 = 1, 2, 3, 4, 6, 7, 𝑆1∩𝑆2 = 2, 6, 𝑆1∆𝑆2 = 3,(𝑆1∆𝑆2) = 1, 3, 4, 7.

Ukoliko je maksimalni broj elemenata skupa dovono mali, skup semoe implementirati bitskim nizom. Pravilo je da element 𝑛 pripadaskupu ako i samo ako 𝑛-ti bit u nizu ima vrednost 1. S obzirom nato da se u ovoj reprezentaciji koristi samo jedan bit po elementu, ovareprezentacija se moe posmatrati prostorno efikasnom. S druge strane,duina niza je proporcionalna sa moguim opsegom vrednosti elemenataniza, xto nije sluqaj kod prethodno opisane implementacije.

Umetae elementa u skup, odnosno brisae se sprovodi jednostavnomizmenom vrednosti odgovarajueg bita. Provera pripadnosti broja skupusvodi se na oqitavae odgovarajueg bita (videti sledei kod).

𝑆𝑎𝑑𝑟𝑧𝑖(𝐴, 𝑥)ulaz: 𝐴 - niz bitova kojim je predstaven skup,

𝑥 - element qije prisustvo ispitujemoizlaz: 𝑡𝑟𝑢𝑒 - ako element pripada, 𝑓𝑎𝑙𝑠𝑒 - ako element ne pripada skupu1 if 𝑥 ≥ 𝑑𝑢𝑧𝑖𝑛𝑎(𝐴) then2 return 𝑓𝑎𝑙𝑠𝑒3 elseif 𝐴[𝑥] = 1 then4 return 𝑡𝑟𝑢𝑒5 else6 return 𝑓𝑎𝑙𝑠𝑒

Operacije umetaa elementa, brisaa elementa i ispitivaa prisustvaelementa u skupu od 𝑛 elemenata su vremenske sloenosti 𝑂(1).

Pretpostavimo da su skupovi 𝑆1 i 𝑆2 zadati nizovima bitova 𝐵1 i𝐵2. Presek i unija skupova se mogu dobiti bitskom konjunkcijom 𝐵1&𝐵2,odnosno bitskom disjunkcijom𝐵1|𝐵2. Operacija simetriqne razlike skupovase moe dobiti operacijom ekskluzivne disjunkcije bitova u zapisu skupova𝐵1ˆ𝐵2, a obiqna razlika skupova se moe izraqunati bitskom konjunkcijomprvog niza bitova sa negacijom drugog niza bitova 𝐵1& ∼ 𝐵2. Na primer,ako su dati skupovi 𝑆1 = 2, 3, 5 i 𝑆2 = 0, 2, 4 i ako ih predstavamonizovima bitova duine 8, onda su odgovarajui nizovi 𝐵1 = 00110100 i𝐵2 = 10101000 i

∙ uniji 𝑆1 ∪ 𝑆2 = 0, 2, 3, 4, 5 odgovara niz 𝐵1|𝐵2 = 10111100,

∙ preseku 𝑆1 ∩ 𝑆2 = 2 odgovara niz 𝐵1&𝐵2 = 00100000,

∙ razlici 𝑆1 ∖ 𝑆2 = 3, 5 odgovara niz 𝐵1& ∼ 𝐵2 = 00010100,

∙ simetriqnoj razlici 𝑆1∆𝑆2 = 0, 3, 4, 5 odgovara niz 𝐵1 ˆ 𝐵2 =10011100.

Page 55: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

55 2. Strukture podataka

2.9 Hex tabele

Hex tabele spadaju meu najkorisnije strukture podataka. Koriste se zaumetae i traee elemenata, a u nekim varijantama i za brisae. Stoga,predstavaju efikasnu strukturu podataka za implementaciju reqnika.Iako traee elementa u hex tabeli moe da traje kao i traee elementau povezanoj listi (𝑂(𝑛) u najgorem sluqaju), u proseku se operacije sa hextabelom izvrxavaju priliqno efikasno. Pod nekim razumnim pretpostav-kama proseqno vreme izvrxavaa operacije kojom se trai element u hextabeli je 𝑂(1).

Osnovna ideja je jednostavna. Ako treba smestiti podatke sa kuqevimaiz opsega od 0 do 𝑛−1, a na raspolagau je niz duine 𝑛, onda se podatak sakuqem 𝑖 smexta na poziciju 𝑖, 𝑖 = 0, 1, 2, . . . , 𝑛− 1. Ovaj naqin smextaapodataka nazivamo direktno adresirae. Ako su kuqevi podataka izopsega od 0 do 2𝑛 − 1, jox uvek je zgodno podatke smestiti na isti naqinu niz duine 2𝑛 | time se postie najvea efikasnost, koja nadoknaujeutroxak memorijskog prostora. Moemo iskoristiti prednosti direktnogadresiraa sve dok moemo da priuxtimo da alociramo niz koji imajednu poziciju za svaku moguu vrednost kuqa. U ovoj situaciji trivijalnoje implementirati sve tri operacije reqnika pretpostavimo da koristimotabelu 𝑇 [0..𝑛−1], pri qemu svaka pozicija tabele odgovara jednoj vrednostikuqa. Ukoliko ovaj skup ne sadri element sa kuqem 𝑘, onda je 𝑇 [𝑘] =NULL .

Slika 2.24: Implementacija dinamiqkog skupa korixeem direktnogadresiraa. Svaki kuq iz skupa 𝑈 = 0, 1, 2, . . . , 9 odgovara indeksu utabeli.

𝐷𝑖𝑟𝑒𝑘𝑡𝑛𝑜𝐴𝑑𝑟𝑒𝑠𝑖𝑟𝑎𝑛𝑗𝑒 𝑆𝑒𝑎𝑟𝑐ℎ(𝑇, 𝑘)ulaz: 𝑇 - tabela, 𝑘 - vrednost kuqaizlaz: pokazivaq na podatak iz tabele koji ima vrednost kuqa 𝑘

ili NULL ako takav podatak ne postoji1 return 𝑇 [𝑘]

𝐷𝑖𝑟𝑒𝑘𝑡𝑛𝑜𝐴𝑑𝑟𝑒𝑠𝑖𝑟𝑎𝑛𝑗𝑒 𝐼𝑛𝑠𝑒𝑟𝑡(𝑇, 𝑥)ulaz: 𝑇 - tabela, 𝑥 - podatak

Page 56: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

2.9. Hex tabele 56

izlaz: izmeena tabela 𝑇1 𝑇 [𝑥.𝑘𝑙𝑗𝑢𝑐]← 𝑥

𝐷𝑖𝑟𝑒𝑘𝑡𝑛𝑜𝐴𝑑𝑟𝑒𝑠𝑖𝑟𝑎𝑛𝑗𝑒 𝐷𝑒𝑙𝑒𝑡𝑒(𝑇, 𝑥)ulaz: 𝑇 - tabela, 𝑥 - podatakizlaz: izmeena tabela 𝑇1 𝑇 [𝑥.𝑘𝑙𝑗𝑢𝑐]← NULL

Svaka od ovih operacija ima vreme izvrxavaa 𝑂(1).

Situacija se mea ako je opseg vrednosti kuqeva od 1 do 𝑀 tolikoveliki da se niz duine 𝑀 ne moe smestiti na raqunaru. Tada otpadavarijanta sa korixeem niza duine 𝑀 . Pretpostavimo, na primer,da treba smestiti podatke o 250 studenata, pri qemu se svaki od ihidentifikuje svojim matiqnim brojem sa 13 dekadnih cifara. Umestokompletnog matiqnog broja kao indeks u nizu mogu se koristiti samoegove tri poslede cifre: tada je za smextae podataka dovoan nizduine 1000. Metod ipak nije potpuno pouzdan: mogue je da neka dvastudenta imaju iste tri poslede cifre matiqnog broja; naqine rexavaaovog problema razmotriemo kasnije. Mogu se iskoristiti i qetiri po-slede cifre matiqnog broja, ili tri poslede cifre kombinovane saprvim slovom imena studenta, da bi se jox vixe smaila mogunost ovakvogdogaaja. S druge strane, korixee vixe cifara zahteva tabelu veedimenzije, sa relativno maim iskorixenim delom.

Pretpostavimo da je dato 𝑛 kuqeva iz skupa 𝑈 veliqine | 𝑈 |= 𝑀 ≫ 𝑛.Ideja je da kuqeve smestimo u tabelu veliqine 𝑚, tako da 𝑚 nije mnogovee od 𝑛. Potrebno je dakle definisati funkciju:

ℎ : 0, 1, . . . ,𝑀 − 1 → 0, 1, . . . ,𝑚− 1

tzv. hex funkciju koja za svaki podatak odreuje egovu poziciju naosnovu vrednosti odgovarajueg kuqa (kaemo i da je ℎ(𝑘) hex vrednostkuqa 𝑘). U gorem primeru, kao vrednost hex funkcije od kuqa jednakogmatiqnom broju, uzete su egove tri poslede cifre. Ako se vrednosti ovefunkcije lako izraqunavaju, bie lako pristupiti podatku. Bez obzira naveliqinu𝑚 tabele, dexavae se da razliqitim kuqevima odgovaraju istelokacije. Ovakav nepoean dogaaj zove se kolizija.

Potrebno je dakle rexiti dva problema:

∙ nalaee hex funkcija koje minimiziraju verovatnou pojave ko-lizija, i

∙ postupak za obradu kolizija kad do ih ipak doe.

Iako je veliqina 𝑀 skupa 𝑈 mnogo vea od veliqine tabele 𝑚, stvarniskup kuqeva koje treba obraditi obiqno nije veliki. Dobra hex funkcijapreslikava kuqeve ravnomerno po tabeli | da bi se minimizirala mo-gunost kolizija prouzrokovanih nagomilavaem kuqeva u nekim obla-stima tabele. U proseku se u svaku lokaciju tabele ovako izabranom hex

Page 57: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

57 2. Strukture podataka

Slika 2.25: Korixee hex funkcije ℎ za preslikavae kuqeva upozicije tabele. S obzirom na to da se kuqevi 𝑘2 i 𝑘5 preslikavaju uistu poziciju, dolazi do kolizije.

funkcijom preslikava veliki broj (iz skupa svih moguih) kuqeva, ih𝑀/𝑚. Hex funkcija treba da transformixe skup kuqeva ravnomernou skup sluqajnih lokacija iz skupa 0, 1, . . . ,𝑚 − 1. Uniformnost isluqajnost su bitne osobine hex funkcije. Tako je, na primer, pogrexnoza hex funkciju od 13-cifrenog matiqnog broja uzeti broj koji qine peta,xesta i sedma cifra matiqnog broja: te tri cifre su tri najnie cifregodine roea, pa za bilo koju veliqinu grupe studenata uzimaju mae oddesetak razliqitih vrednosti od 1000 moguih.

Ako zanemarimo kolizije, sve tri osnovne operacije sa hex tabelomizvrxavaju se za vreme O(1).

2.9.1 Hex funkcije

Ako je veliqina tabele 𝑚 prost broj, a kuqevi su celi brojevi, ondaje jednostavna i dobra hex funkcija data izrazom

ℎ(𝑥) = 𝑥mod𝑚.

S obzirom na to da zahteva samo jedno deee, vrednosti ovakve hexfunkcije se lako izraqunavaju.

Ako pak 𝑚 nije prost broj, na primer 𝑚 = 2𝑘, onda bi se ovakvomhex funkcijom izdvajalo najniih 𝑘 bitova kuqa (xto nije dobro osimako pouzdano znamo da su ostaci kuqeva pri deeu sa 𝑚 ravnomernoraspodeeni). Ako su svi kuqevi parni brojevi, onda se pola hex tabele(sa neparnim indeksima) ne koristi. Mogue rexee problema je da sekoristi hex funkcija:

ℎ(𝑥) = (𝑥mod 𝑝) mod𝑚,

gde je 𝑝 prost broj takav da je 𝑚≪ 𝑝≪𝑀 .Neugodna je situacija kad su svi kuqevi oblika 𝑟 + 𝑘𝑝, za neki celi

broj 𝑟, jer e svi kuqevi imati istu vrednost hex funkcije 𝑟 mod 𝑚.

Page 58: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

2.9. Hex tabele 58

Tada ima smisla uvesti jox jedan nivo randomizacije ("razbacivaa"),time xto bi se sama hex funkcija birala na sluqajan naqin. Na primer,broj 𝑝 mogao bi se birati sa unapred pripremene liste prostih brojeva.Druga mogunost je da se koriste hex funkcije oblika ℎ(𝑥) = ((𝑎𝑥 +𝑏) mod 𝑝) mod𝑚, gde su 𝑎 = 0 i 𝑏 sluqajno izabrani brojevi mai od𝑝. Vrednosti ove funkcije se izraqunavaju na sloeniji naqin, ali jeena prednost da je u proseku dobra za sve ulaze. Razume se da se zasve pristupe istoj tabeli mora koristiti ista hex funkcija. U mnogosluqajeva potrebno je vixe nezavisnih hex tabela, ili se tabele qestokreiraju i brixu: tada se za svaku novu tabelu moe koristiti druga hexfunkcija.

2.9.2 Obrada kolizija

Najjednostaviji naqin za obradu kolizija je tzv. odvojeno nizae.U ovom pristupu svaki elemenat hex tabele je pokazivaq na povezanulistu, koja sadri sve kuqeve smextene na tu lokaciju u tabeli. Pritraeu zadatog kuqa najpre se izraqunava vrednost hex funkcije, azatim se adresirana povezana lista linearno pretrauje. Na prvi pogledupisivae se pojednostavuje umetaem kuqa na poqetak liste. Meutim,lista se ipak mora pregledati do kraja da bi se izbeglo upisivae dupli-kata (elemenata sa kuqem jednakim nekom ve upisanom). Ovakav postupakje neefikasan ako su povezane liste dugaqke, do qega dolazi ako je tabelamala u odnosu na broj kuqeva, ili je izabrana loxa hex funkcija. Poredtoga, potexkoe stvara i dinamiqka alokacija memorije, a potrebno jerezervisati i prostor za pokazivaqe. S druge strane, odvojeno nizae radibez grexaka i ako je izabrana pogrexna veliqina tabele, za razliku odostalih (priblinih) metoda.

Slika 2.26: Razrexavae kolizije korixeem odvojenog nizaa. Svakapozicija 𝑇 [𝑗] tabele sadri pokazivaq na povezanu listu svih elemenataqija je vrednost kuqa 𝑗. Povezana lista moe biti jednostuko ilidvostruko povezana: ovde je prikazana dvostruko povezana lista jeromoguava bre brisae.

Xto se brisaa tiqe, element pronaen po vrednosti kuqa moe se

Page 59: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

59 2. Strukture podataka

obrisati za vreme 𝑂(1).Xto se pretrage tiqe, ona zavisi od faktora popuenosti hex

tabele. Naime, ukoliko imamo hex tabelu 𝑇 veliqine𝑚 u kojoj je smexteno𝑛 kuqeva, faktor popuenosti je 𝛼 = 𝑛/𝑚. U najgorem sluqaju svih 𝑛kuqeva se preslikavaju u istu lokaciju tabele i kreiraju listu od 𝑛elemenata, te je vreme izvrxavaa pretrage 𝑂(𝑛) (xto obuhvata i vremepotrebno za izraqunavae vrednosti hex funkcije). Ponaxae u proseqnomsluqaju zavisi od osobina hex funkcije. Ako pretpostavimo da je jednakoverovatno da se svaki od kuqeva preslika u neku poziciju tabele, tada jeoqekivana duina svake liste 𝑛/𝑚 = 𝛼. Uz pretpostavku da se vrednosthex funkcije izraqunava u vremenu 𝑂(1), moe se dokazati da je proseqnovreme izvrxavaa pretrage 𝑂(1 + 𝛼). Pod razumnom pretpostavkom daje veliqina hex tabele proporcionalna broju elemenata u tabeli, vremeizvrxavaa je 𝑂(1).

𝑂𝑑𝑣𝑜𝑗𝑒𝑛𝑜𝑁𝑖𝑧𝑎𝑛𝑗𝑒 𝐼𝑛𝑠𝑒𝑟𝑡(𝑇, 𝑥)ulaz: 𝑇 - tabela, 𝑥 - pokazivaq na podatakizlaz: izmeena tabela 𝑇1 if 𝑥 se ne nalazi u listi 𝑇 [ℎ(𝑥.𝑘𝑙𝑗𝑢𝑐)]2 umetni 𝑥 na poqetak liste 𝑇 [ℎ(𝑥.𝑘𝑙𝑗𝑢𝑐)]

𝑂𝑑𝑣𝑜𝑗𝑒𝑛𝑜𝑁𝑖𝑧𝑎𝑛𝑗𝑒 𝑆𝑒𝑎𝑟𝑐ℎ(𝑇, 𝑘)ulaz: 𝑇 - tabela, 𝑘 - vrednost kuqa koja se traiizlaz: podatak iz tabele koji ima vrednost kuqa 𝑘

ili NULL ako takav podatak ne postoji1 trai element sa kuqem 𝑘 u listi 𝑇 [ℎ(𝑘)]

𝑂𝑑𝑣𝑜𝑗𝑒𝑛𝑜𝑁𝑖𝑧𝑎𝑛𝑗𝑒 𝐷𝑒𝑙𝑒𝑡𝑒(𝑇, 𝑥)ulaz: 𝑇 - tabela, 𝑥 - pokazivaq na podatak koji treba obrisatiizlaz: izmeena tabela 𝑇1 obrixi 𝑥 iz liste 𝑇 [ℎ(𝑥.𝑘𝑙𝑗𝑢𝑐)]

Drugi naqin za obradu kolizija predstava otvoreno adresirae. Uovom pristupu, svi elementi se smextaju u niz hex tabelu. Stoga svakielement hex tabele sadri ili kuq ili vrednost NULL . Prilikompotrage za kuqem, sistematski se pretrauju pozicije tabele dok se nenae traeni kuq ili se ustanovi da on nije tu. Nema listi, niti ele-menata koji se smextaju van tabele. Da bi se element smestio u tabelu,sukcesivno se ispituju pozicije hex tabele dok se ne pronae prazna po-zicija na koju se smexta kuq.

Najjednostavniji metod otvorenog adresiraa je linearno popua-vae. Ako je lokacija sa adresom ℎ(𝑥) ve zauzeta, onda se novi elemenatsa kuqem 𝑥 zapisuje na susednu lokaciju (ℎ(𝑥) + 1) mod𝑚 (lokacija kojasledi iza 𝑚 − 1 je 0). Prilikom traea zadatog kuqa 𝑥 neophodno jelinearno pretraivae poqevxi od lokacije ℎ(𝑥) do prve nepopuenelokacije. Ovo rexee je efikasno ako je tabela relativno retko popuena.U protivnom dolazie do mnogo sekundarnih kolizija, odnosno kolizija

Page 60: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

2.9. Hex tabele 60

prouzrokovanih kuqevima sa razliqitim vrednostima hex funkcije. Naprimer, neka je lokacija 𝑖 zauzeta, a lokacija 𝑖 + 1 slobodna. Novi kuqkoji se preslikava u 𝑖 prouzrokuje koliziju, i smexta se na lokaciju 𝑖+ 1.Do ovog trenutka problemi su rexeni efikasno, uz minimalni napor.Meutim, ako se novi kuq preslika u 𝑖 + 1, imamo sluqaj sekundarnekolizije, a lokacija (𝑖+2) mod𝑚 postaje zauzeta (ako ve nije bila). Svakinovi kuq preslikan u 𝑖, 𝑖 + 1 ili (𝑖 + 2) mod𝑚, ne samo da izaziva novukoliziju, nego i poveava veliqinu ovog popuenog odseqka, xto kasnijeizaziva jox vixe sekundarnih kolizija. Ovo je tzv. efekat grupisaa.Kad je tabela skoro puna, broj sekundarnih kolizija pri linearnom popu-avau je vrlo veliki, pa se pretraga degradira u linearnu.

Pri linearnom popuavau se brisaa ne mogu izvesti korektno. Akose pri upisivau kuqa 𝑦 prilikom traea praznog mesta preskoqi nekalokacija 𝑖 = ℎ(𝑥), pa zatim kuq 𝑥 bude izbrisan, onda se posle togakuq 𝑦 vixe ne moe pronai u tabeli: traee se zavrxava na praznojlokaciji 𝑖. Dakle, ako su potrebna i brisaa, mora se koristiti neki odmetoda za obradu kolizija koji koristi pokazivaqe ili se mora koristititzv. mogunost \leog brisaa": tada se prilikom brisaa elementa iztabele umesto vrednosti NULL upisuje neka druga rezervisana vrednostkoja oznaqava da se na toj poziciji nalazio element, ali je obrisan.

𝐿𝑖𝑛𝑒𝑎𝑟𝑛𝑜𝑃𝑜𝑝𝑢𝑛𝑗𝑎𝑣𝑎𝑛𝑗𝑒 𝐼𝑛𝑠𝑒𝑟𝑡(𝑇, 𝑘)ulaz: 𝑇 - tabela, 𝑘 - vrednost kuqaizlaz: indeks pozicije na kojoj je zapisan kuq 𝑘 i izmeena tabela 𝑇1 𝑖← 02 repeat3 𝑗 ← (ℎ(𝑘) + 𝑖) mod 𝑚4 if 𝑇 [𝑗] = NULL5 𝑇 [𝑗]← 𝑘6 return 𝑗7 else 𝑖← 𝑖 + 18 until 𝑖 = 𝑚9 error \prekoraqee hex tabele"

𝐿𝑖𝑛𝑒𝑎𝑟𝑛𝑜𝑃𝑜𝑝𝑢𝑛𝑗𝑎𝑣𝑎𝑛𝑗𝑒 𝑆𝑒𝑎𝑟𝑐ℎ(𝑇, 𝑥)ulaz: 𝑇 - tabela, 𝑥 - podatakizlaz: indeks kuqa 𝑘 u tabeli 𝑇

ili NULL ako 𝑘 nije u tabeli1 𝑖← 02 repeat3 𝑗 ← (ℎ(𝑘) + 𝑖) mod 𝑚4 if 𝑇 [𝑗] = 𝑘6 return 𝑗7 𝑖← 𝑖 + 18 until 𝑇 [𝑗] = NULL or 𝑖 = 𝑚9 return NULL

Efekat grupisaa moe se ublaiti dvostrukim hexiraem. Kaddoe do kolizije pri upisu elementa 𝑥 na poziciju 𝑖, ℎ(𝑥) = 𝑖, izraqunavase vrednost druge hex funkcije ℎ2(𝑥), pa se 𝑥 smexta na prvu slobodnu

Page 61: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

61 2. Strukture podataka

meu lokacijama (𝑖+ℎ2(𝑥)) mod𝑚, (𝑖+2ℎ2(𝑥)) mod𝑚. . ., umesto (𝑖+1) mod𝑚,(𝑖 + 2) mod𝑚. . . Ako se drugi kuq 𝑦 preslikava u npr. (𝑖 + ℎ2(𝑥)) mod𝑚,onda se pokuxava sa lokacijom (𝑖+ℎ2(𝑥)+ℎ2(𝑦)) mod𝑚 umesto sa (𝑖+ℎ2(𝑥)+ℎ2(𝑥)) mod𝑚. Na ovaj naqin, za razliku od linearnog popuavaa, koraksa kojim traimo novu poziciju nije fiksan, ve zavisi od samog kuqa.Ako je vrednost ℎ2(𝑦) nezavisna od ℎ2(𝑥) onda je grupisae praktiqnoeliminisano. Prilikom izbora druge hex funkcije mora se voditi raqunao tome da ostaci (𝑖+𝑗ℎ2(𝑥)) mod𝑚 za 𝑗 = 0, 1, . . . ,𝑚−1 pokrivaju kompletnutabelu da bi bilo koji kuq mogao da bude upisan na proizvono mesto utabeli, a to vai ako su vrednosti ℎ2(𝑥) uzajamno proste sa 𝑚.

Slika 2.27: Primer umetaa prilikom dvostrukog hexiraa. Data jetabele veliqine 13 pri qemu je ℎ1(𝑘) = 𝑘 mod 13 i ℎ2(𝑘) = 1 + (𝑘 mod 11).S obzirom na to da je 14 = 1( mod 13) i 14 = 3( mod 11), smextamo kuq 14na poziciju 9, nakon ispitivaa pozicija 1 i 5 koje su zauzete.

𝐷𝑣𝑜𝑠𝑡𝑟𝑢𝑘𝑜𝐻𝑒𝑠ℎ𝑖𝑟𝑎𝑛𝑗𝑒 𝐼𝑛𝑠𝑒𝑟𝑡(𝑇, 𝑘)ulaz: 𝑇 - tabela, 𝑘 - vrednost kuqaizlaz: indeks pozicije na kojoj je zapisan kuq 𝑘 i izmeena tabela 𝑇1 𝑖← 02 repeat3 𝑗 ← (ℎ1(𝑘) + 𝑖 · ℎ2(𝑘)) mod 𝑚4 if 𝑇 [𝑗] = NULL5 𝑇 [𝑗]← 𝑘6 return 𝑗7 else 𝑖← 𝑖 + 18 until 𝑖 = 𝑚9 error \prekoraqee hex tabele"

𝐷𝑣𝑜𝑠𝑡𝑟𝑢𝑘𝑜𝐻𝑒𝑠ℎ𝑖𝑟𝑎𝑛𝑗𝑒 𝑆𝑒𝑎𝑟𝑐ℎ(𝑇, 𝑥)ulaz: 𝑇 - tabela, 𝑥 - podatakizlaz: indeks pozicije u tabeli 𝑇 na kojoj je pronaen kuq 𝑘

ili NULL ako 𝑘 nije u tabeli

Page 62: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

2.10. Grafovi 62

1 𝑖← 02 repeat3 𝑗 ← (ℎ1(𝑘) + 𝑖 · ℎ2(𝑘)) mod 𝑚4 if 𝑇 [𝑗] = 𝑘6 return 𝑗7 𝑖← 𝑖 + 18 until 𝑇 [𝑗] = NULL or 𝑖 = 𝑚9 return NULL

2.10 Grafovi

Algoritmi za rad sa grafovima bie detano razmatrani u nastavkuteksta. Na ovom mestu bie prikazane samo strukture podataka pogodne zapredstavae grafova. Graf 𝐺 = (𝑉,𝐸) sastoji se od skupa 𝑉 qvorovai skupa 𝐸 grana. Grana odgovara paru qvorova. Drugim reqima, granepredstavaju relaciju izmeu qvorova. Na primer, graf moe da pred-stava skup udi, a da grana povezuje dva qoveka ako se oni poznaju.Graf je usmeren odnosno neusmeren ako su mu grane ureeni, odnosnoneureeni parovi. Ako se usmereni graf predstava crteom, granama sedodaju strelice koje vode ka drugom qvoru iz ureenog para. Jednostavanprimer grafa je stablo. Ako na stablu treba definisati hijerarhiju, ondase sve grane mogu orijentisati "od korena" (pri qemu je koren posebnoizdvojen qvor stabla). Takva stabla su korenska stabla. Mogu se takoerazmatrati neusmerena stabla za koja se ne vezuje bilo kakva hijerarhija.

Uobiqajena su dva naqina predstavaa grafova. Prvi je matricapovezanosti grafa. Neka je |𝑉 | = 𝑛 i 𝑉 = 𝑣1, 𝑣2, . . . , 𝑣𝑛. Matrica pove-zanosti grafa 𝐺 je kvadratna matrica 𝐴 = (𝑎𝑖𝑗) reda 𝑛, sa elementima 𝑎𝑖𝑗koji su jednaki 1 ako i samo ako (𝑣𝑖, 𝑣𝑗) ∈ 𝐸; ostali elementi matrice 𝐴 sunule. Ako je graf neusmeren, matrica 𝐴 je simetriqna. Vrsta 𝑖 ove matriceje dakle niz duine 𝑛 qija je 𝑗-ta koordinata jednaka 1 ako iz qvora 𝑣𝑖 vodigrana u qvor 𝑣𝑗 , odnosno 0 u protivnom. Nedostatak matrice povezanostije to xto ona uvek zauzima prostor veliqine 𝑛2, nezavisno od toga kolikograna ima graf. Svakom qvoru grafa pridruuje se niz duine 𝑛. Akoje broj grana u grafu mali, veina elemenata matrice povezanosti bienule.

Umesto da se i sve nepostojee grane eksplicitno predstavaju u mat-rici povezanosti, mogu se formirati povezane liste od jedinica iz 𝑖-tevrste, 𝑖 = 1, 2, . . . , 𝑛. Ovaj drugi naqin predstavaa grafa zove se listapovezanosti. Svakom qvoru pridruuje se povezana lista, koja sadrisve grane susedne qvoru (odnosno grane ka susednim qvorovima). Listamoe biti ureena prema rednim brojevima qvorova na krajevima enihgrana. Graf je predstaven nizom lista. Svaki elemenat niza sadriime (indeks) qvora i pokazivaq na egovu listu qvorova. Ako je grafstatiqki, odnosno nisu dozvoena umetaa i brisaa, onda se liste mogupredstaviti nizovima na sledei naqin. Koristi se niz duine |𝑉 |+ |𝐸|.Prvih |𝑉 | qlanova niza su pridrueni qvorovima. Komponenta niza pri-druena qvoru 𝑣𝑖 sadri indeks poqetka spiska qvorova susednih qvoru𝑣𝑖, 𝑖 = 1, 2, . . . , 𝑛. Na slici 2.28 prikazana su na jednom primeru oba naqinapredstavaa grafa. Sa matricama povezanosti je jednostavnije raditi.

Page 63: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

63 2. Strukture podataka

S druge strane, liste povezanosti su efikasnije za grafove sa malimbrojem grana. U praksi se qesto radi sa grafovima koji imaju znatno maegrana od maksimalnog mogueg broja (𝑛(𝑛−1)/2 neusmerenih, odnosno 𝑛(𝑛−1) usmerenih grana), i tada je obiqno boe koristiti liste povezanosti.

6

1

7 8 12 13 4 1 1 2 4 5 5 2

2 3 4 5 6 7 8 9 10 11 12 13(b)

0 1 0 0 0

0

1

1

0

0

1

0

0

0

0

0

0

0

1

0

1

1

1

0

0

1 2 3 4 5

(a)

1

2

3

4

5

b

b

1

4

b

b

2

5

b? -

6

I

R

3

Slika 2.28: Predstavae grafa matricom povezanosti (a), odnosnolistom povezanosti (b).

2.11 Zadaci za vebu

1. Dopuniti kodove algoritama Enqueue i Dequeue tako da otkrivajugrexke prekoraqea, odnosno potkoraqea.

2. Napisati kodove algoritama za izvrxavae qetiri operacije sa dvo-strukim redom (redom sa operacijama umetaa/izbacivaa elemenatasa leve/desne strane).

3. Kako se moe napraviti stek od dva reda? Kako se moe napravitired od dva steka?

Neka su data dva reda: 𝑄1 i 𝑄2 i neka je uvek jedan od ih aktivan,npr. na poqetku neka to bude red 𝑄1. Operacija Push ubacuje elementu aktivni red (to se radi korixeem operacija za rad sa redom, tj.element se ubacuje na kraj reda 𝑄1). Operacija Pop se implementirana sledei naqin: izbacuju se svi osim jednog elementa iz aktivnogreda i ubacuju u neaktivni. Uloge redova zatim treba zameniti, takoda aktivni red postane neaktivan, a neaktivan aktivan, a posledielement u sada neaktivnom redu se vraa kao rezultat operacije Pop.Ovako implementirana operacija Push se izvrxava u vremenu 𝑂(1),a operacija Pop u vremenu 𝑂(𝑛), gde je 𝑛 trenutni broj elemenata nasteku.

Neka su data dva steka: 𝑆1 i 𝑆2. Operacija Enqueue umee element ustek 𝑆2. Operacija Dequeue izbacuje element iz steka 𝑆1. Ukoliko jestek 𝑆1 prazan, jedan po jedan element steka 𝑆2 se skida sa steka 𝑆2 iumee u stek 𝑆1. Na ovaj naqin se oni pojavuju u steku 𝑆1 u obrnutomredosledu u odnosu na stek 𝑆2. Operacija Enqueue se izvrxava ukonstantnom vremenu (𝑂(1)). Operacija Dequeue se izvrxava u vremenu

Page 64: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

2.11. Zadaci za vebu 64

𝑂(𝑛), ali to se dexava samo kada je stek 𝑆1 prazan. Proseqno vremeizvrxavaa ove procedure je 𝑂(1), jer se svaki element premextakonstantan broj puta.

4. Kako se mogu implementirati dva steka korixeem jednog niza?Implementirati osnovne operacije za rad sa ovim stekovima.

5. Kako se moe implementirati stek korixeem reda sa prioritetom?

6. Napisati kodove algoritama za operacije sa stekom realizovanimpomou jednostruko povezane liste. Vreme izvrxavaa operacijaPush i Pop treba da bude 𝑂(1).

7. Napisati kodove algoritama za operacije sa redom realizovanimpomou jednostruko povezane liste. Vreme izvrxavaa operacija En-queue i Dequeue treba da bude 𝑂(1).

8. Kako se moe izvrxiti upis u jednostruko povezanu listu za vreme𝑂(1)? Brisae?

9. Napisati kodove algoritama za operacije Insert, Delete, Search sajednostruko povezanom cirkularnom listom. Koliko je vreme izvr-xavaa tih operacija?

10. Kako se moe obrnuti redosled elemenata u jednostruko povezanojlisti duine 𝑛 za vreme 𝑂(𝑛), tako da koristi dopunski memorijskiprostor veliqine 𝑂(1)?

11. Dati su pokazivaqi na dve jednostruko povezane liste koje na nekommestu u imaju zajedniqki element, posle koga su i svi ostali elementizajedniqki (videti sliku 11). Konstruisati algoritam linearne vre-menske sloenosti kojim se odreuje adresa qvora u kome se ove dveliste susreu.

12. Struktura podataka treba da omogui umetae elementa, brisae itraee maksimalnog elementa. Da bismo implementirali operacijuza traee maksimuma u konstantnom vremenu, zaxto ne quvamo samomaksimalnu vrednost koja je do tada umetnuta u strukturu podatakai ne vratimo u?

13. Dat je niz u kome se redom na pozicijama 1 do 11 nalaze vrednosti:15, 10, 12, 9, 5, 8, 2, 4, 7, 3, 1.

Page 65: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

65 2. Strukture podataka

∙ Proveriti da li dati niz predstava ispravan implicitnopredstaveni hip (ako je potrebno izvrxiti potrebne popravke).

∙ Dodati u hip element 14

∙ Nakon toga izdvojiti najvei element hipa.

14. Gde se u hipu moe nai najmai element, pod pretpostavkom da susvi elementi hipa razliqiti?

15. Pokazati da u hipu sa 𝑛 elemenata ima najvixe ⌈𝑛/2ℎ+1⌉ qvorovavisine ℎ.

16. Konstruisati algoritam za formirae hipa koji sadri sve elemen-te dva hipa veliqine 𝑛 i 𝑚. Hipovi su predstaveni eksplicitno(svaki qvor ima pokazivaqe na dva svoja sina). Vremenska sloenostalgoritma u najgorem sluqaju treba da bude 𝑂(log(𝑚 + 𝑛)).

17. Osmisliti strukturu podataka koja podrava umetae elementa uvremenu 𝑂(log 𝑛), nalaee medijane u konstantnom vremenu i izba-civae medijane iz strukture podataka u vremenu 𝑂(log 𝑛).

18. Koliko najmae qvorova moe da ima binarno stablo implicitnopredstaveno nizom duine 16?

19. Za skup kuqeva 1, 4, 5, 10, 16, 17, 21, nacrtati binarno stablopretrage visine 2, 3, 4, 5, odnosno 6.

20. Pretpostavimo da imamo brojeve izmeu 1 i 1000 u binarnom stablupretrage i da u stablu traimo broj 363. Koji od narednih nizovane bi mogao da bude niz ispitivanih kuqeva qvorova:

a) 2, 252, 401, 398, 330, 344, 397, 363.

b) 924, 220, 911, 244, 898, 258, 362, 363.

c) 925, 202, 911, 240, 912, 245, 363.

d) 2, 399, 387, 219, 266, 382, 381, 278, 363.

e) 935, 278, 347, 621, 299, 392, 358, 363.

21. Neka se put pri traeu kuqa 𝑘 zavrxava u listu. Razmatramo triskupa: 𝐴 - kuqevi levo od puta, 𝐵 - kuqevi na putu i 𝐶 - kuqevidesno od puta. Da li za proizvona tri kuqa 𝑎 ∈ 𝐴, 𝑏 ∈ 𝐵, 𝑐 ∈ 𝐶vai 𝑎 < 𝑏 < 𝑐? Ako ne, pronai kontraprimer sa najmaim moguimbrojem qvorova.

22. Moemo sortirati dati skup od 𝑛 brojeva tako xto prvo izgradimobinarno stablo pretrage koje sadri ove brojeve, a zatim izlistamobrojeve u rastuem poretku. Koje je najboe, a koje najgore vremeizvrxavaa ovog algoritma za sortirae?

23. Transformisati jednostavnu rekurzivnu proceduru traea brojau binarnom stablu pretrage u nerekurzivnu proceduru.

24. Konstruisati nerekurzivni algoritam koji, korixeem steka kaopomone strukture, xtampa kuqeve svih qvorova binarnog stablapretrage u rastuem redosledu.

Page 66: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

2.11. Zadaci za vebu 66

25. Prikazati promene kroz koje prolazi AVL stablo, na poqetku prazno,posle umetaa redom elemenata 7,4,12,6,5,18,20,10,11.

26. Da li vai da je u AVL stablu razlika u duini izmeu najkraegi najdueg puta od korena do lista najvixe 1?

27. Pretpostavimo da su elementi skupa𝐷 smexteni u AVL stablo. Kakou vremenu 𝑂(log 𝑛) pronai broj elemenata skupa 𝐷 za qije vrednostikuqeva vai da je 𝑘1 ≤ 𝑘 ≤ 𝑘2, gde su 𝑘1 i 𝑘2 dve unapred fiksiranevrednosti?

28. Za data dva AVL stabla 𝑇1 i 𝑇2 za koja vai da je najvei kuqu stablu 𝑇1 mai od najmaeg kuqa u stablu 𝑇2, konstruisati al-goritam za spajae ova dva AVL stabla u jedno, koji je vremenskesloenosti 𝑂(ℎ), gde je ℎ vea od visina dva AVL stabla.

29. Pretpostavimo da je dinamiqki skup 𝑆 predstaven tabelom 𝑇 duine𝑚 korixeem direktnog adresiraa. Opisati proceduru kojom sepronalazi maksimalni element skupa 𝑆. Koliko je vreme izvrxavaapredloene procedure u najgorem sluqaju?

30. Pretpostavimo da koristimo hex funkciju ℎ za smextae 𝑛 raz-liqitih kuqeva u niz 𝑇 duine 𝑚. Pod pretpostavkom uniformneraspodele verovatnoe kuqeva, koji je oqekivani broj kolizija? Pre-ciznije, koja je oqekivana kardinalnost skupa 𝑘.𝑙 : 𝑘 = 𝑙 and ℎ(𝑘) =ℎ(𝑙)?

31. Demonstrirati xta se dexava prilikom umetaa kuqeva 5, 28, 19,15, 20, 33, 12, 17, 10 u hex tabelu u kojoj se kolizija razrexavaulanqavaem. Neka je hex tabela veliqine 9, a neka je odgovarajuahex funkcija ℎ(𝑘) = 𝑘 mod 9.

32. Xta bi se desilo ukoliko bismo izmenili xemu ulanqavaa tako dase svaka od lista quva u sortiranom redosledu? Kako bi to uticalona vreme izvrxavaa uspexne pretrage, neuspexne pretrage, umetaai brisaa?

33. Predloiti kako alocirati i dealocirati prostor za elemente hextabele povezivaem svih neiskorixenih pozicija u listu praznihpozicija. Pretpostaviti da jedna pozicija moe da quva fleg i ilijedan element plus pokazivaq ili dva pokazivaqa. Sve operacije req-nika i operacije nad listom praznih pozicija treba da se izvrxavajuu konstantnom vremenu. Da li lista praznih pozicija treba da budedvostruko povezana ili je dovono da bude jednostruko povezana?

34. Razmotrimo umetae kuqeva 10, 22, 31, 4, 15, 28, 17, 88, 59 u hextabelu duine 𝑚 = 11 korixeem otvorenog adresiraa i pomonehex funkcije ℎ′(𝑘) = 𝑘. Prikazati rezultat umetaa datih kuqevakorixeem linearnog popuavaa i dvostrukog hexiraa korix-eem hex funkcija: ℎ1(𝑘) = 𝑘, ℎ2(𝑘) = 1 + (𝑘 mod (𝑚 + 1)).

35. Konstruisati algoritme za utvrivae da li je skup 𝐴 podskupskupa 𝐵 korixeem implementacije skupa (a) pomou ureenihnizova (b) pomou bitskih nizova.

Page 67: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

67 2. Strukture podataka

36. Implementirati postupak izdvajaa svih prostih brojeva maihili jednakih od zadatog broja 𝑛 Eratostenovim sitom korixeembitskog niza.

Page 68: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr
Page 69: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

Glava 3

Sortirae

Sortirae je jedan od najxire prouqavanih problema u raqunarstvu. Sor-tirae je osnova za mnoge algoritme i troxi veliki deo raqunarskogvremena u mnogim tipiqnim aplikacijama. Postoje mnoge verzije problemasortiraa, kao i desetine algoritama za sortirae.

Osnovni zadatak koji se rexava je sledei: datih 𝑛 brojeva 𝑥1, 𝑥2, . . . , 𝑥𝑛

treba urediti u neopadajui niz. Drugim reqima, treba pronai niz raz-liqitih indeksa 1 ≤ 𝑖1, 𝑖2, . . . , 𝑖𝑛 ≤ 𝑛 takvih da je 𝑥𝑖1 ≤ 𝑥𝑖2 ≤ · · · ≤ 𝑥𝑖𝑛 .

Zbog jednostavnosti, ako se ne naglasi drugaqije, pretpostavamo dasu brojevi 𝑥𝑖 razliqiti (iako, naravno, algoritme konstruixemo tako darade ispravno i sa brojevima koji nisu razliqiti). Za algoritam sortira-a kae se da je u mestu ako se ne koristi dopunski memorijski prostor(osim onog u kome je smexten ulazni niz), odnosno dozvoeno je koristitimemorijski prostor veliqine 𝑂(1).

3.1 Hip sort

Hip sort je jedan od efikasnih algoritama za sortirae. U praksi on,za velike 𝑛, obiqno nije tako brz kao sortirae razdvajaem (kvik sort),ali nije ni mnogo sporiji. S druge strane, za razliku od sortiraa raz-dvajaem (videti odeak 3.3), egova efikasnost je garantovana. Kaokod sortiraa objediavaem, vreme izvrxavaa hip sorta u najgoremsluqaju je 𝑂(𝑛 log 𝑛).

Za razliku od sortiraa objediavaem, hip sort je algoritam sor-tiraa u mestu. U vezi sa hip sortom obratiemo posebno pau napoqetni deo algoritma | formirae hipa. Algoritam za formiraehipa ilustruje naqin na koji treba kombinovati konstrukciju i analizualgoritma.

Pretpostaviemo da se hip predstava implicitno; egovi elementismexteni su u niz 𝐴 duine 𝑛, koji stablu odgovara na sledei naqin:koren je smexten u 𝐴[1], a sinovi qvora zapisanog u 𝐴[𝑖] smexteni su u𝐴[2𝑖] i 𝐴[2𝑖 + 1]. Stablo zadovoava uslov hipa ako je vrednost svakogqvora vea ili jednaka od vrednosti egovih sinova.

Algoritam hip sort izvrxava se na isti naqin kao i sortirae izborom;razlika je u upotrebenoj strukturi podataka za smextae niza. Najpre se

69

Page 70: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

3.1. Hip sort 70

elementi niza preureuju tako da qine hip; formirae hipa razmotriemonexto kasnije. Ako je hip u nizu 𝐴, onda je 𝐴[1] najvei element hipa.Zamenom 𝐴[1] sa 𝐴[𝑛] postie se da je najvei element niza doveden na svojemesto𝐴[𝑛] u sortiranom redosledu. Zatim se razmatra niz𝐴[1], 𝐴[2], . . . , 𝐴[𝑛−1]; preureuje se, tako da i dae zadovoava uslov hipa (uslov hipa moeda ne zadovoava samo novi element 𝐴[1]). Posle toga se sa tim nizomrekurzivno ponava postupak primeen na niz 𝐴[1], 𝐴[2], . . . , 𝐴[𝑛]. Sve usvemu, algoritam se sastoji od poqetnog formiraa hipa i 𝑛−1 koraka, ukojima se vrxi po jedna zamena i preureivae hipa. Preureivae hipaje u osnovi isti postupak kao algoritam za uklaae najveeg elementa izhipa. Formirae hipa je samo po sebi interesantan problem, pa e bitiposebno razmatran. Vremenska sloenost sortiraa polazei od formi-ranog hipa je dakle 𝑂(𝑛 log 𝑛) (𝑂(log 𝑛) po zameni). Jasno je da je hip sortsortirae u mestu.

𝐻𝑖𝑝𝑠𝑜𝑟𝑡(𝐴,𝑛)ulaz: 𝐴 - niz od 𝑛 elemenataizlaz: 𝐴 - sortirani niz1 preurediti 𝐴 tako da bude hip2 for 𝑖← 𝑛 downto 23 𝑧𝑎𝑚𝑒𝑛𝑖(𝐴[1], 𝐴[𝑖])4 preurediti deo niza 𝐴[1..𝑖− 1] tako da bude ispravan hip

Formirae hipa

Sada emo se pozabaviti problemom formiraa hipa od proizvonogniza. Dat je niz 𝐴[1], 𝐴[2], . . . , 𝐴[𝑛] proizvono ureenih brojeva. Trebapreurediti egove elemente tako da zadovoavaju uslov hipa.

Postoje dva prirodna pristupa formirau hipa: odozgo nadole i odozdonagore. Oni odgovaraju prolasku kroz niz 𝐴 sleva udesno, odnosno zdesnaulevo (videti sliku 3.1). Poxto ovi metodi budu opisani primenom induk-cije, bie pokazano da izmeu ih postoji znatna razlika u efikasnosti.

-

Slika 3.1: Formirae hipa odozgo nadole i odozdo nagore.

Razmotrimo najpre prolazak kroz niz sleva udesno, tj. izgradu hipaodozgo nadole.

Page 71: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

71 3. Sortirae

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

2 6 8 5 10 9 12 1 15 7 3 13 4 11 16 142 6 8 5 10 9 12 14 15 7 3 13 4 11 16 12 6 8 5 10 9 16 14 15 7 3 13 4 11 12 12 6 8 5 10 13 16 14 15 7 3 9 4 11 12 12 6 8 5 10 13 16 14 15 7 3 9 4 11 12 12 6 8 15 10 13 16 14 5 7 3 9 4 11 12 12 6 16 15 10 13 12 14 5 7 3 9 4 11 8 12 15 16 14 10 13 12 6 5 7 3 9 4 11 8 116 15 13 14 10 9 12 6 5 7 3 2 4 11 8 1

Tabela 3.1: Primer formiraa hipa odozdo nagore. Brojevi u prvoj vrstisu indeksi. Brojevi koji su upravo uqestvovali u zameni, podebani su.

Induktivna hipoteza (odozgo nadole): Niz 𝐴[1], 𝐴[2], . . . , 𝐴[𝑖] predstav-a hip.

Bazni sluqaj je trivijalan, jer 𝐴[1] jeste hip. Osnovni deo algoritmaje ugrada elementa 𝐴[𝑖 + 1] u hip 𝐴[1..𝑖]. Element 𝐴[𝑖 + 1] uporeuje sesa svojim ocem, i zameuje se sa im ako je vei od ega; novi element sepremexta navixe, sve dok ne postane mai ili jednak od oca, ili dok nedospe u koren hipa. Broj uporeivaa je u najgorem sluqaju ⌊log2(𝑖 + 1)⌋.

Razmotrimo sada prolazak niza zdesna ulevo, xto odgovara prolaskuhipa odozdo nagore. Voleli bismo da kaemo da je niz 𝐴[𝑖+1..𝑛] hip, u kojitreba ubaciti elemenat 𝐴[𝑖]. Ali niz 𝐴[𝑖 + 1..𝑛] ne odgovara jednom, negokolekciji hipova (niz 𝐴[𝑖+1..𝑛] posmatramo kao deo stabla predstavenognizom 𝐴[1..𝑛]). Zbog toga je induktivna hipoteza nexto komplikovanija.

Induktivna hipoteza (odozdo nagore): Sva stabla sa korenima na in-deksima 𝑖 + 1, 𝑖 + 2, . . . , 𝑛 zadovoavaju uslov hipa.

Indukcija je po 𝑖, ali obrnutim redosledom, 𝑖 = 𝑛, 𝑛−1, . . . , 1. Element𝐴[𝑛] oqigledno predstava hip, xto predstava bazu indukcije. Moe sezakuqiti i nexto vixe. Elementi niza 𝐴 sa indeksima od ⌊𝑛/2⌋ + 1 do𝑛 su listovi stabla. Zbog toga se podstabla koja odgovaraju elementimatog niza sastoje samo od korena, pa trivijalno zadovoavaju uslov hipa.Dovono je dakle da sa indukcijom krenemo od 𝑖 = ⌊𝑛/2⌋. To ve ukazujeda bi pristup odozdo nagore mogao biti efikasniji: polovina posla jetrivijalna.

Razmotrimo sada element 𝐴[𝑖]. On ima najvixe dva sina 𝐴[2𝑖+1] i 𝐴[2𝑖],koji su, prema induktivnoj hipotezi, koreni ispravnih hipova. Zbog togaje jasan naqin sreivaa hipa sa korenom na indeksu 𝑖: 𝐴[𝑖] se uporeujesa veim od sinova, i zameuje se sa im ako je potrebno. Ovo je sliqnobrisau iz hipa. Sa zamenama se nastava nanie niz stablo, dok pret-hodna vrednost elementa 𝐴[𝑖] ne doe do lista ili do mesta na kome je veaod vrednosti oba sina. Konstrukcija hipa odozdo nagore ilustrovana jeprimerom u tabeli 3.1.

Sloenost (odozgo nadole): Korak sa rednim brojem 𝑖 zahteva najvixe⌊log2 𝑖⌋ ≤ ⌊log2 𝑛⌋ uporeivaa, pa je vremenska sloenost𝑂(𝑛 log 𝑛). Ocena

Page 72: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

3.2. Sortirae razvrstavaem 72

sloenosti 𝑂(𝑛 log 𝑛) nije gruba, jer je

𝑛∑𝑖=1

⌊log2 𝑖⌋ ≥𝑛∑

𝑖=𝑛/2

⌊log2 𝑖⌋ ≥ (𝑛/2)⌊log2(𝑛/2)⌋ = Ω(𝑛 log 𝑛).1

Sloenost (odozdo nagore): Broj uporeivaa u svakom koraku maije ili jednak od dvostruke visine razmatranog qvora (poxto se qvor morauporediti sa veim od sinova, eventualno zameniti, i tako dae nizstablo do lista). Prema tome, sloenost je maa ili jednaka od dvostrukesume visina svih qvorova u stablu. Izraqunajmo dakle sumu visina svihqvorova, ali najpre samo za kompletna stabla. Neka je 𝐻(𝑖) suma visinasvih qvorova kompletnog binarnog stabla visine 𝑖. Niz 𝐻(𝑖) zadovoavadiferencnu jednaqinu 𝐻(𝑖) = 2𝐻(𝑖 − 1) + 𝑖, jer se kompletno binarnostablo visine 𝑖 sastoji od dva kompletna binarna podstabla visine 𝑖 − 1i korena, qija je visina 𝑖. Pored toga, 𝐻(0) = 0. Qlan 𝑖 iz diferencnejednaqine moe se ukloniti enim prepisivaem u obliku 𝐻(𝑖) + 𝑖 =2(𝐻(𝑖 − 1) + (𝑖 − 1)) + 2, odnosno 𝐺(𝑖) = 2𝐺(𝑖 − 1) + 2, gde je uvedenaoznaka 𝐺(𝑖) = 𝐻(𝑖) + 𝑖; 𝐺(0) = 𝐻(0) = 0. Da bi se uklonio preostalikonstantni qlan 2, obema stranama treba dodati odgovarajuu konstantu,tako da bude korisna smena 𝐹 (𝑖) = 𝐺(𝑖) + 𝑎; odatle se dobija 𝑎 = 2:𝐺(𝑖) + 2 = 2(𝐺(𝑖 − 1) + 2), tj. smenom 𝐹 (𝑖) = 𝐺(𝑖) + 2 dobija se 𝐹 (𝑖) =2𝐹 (𝑖−1) i 𝐹 (0) = 𝐺(0)+2 = 2. Rexee poslede diferencne jednaqine je𝐹 (𝑖) = 2𝑖+1, pa konaqno dobijamo 𝐻(𝑖) = 2𝑖+1−(𝑖+2). Poxto je ukupan brojqvorova kompletnog binarnog stabla visine 𝑖 jednak 𝑛 = 2𝑖+1 − 1 > 𝐻(𝑖),zakuqujemo da je za hipove sa 𝑛 = 2𝑖+1 − 1 qvorova vremenska sloenostformiraa hipa odozdo nagore 𝑂(𝑛).

Formirae hipa od 𝑛 elemenata, pri qemu je 2𝑖 ≤ 𝑛 ≤ 2𝑖+1 − 1 trajemaa ili jednako od trajaa formiraa hipa od 2𝑖+1 − 1 elemenata,koje je i dae 𝑂(𝑛). Osnovni razlog zbog koga je pristup odozdo nagoreefikasniji je u tome da je veliki deo qvorova stabla na egovom dnu, avrlo mali deo pri vrhu, u blizini korena. Zato je boe minimiziratiobradu qvorova na dnu.

Ovaj primer pokazuje da se dobrim izborom redosleda indukcije moekonstruisati efikasan algoritam. Metod formiraa hipa odozgo nadoleje direktniji i oqigledniji, ali se ispostava da je pristup odozdo nagoreboi.

3.2 Sortirae razvrstavaem

Najjednostavniji postupak sortiraa sastoji se u tome da se obezbedi do-voan broj lokacija, i da se onda svaki element smesti na svoju lokaciju.Taj postupak zove se sortirae razvrstavaem. Ako se, na primer,sortiraju pisma prema odredixtima, onda je dovono obezbediti jednupregradu za svako odredixte, i sortirae je vrlo efikasno. Ali ako pismatreba sortirati prema petocifrenom poxtanskom broju, onda ovaj metodzahteva oko 100000 pregrada, xto postupak qini nepraktiqnim. Prematome, sortirae razvrstavaem radi dobro ako su elementi iz malog, jed-nostavnog opsega, koji je unapred poznat.

1Za definiciju asimptotske oznake Ω pogledati poglave 4.2

Page 73: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

73 3. Sortirae

Neka je dato 𝑛 elemenata, koji su celi brojevi iz opsega od 1 do 𝑚 ≥ 𝑛.Rezervixe se 𝑚 lokacija, a onda se za svako 𝑖 broj 𝑥𝑖 stava na lokaciju 𝑥𝑖

koja odgovara egovoj vrednosti. Posle toga se pregledaju sve lokacije iiz ih se redom pokupe elementi. Sloenost ovog jednostavnog algoritmaje dakle 𝑂(𝑚 + 𝑛). Ako je 𝑚 = 𝑂(𝑛), dobijamo algoritam za sortiraelinearne sloenosti. S druge strane, ako je 𝑚 veliko u odnosu na 𝑛(kao u sluqaju poxtanskih brojeva), onda je i 𝑂(𝑚) takoe veliko. Poredtoga, algoritam zahteva memoriju veliqine 𝑂(𝑚), xto je jox vei problemza veliko 𝑚.

3.3 Sortirae razdvajaem (kvik sort)

Sortirae objediavaem primer je pristupa konstrukciji algoritamazasnovanog na razlagau. Ako nam poe za rukom da podelimo problem nadva priblino jednaka potproblema, reximo svaki od ih nezavisno iihova rexea kombinujemo za linearno vreme 𝑂(𝑛), dobijamo algoritamsloenosti 𝑂(𝑛 log 𝑛). Nedostatak sortiraa objediavaem je potreba zadopunskom memorijom, jer se prilikom objediavaa ne moe predvidetikoji e element gde zavrxiti. Moe li se dekompozicija primeniti nadrugi naqin, tako da se poloaji elemenata mogu predvideti? Ideja sor-tiraa razdvajaem je da se najvei deo vremena utroxi na fazu podele,a vrlo mali deo na objediavae.

Pretpostavimo da znamo broj 𝑥, takav da je pola elemenata niza maeili jednako, a pola vee od 𝑥. Broj 𝑥 se moe uporediti sa svim elementimaniza (korixeem ukupno 𝑛 − 1 uporeivaa) i time se elementi mogupodeliti u dve grupe, prema rezultatu uporeivaa. Poxto dve grupeimaju isti broj elemenata, jedna od ih se moe smestiti u prvu, a druga udrugu polovinu niza. Kao xto emo odmah videti, ovo razdvajae moe seizvrxiti bez dopunskog memorijskog prostora; to je faza podele. Zatimse oba podniza rekurzivno sortiraju. Faza objediavaa je trivijalna,jer elementi prvog, odnosno drugog dela posle sortiraa ostaju u prvom,odnosno drugom delu. Prema tome, nije potreban dopunski memorijskiprostor (izuzev prostora na steku za pamee rekurzivnih poziva).

Pri opisanoj konstrukciji pretpostaveno je da je vrednost 𝑥 poznata,xto obiqno nije sluqaj. Moe se pokazati da predloeni algoritam dobroradi bez obzira na to koji se broj 𝑥 (nazivamo ga pivot) koristi zarazdvajae. Ci je razdvojiti elemente niza na dva dela, jedan sa brojevimamaim ili jednakim, a drugi sa brojevima veim od pivota. Razdvajae semoe ostvariti korixeem sledeeg algoritma. Koriste se dva indeksaza niz, 𝐿 i 𝐷. Na poqetku 𝐿 pokazuje na levi, a 𝐷 na desni kraj niza.Indeksi se \pomeraju" jedan prema drugom. Sledea induktivna hipoteza(tj. invarijanta pete) garantuje ispravnost razdvajaa.

Induktivna hipoteza: U koraku 𝑘 algoritma vai 𝑝𝑖𝑣𝑜𝑡 ≥ 𝑥𝑖 za sveindekse 𝑖 < 𝐿 i 𝑝𝑖𝑣𝑜𝑡 < 𝑥𝑗 za sve indekse 𝑗 > 𝐷.

Hipoteza je trivijalno ispuena na poqetku, jer ni jedno 𝑖, odnosno 𝑗,ne zadovoavaju navedene uslove. Ci je u koraku 𝑘+1 pomeriti 𝐿 udesno,ili 𝐷 ulevo, tako da hipoteza i dae bude taqna.

U trenutku kad se desi 𝐿 = 𝐷, razdvajae je skoro zavrxeno, izuzeveventualno elementa 𝑥𝐿, na xta emo se kasnije vratiti. Pretpostavimo

Page 74: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

3.3. Sortirae razdvajaem (kvik sort) 74

da je 𝐿 < 𝐷. Postoje dve mogunosti. Ako je bilo 𝑥𝐿 ≤ 𝑝𝑖𝑣𝑜𝑡 bilo 𝑥𝐷 >𝑝𝑖𝑣𝑜𝑡, odgovarajui indeks moe se pomeriti, tako da hipoteza i dae budezadovoena. U protivnom je 𝑥𝐿 > 𝑝𝑖𝑣𝑜𝑡 i 𝑥𝐷 ≤ 𝑝𝑖𝑣𝑜𝑡. Tada zameujemo𝑥𝐿 i 𝑥𝐷 i pomeramo oba indeksa dae prema unutra. U oba sluqaja imamopomerae bar jednog indeksa. Prema tome, indeksi e se u jednom trenutkususresti, i ci je postignut.

Ostaje problem izbora dobrog pivota i preciziraa posledeg korakaalgoritma kad se indeksi sretnu. Algoritmi zasnovani na razlagau naj-boe rade kad delovi imaju priblino iste veliqine, xto sugerixe daxto je pivot blii sredini, to e algoritam biti efikasniji. Kao xtoemo videti u okviru analize algoritma, izbor sluqajnog elementa nizaje dobro rexee. Ako je polazni niz dobro \ispreturan", onda se za pivotmoe uzeti prvi element niza. Zbog jednostavnosti je u prikazanom algo-ritmu upravo tako i uraeno.

𝑅𝑎𝑧𝑑𝑣𝑎𝑗𝑎𝑛𝑗𝑒(𝑋,𝐿𝑒𝑣𝑖,𝐷𝑒𝑠𝑛𝑖)ulaz: 𝑋 - niz, 𝐿𝑒𝑣𝑖 - leva granica niza, 𝐷𝑒𝑠𝑛𝑖 - desna granica nizaizlaz: 𝑋 - izmeeni niz i indeks 𝑆 takvi da vai:

𝑋[𝑖] ≤ 𝑋[𝑆] za sve 𝑖 ≤ 𝑆 i 𝑋[𝑗] > 𝑋[𝑆] za sve 𝑗 > 𝑆1 𝑝𝑖𝑣𝑜𝑡← 𝑋[𝐿𝑒𝑣𝑖]2 𝐿← 𝐿𝑒𝑣𝑖3 𝐷 ← 𝐷𝑒𝑠𝑛𝑖4 while 𝐿 < 𝐷 do5 while 𝑋[𝐿] ≤ 𝑝𝑖𝑣𝑜𝑡 and 𝐿 ≤ 𝐷𝑒𝑠𝑛𝑖 do6 𝐿← 𝐿 + 17 while 𝑋[𝐷] > 𝑝𝑖𝑣𝑜𝑡 and 𝐷 ≥ 𝐿𝑒𝑣𝑖 do8 𝐷 ← 𝐷 − 19 if 𝐿 < 𝐷 then10 𝑧𝑎𝑚𝑒𝑛𝑖(𝑋[𝐿], 𝑋[𝐷])11 stali smo kada je vrednost elementa sa indeksom 𝐷 maa od pivota,12 pa u treba staviti na prvu poziciju niza13 𝑆 ← 𝐷14 𝑧𝑎𝑚𝑒𝑛𝑖(𝑋[𝐿𝑒𝑣𝑖], 𝑋[𝑆])15 return 𝑆

Ako se prvi element izabere za pivot, on se moe zameniti sa 𝑋𝐿 uposledem koraku razdvajaa, i tako postaviti na svoje mesto. Druge mo-gunosti bie razmotrene prilikom analize sloenosti. U svakom sluqaju,pivot koji je izabran na neki drugi naqin, moe se najpre zameniti saprvim elementom niza, posle qega se moe primeniti opisani algoritam.

6 2 8 5 10 9 12 1 15 7 3 13 4 11 16 146 2 4 5 10 9 12 1 15 7 3 13 8 11 16 146 2 4 5 3 9 12 1 15 7 10 13 8 11 16 146 2 4 5 3 1 12 9 15 7 10 13 8 11 16 141 2 4 5 3 6 12 9 15 7 10 13 8 11 16 14

Tabela 3.2: Razdvajae niza oko pivota 6.

Page 75: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

75 3. Sortirae

Primer rada algoritma 𝑅𝑎𝑧𝑑𝑣𝑎𝑗𝑎𝑛𝑗𝑒 dat je u tabeli 3.2. Pivot je prvibroj (6). Brojevi koji su upravo zameeni su podebani. Posle tri zamenei pomeraa 𝐿 je indeks elementa 𝑋[7] = 12, a 𝐷 indeks elementa 𝑋[6] = 1(indeks 𝐷 preskaqe 𝐿). Posleda je zamena sredeg broja (𝑋[𝐷] = 1)i pivota (6). Posle ove zamene svi brojevi levo od pivota su mai ilijednaki od ega, a svi brojevi desno su vei od ega. Dva podniza (saindeksima od 1 do 6, odnosno od 7 do 16) mogu da se rekurzivno sortiraju.U najgorem sluqaju dubina rekurzije je 𝑂(𝑛), a u proseku 𝑂(𝑙𝑜𝑔𝑛). Primerrada algoritma prikazan je u tabeli 3.3.

𝑄𝑢𝑖𝑐𝑘𝑠𝑜𝑟𝑡(𝑋,𝑛)ulaz: 𝑋 - niz od 𝑛 brojevaizlaz: 𝑋 - sortirani niz1 𝑄𝑆𝑜𝑟𝑡(𝑋, 1, 𝑛)

𝑄𝑆𝑜𝑟𝑡(𝑋,𝐿𝑒𝑣𝑖,𝐷𝑒𝑠𝑛𝑖)ulaz: 𝑋 - niz sa indeksima u intervalu [𝐿𝑒𝑣𝑖,𝐷𝑒𝑠𝑛𝑖]izlaz: 𝑋 - sortirani niz u intervalu [𝐿𝑒𝑣𝑖,𝐷𝑒𝑠𝑛𝑖]2 if 𝐿𝑒𝑣𝑖 < 𝐷𝑒𝑠𝑛𝑖 then3 𝑆 = 𝑅𝑎𝑧𝑑𝑣𝑎𝑗𝑎𝑛𝑗𝑒(𝑋,𝐿𝑒𝑣𝑖,𝐷𝑒𝑠𝑛𝑖) 𝑆 je indeks pivota posle razdvajaa4 𝑄𝑆𝑜𝑟𝑡(𝑋,𝐿𝑒𝑣𝑖, 𝑆 − 1)5 𝑄𝑆𝑜𝑟𝑡(𝑋,𝑆 + 1, 𝐷𝑒𝑠𝑛𝑖)

6 2 8 5 10 9 12 1 15 7 3 13 4 11 16 141 2 4 5 3 6 12 9 15 7 10 13 8 11 16 141 2 4 5 3

2 4 5 33 4 5

8 9 11 7 10 12 13 15 16 147 8 11 9 10

10 9 119 10

13 15 16 1414 15 16

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Tabela 3.3: Primer sortiraa razdvajaem. Pivoti su podebani.Elementi koji se u nekoj fazi ne meaju, nisu prikazani.

Sloenost: Vreme izvrxavaa sortiraa razdvajaem zavisi od kon-kretnog ulaza i izbora pivota. Ako pivot uvek razdvaja niz na dva jednakadela, onda je diferencna jednaqina za sloenost 𝑇 (𝑛) = 2𝑇 (𝑛/2) + 𝑐𝑛,𝑇 (2) = 1, xto za posledicu ima 𝑇 (𝑛) = 𝑂(𝑛 log 𝑛). Uveriemo se kasnijeda je vremenska sloenost ovog algoritma 𝑂(𝑛 log 𝑛) i pod mnogo slabijimpretpostavkama. Ako je pak pivot blizu nekom od krajeva niza, onda jebroj koraka mnogo vei. Na primer, ako je pivot najmai element u nizu,onda prvo razdvajae zahteva 𝑛− 1 uporeivaa a rezultat je razdvajaebrojeva na dve grupe, sa 0 odnosno 𝑛 − 1 elemenata. Zbog toga, ako jeniz ve ureen rastue i za pivot se uvek bira prvi element, onda je

Page 76: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

3.3. Sortirae razdvajaem (kvik sort) 76

broj koraka algoritma 𝑂(𝑛2). Kvadratna sloenost u najgorem sluqajuza sortirane ili skoro sortirane nizove moe se izbei uporeivaemprvog, posledeg i sredeg elementa niza i izborom sredeg meu ima(drugog po veliqini) za pivot. Jox pouzdaniji metod je sluqajni izbornekog elementa niza za pivot. Vremenska sloenost sortiraa e i tada unajgorem sluqaju biti 𝑂(𝑛2), jer i dae postoji mogunost da pivot budenajmai element niza. Ipak, verovatnoa da doe do ovog najgoreg sluqajaje mala. Razmotriemo to sada malo preciznije.

Pretpostavimo da se svaki element 𝑥𝑖 sa jednakom verovatnoom moeizabrati za pivot. Ako je pivot 𝑖-ti najmai elemenat, onda posle razdva-jaa treba rekurzivno sortirati dva dela niza duina redom 𝑖−1, odnosno𝑛− 𝑖. Ako brojimo samo uporeivaa, sloenost razdvajaa je 𝑛− 1 (podpretpostavkom da se posle zamene 𝑋[𝐿] sa 𝑋[𝐷] u algoritmu 𝑅𝑎𝑧𝑑𝑣𝑎𝑗𝑎𝑛𝑗𝑒indeksi 𝐿 i 𝐷 najpre bez uporeivaa pomeraju za po jedno mesto). Prematome, sloenost sortiraa razdvajaem zadovoava jednakost 𝑇 (𝑛) =𝑛 − 1 + 𝑇 (𝑖 − 1) + 𝑇 (𝑛 − 𝑖). Ako pretpostavimo da pozicija pivota poslerazdvajaa moe biti svako 𝑖 = 1, 2, . . . , 𝑛 sa jednakom verovatnoom 1/𝑛,proseqan broj koraka je:

𝑇 (𝑛) = 𝑛− 1 +1

𝑛

𝑛∑𝑖=1

(𝑇 (𝑖− 1) + 𝑇 (𝑛− 𝑖)) =

= 𝑛− 1 +1

𝑛

𝑛∑𝑖=1

𝑇 (𝑖− 1) +1

𝑛

𝑛∑𝑖=1

𝑇 (𝑛− 𝑖) = 𝑛− 1 +2

𝑛

𝑛−1∑𝑖=0

𝑇 (𝑖).

Ovo je potpuna rekurzija i eno rexee je 𝑇 (𝑛) = 𝑂(𝑛 log 𝑛) (kaoxto emo videti u delu kursa o analizi algoritama). Dakle, sortiraerazdvajaem je zaista efikasno u proseku.

U praksi je sortirae razdvajaem veoma brzo, pa zasluuje svojedrugo ime (kvik sort, tj. brzo sortirae). Osnovni razlog za egovubrzinu, osim elegantne primene razlagaa, je u tome xto se mnogo elemenatauporeuje sa jednim istim elementom, pivotom. Pivot se zbog toga moesmestiti u registar, xto ubrzava uporeivaa.

Jedan od naqina da se sortirae razdvajaem ubrza je dobar izborbaze indukcije. Ideja je da se sa indukcijom ne poqie uvek od jedinice.Sortirae razdvajaem, kao xto je reqeno, poziva se rekurzivno do baznogsluqaja, koji obuhvata nizove duine 1. Meutim, jednostavni algoritmi,kao xto su sortirae umetaem ili sortirae izborom, rade sasvim dobroza kratke nizove. Prema tome, moe se izabrati da bazni sluqaj za sor-tirae razdvajaem budu nizovi duine vee od jedan (npr. izmeu 10 i20, xto zavisi od konkretne realizacije), a da se bazni sluqaj obraujesortiraem umetaem. Drugim reqima, uslov "if 𝐿𝑒𝑣𝑖 < 𝐷𝑒𝑠𝑛𝑖" zameujese uslovom "if 𝐿𝑒𝑣𝑖 < 𝐷𝑒𝑠𝑛𝑖 − 𝑃𝑟𝑎𝑔" (gde 𝑃𝑟𝑎𝑔 ima vrednost izmeu10 i 20), i dodaje se deo "else ", koji izvrxava sortirae umetaem).Efekat ove promene je popravka brzine sortiraa razdvajaem za malikonstantni faktor.

Page 77: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

77 3. Sortirae

3.4 Doa granica sloenosti za sortirae

Opxti algoritmi za sortirae koje smo razmotrili imaju vreme izvrxa-vaa𝑂(𝑛2) ili𝑂(𝑛 log 𝑛); sortirae razvrstavaem nije opxti algoritam,jer se ne moe primeniti na proizvoan niz. Postava se pitae da lije mogue dae poboxae, odnosno da li je sloenost svakog algoritmaza sortirae bar reda 𝑛 log 𝑛?

Funkcija 𝑓(𝑛) je doa granica sloenosti nekog problema ako za slo-enost 𝑇 (𝑛) proizvonog algoritma koji rexava taj problem vai 𝑇 (𝑛) =Ω(𝑓(𝑛)) (ili: ne postoji algoritam sloenosti mae od 𝑂(𝑓(𝑛)), koji re-xava problem). Dokazati da je neka funkcija doa granica sloenostirazmatranog problema nije lako, jer se dokaz odnosi na sve mogue algorit-me, a ne samo na jedan konkretan pristup. Neophodno je najpre definisatimodel koji odgovara proizvonom algoritmu, a zatim dokazati da je vre-menska sloenost proizvonog algoritma obuhvaenog tim modelom veaili jednaka od doe granice. U ovom odeku razmotriemo jedan takavmodel koji se zove stablo odluqivaa. Stablo odluqivaa modeliraizraqunavaa koja se sastoje najveim delom od uporeivaa. Stablo od-luqivaa nije opxti model izraqunavaa kao xto je npr. Tjuringovamaxina, pa su doe granice nexto slabije; ali s druge strane, stablaodluqivaa su jednostavnija i sa ima se lakxe operixe.

Stablo odluqivaa definixe se kao binarno stablo sa dve vrste qvoro-va, unutraxim qvorovima i listovima. Svaki unutraxi qvor odgovarapitau sa dva mogua odgovora, koji su pak pridrueni dvema granamakoje izlaze iz qvora. Svakom listu pridruen je jedan od moguih izlaza.Ako se radi o problemu sortiraa, pretpostavamo da je ulazni niz𝑥1, 𝑥2, . . . , 𝑥𝑛. Izraqunavae poqie od korena stabla. U svakom qvorupostava se jedno pitae u vezi sa ulazom, i u zavisnosti od dobijenogodgovora, nastava se levom ili desnom izlaznom granom. Kad se dostignelist, izlaz pridruen listu je izlaz izraqunavaa. Na slici 3.2 prikaza-no je sortirae pomou stabla odluqivaa za 𝑛 = 3. Vremenska sloenost(u najgorem sluqaju) algoritma definisanog stablom 𝑇 jednaka je visini𝑇 , odnosno najveem broju pitaa koja treba postaviti za neki ulaz. Stabloodluqivaa prema tome odgovara algoritmu. Iako stablo odluqivaa nemoe da modelira svaki algoritam (npr. ne moe se izraqunati kvadratnikoren iz nekog broja korixeem stabla odluqivaa), ono je prihvativmodel za algoritme zasnovane na uporeivau. Doa granica dobijenaza model stabla odluqivaa odnosi se naravno samo na algoritme togoblika. Sada emo iskoristiti stabla odluqivaa da bismo odredilidou granicu za sortirae.

Teorema: Proizvono stablo odluqivaa za sortirae 𝑛 elemenata imavisinu Ω(𝑛 log 𝑛).

Dokaz: Ulaz u algoritam za sortirae je niz 𝑥1, 𝑥2, . . . , 𝑥𝑛. Izlaz jeisti niz u sortiranom redosledu. Drugim reqima, izlaz je permutacijaulaza: izlaz pokazuje kako treba ispremextati elemente tako da oni po-stanu sortirani. Na izlazu se moe pojaviti svaka permutacija, jer ulazmoe biti zadat u proizvonom redosledu. Algoritam za sortirae jekorektan ako moe da obradi sve mogue ulaze. Prema tome, svaka per-mutacija skupa 1, 2, . . . , 𝑛 treba da se pojavi kao mogui izlaz stablaodluqivaa za sortirae. Izlazi stabla odluqivaa pridrueni su e-

Page 78: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

3.4. Doa granica sloenosti za sortirae 78

𝑥1 < 𝑥2?

𝑥1 < 𝑥3? 𝑥2 < 𝑥3?

𝑥1 < 𝑥3? 𝑥3 < 𝑥2 < 𝑥1

𝑥2 < 𝑥1 < 𝑥3 𝑥2 < 𝑥3 < 𝑥1

𝑥3 < 𝑥1 < 𝑥2𝑥2 < 𝑥3?

𝑥1 < 𝑥3 < 𝑥2

da ne

da ne da ne

ne da ne

𝑥1 < 𝑥2 < 𝑥3

da

tt

t tt

Slika 3.2: Sortirae tri elementa pomou stabla odluqivaa.

govim listovima. Poxto dve razliqite permutacije odgovaraju razliqitimizlazima, moraju im biti pridrueni razliqiti listovi. Prema tome, zasvaku permutaciju mora da postoji bar jedan list. Permutacija ima 𝑛!,pa poxto pretpostavamo da je stablo binarno, egova visina je najmaelog2(𝑛!). Ako iskoristimo qienicu da vai 𝑘 > 𝑛/2 za 𝑘 = 𝑛/2, . . . , 𝑛dobijamo:

log2(𝑛!) > log2(𝑛/2 · 𝑛/2 · . . . · 𝑛/2)

pri qemu se faktor 𝑛/2 java 𝑛/2 puta. Odavde sledi:

log2(𝑛!) > log2(𝑛/2)𝑛/2 = 𝑛/2 · log2(𝑛/2)

odnosno:log2(𝑛!) = Ω(𝑛 log 𝑛)

Ovakva vrsta doe granice zove se teorijskoinformaciona doagranica, jer ona ne zavisi od samog izraqunavaa (mi, na primer, nismodefinisali kakva pitaa su dozvoena), nego samo od koliqine infor-macija sadrane u izlazu. Znaqaj doe granice je u tome da proizvoanalgoritam sortiraa zahteva Ω(𝑛 log 𝑛) uporeivaa u najgorem sluqaju,jer on mora da razlikuje 𝑛! razliqitih izlaza, a u jednom koraku moe daizabere samo jednu od dve mogunosti. Mogli smo da definixemo stabloodluqivaa kao stablo u kome svaki qvor ima tri sina (koji, na primer,odgovaraju ishodima "<", "=" i ">"). U tom sluqaju bi visina bila najmaelog3 𝑛!, xto je i dae Ω(𝑛 log 𝑛). Drugim reqima, doa granica Ω(𝑛 log 𝑛)odnosi se na sva stabla odluqivaa sa konstantnim brojem grana po qvoru.

Ovaj dokaz doe granice pokazuje da svaki algoritam za sortiraezasnovan na uporeivaima ima sloenost Ω(𝑛 log 𝑛). Sortirae je ipakmogue izvrxavati bre korixeem specijalnih osobina brojeva, iliizvodei algebarske manipulacije sa ima. Na primer, ako imamo 𝑛 pri-rodnih brojeva iz opsega od 1 do 4𝑛, sortirae razvrstavaem e ih u-rediti za vreme 𝑂(𝑛). Ovo ne protivreqi dokazanoj dooj granici, jersortirae razvrstavaem ne koristi uporeivaa. Koristi se qienicada vrednosti brojeva mogu da se efikasno koriste kao adrese.

Kad razmatramo stabla odluqivaa, obiqno ignorixemo ihovu veli-qinu, a zanima nas samo visina, zbog toga xto qak i jednostavni algoritmilinearne vremenske sloenosti mogu da odgovaraju stablima odluqivaasa eksponencijalnim brojem qvorova. Veliqina stabla nije bitna, jer se

Page 79: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

79 3. Sortirae

stablo u stvari ne formira eksplicitno. Pokazalo se da se mogu for-mirati stabla odluqivaa polinomijalne visine | ali eksponencijalneveliqine | za probleme koji verovatno zahtevaju eksponencijalno vremeizvrxavaa, pa su stabla odluqivaa ponekad previxe optimistiqka.Drugim reqima, doa granica po modelu stabla odluqivaa moe da budedaleko ispod stvarne sloenosti problema. S druge strane, ako je doagranica jednaka goroj granici za neki konkretan algoritam, kao xtoje sluqaj sa sortiraem, onda doa granica pokazuje da se algoritam nemoe ubrzati ni upotrebom mnogo veeg prostora.

3.5 Zadaci za vebu

1. Detano opisati postupak formirae hipa

a) odozgo nadole

b) odozdo nagore

od niza elemenata 𝐴 = (5, 13, 2, 25, 7, 17, 20, 8, 4).

2. Dokazati korektnost algoritma 𝐻𝑖𝑝𝑠𝑜𝑟𝑡 korixeem naredne inva-rijante pete:

na poqetku svake iteracije for pete (u linijama 24) podniz 𝐴[1..𝑖]je hip koji sadri 𝑖 najmaih elemenata niza 𝐴[1..𝑛], a podniz 𝐴[𝑖+1..𝑛] sadri 𝑛 − 𝑖 najveih elemenata niza 𝐴[1..𝑛] u sortiranom re-dosledu.

3. Koliko je vreme izvrxavaa algoritma 𝐻𝑖𝑝𝑠𝑜𝑟𝑡 na nizu 𝐴 duine 𝑛koji je ve sortiran rastue, a koliko ako je niz sortiran opadajue?

4. Pokazati kako je mogue korixeem hipa realizovati narednu o-peraciju:

𝑃𝑜𝑣𝑒𝑐𝑎𝑗 𝑘𝑙𝑗𝑢𝑐(𝑆, 𝑖, 𝑘) kojom se vrednost kuqa elementa sa indeksom𝑖 poveava na vrednost 𝑘, za koju se pretpostava da ima vrednostveu ili jednaku prethodnoj vrednosti kuqa sa indeksom 𝑖.

5. Konstruisati algoritam vremenske sloenosti 𝑂(𝑛 log 𝑘) za objedi-avae 𝑘 sortiranih nizova u jedan sortirani niz od ukupno 𝑛 ele-menata.

6. Demonstrirati izvrxavae algoritma 𝑅𝑎𝑧𝑑𝑣𝑎𝑗𝑎𝑛𝑗𝑒 na nizu:(13, 19, 9, 5, 12, 8, 7, 4, 11, 2, 6, 21), ukoliko se prvi element bira za pi-vot.

7. Koja je najmaa mogua dubina lista u stablu odluqivaa za problemsortiraa zasnovan na uporeivau?

8. Dat je skup 𝑆 od 𝑛 razliqitih celih brojeva. Konstruisati algoritamsloenosti 𝑂(𝑛) za nalaee nekog broja koji nije u 𝑆. Dokazati daje Ω(𝑛) doa granica sloenosti za broj koraka potrebnih da se rexiovaj problem.

Page 80: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr
Page 81: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

Glava 4

Analiza algoritama

4.1 Uvod

Ci analize algoritma je da se predvidi egovo ponaxae, posebno brzi-na izvrxavaa, ne realizujui ga na (nekom konkretnom) raqunaru. Daklepotrebno je proceniti brzinu rada algoritma i to tako da ta procenavai za svaki raqunar. Uostalom, napor da se algoritam ispita na svakomraqunaru je preambiciozan, izmeu ostalog i zbog toga xto bi trebalouzeti u obzir sve mogue realizacije \podalgoritama" (npr. mnogi algo-ritmi sadre sortirae, koje se moe izvrxiti razliqitim postupcima).

Taqno ponaxae algoritma je nemogue predvideti, sem u najjedno-stavnijim sluqajevima. Na ponaxae utiqe mnogo faktora, pa se u obziruzimaju samo glavne karakteristike, a zanemaruju se detai vezani zataqnu realizaciju. Prema tome, analiza algoritma mora da bude pri-blina. Meutim, na taj naqin se ipak dobijaju znaqajne informacijeo algoritmu, koje npr. omoguuju uporeivae razliqitih algoritama zarexavae istog problema.

Logiqan pristup prilikom analize brzine izvrxavaa algoritma jeda se zanemaruju konstantni faktori, jer se brzine izvrxavaa algoritmana razliqitim raqunarima razlikuju priblino za konstantni faktor.Od interesa je oceniti ponaxae brzine izvrxavaa algoritma kad ve-liqina ulaza tei beskonaqnosti. Ako je, na primer, ulaz u algoritamvektor duine 𝑛, a algoritam se sastoji od 100𝑛 koraka, onda se kae daje sloenost algoritma linearna, odnosno proporcionalna sa 𝑛; ako jebroj koraka 2𝑛2 + 50, onda se kae da je sloenost algoritma kvadratna,odnosno proporcionalna sa 𝑛2. Za drugi od ova dva algoritma kae se daje sporiji, iako za 𝑛 = 5 vai 100𝑛 > 2𝑛2+50; nejednakost 2𝑛2+50 > 100𝑛taqna je npr. za svako 𝑛 > 50. Sliqno, ako se algoritam sastoji od 100𝑛1.8

koraka, nejednakost 100𝑛1.8 < 2𝑛2 + 50 poqie da vai tek za 𝑛 > 3 · 108.Na sreu, obiqno su konstante u izrazima za sloenost algoritama male.Zbog toga, iako asimptotski pristup oceivau sloenosti ponekad moeda dovede do zabune, u praksi se dobro pokazuje i dovoan je za prvuaproksimaciju efikasnosti.

Ci analize, odreivae vremena izvrxavaa algoritma za odreeniulaz | praktiqno je neostvariv (sem za najjednostavnije algoritme), jer

81

Page 82: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

4.2. Asimptotska oznaka 𝑂 82

je texko uzeti u obzir sve mogue ulaze. Zbog toga se za svaki moguiulaz najpre definixe egova veliqina (dimenzija) 𝑛, posle qega se uanalizi koristi samo ovaj podatak. Veliqinu ulaza neemo ovde strogodefinisati; obiqno je to mera veliqine memorijskog prostora potrebnogza smextae opisa ulaza kad se upotrebi bilo koje razumno kodirae npr.bitovima. Nepostojae opxte definicije veliqine ulaza ne unosi zabunu,jer se obiqno uporeuju razliqiti algoritmi za rexavae istog problema.

Dakle, analiza algoritma treba da kao rezultat da izraz za utroxenovreme u zavisnosti od veliqine ulaza 𝑛. Meutim, postava se pitae| koji meu ulazima veliqine 𝑛 izabrati kao reprezentativan? Qestose za ovu svrhu bira najgori sluqaj. Najboi ulaz je qesto trivijalan.Dae, sredi (proseqan) ulaz samo na prvi pogled izgleda kao dobarizbor. Meutim, analiza je tada komplikovana, a potexkou predstavai definisae raspodele verovatnoa na skupu svih ulaza veliqine 𝑛,i to tako da ona odgovara situacijama koje se pojavuju u praksi. Zbogtoga je korisno analizu vrxiti za najgori sluqaj. Dobijeni rezultatinajqexe su bliski proseqnim, odnosno eksperimentalnim rezultatima;ili, ako je qak najgori sluqaj u pogledu sloenosti bitno drugaqiji od\proseqnog", algoritam koji dobro radi u najgorem sluqaju obiqno dobroradi i u proseku. Izneseni razlozi opravdavaju praksu da se najqexevrxi analiza najgoreg sluqaja.

Analiza asimptotskog ponaxaa sloenosti algoritma, i to u najgoremsluqaju meu ulazima odreene veliqine | to je dakle aproksimacijavremena rada odreenog algoritma na odreenom ulazu, koja ipak najqexedobro karakterixe osobine algoritma.

4.2 Asimptotska oznaka 𝑂

Definicija: Neka su 𝑓 i 𝑔 pozitivne funkcije od argumenta 𝑛 iz skupaN prirodnih brojeva. Kae se da je 𝑔(𝑛) = 𝑂(𝑓(𝑛)) ako postoje pozitivnekonstante 𝑐 i 𝑁 , takve da za svako 𝑛 > 𝑁 vai 𝑔(𝑛) ≤ 𝑐𝑓(𝑛).

Oznaka 𝑂(𝑓(𝑛)) se u stvari odnosi na klasu funkcija, a jednakost𝑔(𝑛) = 𝑂(𝑓(𝑛)) je uobiqajena oznaka za inkluziju 𝑔(𝑛) ∈ 𝑂(𝑓(𝑛)). Jasnoje da je funkcija 𝑓 samo neka vrsta gore granice za funkciju 𝑔. Naprimer, pored jednakosti 5𝑛2 + 15 = 𝑂(𝑛2) (jer je 5𝑛2 + 15 ≤ 6𝑛2 za 𝑛 ≥ 4)vai i jednakost 5𝑛2 + 15 = 𝑂(𝑛3) (jer je 5𝑛2 + 15 ≤ 6𝑛3 za 𝑛 ≥ 4).Ova notacija omoguuje ignorisae multiplikativnih konstanti: umesto𝑂(5𝑛 + 4) moe se pisati 𝑂(𝑛) jer klase 𝑂(5𝑛 + 4) i 𝑂(𝑛) sadre istefunkcije. Jednakost 𝑂(5𝑛 + 4) = 𝑂(𝑛) je u stvari jednakost dve klasefunkcija. Sliqno, u izrazu 𝑂(log 𝑛) osnova logaritma nije bitna, jer selogaritmi za razliqite osnove razlikuju za multiplikativnu konstantu:

log𝑎 𝑛 = log𝑎(𝑏log𝑏 𝑛) = log𝑏 𝑛 · log𝑎 𝑏.

Specijalno, 𝑂(1) je oznaka za klasu ograniqenih funkcija.

Page 83: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

83 4. Analiza algoritama

Teorema: Svaka eksponencijalna funkcija sa osnovom veom od 1 rastebre od svakog polinoma. Dakle, ako je 𝑓(𝑛) monotono rastua funkcijakoja nije ograniqena, 𝑎 > 1 i 𝑐 > 0, onda je:

𝑓(𝑛)𝑐 = 𝑂(𝑎𝑓(𝑛)

).

Specijalno, za 𝑓(𝑛) = 𝑛 dobija se 𝑛𝑐 = 𝑂(𝑎𝑛), a za 𝑓(𝑛) = log𝑎 𝑛dobija se jednakost (log𝑎 𝑛)𝑐 = 𝑂

(𝑎𝑙𝑜𝑔𝑎𝑛) = 𝑂(𝑛), tj. proizvoan stepen

logaritamske funkcije raste sporije od linearne funkcije.Lako se pokazuje da se 𝑂-izrazi mogu sabirati i mnoiti:

𝑂(𝑓(𝑛)) + 𝑂(𝑔(𝑛)) = 𝑂(𝑓(𝑛) + 𝑔(𝑛)),

𝑂(𝑓(𝑛))𝑂(𝑔(𝑛)) = 𝑂(𝑓(𝑛)𝑔(𝑛)).

Na primer, druga od ovih jednakosti moe se iskazati na sledeinaqin: ako je neka funkcija ℎ(𝑛) jednaka proizvodu proizvone funkcije𝑟(𝑛) iz klase 𝑂(𝑓(𝑛)) i proizvone funkcije 𝑠(𝑛) iz klase 𝑂(𝑔(𝑛)), ondaℎ(𝑛) = 𝑟(𝑛)𝑠(𝑛) pripada klasi 𝑂(𝑓(𝑛)𝑔(𝑛))).

Pokaimo da vae ove dve jednakosti. Ako je 𝑟(𝑛) = 𝑂(𝑓(𝑛)) i 𝑠(𝑛) =𝑂(𝑔(𝑛)) onda postoje pozitivni 𝑁1, 𝑁2, 𝑐1 i 𝑐2 takvi da za 𝑛 > 𝑁1 vai𝑟(𝑛) ≤ 𝑐1𝑓(𝑛) i za 𝑛 > 𝑁2 vai 𝑠(𝑛) ≤ 𝑐2𝑔(𝑛). Meutim, za𝑁 = max𝑁1, 𝑁2i 𝑐 = max𝑐1, 𝑐2, 𝑐1𝑐2 vai:

∙ 𝑟(𝑛) + 𝑠(𝑛) ≤ 𝑐(𝑓(𝑛) + 𝑔(𝑛)

)i

∙ 𝑟(𝑛)𝑠(𝑛) ≤ 𝑐𝑓(𝑛)𝑔(𝑛),

tj. 𝑟(𝑛) + 𝑠(𝑛) = 𝑂(𝑓(𝑛) + 𝑔(𝑛)

)i 𝑟(𝑛)𝑠(𝑛) = 𝑂

(𝑓(𝑛)𝑔(𝑛)

). Meutim, 𝑂-

izrazi odgovaraju relaciji ≤, pa se ne mogu oduzimati i deliti. Takonpr. iz 𝑓(𝑛) = 𝑂(𝑟(𝑛)) i 𝑔(𝑛) = 𝑂(𝑠(𝑛)) ne sledi da je 𝑓(𝑛) − 𝑔(𝑛) =𝑂(𝑟(𝑛)− 𝑠(𝑛)

).

Sledei primer ilustruje zaxto treba skoncentrisati pau na asimp-totsko ponaxae. Neka je 𝑓(𝑛) ukupan broj operacija pri izvrxavaunekog algoritma na ulazu veliqine 𝑛, pri qemu je 𝑓(𝑛) neka od funkcijalog2 𝑛, 𝑛, 𝑛 log2 𝑛, 𝑛

1.5, 𝑛2, 𝑛3, 1.1𝑛. Pretpostavimo da se algoritam izvrxavana raqunaru koji izvrxava𝑚 operacija u sekundi,𝑚 ∈ 103, 104, 105, 106.Utabeli 4.1 prikazana su vremena izvrxavaa algoritma na ulazu fiksi-rane veliqine 𝑛 = 1000, na raqunarima razliqite brzine. Vidi se kakavje uticaj konstantnih faktora: kod algoritama koji se mogu izvrxiti zaprihvativo vreme uticaj zamene raqunara brim je primetan. Meutim,kod algoritma u posledoj koloni, sa eksponencijalnom funkcijom 𝑓(𝑛),zamena raqunara brim ne qini problem rexivim.

Drugi problem u vezi sa sloenoxu algoritma je pitae doe graniceza potreban broj raqunskih operacija. Dok se gora granica odnosi nakonkretan algoritam, doa granica sloenosti odnosi se na proizvoanalgoritam iz neke odreene klase. Zbog toga ocena doe granice zahtevaposebne postupke analize. Za funkciju 𝑔(𝑛) kae se da je asimptotskadoa granica funkcije 𝑇 (𝑛) i pixe se 𝑇 (𝑛) = Ω(𝑔(𝑛)), ako postojepozitivne konstante 𝑐 i 𝑁 , takve da za svako 𝑛 > 𝑁 vai 𝑇 (𝑛) > 𝑐𝑔(𝑛).Tako je na primer 𝑛2 = Ω(𝑛2 − 100), i 𝑛 = Ω(𝑛0.9). Vidi se da simbol Ωodgovara relaciji ≥. Ako za dve funkcije 𝑓(𝑛) i 𝑔(𝑛) istovremeno vai i

Page 84: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

4.3. Vremenska i prostorna sloenost 84

𝑓(𝑛) log2 𝑛 𝑛 𝑛 log2 𝑛 𝑛1.5 𝑛2 𝑛3 1.1𝑛

𝑚

103 0.01 1.0 10.0 32.0 1000 106 1039

104 0.001 0.1 1. 3.2 100 105 1038

105 0.0001 0.01 0.1 0.32 10 104 1037

106 0.00001 0.001 0.01 0.032 1 103 1036

Tabela 4.1: Trajae izvrxavaa 𝑓(𝑛) operacija na raqunaru kojiizvrxava 𝑚 operacija u sekundi, za 𝑛 = 1000.

𝑓(𝑛) = 𝑂(𝑔(𝑛)) i 𝑓(𝑛) = Ω(𝑔(𝑛)), onda one imaju iste asimptotske brzinerasta, xto se oznaqava sa 𝑓(𝑛) = Θ(𝑔(𝑛)). Tako je na primer 5𝑛 log2 𝑛−10 =Θ(𝑛 log 𝑛), pri qemu je u posledem izrazu osnova logaritma nebitna.

Na kraju, qienica da je lim𝑛→∞𝑓(𝑛)𝑔(𝑛) = 0 oznaqava se sa 𝑓(𝑛) = 𝑜(𝑔(𝑛)).

Na primer, oqigledno je 𝑛log2 𝑛 = 𝑜(𝑛), a jednakost 𝑛

10 = 𝑜(𝑛) nije taqna.

Odnos izmeu stepene i eksponencijalne funkcije moe se precizirati:ako je 𝑓(𝑛) monotono rastua funkcija koja nije ograniqena, 𝑎 > 1 i 𝑐 > 0,onda je

𝑓(𝑛)𝑐 = 𝑜(𝑎𝑓(𝑛)

).

4.3 Vremenska i prostorna sloenost

Ocena (vremenske) sloenosti algoritma svodi se na brojae raqunskihoperacija koje treba izvrxiti. Meutim, termin raqunska operacija moeda podrazumeva razliqite operacije, na primer sabirae i mnoee, qijeizvrxavae traje razliqito vreme. Razliqite operacije se mogu posebnobrojati, ali je to obiqno komplikovano. Pored toga, vreme izvrxavaazavisi i od konkretnog raqunara, izabranog programskog jezika, odnosnoprevodioca. Zato se obiqno u okviru algoritma izdvaja neki osnovnikorak, onaj koji se najqexe ponava. Tako, ako se radi o sortirau,osnovni korak je uporeivae. Ako je broj uporeivaa 𝑂(𝑓(𝑛)), a brojostalih operacija je proporcionalan broju uporeivaa, onda je 𝑂(𝑓(𝑛))granica vremenske sloenosti algoritma.

Pod prostornom sloenoxu algoritma podrazumeva se veliqinamemorije potrebne za izvrxavae algoritma, pri qemu se prostor za smex-tae ulaznih podataka ne raquna. To omoguuje uporeivae razliqitihalgoritama za rexavae istog problema. Kao i kod vremenske sloenosti,i za prostornu sloenost se najqexe trai eno asimptotsko ponaxaeu najgorem sluqaju, za velike veliqine problema. Prostorna sloenost𝑂(𝑛) znaqi da je za izvrxavae algoritma potrebna memorija proporcio-nalna onoj za smextae ulaznih podataka. Ako je pak prostorna sloenostalgoritma𝑂(1), onda to znaqi da je potreban memorijski prostor za egovoizvrxavae ograniqen konstantom, bez obzira na veliqinu ulaza.

Brojae osnovnih koraka u algoritmu najqexe nije jednostavan posao.Razmotriemo nekoliko tipiqnih situacija na koje se nailazi: izraquna-vae konaqnih suma i rexavae diferencnih jednaqina.

Page 85: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

85 4. Analiza algoritama

4.4 Sumirae

Ako se algoritam sastoji od delova koji se izvrxavaju jedan za drugim,onda je egova sloenost jednaka zbiru sloenosti delova. Meutim, ovosabirae nije uvek jednostavno. Na primer, ako je osnovni deo algoritmapeta u kojoj indeks 𝑖 uzima vrednosti 1, 2, . . . , 𝑛, a izvrxavae 𝑖-tog pro-laska kroz petu troxi 𝑓(𝑖) koraka, onda je vremenska sloenost algo-ritma

∑𝑛𝑖=1 𝑓(𝑖). Razmotriemo neke primere sumiraa.

Primer: Ako je 𝑓(𝑖) = 𝑖, odnosno u 𝑖-tom prolasku kroz petu izvrxavase 𝑖 koraka, onda je ukupan broj koraka:

𝑆(𝑛) =

𝑛∑𝑖=1

𝑖 =1

2𝑛(𝑛 + 1).

Ako ovo uporedimo sa situacijom u kojoj se u svakom prolasku kroz petuizvrxava 𝑛 koraka, odnosno ukupno 𝑛2 koraka, vidimo da je u prvom sluqajubroj izvrxenih koraka priblino dva puta mai.

Primer:[Stepene sume] Ako sa 𝑆𝑘(𝑛) oznaqimo opxtiju sumu 𝑘-tih ste-

pena prvih 𝑛 prirodnih brojeva, 𝑆𝑘(𝑛) =∑𝑛

𝑖=1 𝑖𝑘, za izraqunavae suma

𝑆𝑘(𝑛) moe se iskoristiti rekurentna relacija

𝑆𝑘(𝑛) = − 1

𝑘 + 1

𝑘−1∑𝑗=0

(𝑘 + 1

𝑗

)𝑆𝑗(𝑛) +

1

𝑘 + 1

((𝑛 + 1)𝑘+1 − 1

).

u kojoj je vrednost 𝑆𝑘(𝑛) izraena preko svih prethodnih vrednosti 𝑆𝑗(𝑛),𝑗 = 0, . . . , 𝑘 − 1.

Ova jednakost dobija se na sledei naqin:

(𝑖 + 1)𝑘+1 =

𝑘+1∑𝑗=0

(𝑘 + 1

𝑗

)𝑖𝑗 =

𝑘−1∑𝑗=0

(𝑘 + 1

𝑗

)𝑖𝑗 + (𝑘 + 1)𝑖𝑘 + 𝑖𝑘+1

te ako obe strane podelimo sa (𝑘 + 1) i izrazimo 𝑖𝑘 dobijamo:

𝑖𝑘 = − 1

𝑘 + 1

𝑘−1∑𝑗=0

(𝑘 + 1

𝑗

)𝑖𝑗 +

1

𝑘 + 1

((𝑖 + 1)𝑘+1 − 𝑖𝑘+1

),

Sumiraem ovih jednakosti za 𝑖 = 1, 2, . . . , 𝑛 dobijamo traeni izraz za𝑆𝑘(𝑛).

Polazei od 𝑆0(𝑛) = 𝑛, 𝑆1(𝑛) = 𝑛(𝑛 + 1)/2, za 𝑘 = 2 se dobija

𝑆2(𝑛) =

𝑛∑𝑖=1

𝑖2 = −1

3

(𝑆0(𝑛) + 3𝑆1(𝑛)

)+

1

3

((𝑛 + 1)3 − 1

)=

=1

3

(−𝑛− 3

𝑛(𝑛 + 1)

2+ 𝑛3 + 3𝑛2 + 3𝑛

)=

1

6(2𝑛3 + 3𝑛2 + 𝑛) =

=1

6𝑛(𝑛 + 1)(2𝑛 + 1).

Page 86: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

4.4. Sumirae 86

Primer: Suma geometrijske progresije

𝐹 (𝑛) =

𝑛∑𝑖=0

𝑞𝑖 =𝑞𝑛+1 − 1

𝑞 − 1, 𝑞 = 1

dobija se oduzimaem jednakosti 𝐹 (𝑛) =∑𝑛

𝑖=0 𝑞𝑖 od 𝑞𝐹 (𝑛) =

∑𝑛𝑖=0 𝑞

𝑖+1 =∑𝑛+1𝑖=1 𝑞𝑖:

(𝑞 − 1)𝐹 (𝑛) =

𝑛+1∑𝑖=1

𝑞𝑖 −𝑛∑

𝑖=0

𝑞𝑖 = 𝑞𝑛+1 − 1.

Primer: Polazei od izraza za sumu geometrijske progresije moe seizraqunati suma

𝐺(𝑛) =

𝑛∑𝑖=1

𝑖2𝑖

Zaista, diferenciraem, pa mnoeem sa 𝑥 jednakosti

𝑛∑𝑖=0

𝑥𝑖 = (𝑥𝑛+1 − 1)/(𝑥− 1)

dobija se

𝑥

𝑛∑𝑖=1

𝑖𝑥𝑖−1 =

𝑛∑𝑖=1

𝑖𝑥𝑖 = 𝑥(𝑛 + 1)𝑥𝑛(𝑥− 1)− (𝑥𝑛+1 − 1)

(𝑥− 1)2.

Odatle se za 𝑥 = 2 dobija 𝐺(𝑛) =∑𝑛

𝑖=1 𝑖2𝑖 = (𝑛− 1)2𝑛+1 + 2.

Primer: Svoeem na prethodnu sumu moe se izraqunati suma

𝐻(𝑛) =

𝑛∑𝑖=1

𝑖2𝑛−𝑖.

Zaista, smenom indeksa sumiraa 𝑗 = 𝑛− 𝑖, 𝑖 = 𝑛− 𝑗, pri qemu 𝑗 prolaziskup vrednosti 𝑛− 1, 𝑛− 2, . . . , 𝑛− 𝑛 = 0, dobija se:

𝐻(𝑛) =

𝑛−1∑𝑗=0

(𝑛− 𝑗)2𝑗 = 𝑛

𝑛−1∑𝑗=0

2𝑗 −𝑛−1∑𝑗=0

𝑗2𝑗 = 𝑛𝐹 (𝑛− 1)−𝐺(𝑛− 1) =

= 𝑛(2𝑛 − 1)− (𝑛− 2)2𝑛 − 2 = 2𝑛+1 − 𝑛− 2.

4.4.1 Oceivae suma pomou integrala

U sluqaju kad je texko izraqunati sumu∑𝑛

𝑖=1 𝑓(𝑖), a funkcija 𝑓(𝑥) odrealnog argumenta je monotono nerastua neprekidna funkcija za 𝑥 ≥ 1,tada se sumiraem levih strana za 𝑖 = 1, 2, . . . , 𝑛, a desnih strana za 𝑖 =1, 2, . . . , 𝑛− 1 nejednakosti:

𝑓(𝑖) ≥∫ 𝑖+1

𝑖

𝑓(𝑥) 𝑑𝑥 ≥ 𝑓(𝑖 + 1), 1 ≤ 𝑖 ≤ 𝑛,

dobijaju granice intervala u kome lei suma∑𝑛

𝑖=1 𝑓(𝑖):∫ 𝑛

1

𝑓(𝑥) 𝑑𝑥 + 𝑓(1) ≥𝑛∑

𝑖=1

𝑓(𝑖) ≥∫ 𝑛+1

1

𝑓(𝑥) 𝑑𝑥.

Page 87: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

87 4. Analiza algoritama

Ako je pak funkcija 𝑓(𝑥) monotono neopadajua, onda je funkcija −𝑓(𝑥)nerastua, pa se primenom ovih nejednakosti na −𝑓(𝑥) dobija da u ovimnejednakostima samo treba promeniti znak \≥" u znak \≤".

Primer: Razmotrimo problem raqunaa sume 𝑆𝑘(𝑛) =∑𝑛

𝑖=1 𝑖𝑘 za 𝑘 > 0.

U ovom sluqaju funkcija 𝑓(𝑥) = 𝑥𝑘 je monotono neopadajua, pa se dobijaprocena: ∫ 𝑛

1

𝑓(𝑥) 𝑑𝑥 + 𝑓(1) ≤𝑛∑

𝑖=1

𝑓(𝑖) ≤∫ 𝑛+1

1

𝑓(𝑥) 𝑑𝑥

odnosno: ∫ 𝑛

1

𝑥𝑘 𝑑𝑥 + 1 ≤𝑛∑

𝑖=1

𝑖𝑘 ≤∫ 𝑛+1

1

𝑥𝑘 𝑑𝑥

Za 𝑘 = −1 je: ∫𝑥𝑘 𝑑𝑥 =

𝑥𝑘+1

𝑘 + 1+ 𝐶

Odavde za 𝑘 = −1 dobijamo narednu ocenu traene sume:

𝑛𝑘+1 − 1

𝑘 + 1+ 1 ≤

𝑛∑𝑖=1

𝑖𝑘 ≤ (𝑛 + 1)𝑘+1 − 1

𝑘 + 1

odnosno:

𝑛𝑘+1 + 𝑘

𝑘 + 1≤

𝑛∑𝑖=1

𝑖𝑘 ≤ (𝑛 + 1)𝑘+1

𝑘 + 1− 1

tj:

𝑆𝑘(𝑛) =

𝑛∑𝑖=1

𝑖𝑘 = Θ(𝑛𝑘+1)

Specijalno, za 𝑘 = 2 dobijamo:

𝑛∑𝑖=1

𝑖2 = Θ(𝑛3),

a za 𝑘 = 1/2:

𝑛∑𝑖=1

√𝑖 = Θ(𝑛3/2) = Θ(𝑛

√𝑛).

Ukoliko je 𝑘 < 0, funkcija 𝑓(𝑥) = 𝑥𝑘 je monotono opadajua (za 𝑥 > 0) paza 𝑘 = −1 vai naredna ocena:

(𝑛 + 1)𝑘+1

𝑘 + 1− 1 ≤

𝑛∑𝑖=1

𝑖𝑘 ≤ 𝑛𝑘+1

𝑘 + 1

Prema tome, za −1 < 𝑘 < 0 je 𝑆𝑘(𝑛) = Θ(𝑛𝑘+1), a za 𝑘 < −1 je 𝑆𝑘(𝑛) = Θ(1).U sluqaju 𝑘 = −1 vai da je:

Page 88: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

4.5. Diferencne jednaqine 88

∫1

𝑥𝑑𝑥 = ln𝑥 + 𝐶

i:

ln(𝑛 + 1) ≤𝑛∑

𝑖=1

1

𝑖≤ ln(𝑛) + 1

te vai:

𝑛∑𝑖=1

1

𝑖= Θ(log 𝑛)

Primer: Razmotrimo problem ocene vrednosti ln(𝑛!) =∑𝑛

𝑖=1 ln 𝑖. Funkcija𝑓(𝑥) = ln𝑥 je monotono neopadajua te moemo koristiti narednu procenu:∫ 𝑛

1

ln𝑥 𝑑𝑥 + ln 1 ≤𝑛∑

𝑖=1

ln 𝑖 ≤∫ 𝑛+1

1

ln𝑥 𝑑𝑥

Poxto vai da je ln 1 = 0 i da je∫

ln𝑥 = 𝑥 ln𝑥− 𝑥, dobijamo ocenu:

(𝑥 ln𝑥− 𝑥)|𝑛1 ≤ ln𝑛! ≤ (𝑥 ln𝑥− 𝑥)|𝑛+11

odnosno:

𝑛 ln𝑛− 𝑛 + 1 ≤ ln𝑛! ≤ (𝑛 + 1) ln(𝑛 + 1)− (𝑛 + 1) + 1

Iz ove procene, ako svaku stranu nejednakosti uzmemo kao eksponent broja𝑒 dobijamo:

𝑒(𝑛𝑒

)𝑛

≤ 𝑛! ≤ 𝑒

(𝑛 + 1

𝑒

)𝑛+1

= 𝑒(𝑛𝑒

)𝑛+1(

1 +1

𝑛

)𝑛+1

≤ 𝑒(𝑛𝑒

)𝑛

(𝑛 + 1)

Precizniji izraz za 𝑛!:

𝑛! ∼√

2𝜋𝑛(𝑛𝑒

)𝑛

zove se Stirlingova formula.

4.5 Diferencne jednaqine

Ako za qlanove niza 𝐹𝑛, 𝑛 = 1, 2, . . ., vai jednakost

𝐹𝑛 = 𝑓(𝐹𝑛−1, 𝐹𝑛−2, . . . , 𝐹1, 𝑛),

onda se kae da niz 𝐹𝑛 zadovoava tu diferencnu jednaqinu (ili re-kurentnu relaciju). Specijalno, ako se za neko 𝑘 ≥ 1 qlan 𝐹𝑛 izraavapreko 𝑘 prethodnih qlanova niza,

𝐹𝑛 = 𝑓(𝐹𝑛−1, 𝐹𝑛−2, . . . , 𝐹𝑛−𝑘, 𝑛),

onda je 𝑘 red te diferencne jednaqine. Matematiqkom indukcijom se ne-posredno dokazuje da je drugom diferencnom jednaqinom i sa prvih 𝑘

Page 89: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

89 4. Analiza algoritama

qlanova 𝐹1, 𝐹2, . . . , 𝐹𝑘 niz 𝐹𝑛 jednoznaqno odreen. Drugim reqima, akoneki niz𝐺𝑛 zadovoava istu diferencnu jednaqinu𝐺𝑛 = 𝑓(𝐺𝑛−1, 𝐺𝑛−2, . . . , 𝐺𝑛−𝑘, 𝑛),i vai 𝐹𝑖 = 𝐺𝑖 za 𝑖 = 1, 2, . . . , 𝑘, onda za svako 𝑛 ≥ 1 vai 𝐹𝑛 = 𝐺𝑛.

Jedna od najpoznatijih diferencnih jednaqina je ona koja definixeFibonaqijev niz,

𝐹𝑛 = 𝐹𝑛−1 + 𝐹𝑛−2, 𝐹1 = 𝐹2 = 1. (4.1)

Da bi se na osnovu e izraqunala vrednost 𝐹𝑛 potrebno je izvrxiti 𝑛− 2koraka (sabiraa), pa je ovakav naqin izraqunavaa 𝐹𝑛 nepraktiqan zavelike 𝑛. Taj problem je zajedniqki za sve nizove zadate diferencnimjednaqinama. Izraz koji omoguuje direktno izraqunavae proizvonogqlana niza (dakle ne preko prethodnih) zove se rexee diferencnejednaqine. Na diferencne jednaqine se qesto nailazi pri analizi algo-ritama. Zbog toga emo razmotriti nekoliko metoda za ihovo rexavae.

4.5.1 Dokazivae pretpostavenog rexea diferencne

jednaqine

Qesto se diferencne jednaqine rexavaju tako xto se pretpostavi oblikrexea, ili qak taqno rexee, posle qega se posle eventualnog precizi-raa rexea indukcijom dokazuje da to jeste rexee. Pri tome je qestodrugi deo posla, dokazivae, lakxi od prvog | pogaaa oblika rexea.

Primer: Posmatrajmo diferencnu jednaqinu

𝑇 (2𝑛) = 2𝑇 (𝑛) + 2𝑛− 1, 𝑇 (2) = 1. (4.2)

Ova diferencna jednaqina definixe vrednosti 𝑇 (𝑛) samo za indekseoblika 𝑛 = 2𝑚,𝑚 = 1, 2, . . .. Postavimo sebi skromniji ci| pronalaeeneke gore granice za 𝑇 (𝑛), odnosno funkcije 𝑓(𝑛) koja zadovoava uslov𝑇 (𝑛) ≤ 𝑓(𝑛) (za indekse 𝑛 koji su stepen dvojke, xto e se nadae podra-zumevati), ali tako da procena bude dovono dobra. Pokuxajmo najpre safunkcijom 𝑓(𝑛) = 𝑛2. Oqigledno je 𝑇 (2) = 1 < 𝑓(2) = 4.Ako pretpostavimoda je 𝑇 (𝑖) ≤ 𝑖2 za 𝑖 ≤ 𝑛 (induktivna hipoteza), onda je

𝑇 (2𝑛) = 2𝑇 (𝑛) + 2𝑛− 1 ≤ 2𝑛2 + 2𝑛− 1 = 4𝑛2 −(2𝑛(𝑛− 1) + 1

)< 4𝑛2,

pa je 𝑓(𝑛) gora granica za 𝑇 (𝑛) za sve (dozvoene) vrednosti 𝑛. Meutim,iz dokaza se vidi da je dobijena granica gruba: u odnosu na qlan 4𝑛2

odbaqen je qlan priblino jednak 2𝑛2 za velike 𝑛. S druge strane, akose pretpostavi da je gora granica linearna funkcija 𝑓(𝑖) = 𝑐𝑖 za 𝑖 ≤ 𝑛,onda bi trebalo dokazati da ona vai i za 𝑖 = 2𝑛:

𝑇 (2𝑛) = 2𝑇 (𝑛) + 2𝑛− 1 ≤ 2𝑐𝑛 + 2𝑛− 1.

Da bi posledi izraz bio mai od 𝑐 · 2𝑛, moralo bi da vai 2𝑛 − 1 ≤ 0,xto je nemogue za 𝑛 ≥ 1. Zakuqujemo da 𝑓(𝑛) = 𝑐𝑛 ne moe da budegora granica za 𝑇 (𝑛), bez obzira na vrednost konstante 𝑐. Trebalo bipokuxati sa nekim izrazom koji je po asimptotskoj brzini rasta izmeu 𝑛i 𝑛2. Ispostava se da je dobra granica zadata funkcijom 𝑓(𝑛) = 𝑛 log2 𝑛:𝑇 (2) = 1 ≤ 𝑓(2) = 2 log2 2 = 2, a ako je 𝑇 (𝑖) ≤ 𝑓(𝑖) taqno za 𝑖 ≤ 𝑛, onda je

𝑇 (2𝑛) = 2𝑇 (𝑛) + 2𝑛− 1 ≤ 2𝑛 log2 𝑛 + 2𝑛− 1 = 2𝑛 log2(2𝑛)− 1 < 2𝑛 log2(2𝑛).

Page 90: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

4.5. Diferencne jednaqine 90

Dakle, 𝑇 (𝑛) ≤ 𝑛 log2 𝑛 je taqno za svako 𝑛 oblika 2𝑘. Na osnovu qieniceda je u ovom dokazu pri prelasku sa 𝑛 na 2𝑛 zanemaren qlan 1 u odnosu na2𝑛 log2(2𝑛), zakuquje se da je procena ovog puta dovono dobra.

\Diferencna nejednaqina"

𝑇 (2𝑛) ≤ 2𝑇 (𝑛) + 2𝑛− 1, 𝑇 (2) = 1

definixe samo gore granice za 𝑇 (𝑛), ako je 𝑛 stepen dvojke. Svaka goragranica rexea (4.2) je rexee ove diferencne nejednaqine | dokazi in-dukcijom su praktiqno identiqni. Ova diferencna nejednaqina moe se,kao i (4.2), proxiriti tako da odreuje goru granicu za 𝑇 (𝑛) za svakiprirodan broj 𝑛:

𝑇 (𝑛) ≤ 2𝑇

(⌊𝑛2

⌋)+ 𝑛− 1, 𝑇 (1) = 0.

Moe se pokazati da za niz 𝑇 (𝑛), koji zadovoava ovaj uslov, nejednakost𝑇 (𝑛) ≤ 𝑛 log2 𝑛 vai za svako 𝑛 ≥ 1. Zaista, ona je taqna za 𝑛 = 1, a izpretpostavke da je ona taqna za brojeve mae od nekog prirodnog broja 𝑚sledi da je za 𝑚 = 2𝑘:

𝑇 (2𝑘) ≤ 2𝑇 (𝑘) + 2𝑘 − 1 ≤ 2𝑘 log2 𝑘 + 2𝑘 − 1 = 2𝑘 log2(2𝑘)− 1 < (2𝑘) log2(2𝑘)

odnosno za 𝑚 = 2𝑘 + 1:

𝑇 (2𝑘 + 1) ≤ 2𝑇 (𝑘) + 2𝑘 ≤ 2𝑘 log2 𝑘 + 2𝑘 = 2𝑘 log2(2𝑘) < (2𝑘 + 1) log2(2𝑘 + 1),

tj. data nejednakost je tada taqna i za 𝑛 = 𝑚. Dakle, ova nejednakost jedokazana indukcijom.

4.5.2 Linearne diferencne jednaqine

Razmotriemo sada homogene linearne diferencne jednaqine oblika

𝐹 (𝑛) = 𝑎1𝐹 (𝑛− 1) + 𝑎2𝐹 (𝑛− 2) + · · ·+ 𝑎𝑘𝐹 (𝑛− 𝑘). (4.3)

Rexea se mogu traiti u obliku:

𝐹 (𝑛) = 𝑟𝑛, (4.4)

gde je 𝑟 pogodno izabrani (u opxtem sluqaju) kompleksni broj. Zamenomu (4.3) dobija se uslov koji 𝑟 treba da zadovoi:

𝑟𝑘 − 𝑎1𝑟𝑘−1 − 𝑎2𝑟

𝑘−2 − · · · − 𝑎𝑘 = 0,

takozvana karakteristiqna jednaqina linearne diferencne jednaqi-ne (4.3); polinom sa leve strane ove jednaqine je karakteristiqni poli-nom ove linearne diferencne jednaqine. U sluqaju kad su svi koreni ka-rakteristiqnog polinoma 𝑟1, 𝑟2, . . . , 𝑟𝑘 razliqiti, dobijamo 𝑘 rexea (4.3)oblika (4.4). Tada se svako rexee moe predstaviti u obliku:

𝐹 (𝑛) =

𝑘∑𝑖=1

𝑐𝑖𝑟𝑛𝑖

Page 91: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

91 4. Analiza algoritama

(ovo tvree navodimo bez dokaza). Ako je prvih 𝑘 qlanova niza 𝐹 (𝑛)zadato, rexavaem sistema od 𝑘 linearnih jednaqina dobijaju se koefi-cijenti 𝑐𝑖, 𝑖 = 1, 2, . . . , 𝑘, a time i traeno rexee.

Primer: Opxti qlan niza zadatog diferencnom jednaqinom

𝐹𝑛 = 𝐹𝑛−1 + 𝐹𝑛−2,

i poqetnim uslovima 𝐹1 = 𝐹2 = 1 (Fibonaqijevog niza) moe se odreditina opisani naqin. Koreni karakteristiqne jednaqine 𝑟2 − 𝑟 − 1 = 0 su𝑟1 = (1 +

√5)/2 i 𝑟2 = (1−

√5)/2, pa je rexee ove diferencne jednaqine

oblika:𝐹𝑛 = 𝑐1𝑟

𝑛1 + 𝑐2𝑟

𝑛2 .

Koeficijenti 𝑐1 i 𝑐2 odreuju se iz uslova 𝐹1 = 𝐹2 = 1, ili nextojednostavnije iz uslova 𝐹0 = 𝐹2 − 𝐹1 = 0 i 𝐹1 = 1:

𝑐1 + 𝑐2 = 0

𝑐1𝑟1 + 𝑐2𝑟2 = 1.

Rexee ovog sistema jednaqina je 𝑐1 = −𝑐2 = 1√5, pa je opxti qlan Fibo-

naqijevog niza zadat sa:

𝐹𝑛 =1√5

((1 +√

5

2

)𝑛

−(1−

√5

2

)𝑛). (4.5)

U opxtem sluqaju, ako su koreni karakteristiqne jednaqine 𝑟1, 𝑟2, . . . , 𝑟𝑠vixestrukosti redom 𝑚1,𝑚2, . . . ,𝑚𝑠 (

∑𝑚𝑖 = 𝑘), onda se svako rexee

jednaqine (4.3) moe predstaviti u obliku:

𝐹 (𝑛) =

𝑠∑𝑖=1

ℎ𝑖(𝑛),

gde jeℎ𝑖(𝑛) =

(𝐶𝑖0 + 𝐶𝑖1𝑛 + 𝐶𝑖2𝑛

2 + · · ·+ 𝐶𝑖,𝑚𝑖−1𝑛𝑚𝑖−1

)𝑟𝑛𝑖

(ovo tvree takoe navodimo bez dokaza).Primer: Karakteristiqni polinom diferencne jednaqine

𝐹 (𝑛) = 6𝐹 (𝑛− 1)− 12𝐹 (𝑛− 2) + 8𝐹 (𝑛− 3)

je 𝑟3 − 6𝑟2 + 12𝑟− 8 = (𝑟− 2)3, sa trostrukim korenom 𝑟1 = 2. Zbog toga susva rexea ove diferencne jednaqine oblika 𝐹 (𝑛) = (𝑐0 + 𝑐1𝑛 + 𝑐2𝑛

2)2𝑛,gde su 𝑐0, 𝑐1, 𝑐2 konstante koje se mogu odrediti ako se znaju npr. tri prvaqlana niza 𝐹 (1), 𝐹 (2) i 𝐹 (3).

4.5.3 Diferencne jednaqine koje se rexavaju sumiraem

Qesto se nailazi na linearnu nehomogenu diferencnu jednaqinu oblika

𝐹 (𝑛 + 1)− 𝐹 (𝑛) = 𝑓(𝑛), (4.6)

pri qemu 𝐹 (0) ima zadatu vrednost. Drugim reqima, razlika dva uzastopnaqlana traenog niza jednaka je datoj funkciji od indeksa 𝑛. Rexavae

Page 92: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

4.5. Diferencne jednaqine 92

ovakve diferencne jednaqine svodi se na izraqunavae sume∑𝑛−1

𝑖=1 𝑓(𝑖).Zaista, ako u goroj jednakosti 𝑛 zamenimo sa 𝑖 i izvrximo sumiraeene leve i desne strane po 𝑖 u granicama od 0 do 𝑛− 1, dobijamo

𝑛−1∑𝑖=0

𝑓(𝑖) =

𝑛−1∑𝑖=0

𝐹 (𝑖 + 1)−𝑛−1∑𝑖=0

𝐹 (𝑖) =

𝑛∑𝑖=1

𝐹 (𝑖)−𝑛−1∑𝑖=0

𝐹 (𝑖) = 𝐹 (𝑛)− 𝐹 (0).

Prema tome, rexee diferencne jednaqine (4.6) dato je izrazom

𝐹 (𝑛) =

𝑛−1∑𝑖=0

𝑓(𝑖) + 𝐹 (0). (4.7)

Primer: Razmotrimo diferencnu jednaqinu 𝐹 (𝑛 + 1) = 𝐹 (𝑛) + 2𝑛 + 1sa poqetnim uslovom 𝐹 (0) = 0. eno rexee je

𝐹 (𝑛) =

𝑛−1∑𝑖=0

(2𝑖 + 1) = 2

𝑛−1∑𝑖=0

𝑖 +

𝑛−1∑𝑖=0

1 = 𝑛(𝑛− 1) + 𝑛 = 𝑛2

4.5.4 Diferencne jednaqine za algoritme zasnovane na

razlagau

Pretpostavimo da nam je ci analiza algoritma 𝐴, pri qemu brojoperacija 𝑇 (𝑛) pri primeni algoritma 𝐴 na ulaz veliqine 𝑛 (vremenskasloenost) zadovoava diferencnu jednaqinu oblika

𝑇 (𝑛) = 𝑎𝑇(𝑛𝑏

)+ 𝑐𝑛𝑘, (4.8)

pri qemu je 𝑎, 𝑏, 𝑐, 𝑘 ≥ 0, 𝑏 = 0, i zadata je vrednost 𝑇 (1). Ovakva jednaqinadobija se za algoritam kod koga se obrada ulaza veliqine 𝑛 svodi na obradu𝑎 ulaza veliqine 𝑛/𝑏, posle qega je potrebno izvrxiti jox 𝑐𝑛𝑘 korakada bi se od parcijalnih rexea konstruisalo rexee kompletnog ulazaveliqine 𝑛. Jasno je zaxto se za ovakve algoritme kae da su tipa "zavadipa vladaj", (engleski divide–and–conquer), kako se jox zovu algoritmizasnovani na razlagau. Obiqno je u ovakvim diferencnim jednaqinama𝑏 prirodan broj.

Teorema [Master teorema]: Asimptotsko ponaxae niza 𝑇 (𝑛), rexeadiferencne jednaqine (4.8) dato je jednakoxu:

𝑇 (𝑛) =

⎧⎪⎨⎪⎩𝑂(𝑛log𝑏 𝑎) za 𝑎 > 𝑏𝑘

𝑂(𝑛𝑘 log 𝑛) za 𝑎 = 𝑏𝑘

𝑂(𝑛𝑘) za 𝑎 < 𝑏𝑘. (4.9)

Dokaz: Dokaz teoreme bie sproveden samo za podniz 𝑛 = 𝑏𝑚, gde je 𝑚celi nenegativni broj. Pomnoivxi obe strane jednakosti (4.8) sa 𝑎−𝑚/𝑐,dobijamo diferencnu jednaqinu tipa (4.6)

𝑡𝑚 = 𝑡𝑚−1 + 𝑞𝑚, 𝑡0 =1

𝑐𝑇 (1),

Page 93: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

93 4. Analiza algoritama

gde su uvedene oznake 𝑡𝑚 = 1𝑐𝑎

−𝑚𝑇 (𝑏𝑚) i 𝑞 = 𝑏𝑘/𝑎. eno rexee je

𝑡𝑚 = 𝑡0 +

𝑚∑𝑖=1

𝑞𝑖

(videti 4.5.3). Za 𝑞 = 1 je∑𝑚

𝑖=1 𝑞𝑖 = (1−𝑞𝑚+1)/(1−𝑞)−1, pa se asimptotsko

ponaxae niza 𝑡𝑚 opisuje sledeim jednakostima:

𝑡𝑚 =

⎧⎪⎨⎪⎩𝑂(𝑚), za 𝑞 = 1

𝑂(1), za 0 < 𝑞 < 1

𝑂(𝑞𝑚), za 𝑞 > 1

.

Poxto je 𝑇 (𝑏𝑚) = 𝑐𝑎𝑚𝑡𝑚, 𝑛 = 𝑏𝑚, odnosno 𝑚 = log𝑏 𝑛, redom se za 0 < 𝑞 < 1(𝑏𝑘 < 𝑎), 𝑞 = 1 (𝑏𝑘 = 𝑎, odnosno log𝑏 𝑎 = 𝑘) i 𝑞 > 1 (𝑏𝑘 > 𝑎) dobija

𝑇 (𝑛) =

⎧⎪⎨⎪⎩𝑂(𝑎𝑚) = 𝑂(𝑏log𝑏 𝑎𝑚

) = 𝑂(𝑏𝑚 log𝑏 𝑎) = 𝑂(𝑛log𝑏 𝑎) za 𝑎 > 𝑏𝑘

𝑂(𝑚𝑎𝑚) = 𝑂(log𝑏 𝑛 · 𝑛log𝑏 𝑎) = 𝑂(𝑛𝑘 log 𝑛) za 𝑎 = 𝑏𝑘

𝑂((𝑎𝑞)𝑚) = 𝑂(𝑏𝑚𝑘) = 𝑂(𝑛𝑘) za 𝑎 < 𝑏𝑘,

qime je tvree teoreme dokazano.Algoritmi ovog tipa imaju xiroku primenu zbog svoje efikasnosti, pa

je korisno znati asimptotsko ponaxae rexea diferencne jednaqine (4.8).

4.5.5 Potpuna rekurzija

Diferencna jednaqina najopxtijeg oblika (4.5) zove se potpuna re-kurzija ili diferencna jednaqina sa potpunom istorijom. Razmo-triemo dva primera ovakvih diferencnih jednaqina.

Primer: Neka za 𝑛 ≥ 2 vai 𝑇 (𝑛) = 𝑐+∑𝑛−1

𝑖=1 𝑇 (𝑖), pri qemu su 𝑐 i 𝑇 (1)zadati. Osnovna ideja za rexavae ovakvih problema je tzv. \eliminaci-ja istorije" nalaeem ekvivalentne diferencne jednaqine sa \konaqnomistorijom" (takve kod koje se qlan niza izraava preko ograniqenog brojaprethodnih). Zamenom 𝑛 sa 𝑛 − 1 u ovoj jednaqini dobija se 𝑇 (𝑛 − 1) =

𝑐 +∑𝑛−2

𝑖=1 𝑇 (𝑖). Oduzimaem druge od prve jednakosti postie se eeniefekat:

𝑇 (𝑛)− 𝑇 (𝑛− 1) = 𝑐 +

𝑛−1∑𝑖=1

𝑇 (𝑖)−(𝑐 +

𝑛−2∑𝑖=1

𝑇 (𝑖))

= 𝑇 (𝑛− 1)

(za 𝑛 ≥ 2), i konaqno

𝑇 (𝑛) = 2𝑇 (𝑛− 1) = 22𝑇 (𝑛− 2) = · · · = 2𝑛−2𝑇 (2) = 2𝑛−2(𝑐 + 𝑇 (1)

).

Primetimo da se jednakost 𝑇 (𝑛) = 2𝑇 (𝑛 − 1) logaritmovaem i smenom𝑡𝑛 = log 𝑇 (𝑛) svodi na jednaqinu 𝑡𝑛 = 𝑡𝑛−1 + log 2, odnosno diferencnujednaqinu tipa (4.6).

Primer: Razmotriemo sada sloeniji primer. Diferencna jednaqina

𝑇 (𝑛) = 𝑛− 1 +2

𝑛

𝑛−1∑𝑖=1

𝑇 (𝑖), 𝑛 ≥ 2, 𝑇 (1) = 0, (4.10)

Page 94: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

4.5. Diferencne jednaqine 94

je vana, jer se do e dolazi pri analizi proseqne sloenosti sortiraarazdvajaem. Ideja o "eliminaciji istorije" moe se i ovde primeniti| zbog toga je zgodno prepisati zadatu jednaqinu tako da se u oj uz sumu∑𝑛−1

𝑖=1 𝑇 (𝑖) ne pojavuje promenivi qinilac 𝑛:

𝑛𝑇 (𝑛) = 𝑛(𝑛− 1) + 2

𝑛−1∑𝑖=1

𝑇 (𝑖).

Zatim ovu jednakost treba oduzeti od one koja se od e dobija zamenom 𝑛sa 𝑛 + 1:

(𝑛+1)𝑇 (𝑛+1)−𝑛𝑇 (𝑛) = (𝑛+1)𝑛+2

𝑛∑𝑖=1

𝑇 (𝑖)−𝑛(𝑛−1)−2

𝑛−1∑𝑖=1

𝑇 (𝑖) = 2𝑛+2𝑇 (𝑛),

odnosno

𝑇 (𝑛 + 1) =2𝑛

𝑛 + 1+

𝑛 + 2

𝑛 + 1𝑇 (𝑛), 𝑛 ≥ 2.

Ovim je prvi ci postignut: dobijena diferencna jednaqina povezuje samodva uzastopna qlana niza. Rexavae ove diferencne jednaqine moe sesvesti na poznat problem (4.6) deeem sa 𝑛+2 i smenom 𝑡𝑛 = 𝑇 (𝑛)/(𝑛+1):

𝑇 (𝑛 + 1)

𝑛 + 2− 𝑇 (𝑛)

𝑛 + 1=

2𝑛

(𝑛 + 1)(𝑛 + 2),

odnosno

𝑡𝑛+1 − 𝑡𝑛 =2𝑛

(𝑛 + 1)(𝑛 + 2).

Zamenom 𝑛 sa 𝑖 i sumiraem po 𝑖 u granicama od 1 do 𝑛−1 dobija se (𝑡1 = 0)

𝑡𝑛 − 𝑡1 =

𝑛−1∑𝑖=1

2𝑖

(𝑖 + 1)(𝑖 + 2). (4.11)

Da bi se izraqunala suma sa desne strane ove jednakosti, moe se enopxti qlan razloiti na parcijalne razlomke

2𝑖

(𝑖 + 1)(𝑖 + 2)=

𝐴

𝑖 + 1+

𝐵

𝑖 + 2,

gde se nepoznati koeficijenti 𝐴 i 𝐵 dobijaju tako xto se u identitetu2𝑖 = 𝐴(𝑖 + 2) + 𝐵(𝑖 + 1) stavi najpre 𝑖 = −1 (dobija se 𝐴 = −2), a onda𝑖 = −2 (odakle je 𝐵 = 4). Sada je traena suma jednaka

𝑛−1∑𝑖=1

2𝑖

(𝑖 + 1)(𝑖 + 2)= −2

𝑛−1∑𝑖=1

1

𝑖 + 1+ 4

𝑛−1∑𝑖=1

1

𝑖 + 2= −2

𝑛∑𝑖=2

1

𝑖+ 4

𝑛+1∑𝑖=3

1

𝑖=

= 2

𝑛∑𝑖=3

1

𝑖− 2 · 1

2+

4

𝑛 + 1= 2𝐻(𝑛)− 4 +

4

𝑛 + 1,

gde je sa

𝐻(𝑛) =

𝑛∑𝑖=1

1

𝑖= Θ(log 𝑛), (4.12)

oznaqena parcijalna suma harmonijskog reda. Zamenom vrednosti sumeu (4.11) dobija se rexee diferencne jednaqine (4.10)

𝑇 (𝑛) = (𝑛 + 1)𝑡𝑛 = Θ(𝑛 log 𝑛)

Page 95: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

95 4. Analiza algoritama

4.6 Zadaci za vebu

1. Da li vai: 2𝑛+1 = 𝑂(2𝑛)? Da li vai: 22𝑛 = 𝑂(2𝑛)?

2. Za svaki par funkcija (𝐴,𝐵) u datoj tabeli oznaqiti da li vai daje funkcija 𝐴 𝑂, 𝑜,Ω,Θ od funkcije 𝐵. Pretpostaviti da su 𝑘, 𝜖 i𝑐 konstante koje zadovoavaju uslove 𝑘 ≥ 1, 𝜖 > 0, 𝑐 > 0. U svako odpoa tabele upisati da ili ne.

𝐴 𝐵 𝑂 𝑜 Ω Θ

log𝑘 𝑛 𝑛𝜖

𝑛𝑘 𝑐𝑛√𝑛 𝑛sin𝑛

2𝑛 2𝑛/2

𝑛log 𝑐 𝑐log𝑛

log(𝑛!) log(𝑛𝑛)

3. Rangirati naredne funkcije prema brzini rasta, tj. pronai ureeefunkcija tako da vai 𝑔1 = Ω(𝑔2), 𝑔2 = Ω(𝑔3), . . .. Particionisatilistu u klase ekvivalencija tako da su funkcije 𝑓(𝑛) i 𝑔(𝑛) u istojklasi ako i samo ako vai 𝑓(𝑛) = Θ(𝑔(𝑛)):

(√

2)log2 𝑛, 𝑛2, 𝑛!, (log2 𝑛)!, (3/2)𝑛, 𝑛3, log22 𝑛, 22

𝑛

, ln ln𝑛, 𝑛 · 2𝑛, ln𝑛, 1,

2log2 𝑛, (log2 𝑛)log2 𝑛, 𝑒𝑛, 4log2 𝑛, (𝑛 + 1)!,√

log2 𝑛, 𝑛, 2𝑛, 𝑛 log2 𝑛, 22𝑛+1

.

4. Korixeem master teoreme dati asimptotski bliske granice zanaredne rekurentne jednaqine:

a) 𝑇 (𝑛) = 2𝑇 (𝑛/4) + 1

b) 𝑇 (𝑛) = 2𝑇 (𝑛/4) +√𝑛

c) 𝑇 (𝑛) = 2𝑇 (𝑛/4) + 𝑛

d) 𝑇 (𝑛) = 2𝑇 (𝑛/4) + 𝑛2

5. Dati asimptotske gore i doe granice za 𝑇 (𝑛) ako je:

a) 𝑇 (𝑛) = 𝑇 (𝑛− 1) + 1/𝑛

b) 𝑇 (𝑛) = 𝑇 (𝑛− 1) + log 𝑛

c) 𝑇 (𝑛) =√𝑛𝑇 (√𝑛) + 𝑛

6. Za svaki od narednih izraza za 𝑓(𝑛) pronai jednostavan oblik funkcije𝑔(𝑛) tako da vai: 𝑓(𝑛) = Θ(𝑔(𝑛)).

a) 𝑓(𝑛) =∑𝑛

𝑖=11𝑖

b) 𝑓(𝑛) =∑𝑛

𝑖=1⌈1𝑖 ⌉

7. Poreati naredne funkcije rastue prema brzini rasta:

𝑓1(𝑛) =∑𝑛

𝑖=1

√𝑖, 𝑓2(𝑛) =

√𝑛 log 𝑛, 𝑓3(𝑛) = 𝑛

√log 𝑛, 𝑓4(𝑛) = 12𝑛3/2 +

4𝑛.

8. Odrediti funkciju 𝑓 tako da vai∑𝑛

𝑖=1 𝑖 log 𝑖 = Θ(𝑓(𝑛)).

Page 96: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

4.6. Zadaci za vebu 96

9. Za svaki od narednih izraza 𝑓(𝑛) pronai jednostavan oblik funkcije𝑔(𝑛) tako da je 𝑓(𝑛) = Θ(𝑔(𝑛)).

a) 𝑓(𝑛) =∑𝑛

𝑖=1(3𝑖4 + 2𝑖3 − 19𝑖 + 20)

b) 𝑓(𝑛) =∑𝑛

𝑖=1(3 · 4𝑖 + 2 · 3𝑖 − 𝑖19 + 20)

c) 𝑓(𝑛) =∑𝑛

𝑖=1(5𝑖 + 32𝑖)

10. Za svaki od narednih izraza 𝑓(𝑛) pronai jednostavan oblik funkcije𝑔(𝑛) tako da je 𝑓(𝑛) = Θ(𝑔(𝑛)).

a) 𝑓1(𝑛) = 1000 · 2𝑛 + 4𝑛

b) 𝑓2(𝑛) = 𝑛 + 𝑛 log 𝑛 +√𝑛

c) 𝑓3(𝑛) = log(𝑛20) + (log 𝑛)10

d) 𝑓4(𝑛) = 0.99𝑛 + 𝑛100

Page 97: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

Glava 5

Grafovski algoritmi

Podsetimo se nekih osnovnih pojmova u vezi sa grafovima. Graf 𝐺 =(𝑉,𝐸) se sastoji od skupa 𝑉 qvorova i skupa 𝐸 grana. Svaka granaodgovara paru razliqitih qvorova (ponekad su dozvoene pete, odnosnograne koje vode od qvora ka emu samom). Graf moe biti neusmerenili usmeren. Grane usmerenog grafa su ureeni parovi qvorova; redosleddva qvora koje povezuje grana je bitan. Ako se graf predstava crteom,onda se grane usmerenog grafa crtaju kao strelice usmerene od jednogqvora (poqetka) ka drugom qvoru (kraju grane). Grane neusmerenog grafasu neureeni parovi: one se crtaju kao obiqne dui (linije). Stepen 𝑑(𝑣)qvora 𝑣 je broj grana susednih qvoru 𝑣 (odnosno broj grana koje 𝑣 povezujusa nekim drugim qvorom). U usmerenom grafu razlikujemo ulazni stepenqvora 𝑣, broj grana za koje je qvor 𝑣 kraj, odnosno izlazni stepen qvora𝑣, broj grana za koje je qvor 𝑣 poqetak.

Put od qvora 𝑣1 do qvora 𝑣𝑘 je niz qvorova 𝑣1, 𝑣2, . . . , 𝑣𝑘 povezanihgranama (𝑣1, 𝑣2), (𝑣2, 𝑣3), . . . , (𝑣𝑘−1, 𝑣𝑘). Put je prost, ako se svaki qvoru emu pojavuje samo jednom. Za qvor 𝑢 se kae da je dostian izqvora 𝑣 ako postoji put (usmeren, odnosno neusmeren, zavisno od grafa)od 𝑣 do 𝑢. Po definiciji je qvor 𝑣 dostian iz 𝑣. Ciklus je put qijise prvi i posledi qvor poklapaju. Ciklus je prost ako se, sem prvogi posledeg qvora, ni jedan drugi qvor u emu ne pojavuje dva puta.Neusmereni oblik usmerenog grafa 𝐺 = (𝑉,𝐸) je isti graf, bez smerovana granama (tako da su parovi qvorova u 𝐸 neureeni). Za graf se kaeda je povezan ako (u egovom neusmerenom obliku) postoji put izmeuproizvona dva qvora.Xuma je graf koji (u svom neusmerenom obliku) nesadri cikluse.Stablo ili drvo je povezana xuma.Korensko stablo jeusmereno stablo sa jednim posebno izdvojenim qvorom, koji se zove koren,pri qemu su sve grane usmerene od korena. Stablo sa izabranim qvorom korenom jednoznaqno odreuje korensko stablo.

Graf 𝐻 = (𝑈,𝐹 ) je podgraf grafa 𝐺 = (𝑉,𝐸) ako je 𝑈 ⊆ 𝑉 i 𝐹 ⊆ 𝐸.Povezujue stablo neusmerenog grafa 𝐺 je egov podgraf koji je stabloi sadri sve qvorove grafa 𝐺. Povezujua xuma neusmerenog grafa𝐺 je egov podgraf koji je xuma i sadri sve qvorove grafa 𝐺. Akoneusmereni graf 𝐺 = (𝑉,𝐸) nije povezan, onda se on moe na jedinstvennaqin razloiti u skup povezanih podgrafova, koji se zovu komponente

97

Page 98: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

5.1. Obilasci grafova 98

povezanosti grafa 𝐺.Mnoge definicije pojmova za usmerene i neusmerene grafove su sliqne,

izuzev nekih oqiglednih razlika. Na primer, usmereni i neusmereni putevidefinixu se na isti naqin, sem xto se kod usmerenih grafova precizirajui smerovi grana. Znaqee takvih termina zavisi od konteksta; ako se, naprimer, radi o putevima u usmerenom grafu, onda se misli na usmereneputeve.

5.1 Obilasci grafova

Prvi problem na koji se nailazi pri konstrukciji bilo kog algoritmaza obradu grafa je kako pregledati ulaz. U sluqaju nizova i skupovataj problem je trivijalan zbog jednodimenzionalnosti ulaza | nizovii skupovi mogu se lako pregledati linearnim redosledom. Pregledaegrafa, odnosno egov obilazak, nije trivijalan problem. Postoje dvaosnovna algoritma za obilazak grafa: pretraga u dubinu i pretragau xirinu.

5.1.1 Pretraga u dubinu

Pretraga u dubinu (DFS, skraenica od depth–first–search) je praktiqnoista za neusmerene i usmerene grafove. Meutim, poxto elimo da ispita-mo neke osobine grafova koje nisu iste za neusmerene i usmerene grafove,razmatrae e biti podeeno na dva dela.

Neusmereni grafovi

Pretpostavimo da graf 𝐺 = (𝑉,𝐸) odgovara umetniqkoj galeriji, koja sesastoji od niza hodnika sa slikama na zidovima. Grane grafa 𝐺 odgovarajuhodnicima, a qvorovi odgovaraju raskrsnicama presecima hodnika. Mihoemo da obiemo galeriju i vidimo sve slike. Pretpostavka je da u tokuprolaska kroz hodnik u bilo kom smeru vidimo slike na oba egova zida.Pritom se dozvoava prolazak iste grane vixe nego jednom (kao xto ese videti, svaka grana bie pregledana taqno dva puta). Ideja na kojojse zasniva pretraga u dubinu je sledea. Prolazimo kroz galeriju vodeiraquna da uemo u novi hodnik uvek kad je to mogue. Kada prvi put uemou neku raskrsnicu, ostavamo kamenqi i nastavamo kroz neki drugihodnik (izuzev ako je hodnik kojim smo doxli slepa ulica). Kad doemodo raskrsnice u kojoj ve postoji kamenqi, vraamo se istim putem nazad,i pokuxavamo kroz neki drugi hodnik. Ako su svi hodnici koji vode izraskrsnice pregledani, onda uklaamo kamenqi iz raskrsnice i vraamose hodnikom kroz koji smo prvi put uxli u raskrsnicu. Ovu raskrsnicuvixe neemo poseivati (kamenqi se uklaa zbog odravaa reda ugaleriji; uklaae nije suxtinski deo algoritma). Uvek se trudimo daispitujemo nove hodnike; kroz hodnik kojim smo prvi put uxli u raskrs-nicu vraamo se tek kad smo proxli sve hodnike koji vode iz raskrsnice.Ovaj pristup zove se pretraga u dubinu (DFS), xto je u vezi sa pravilomda se poseuju uvek novi hodnici (idui sve dube u galeriju). Osnovnirazlog korisnosti pretrage u dubinu lei u enoj jednostavnosti i lakojrealizaciji rekurzivnim algoritmom.

Page 99: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

99 5. Grafovski algoritmi

Posle opisa pretrage u dubinu na primeru obilaska galerije, razmo-trimo problem pretrage u dubinu kada je listom povezanosti zadat grafi qvor 𝑟 grafa iz koga se zapoqie pretraga. Qvor 𝑟 se oznaqava kaoposeen. Zatim se u listi suseda qvora 𝑟 pronalazi prvi neoznaqeni sused𝑟1 qvora 𝑟, pa se iz qvora 𝑟1 rekurzivno pokree pretraga u dubinu. Iznekog nivoa rekurzije, pokrenutog iz qvora 𝑣, izlazi se ako su svi susedi(ako ih ima) qvora 𝑣 iz koga je pretraga pokrenuta ve oznaqeni. Ako suu trenutku zavrxetka pretrage iz 𝑟1 svi susedi qvora 𝑟 oznaqeni, ondase pretraga za qvor 𝑟 zavrxava. U protivnom se u listi suseda qvora 𝑟pronalazi sledei neoznaqeni sused 𝑟2, izvrxava se pretraga polazei od𝑟2, itd.

Pretraga grafa uvek se vrxi sa nekim ciem. Da bi se razliqiteprimene uklopile u pretragu u dubinu, poseti qvora ili grane pridru-uju se dve vrste obrade, ulazna obrada i izlazna obrada. Ulaznaobrada vrxi se u trenutku oznaqavaa qvora. Izlazna obrada vrxi seposle povratka nekom granom (posle zavrxetka rekurzivnog poziva), ilikad se otkrije da neka grana vodi ve oznaqenom qvoru. Ulazna i izlaznaobrada zavise od konkretne primene DFS. Na taj naqin mogue je rexavaerazliqitih problema jednostavnim definisaem ulazne i izlazne obrade.Algoritam pretrage u dubinu dat je u nastavku. Polazni qvor za rekurzivnupretragu grafa𝐺 = (𝑉,𝐸) je 𝑣. Zbog jednostavnosti se za sada pretpostavada je graf 𝐺 povezan.

𝐷𝐹𝑆(𝐺, 𝑣)ulaz: 𝐺 = (𝑉,𝐸) - neusmereni povezan graf i 𝑣 - qvor grafa 𝐺izlaz: zavisi od primene1 oznaqi 𝑣2 izvrxi ulaznu obradu za 𝑣3 ulazna obrada zavisi od primene DFS4 for all grane (𝑣, 𝑤) do5 redosled suseda qvora 𝑣 u peti odreen je listom povezanosti6 if 𝑤 je neoznaqen then7 𝐷𝐹𝑆(𝐺,𝑤)8 izvrxi izlaznu obradu za granu (𝑣, 𝑤)9 izlazna obrada zavisi od primene DFS10 ona se ponekad vrxi samo za grane ka novoooznaqenim qvorovima

Primer pretrage grafa u dubinu prikazan je na slici 5.1.

Lema: Ako je graf 𝐺 povezan, onda su po zavrxetku pretrage u dubinusvi qvorovi oznaqeni, a sve grane grafa 𝐺 su pregledane bar po jednom.

Dokaz: Pretpostavimo suprotno, i oznaqimo sa 𝑈 skup neoznaqenihqvorova zaostalih posle izvrxavaa algoritma. Poxto je 𝐺 povezan, barjedan qvor 𝑢 iz 𝑈 mora biti povezan granom sa nekim oznaqenim qvorom𝑤 (skup oznaqenih qvorova je neprazan jer sadri bar qvor 𝑣). Meutim,ovako nexto je nemogue, jer kad se poseti qvor 𝑤, moraju biti poseeni (padakle i oznaqeni) svi egovi neoznaqeni susedi, dakle i qvor 𝑢. Poxtosu svi qvorovi poseeni, a kad se qvor poseti, onda se pregledaju sve granekoje vode iz ega, zakuqujemo da su i sve grane grafa pregledane.

Page 100: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

5.1. Obilasci grafova 100

ddd

d d d ddd

d𝑎 : 1/10

𝑏 : 2/5

𝑒 : 3/1 𝑓 : 4/4

𝑗 : 5/3

𝑔 : 6/2

𝑐 : 7/9

ℎ : 8/8 𝑖 : 9/7

𝑑 : 10/6

𝑎 : 𝑏, 𝑔, 𝑐, 𝑑

𝑏 : 𝑎, 𝑒, 𝑓, 𝑔

𝑐 : 𝑎, ℎ, 𝑖, 𝑑

𝑑 : 𝑎, 𝑐, ℎ, 𝑖

𝑒 : 𝑏

𝑓 : 𝑏, 𝑗, 𝑔

𝑔 : 𝑎, 𝑏, 𝑓, 𝑗

ℎ : 𝑐, 𝑖, 𝑑

𝑖 : 𝑑, 𝑐, ℎ

𝑗 : 𝑓, 𝑔

Slika 5.1: Primer pretrage u dubinu. Dva broja uz qvor jednakasu egovim rednim brojevima pri dolaznoj, odnosno odlaznoj DFSnumeraciji.

Za nepovezane grafove se algoritam DFS mora promeniti. Ako su sviqvorovi oznaqeni posle prvog pokretaa opisanog algoritma, onda je grafpovezan, i obilazak je zavrxen. U protivnom, moe se pokrenuti novapretraga u dubinu polazei od proizvonog neoznaqenog qvora, itd. Prematome, DFS se moe iskoristiti da bi se ustanovilo da li je graf povezan,odnosno za pronalaee svih egovih komponenti povezanosti. Algoritamse moe prikazati sledeim kodom.

𝐾𝑜𝑚𝑝𝑜𝑛𝑒𝑛𝑡𝑒 𝑝𝑜𝑣𝑒𝑧𝑎𝑛𝑜𝑠𝑡𝑖(𝐺)ulaz: 𝐺 = (𝑉,𝐸) - neusmereni grafizlaz: 𝑣.𝐾𝑜𝑚𝑝 za svaki qvor dobija vrednost jednaku rednom broju

komponente povezanosti koja sadri 𝑣1 𝑅𝑏 𝑘𝑜𝑚𝑝← 12 while postoji neoznaqen qvor 𝑣 do3 𝐷𝐹𝑆(𝐺, 𝑣)4 sa sledeom ulaznom obradom: 𝑣.𝐾𝑜𝑚𝑝← 𝑅𝑏 𝑘𝑜𝑚𝑝5 𝑅𝑏 𝑘𝑜𝑚𝑝← 𝑅𝑏 𝑘𝑜𝑚𝑝 + 1

Mi emo najqexe razmatrati samo povezane grafove, jer se u opxtemsluqaju problem svodi na posebnu obradu svake komponente povezanosti.

Sloenost: Lako je uveriti se da se svaka grana pregleda taqno dvaputa, po jednom sa svakog kraja. Prema tome, ukupan broj izvrxavaa telafor pete u svim rekurzivnim pozivima algoritma DFS je 𝑂|𝐸|). S drugestrane, broj rekurzivnih poziva je |𝑉 |, pa se sloenost algoritma moeopisati izrazom 𝑂(|𝑉 |+ |𝐸|).

Konstrukcija DFS stabla

Prikazaemo sada dve jednostavne primene algoritma DFS | numeracijuqvorova grafa DFS brojevima, i formirae specijalnog povezujueg sta-bla, takozvanog DFS stabla. Prilikom obilaska grafa 𝐺 mogu se u peti

Page 101: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

101 5. Grafovski algoritmi

kojom se prolaze susedi qvora 𝑣 izdvojiti sve grane ka novooznaqenimqvorovima 𝑤. Preko izdvojenih grana dostini su svi qvorovi povezanogneusmerenog grafa, pa je podgraf koga qine izdvojene grane povezan. Tajpodgraf nema cikluse, jer se od svih grana koje vode u neki qvor, moeizdvojiti samo jedna. Prema tome, izdvojene grane su grane podgrafa grafa𝐺 koji je stablo | DFS stablo grafa 𝐺. Polazni qvor je koren DFSstabla. DFS brojevi i DFS stablo imaju posebne osobine, koje su korisneu mnogim algoritmima. Qak i ako se stablo ne formira eksplicitno,mnoge algoritme je lakxe razumeti razmatrajui DFS stablo. Da bi seopisali opisali algoritmi za numeraciju qvorova, dovono je zadatiulaznu, odnosno izlaznu obradu. Postoje dve varijante DFS numeracije:qvorovi se mogu numerisati prema redosledu oznaqavaa (dolazna DFSnumeracija, odnosno preOrder numeracija), ili prema redosledu na-puxtaa (odlazna DFS numeracija, odnosno postOrder numeracija).Primer grafa sa qvorovima numerisanim na dva naqina prikazan je naslici 5.1. Algoritmi numeracije (izraqunavaa rednih brojeva 𝑣.𝑃𝑟𝑒 i𝑣.𝑃𝑜𝑠𝑡 za svaki qvor 𝑣 grafa), odnosno izgrade DFS stabla, opisani susledeim kodom.

𝐷𝐹𝑆 𝑛𝑢𝑚𝑒𝑟𝑎𝑐𝑖𝑗𝑎(𝐺, 𝑣)ulaz: 𝐺 = (𝑉,𝐸) - neusmereni graf i 𝑣 - qvor grafa 𝐺izlaz: za svaki qvor 𝑣 raqunaju se egovi redni brojevi 𝑣.𝑃𝑟𝑒 i 𝑣.𝑃𝑜𝑠𝑡

pri dolaznoj, odnosno odlaznoj numeracijiInicijalizacija: 𝐷𝐹𝑆 𝑝𝑟𝑒← 1;𝐷𝐹𝑆 𝑝𝑜𝑠𝑡← 1;Pokrenuti DFS sa sledeom ulaznom i izlaznom obradom:ulazna obrada:

𝑣.𝑃𝑟𝑒← 𝐷𝐹𝑆 𝑝𝑟𝑒𝐷𝐹𝑆 𝑝𝑟𝑒← 𝐷𝐹𝑆 𝑝𝑟𝑒 + 1

izlazna obrada:if 𝑤 je posledi na listi suseda 𝑣 then𝑣.𝑃𝑜𝑠𝑡← 𝐷𝐹𝑆 𝑝𝑜𝑠𝑡𝐷𝐹𝑆 𝑝𝑜𝑠𝑡← 𝐷𝐹𝑆 𝑝𝑜𝑠𝑡 + 1

𝐷𝐹𝑆 𝑠𝑡𝑎𝑏𝑙𝑜(𝐺, 𝑣)ulaz: 𝐺 = (𝑉,𝐸) - neusmereni graf i 𝑣 - qvor grafa 𝐺izlaz: 𝑇 - DFS stablo grafa 𝐺; pre prvog poziva 𝑇 je prazan skupPokrenuti DFS sa sledeom izlaznom obradom:izlazna obrada:

if 𝑤 je neoznaqen thendodati granu (𝑣, 𝑤) u 𝑇goru naredbu treba dodati u if naredbu algoritma 𝐷𝐹𝑆

Qvor 𝑣 zove se predak qvora 𝑤 u stablu 𝑇 sa korenom 𝑟 ako je 𝑣 najedinstvenom putu od 𝑟 do 𝑤 u 𝑇 . Ako je 𝑣 predak 𝑤, onda je qvor 𝑤potomak qvora 𝑣. Pretraga iz qvora 𝑣 poqie pre pretrage iz qvora𝑤, pa je 𝑣.𝑃𝑟𝑒 < 𝑤.𝑃𝑟𝑒. S druge strane, pretraga iz qvora 𝑣 zavrxava seposle pretrage iz qvora 𝑤, pa je 𝑣.𝑃𝑜𝑠𝑡 > 𝑤.𝑃𝑜𝑠𝑡. DFS stablo obuhvata sveqvorove povezanog grafa 𝐺. Redosled sinova svakog qvora u stablu odreen

Page 102: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

5.1. Obilasci grafova 102

je listom povezanosti koja zadaje graf 𝐺, pa se za svaka dva sina moerei koji je od ih levi (prvi po tom redosledu), a koji desni. Relacijalevidesni se prenosi na proizvona dva qvora 𝑢 i 𝑣 koji nisu u relacijipredak-potomak, videti ilustraciju na slici 5.2. Za qvorove 𝑢 i 𝑣 tadapostoji jedinstveni zajedniqki predak 𝑤 u DFS stablu, kao i sinovi 𝑢′ i𝑣′ qvora 𝑤 takvi da je 𝑢′ predak 𝑢 i 𝑣′ predak 𝑣. Kaemo da je 𝑢 levo od𝑣 ako i samo ako je 𝑢′ levo od 𝑣′. Jasna je geometrijska interpretacija overelacije: moemo da zamislimo da se DFS stablo iscrtava nanie dokse prelazi u nove neoznaqene qvorove (koraci u dubinu), odnosno slevaudesno prilikom dodavaa novih grana posle povratka u ve oznaqeneqvorove. Ako je qvor 𝑢 levo od qvora 𝑣, onda je on prilikom pretrageoznaqen pre qvora 𝑣, pa je 𝑢.𝑃𝑟𝑒 < 𝑣.𝑃𝑟𝑒. Obrnuto ne vai uvek: ako je𝑢.𝑃𝑟𝑒 < 𝑣.𝑃𝑟𝑒, onda je 𝑢 levo od 𝑣, ili je 𝑢 predak 𝑣 u DFS stablu (tj.iznad 𝑣). S druge strane, pretraga iz qvora 𝑢 zavrxava se pre pretrage izqvora 𝑣, pa je 𝑢.𝑃𝑜𝑠𝑡 < 𝑣.𝑃𝑜𝑠𝑡.

dd ddd d ddd d

d

𝑟

𝑤

𝑢′ 𝑣′

𝑢

𝑣

Slika 5.2: Ilustracija relacije \levodesno" na skupu qvorova DFSstabla.

Lema: [Osnovna osobina DFS stabla neusmerenog grafa] Neka je 𝐺 =(𝑉,𝐸) povezan neusmeren graf, i neka je 𝑇 = (𝑉, 𝐹 ) DFS stablo grafa 𝐺dobijeno algoritmom 𝐷𝐹𝑆 𝑠𝑡𝑎𝑏𝑙𝑜. Svaka grana 𝑒 ∈ 𝐸 pripada 𝑇 (tj. 𝑒 ∈ 𝐹 )ili spaja dva qvora grafa 𝐺, od kojih je jedan predak drugog u 𝑇 .

Dokaz: Neka je (𝑣, 𝑢) grana u 𝐺, i pretpostavimo da je u toku DFS 𝑣poseen pre 𝑢. Posle oznaqavaa 𝑣, u peti se rekurzivno pokree DFS izsvakog neoznaqenog suseda 𝑣. U trenutku kad doe red na suseda 𝑢, ako je𝑢 oznaqen, onda je 𝑢 potomak 𝑣 u 𝑇 , a u protivnom se iz 𝑢 zapoqie DFS,pa 𝑢 postaje sin 𝑣 u stablu 𝑇 .

Tvree leme moe se preformulisati na sledei naqin: grane grafane mogu biti popreqne grane u odnosu na DFS stablo, odnosno grane kojepovezuju qvorove na razdvojenim putevima od korena (tj. takva dva qvora𝑢 i 𝑣 koja nisu u relaciji predak-potomak).

Poxto je DFS vrlo vaan algoritam, dajemo i egovu nerekurzivnuvarijantu. Osnovna alatka za realizaciju rekurzivnog programa je stek,na kome se quvaju informacije potrebne za \razmotavae" rekurzivnihpoziva. Prevodilac obezbeuje prostor na steku za lokalne promenivepridruene svakom pozivu rekurzivne procedure. Zbog toga, kad se zavrxisa jednim rekurzivnim pozivom procedure, mogu je povratak na taqnoodreeno mesto u pozivajuoj proceduri. Ponekad nije neophodno sve lokalne

Page 103: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

103 5. Grafovski algoritmi

promenive quvati na steku, pa odgovarajua nerekurzivna proceduramoe da bude efikasnija.

𝑁𝑒𝑟𝑒𝑘𝑢𝑟𝑧𝑖𝑣𝑛𝑖 𝐷𝐹𝑆(𝐺, 𝑣)ulaz: 𝐺 = (𝑉,𝐸) - povezani graf, 𝑣 - qvor grafa 𝐺izlaz: zavisi od primene1 while postoji neoznaqeni qvor 𝑤 do2 if 𝑣 neoznaqen then 𝑤 ← 𝑣 pretraga poqie od 𝑣3 oznaqi 𝑤4 izvrxi ulaznu obradu za 𝑤5 𝐺𝑟𝑎𝑛𝑎← 𝑤.𝑃𝑟𝑣𝑖 pokazivaq na prvu granu iz 𝑤6 upixi na stek 𝑤 i 𝐺𝑟𝑎𝑛𝑎7 𝑂𝑡𝑎𝑐← 𝑤8 poqetak osnovne pete rekurzije9 while stek nije prazan do10 skini 𝐺𝑟𝑎𝑛𝑎 sa vrha steka11 while 𝐺𝑟𝑎𝑛𝑎 = NULL do dok ima nepregledanih grana iz qvora12 𝑆𝑖𝑛← 𝐺𝑟𝑎𝑛𝑎.𝐶𝑣𝑜𝑟13 if 𝑆𝑖𝑛 nije oznaqen then korak u dubinu14 oznaqi 𝑆𝑖𝑛15 izvrxi ulaznu obradu na 𝑆𝑖𝑛16 upixi 𝐺𝑟𝑎𝑛𝑎.𝑁𝑎𝑟𝑒𝑑𝑛𝑖 na vrh steka sledea, kad se obradi 𝑆𝑖𝑛17 za nastavak po zavrxetku obrade 𝑆𝑖𝑛18 𝐺𝑟𝑎𝑛𝑎← 𝑆𝑖𝑛.𝑃𝑟𝑣𝑖19 𝑂𝑡𝑎𝑐← 𝑆𝑖𝑛20 upixi 𝑂𝑡𝑎𝑐 na vrh steka novooznaqeni qvor21 else 𝐺𝑟𝑎𝑛𝑎 je povratna grana22 izvrxi izlaznu obradu za (𝑂𝑡𝑎𝑐, 𝑆𝑖𝑛)23 ovo se preskaqe ako se izlazna obrada radi samo za grane stabla24 𝐺𝑟𝑎𝑛𝑎← 𝐺𝑟𝑎𝑛𝑎.𝑁𝑎𝑟𝑒𝑑𝑛𝑖25 na vrhu steka su posledi oznaqeni qvor i sledea grana iz ega26 skini 𝑆𝑖𝑛 sa vrha steka korak nazad27 if stek nije prazan then stek postaje prazan kad je 𝑆𝑖𝑛 koren28 neka su 𝐺𝑟𝑎𝑛𝑎 i 𝑂𝑡𝑎𝑐 na vrhu steka ne uklaati ih sa steka29 izvrxi izlaznu obradu za (𝑂𝑡𝑎𝑐, 𝑆𝑖𝑛)

Osnovna potexkoa pri prevoeu rekurzivne u nerekurzivnu verzijupotiqe od potrebe eksplicitnog pamea promenivih, koji se inaqe quvajuna steku. DFS proceduru pozivali smo rekurzivno unutar for pete, a odprograma smo oqekivali da zapamti taqno mesto u peti, gde treba nas-taviti posle rekurzivnog poziva. U nerekurzivnoj verziji se ti podacimoraju eksplicitno pamtiti. Pretpostavamo da svaki qvor 𝑣 ima povezanulistu susednih grana (DFS prati redosled grana u listi). Pokazivaq napoqetak te liste je 𝑣.𝑃𝑟𝑣𝑖. Svaki element liste je slog koji sadri dvepromenive: 𝐶𝑣𝑜𝑟 i 𝑁𝑎𝑟𝑒𝑑𝑛𝑖; 𝐶𝑣𝑜𝑟 je ime qvora na drugom kraju grane, a𝑁𝑎𝑟𝑒𝑑𝑛𝑖 je pokazivaq na naredni element liste. Posledi element liste𝑁𝑎𝑟𝑒𝑑𝑛𝑖 ima vrednost NULL. DFS se izvrxava kao i u rekurzivnojverziji, silazei niz stablo sve do dolaska u \slepu ulicu". Za registrovaedostignutog nivoa pretrage koristi se stek. U toku obilaska na steku se

Page 104: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

5.1. Obilasci grafova 104

quvaju svi qvorovi na putu od korena do tekueg qvora, onim redom kojimsu na putu. Izmeu svaka dva qvora 𝑂𝑡𝑎𝑐 i 𝑆𝑖𝑛 stek sadri pokazivaq nagranu iz 𝑂𝑡𝑎𝑐 koja e biti sledea pregledana posle povratka iz 𝑆𝑖𝑛.

Usmereni grafovi

Procedura pretrage u dubinu usmerenih grafova ista je kao za neusmerenegrafove. Meutim, usmerena DFS stabla imaju nexto drugaqije osobine.Za ih, na primer, nije taqno da nemaju popreqne grane, xto se moevideti iz primera na slici 5.3. U odnosu na DFS stablo grane grafapripadaju jednoj od qetiri kategorije: grane stabla, povratne, direktnei popreqne grane. Prve tri vrste grana povezuju dva qvora od kojihje jedan potomak drugog u stablu: grana stabla povezuje oca sa sinom,povratna grana potomka sa pretkom, a direktna grana pretka sa potomkom.Jedino popreqne grane povezuju qvorove koji nisu \srodnici" u stablu.Popreqne grane, meutim, moraju biti usmerene \zdesna ulevo", kao xtopokazuje sledea lema.

dddddd

d?

R

?

?

K direktna

grana ulevo

povratna

grana stabla

R

Slika 5.3: DFS stablo usmerenog grafa.

Lema: [Osnovna osobina DFS stabla usmerenog grafa] Neka je 𝐺 =(𝑉,𝐸) usmereni graf, i neka je 𝑇 = (𝑉, 𝐹 ) DFS stablo grafa 𝐺. Ako je(𝑣, 𝑤) ∈ 𝐸 grana grafa 𝐺 za koju vai 𝑣.𝑃𝑟𝑒 < 𝑤.𝑃𝑟𝑒, onda je 𝑤 potomak𝑣 u stablu 𝑇 .

Dokaz: Poxto prema dolaznoj DFS numeraciji 𝑣 prethodi 𝑤, 𝑤 je oznaqenposle 𝑣. Grana grafa (𝑣, 𝑤) mora biti razmatrana u toku rekurzivnogpoziva DFS iz qvora 𝑣. Ako u tom trenutku qvor 𝑤 nije oznaqen, ondase grana (𝑣, 𝑤) mora ukuqiti u stablo, tj. (𝑣, 𝑤) ∈ 𝐹 , pa je tvree lemetaqno. U protivnom, 𝑤 je oznaqen u toku izvoea rekurzivnog poziva DFSiz 𝑣, pa je 𝑤 potomak 𝑣 u stablu 𝑇 .

Algoritam DFS za povezan neusmereni graf, zapoqet iz proizvonogqvora, obilazi ceo graf. Analogno tvree ne mora biti taqno za usmerenegrafove. Posmatrajmo usmereni graf na slici 5.4. Ako se DFS zapoqne izqvora 𝑣, onda e biti dostignuti samo qvorovi u desnoj koloni. DFS moeda dostigne sve qvorove grafa samo ako se zapoqne iz qvora 𝑎. Ako seqvor 𝑎 ukloni iz grafa zajedno sa dve grane koje izlaze iz ega, onda ugrafu ne postoji qvor iz koga DFS obilazi ceo graf. Prema tome, uvek

Page 105: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

105 5. Grafovski algoritmi

kad govorimo o DFS obilasku usmerenog grafa, smatraemo da je DFSalgoritam pokrenut toliko puta koliko je potrebno da bi svi qvorovi bilioznaqeni i sve grane bile razmotrene. Dakle, u opxtem sluqaju usmerenigraf umesto DFS stabla ima DFS xumu.

ddd

d dd dd d

?

?

- -

? ?

? ?

-

-

-

-

𝑎 𝑣

Slika 5.4: Primer kad DFS usmerenog grafa (ako se pokrene iz qvora 𝑣)ne obilazi sve qvorove grafa.

Nepostojae grana grafa koje idu sleva udesno govori nexto korisnoo odlaznoj numeraciji qvorova grafa i o qetiri vrste grana u odnosu naDFS stablo. Na slici 5.5(a) prikazana su tri qvora grafa 𝑢, 𝑣 i 𝑤 uokviru DFS stabla grafa. Qvorovi 𝑣 i 𝑤 su sinovi qvora 𝑢, a qvor 𝑤je desno od qvora 𝑣. Na slici 5.5(b) prikazani su vremenski intervalitrajaa rekurzivnih poziva DFS za svaki od ovih qvorova. Zapaamo daje DFS iz qvora 𝑣, potomka qvora 𝑢, aktivan samo u podintervalu vremenaza koje je aktivan DFS iz qvora 𝑢 (pretka qvora 𝑣). Specijalno, DFS iz𝑣 zavrxava se pre zavrxetka DFS iz 𝑢. Prema tome, iz qienice da je 𝑣potomak 𝑢 sledi da je 𝑣.𝑃𝑜𝑠𝑡 < 𝑢.𝑃𝑜𝑠𝑡. Pored toga, ako je 𝑤 desno od 𝑣,onda poziv DFS iz 𝑤 ne moe biti pokrenut pre nego xto se zavrxi DFSiz 𝑣. Prema tome, ako je 𝑣 levo od 𝑤, onda je 𝑣.𝑃𝑜𝑠𝑡 < 𝑤.𝑃𝑜𝑠𝑡. Iako to nijepokazano na slici 5.5, isti zakuqak je taqan i ako su 𝑣 i 𝑤 u razliqitimstablima DFS xume, pri qemu je stablo qvora 𝑣 levo od stabla qvora 𝑤.

Razmotrimo sada za proizvonu granu (𝑢, 𝑣) grafa odnos odlaznih DFSbrojeva qvorova 𝑢 i 𝑣.

1. Ako je (𝑢, 𝑣) grana stabla ili direktna grana, onda je 𝑣 potomak 𝑢,pa je 𝑣.𝑃𝑜𝑠𝑡 < 𝑢.𝑃𝑜𝑠𝑡.

2. Ako je (𝑢, 𝑣) popreqna grana, onda je zbog toga xto je 𝑣 levo od 𝑢,ponovo 𝑣.𝑃𝑜𝑠𝑡 < 𝑢.𝑃𝑜𝑠𝑡.

3. Ako je (𝑢, 𝑣) povratna grana i 𝑣 = 𝑢, onda je 𝑣 pravi predak 𝑢 i𝑣.𝑃𝑜𝑠𝑡 > 𝑢.𝑃𝑜𝑠𝑡. Meutim, 𝑣 = 𝑢 je mogue za povratnu granu, jer jei peta povratna grana. Prema tome, za povratnu granu (𝑢, 𝑣) znamoda je 𝑣.𝑃𝑜𝑠𝑡 ≥ 𝑢.𝑃𝑜𝑠𝑡.

Prema tome, dokazano je sledee tvree.Lema: Grana (𝑢, 𝑣) usmerenog grafa 𝐺 = (𝑉,𝐸) je povratna ako i samo

ako prema odlaznoj numeraciji qvor 𝑢 prethodi qvoru 𝑣, odnosno 𝑢.𝑃𝑜𝑠𝑡 ≤𝑣.𝑃𝑜𝑠𝑡.

Pokazaemo sada kako se DFS moe iskoristiti za utvrivae da lije zadati graf acikliqki.

Page 106: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

5.1. Obilasci grafova 106

𝑢

𝑣 𝑤

(a) Tri qvora u DFS stablu

trajae DFS iz 𝑣 trajae DFS iz 𝑤

trajae DFS iz 𝑢

(b) Aktivni intervali za ihove pozive DFS

Slika 5.5: Odnos izmeu poloaja qvorova u DFS stablu i trajaarekurzivnih poziva pokrenutih iz ovih qvorova.

Problem: Za zadati usmereni graf 𝐺 = (𝑉,𝐸) ustanoviti da li sadriusmereni ciklus.

Lema: Neka je 𝐺 = (𝑉,𝐸) usmereni graf, i neka je 𝑇 DFS stablo grafa𝐺. Tada 𝐺 sadri usmereni ciklus ako i samo ako 𝐺 sadri povratnugranu u odnosu na 𝑇 .

Dokaz: Ako je grana (𝑢, 𝑣) povratna, onda ona zajedno sa granama stablana putu od 𝑣 do 𝑢 qini ciklus. Suprotno tvree je takoe taqno: akou grafu postoji ciklus, tada je jedna od egovih grana povratna. Zaista,pretpostavimo da u grafu postoji ciklus koji qine grane (𝑣1, 𝑣2), (𝑣2, 𝑣3),. . . ,(𝑣𝑘, 𝑣1), od kojih ni jedna nije povratna u odnosu na 𝑇 . Ako je 𝑘 = 1,odnosno ciklus je peta, onda je grana (𝑣, 𝑣) povratna grana. Ako je pak𝑘 > 1, pretpostavimo da ni jedna od grana (𝑣1, 𝑣2), (𝑣2, 𝑣3),. . . (𝑣𝑘−1, 𝑣𝑘) nijepovratna. Prema prethodnoj lemi vae nejednakosti 𝑣1.𝑃𝑜𝑠𝑡 > 𝑣2.𝑃𝑜𝑠𝑡 >· · · > 𝑣𝑘.𝑃𝑜𝑠𝑡, iz kojih sledi da je 𝑣𝑘.𝑃𝑜𝑠𝑡 < 𝑣1.𝑃𝑜𝑠𝑡, pa je grana (𝑣𝑘, 𝑣1)povratna | suprotno pretpostavci. Time je dokazano da u svakom ciklusupostoji povratna grana u odnosu na DFS stablo.

Algoritam za proveru da li graf sadri ciklus svodi se na DFSnumeraciju i proveru postojaa povratne grane na osnovu leme. 𝑣.𝑁𝑎 𝑝𝑢𝑡𝑢ima vrednost 𝑡𝑟𝑢𝑒 za qvor 𝑣 ako i samo ako je qvor na putu kroz stablood polaznog do tekueg qvora. Pretpostava se da pretraga iz polaznogqvora obilazi ceo graf, odnosno da DFS stablo postoji.

𝐴𝑐𝑖𝑘𝑙𝑖𝑐𝑘𝑖(𝐺, 𝑣)ulaz: 𝐺 = (𝑉,𝐸) - usmereni graf, 𝑣 - polazni qvor, koren DFS stablaizlaz: 𝑃𝑜𝑠𝑡𝑜𝑗𝑖 𝑐𝑖𝑘𝑙𝑢𝑠 - taqno ako 𝐺 sadri ciklus, a netaqno u protivnomInicijalizacija: 𝑤.𝑁𝑎 𝑝𝑢𝑡𝑢← 𝑓𝑎𝑙𝑠𝑒 za sve qvorove 𝑤 razliqite od 𝑣,𝑣.𝑁𝑎 𝑝𝑢𝑡𝑢← 𝑡𝑟𝑢𝑒 i 𝑃𝑜𝑠𝑡𝑜𝑗𝑖 𝑐𝑖𝑘𝑙𝑢𝑠← 𝑓𝑎𝑙𝑠𝑒

Page 107: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

107 5. Grafovski algoritmi

Pokrenuti DFS iz proizvonog qvora, sa sledeom ulaznom i izlaznomobradom:ulazna obrada:

if iz 𝑣 izlazi bar jedna grana then𝑣.𝑁𝑎 𝑝𝑢𝑡𝑢← 𝑡𝑟𝑢𝑒𝑥.𝑁𝑎 𝑝𝑢𝑡𝑢 je taqno ako je 𝑥 na putu od korena do tekueg qvora

izlazna obrada:if 𝑤.𝑁𝑎 𝑝𝑢𝑡𝑢 then𝑃𝑜𝑠𝑡𝑜𝑗𝑖 𝑐𝑖𝑘𝑙𝑢𝑠← 𝑡𝑟𝑢𝑒ℎ𝑎𝑙𝑡

if 𝑤 posledi qvor u spisku suseda 𝑣 then𝑣.𝑁𝑎 𝑝𝑢𝑡𝑢← 𝑓𝑎𝑙𝑠𝑒

5.1.2 Pretraga u xirinu

Pretraga u xirinu (ili BFS, xto je skraenica od breadth–first–search)je obilazak grafa na sistematiqan naqin, nivo po nivo, pri qemu seusput formira stablo pretrage u xirinu (BFS stablo). Ako polazimood qvora 𝑣 (𝑣 je koren BFS stabla), onda se najpre poseuju svi susediqvora 𝑣 redosledom odreenim redosledom u listi povezanosti grafa(sinovi qvora 𝑣 u stablu pretrage, nivo jedan). Zatim se dolazi do svih\unuka" (nivo dva), i tako dae (videti primer na slici 5.6). Obilazakse realizuje sliqno kao u nerekurzivnoj verziji DFS, sem xto je stekzameen redom (listom FIFO, xto je skraenica od first–in–first–out queue).Prilikom obilaska qvorovi se mogu numerisati BFS brojevima, sliqnokao pri DFS. Preciznije, qvor 𝑤 ima BFS broj 𝑘 ako je on 𝑘-ti qvoroznaqen u toku BFS. BFS stablo grafa moe se formirati ukuqivaemsamo grana ka novooznaqenim qvorovima. Zapaa se da izlazna obrada kodBFS, za razliku od DFS, nema smisla; pretraga nema povratak \navixe",ve se, polazei od korena, kree samo nanie.

dddddd

d

?

R

R

?

?

K

Nivo 0

Nivo 1

Nivo 2

Slika 5.6: BFS stablo usmerenog grafa.

𝐵𝐹𝑆(𝐺, 𝑣)ulaz: 𝐺 = (𝑉,𝐸) - neusmereni povezan graf i 𝑣 - qvor grafa 𝐺izlaz: zavisi od primene

Page 108: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

5.1. Obilasci grafova 108

1 oznaqi 𝑣2 upixi 𝑣 u red 𝑄 FIFO lista3 while 𝑄 je neprazan do4 skini prvi qvor 𝑤 iz reda 𝑄5 izvrxi ulaznu obradu za 𝑤6 ulazna obrada zavisi od primene BFS7 for all grane (𝑤, 𝑥) za koje 𝑥 nije oznaqen do8 oznaqi 𝑥9 dodaj (𝑤, 𝑥) u stablo 𝑇10 upixi 𝑥 u red 𝑄

Sloenost: Lako je uveriti se da se svaki qvor obrauje po jednom i dase svaka grana pregleda po jednom. Stoga je vremenska sloenost algoritmaBFS 𝑂(|𝑉 |+ |𝐸|).

Lema: Ako grana (𝑢,𝑤) pripada BFS stablu i qvor 𝑢 je otac qvora 𝑤,onda qvor 𝑢 ima najmai BFS broj meu qvorovima iz kojih postoji granaka 𝑤.

Dokaz: Ako bi u grafu postojala grana (𝑣, 𝑤), takva da 𝑣 ima mai BFSbroj od 𝑢, onda bi u trenutku obrade qvora 𝑣 qvor 𝑤 morao biti upisanu red, pa bi grana (𝑣, 𝑤) morala biti ukuqena u BFS stablo, suprotnopretpostavci.

Definiximo rastojae 𝑑(𝑢, 𝑣) izmeu qvorova 𝑢 i 𝑣 kao duinu naj-kraeg puta od 𝑢 do 𝑣; pod duinom puta podrazumeva se broj grana kojeqine taj put.

Lema: Put od korena 𝑟 BFS stabla do proizvonog qvora 𝑤 kroz BFSstablo najkrai je put od 𝑟 do 𝑤 u grafu 𝐺.

Dokaz: Indukcijom po 𝑑 dokazaemo da do svakog qvora 𝑤 na rastojau𝑑 od korena 𝑟 (jedinstveni) put kroz stablo od 𝑟 do 𝑤 ima duinu 𝑑. Za𝑑 = 1 tvree je taqno: grana (𝑟, 𝑤) je obavezno deo stabla, pa izmeu 𝑟 i𝑤 postoji put kroz stablo duine 1. Pretpostavimo da je tvree taqnoza sve qvorove koji su na rastojau maem od 𝑑 od korena, i neka je 𝑤neki qvor na rastojau 𝑑 od korena; drugim reqima, postoji niz qvorova𝑤0 = 𝑟, 𝑤1, 𝑤2, . . . , 𝑤𝑑−1, 𝑤𝑑 = 𝑤 koji qine put duine 𝑑 od 𝑟 do 𝑤, i nepostoji krai put od 𝑟 do 𝑤. Poxto je duina najkraeg puta od 𝑟 do 𝑤𝑑−1

jednaka 𝑑 − 1 prema induktivnoj hipotezi put od 𝑟 do 𝑤𝑑−1 kroz stabloima duinu 𝑑−1. U trenutku obrade qvora 𝑤𝑑−1, ako qvor 𝑤 nije oznaqen,poxto u 𝐺 postoji grana (𝑤𝑑−1, 𝑤𝑑), ta grana se ukuquje u BFS stablo, pado qvora 𝑤𝑑 postoji put duine 𝑑 kroz stablo. U protivnom, ako je u tomtrenutku 𝑤𝑑 ve oznaqen, onda do 𝑤 kroz stablo vodi grana iz nekog qvora𝑤′

𝑑−1, oznaqenog pre 𝑤𝑑−1, iz qega sledi da je nivo qvora 𝑤′𝑑−1 najvixe

𝑑− 1, nivo qvora 𝑤 najvixe 𝑑, odnosno do 𝑤 vodi put kroz stablo duine𝑑.

Lema: Ako je (𝑣, 𝑤) ∈ 𝐸 grana neusmerenog grafa 𝐺 = (𝑉,𝐸), onda tagrana spaja dva qvora qiji se nivoi razlikuju najvixe za jedan.

Dokaz: Neka je npr. qvor 𝑣 prvi dostignut pretragom i neka je egovnivo 𝑑. Tada je nivo qvora 𝑤 vei ili jednak od 𝑑. S druge strane, nivoqvora 𝑤 nije vei od 𝑑 + 1, jer do ega vodi grana stabla ili iz qvora 𝑣,ili iz nekog qvora koji je oznaqen pre 𝑣. Dakle, nivo qvora 𝑤 je ili 𝑑 ili𝑑 + 1.

Page 109: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

109 5. Grafovski algoritmi

5.2 Zadaci za vebu

1. Pokazati kako obilazak u dubinu pokrenut iz qvora 𝑞 radi za usmere-ni graf prikazan na slici. Pretpostaviti da su qvorovi u listamasuseda ureeni leksikografski prema oznakama qvorova. Odreditiodlaznu i dolaznu numeraciju qvorova i klasifikovati sve granegrafa.

2. Dati kontraprimer za tvree da ako usmereni graf 𝐺 sadri putod qvora 𝑢 do qvora 𝑣 i ako za DFS brojeve ovih qvorova vai daje 𝑢.𝑃𝑟𝑒 < 𝑣.𝑃𝑟𝑒, onda je 𝑣 potomak qvora 𝑢 u odgovarajuem DFSstablu.

3. Dati kontraprimer za tvree da ako usmereni graf 𝐺 sadri putod qvora 𝑢 do qvora 𝑣 onda u svakoj DFS pretrazi vai da je 𝑣.𝑃𝑟𝑒 ≤𝑢.𝑃𝑜𝑠𝑡.

4. Odrediti BFS stablo i BFS numeraciju qvorova u grafu sa slike akoje BFS pokrenut iz qvora 3. Qvorovi su u listi povezanosti ureeniu rastui niz prema svojim oznakama.

5. Koliko je vreme izvrxavaa algoritma BFS ako je ulazni graf zadatmatricom povezanosti?

6. Dati primer usmerenog grafa 𝐺 = (𝑉,𝐸), istaknutog qvora 𝑠 ∈ 𝑉 iskupa grana stabla 𝐸𝑇 ⊂ 𝐸 tako da vai da za svaki qvor 𝑣 ∈ 𝑉 ,jedinstveni prosti put u grafu (𝑉,𝐸𝑇 ) iz 𝑠 do 𝑣 je najkrai put u𝐺, ali se skup grana 𝐸𝑇 ne moe dobiti izvrxavaem algoritmaBFS na grafu 𝐺, bez obzira na to kako su qvorovi ureeni u listipovezanosti.

7. Postoje dve grupe navijaqa: navijaqi Partizana i navijaqi Zvezde.Izmeu svakog para navijaqa moe ili ne mora postojati rivalstvo.

Page 110: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

5.2. Zadaci za vebu 110

Pretpostavimo da imamo 𝑛 navijaqa i listu od 𝑟 parova navijaqaizmeu kojih postoji rivalstvo. Konstruisati algoritam sloenosti𝑂(𝑛+ 𝑟) kojim se odreuje da li je mogue oznaqiti neke od navijaqakao navijaqe Partizana, a neke od ih kao navijaqe Zvezde tako dasvako rivalstvo bude izmeu navijaqa razliqitih timova.

8. Pokazati da u grafu za koji vai da je rastojae izmeu svaka dvaqvora najvixe 𝑑, svako BFS stablo ima dubinu najvixe 𝑑, ali DFSstablo moe biti vee dubine.

9. Da li je taqno da DFS obilazak usmerenog grafa uvek proizvodijednak broj grana stabla (nezavisno od redosleda u kome su datiqvorovi i nezavisno od redosleda qvorova u listama povezanosti)?

10. Da li vai da ako iz usmerenog grafa 𝐺 izbacimo sve povratne graneu odnosu na DFS stablo, graf postaje acikliqki?

11. Da li kod usmerenog grafa vai da ako ne postoji povratna grana uodnosu na BFS stablo onda graf ne sadri ciklus?

12. Opisati kako se mogu izraqunati ulazni i izlazni stepen svih qvorovau grafu ako je graf predstaven (a) listom povezanosti (b) matricompovezanosti.

13. Dat je neusmeren povezan graf𝐺. Konstruisati algoritam vremenskesloenosti 𝑂(|𝑉 | + |𝐸|) za odreivae puta koji prolazi kroz svegrane grafa 𝐺 po dva puta po jednom u svakom smeru.

14. Dokazati ili opovrgnuti sledee tvree: ako je 𝐺 = (𝑉,𝐸) povezanneusmeren graf, onda je visina DFS stabla grafa 𝐺 uvek vea ilijednaka od visine BFS stabla grafa 𝐺 (razmotriti sluqaj kada obaaloritma kreu iz istog qvora i kada to nije sluqaj).

15. Dokazati da su za neusmeren povezan graf 𝐺 = (𝑉,𝐸), DFS stablo iBFS stablo isti ako i samo ako je graf 𝐺 stablo.

Page 111: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

Glava 6

Algoritamske strategije

6.1 Algoritmi grube sile

Algoritmi grube sile (engl. brute force, odnosno exhaustive search) seobiqno primeuju na optimizacione probleme. Recimo u sluqaju kada jepotrebno odrediti maksimalnu vrednost neke veliqine. Postupak za re-xavae ovih problema ukuquje pregledae svih varijanti. Algoritmigrube sile su korisni za vrlo male ulaze; za velike ulaze mora se naiefikasnije rexee.

Primer 1: Za dati niz 𝑥1, 𝑥2, . . . , 𝑥𝑛 pronai indeks 𝑖 tako da je 𝑥𝑖

maksimalni element niza. Problem se moe rexiti prolaskom kroz ceoniz; sloenost algoritma je 𝑂(𝑛).

Primer 2: Od datih 𝑛 taqaka 𝑃𝑖(𝑥𝑖, 𝑦𝑖) treba pronai dve najblietaqke, tj. treba odrediti indekse 𝑖 i 𝑗 tako da vai:

𝑑(𝑃𝑖, 𝑃𝑗)𝑖 =𝑗 ≤ 𝑑(𝑃𝑟, 𝑃𝑠)𝑟,𝑠=1,2,...,𝑛,𝑟 =𝑠

Ukupno ima(𝑛2

)= 𝑛(𝑛−1)

2 razliqitih parova taqaka i algoritam grubesile bi pregledao sve parove, pa je sloenost algoritma 𝑂(𝑛2). Analognobi se rexavao i problem nalaea dve najudaenije taqke.

Primer 3: Problem trgovaqkog putnika (TSP od engl. TravelingSalesman Problem). U postavci ovog problema dato je 𝑛 gradova i potrebnoje sve ih obii, tako da ni u koji grad ne doemo dva puta, a da duinaukupnog puta bude xto maa. Formalno gledano, data je kvadratna matricareda 𝑛 rastojaa izmeu gradova 𝐷 = [𝑑𝑖𝑗 ] i potrebno je odrediti per-mutaciju indeksa 𝑖1, 𝑖2, . . . , 𝑖𝑛 tako da suma 𝑑𝑖1,𝑖2 + 𝑑𝑖2,𝑖3 + . . . + 𝑑𝑖𝑛−1,𝑖𝑛 +𝑑𝑖𝑛𝑖1 ima minimalnu vrednost. Da bi se odredilo rexee potrebno jerazmotriti (𝑛 − 1)! marxruta (jer grad iz koga zapoqiemo obilazakmoemo fiksirati, s obzirom na to da on mora pripadati svakom obilasku).Ovo rexee nije jako neefikasno za ulaze veliqine do 10. Za vee ulazetrebalo bi nai neki efikasniji algoritam.

U algoritmu grube sile za rexavae TSP problema potrebno je da zasvaku permutaciju umemo da odredimo sledeu, pamtimo trenutno najkraiput i na kraju vratimo kao rezultat permutaciju kojoj odgovara najkraiput.

111

Page 112: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

6.1. Algoritmi grube sile 112

𝑇𝑆𝑃 𝑏𝑟𝑢𝑡𝑒 𝑓𝑜𝑟𝑐𝑒(𝐷)ulaz: 𝐷 - matrica rastojaa gradovaizlaz: 𝑝𝑚𝑎𝑥 - permutacija koja daje najkrai put1 𝑝← 1, 2, . . . , 𝑛− 1 razmatramo permutacije prvih 𝑛− 1 gradova,posle qega se uvek ide u 𝑛-ti grad, pa nazad u prvi

2 𝑝𝑚𝑎𝑥 ← 𝑝3 𝑠← 𝑑1,2 + 𝑑2,3 + . . . + 𝑑𝑛,14 while 𝑠𝑙𝑒𝑑𝑒𝑐𝑎 𝑝𝑒𝑟𝑚𝑢𝑡𝑎𝑐𝑖𝑗𝑎(𝑝, 𝑛− 1) do5 pretpostavka je da ako postoji naredna permutacija,

ona je pozivom prethodne funkcije smextena opet u 𝑝6 if 𝑑𝑝1,𝑝2 + 𝑑𝑝2,𝑝3 + . . . + 𝑑𝑝𝑛−2,𝑝𝑛−1 + 𝑑𝑝𝑛−1,𝑛 + 𝑑𝑛,𝑝1 < 𝑠 then7 𝑝𝑚𝑎𝑥 ← 𝑝8 𝑠← 𝑑𝑝1,𝑝2

+ 𝑑𝑝2,𝑝3+ . . . + 𝑑𝑝𝑛−2,𝑝𝑛−1

+ 𝑑𝑝𝑛−1,𝑛 + 𝑑𝑛,𝑝1

9 return 𝑝𝑚𝑎𝑥

Kako pronai narednu permutaciju? Na ovaj problem vratiemo seu glavi 7.4. Ako recimo uoqimo permutaciju (2, 6, 8, 4, 7, 5, 3, 1) brojeva1, 2, . . . , 8, naredna permutacija, gledano leksikografski, trebalo bi dabude permutacija (2, 6, 8, 5, 1, 3, 4, 7). u dobijamo polazei od maksimalnogopadajueg sufiksa niza kojim je predstavena zadata permutacija. Dakle,idemo od kraja niza i traimo dva susedna elementa za koje vai da jeprvi od ih mai od drugog oznaqimo ih sa 𝑝[𝑖] i 𝑝[𝑖 + 1] (u goremsluqaju to su elementi 4 i 7). Kada ih naemo (ako takva dva elementa nepostoje, onda je zadata permutacija opadajui niz, pa ne postoji narednapermutacija), onda poqev od posledeg elementa niza traimo najmaielement koji je vei od elementa 𝑝[𝑖] neka je to 𝑝[𝑗] (vai 𝑗 > 𝑖). Uprimeru to je broj 5. Nakon toga elementima 𝑝[𝑖] i 𝑝[𝑗] meamo mesta,a zatim svim obremo sve elemente podniza niza 𝑝 koji se sastoji odelemenata poqev od pozicije 𝑖 + 1 sve do kraja niza. Na ovaj naqin odopadajueg podniza dobijamo rastui (u primeru od podniza (7, 4, 3, 1)dobijamo podniz (1, 3, 4, 7)). Ovaj algoritam opisan je sledeim kodom.

𝑠𝑙𝑒𝑑𝑒𝑐𝑎 𝑝𝑒𝑟𝑚𝑢𝑡𝑎𝑐𝑖𝑗𝑎(𝑝, 𝑛)ulaz: 𝑝 - tekua permutacija, 𝑛 - duina niza 𝑝izlaz: 𝑝 - sadri narednu permutaciju, leksikografski gledano

element 𝑝𝑛 je fiksiran, tj. ne mea se1 𝑖← 𝑛− 12 while 𝑖 > 0 and 𝑝[𝑖] > 𝑝[𝑖 + 1] do3 𝑖← 𝑖− 14 if 𝑖 = 0 then5 𝑝𝑟𝑖𝑛𝑡 \grexka: ne postoji sledea permutacija"6 return7 𝑗 ← 𝑛8 while 𝑝[𝑖] > 𝑝[𝑗] do9 𝑗 ← 𝑗 − 110 𝑧𝑎𝑚𝑒𝑛𝑖(𝑝[𝑖], 𝑝[𝑗])11 obrni elemente niza 𝑝 od pozicije 𝑖 + 1 do pozicije 𝑛− 1

Sloenost algoritma 𝑇𝐶𝑃 𝑏𝑟𝑢𝑡𝑒 𝑓𝑜𝑟𝑐𝑒 je 𝑂(𝑛!) jer je broj razmatranihpermutacija (𝑛− 1)!, a obrada permutacije traje 𝑂(𝑛).

Page 113: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

113 6. Algoritamske strategije

Primer 4: Neka je graf 𝐺 zadat listom povezanosti. Potrebno je od-rediti najduu granu u grafu. To moemo uraditi tako xto pregledamosve grane grafa i traimo najduu.

6.2 Pohlepni algoritmi

Optimizacioni problemi se obiqno sastoje iz niza koraka sa skupom izborau svakom koraku. Qesto je ovo previxe vremenski zahtevno pa se traeefikasniji algoritmi.Pohlepni algoritmi uvek prave izbor koji delujenajboi u tom trenutku. Dakle, pravi se lokalno optimalni izbor u nadida e ovaj izbor voditi i globalno najboem rexeu. Pohlepni algoritmiza neke (ne sve) probleme pronalaze optimalno rexee.

Primer 1: Peemo se na planinu i ci nam je da doemo na najvixivrh. U svakom momentu na raspolagau su nam strmiji i mae strmiputevi. Ako uvek idemo najstrmijom stazom popeemo se na neki vrh, neobavezno najvixi.

Primer 2: Imamo na raspolagau novqanice od 1,2,5,10,20,50,100,200,500dinara i hoemo da vratimo kusur. Pohlepni algoritam bi uvek vraaonajveu novqanicu koja je maa od tekue vrednosti kusura (npr. 188 =100+50+20+10+5+2+1). Ovakav pristup u opxtem sluqaju ne garantujeda emo vratiti kusur koji se sastoji od najmaeg broja novqanica. Recimoako bi nam na raspolagau bile novqanice od 5,4,2 i 1 dinara, a treba davratimo kusur od 8 dinara, pohlepni algoritam bi vratio kombinaciju5 + 2 + 1, a rexee koje ukuquje najmai broj novqanica je 4 + 4.

Primer 3: Pretpostavimo da je dat skup 𝑆 = 𝑎1, 𝑎2, . . . , 𝑎𝑛 od 𝑛 pred-loenih aktivnosti koje pretenduju na korixee istog resursa, naprimer salu za predavaa, koja moe da uslui samo jednu aktivnost ujednom trenutku. Svaka aktivnost 𝑎𝑖 ima svoje vreme poqetka 𝑠𝑖 i vremezavrxetka 𝑓𝑖, pri qemu vai: 0 ≤ 𝑠𝑖 ≤ 𝑓𝑖. Ako je odabrana, aktivnost 𝑎𝑖se odrava tokom poluzatvorenog intervala [𝑠𝑖, 𝑓𝑖). Aktivnosti 𝑎𝑖 i 𝑎𝑗 sukompatibilne ako se intervali [𝑠𝑖, 𝑓𝑖) i [𝑠𝑗 , 𝑓𝑗) ne preklapaju, tj. akoje 𝑠𝑖 ≥ 𝑓𝑗 ili 𝑠𝑗 ≥ 𝑓𝑖. U problemu izbora aktivnosti potrebno jeodrediti podskup maksimalne veliqine meusobno kompatibilnih aktiv-nosti.

Neka su aktivnosti poreane u monotono neopadajuem redosledu vre-mena zavrxetka:

𝑓1 ≤ 𝑓2 ≤ . . . 𝑓𝑛

Na primer, neka je zadat sledei skup aktivnosti:

U gore navedenom primeru, podskup 𝑎3, 𝑎9, 𝑎11 se sastoji od meusobnokompatibilnih aktivnosti. Meutim, ovo nije maksimalni podskup jeristo vai i za podskup 𝑎1, 𝑎4, 𝑎8, 𝑎11 koji je vei od ega i jeste maksi-malan takav skup.

Page 114: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

6.2. Pohlepni algoritmi 114

Koju bi aktivnost trebalo izabrati da bude prva? Intuicija nam suge-rixe da bi trebalo izabrati aktivnost koja ostava resurs slobodnimza xto vei broj aktivnosti. Ispravna realizacija ove ideje je izboraktivnosti sa najranijim vremenom zavrxetka, odnosno da treba izabratiaktivnost 𝑎1, jer se ona prva zavrxava. Posle uklaaa sa spiska onihaktivnosti koje nisu kompatibilne sa izabranom, dae se moe nastavitina isti naqin sa izborom druge aktivnosti itd.

Ostaje samo jox jedno pitae: da li je naxa intuicija korektna, tj. dali je pohlepni izbor uvek deo nekog optimalnog rexea? Pokazuje se daovo vai.

Teorema: Posmatramo neprazni problem 𝑆𝑘 i neka je 𝑎𝑚 aktivnost u𝑆𝑘 sa najranijim vremenom zavrxetka. Neka se optimalno rexee ovogproblema sastoji od 𝑟 aktivnosti. Tada postoji podskup od 𝑟 aktivnostikoji sadri aktivnost 𝑎𝑚.

Dokaz: Neka je 𝐴𝑘 podskup meusobno kompatibilnih aktivnosti iz𝑆𝑘 maksimalne veliqine 𝑟 i neka je 𝑎𝑗 aktivnost iz 𝐴𝑘 sa najranijimvremenom zavrxetka. Ako je 𝑎𝑗 = 𝑎𝑚 zavrxili smo dokaz jer vai da je 𝑎𝑚u nekom podskupu meusobno kompatibilnih aktivnosti iz 𝑆𝑘 maksimalneveliqine. Ako je 𝑎𝑗 = 𝑎𝑚 neka je 𝐴′

𝑘 = 𝐴𝑘 ∖ 𝑎𝑗∪𝑎𝑚 skup 𝐴𝑘 u kome smo𝑎𝑚 zamenili sa 𝑎𝑗 . Aktivnosti u 𝐴′

𝑘 su disjunktne, xto sledi iz toga xtosu aktivnosti u 𝐴𝑘 disjunktne, 𝑎𝑗 je prva aktivnost u 𝐴𝑘 koja zavrxavai 𝑓𝑚 ≤ 𝑓𝑗 . S obzirom na to da je |𝐴′

𝑘| = |𝐴𝑘| zakuqujemo da je 𝐴′𝑘 skup

meusobno kompatibilnih aktivnosti iz 𝑆𝑘 maksimalne veliqine i onukuquje 𝑎𝑚.

𝐼𝑧𝑏𝑜𝑟 𝑎𝑘𝑡𝑖𝑣𝑛𝑜𝑠𝑡𝑖 𝑔𝑟𝑒𝑒𝑑𝑦(𝑠, 𝑓, 𝑛)ulaz: 𝑠 - niz poqetnih vremena aktivnosti, 𝑓 - niz odgovarajuih zavrxnih

vremena aktivnosti, 𝑛 - duina ovih nizova; nizovi su sortiranineopadajue prema vremenima zavrxetka

izlaz: 𝐴 - skup maksimalne veliqine meusobno kompatibilnih aktivnosti1 𝐴← 𝑎12 𝑝𝑜𝑠𝑙𝑒𝑑𝑛𝑗𝑎← 1 indeks poslede izabrane aktivnosti3 for 𝑖← 2 to 𝑛 do4 if 𝑠[𝑖] ≥ 𝑓 [𝑝𝑜𝑠𝑙𝑒𝑑𝑛𝑗𝑎] then5 𝐴← 𝐴 ∪ 𝑖6 𝑝𝑜𝑠𝑙𝑒𝑑𝑛𝑗𝑎← 𝑖7 return 𝐴

Sloenost ovog algoritma je 𝑂(𝑛 log 𝑛), a u sluqaju da su aktivnostive sortirane prema zavrxnim vremenima 𝑂(𝑛).

Problem 4: U magacinu koji e biti poplaven kroz najvixe jedan satnalazi se 𝑛 vrsta robe (u rasutom obliku). Vlasnik ima mogunost daspase samo toliko robe koliko moe da stane u ranac, nosivosti 𝑊 . Neka𝑖-ti artikal iz magacina, 𝑖 = 1, 2, . . . , 𝑛 ima vrednost 𝑣𝑖 i teinu 𝑤𝑖.Vlasnik eli da pokupi najvredniju robu, pritom je mogue da ne pokupisvu koliqinu nekog artikla (kao da posmatramo robu na meree). Kako toda postigne?

Page 115: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

115 6. Algoritamske strategije

Ovaj problem nazivamo razlomeni problem ranca (engl. fractionalknapsack problem) i on je primer problema koji se uspexno rexava pohlep-nim algoritmom.

Potrebno je najpre da za svaki artikal izraqunamo vrednost po jediniciteine, kao odnos: 𝑣𝑖

𝑤𝑖. Pohlepna strategija podrazumeva da se uzme xto

uzima xto vixe moe od artikla koji ima najveu vrednost po jedinicimase. Ako uzme svu koliqinu tog artikla i jox uvek ima mesta u rancu,on uzima xto vixe moe od artikla koji ima narednu najveu vrednostpo jedinici mase itd.

𝑅𝑎𝑧𝑙𝑜𝑚𝑙𝑗𝑒𝑛𝑖 𝑟𝑎𝑛𝑎𝑐(𝑊, 𝑣,𝑤, 𝑛)ulaz: 𝑊 - nosivost ranca, 𝑣 - vektor vrednosti artikala,

𝑤 - vektor teina artikala, 𝑛 - broj artikalapretpostava se da su artikli sortirani nerastueprema vrednosti po jedinici mere

izlaz: 𝑝 - procenat svakog predmeta koji je staven u ranac1 𝑆 ← 02 𝑖← 13 for 𝑗 ← 1 to 𝑛 do4 𝑝[𝑗]← 05 while 𝑆 ≤𝑊 do6 𝑆 ← 𝑆 + 𝑤[𝑖]7 𝑝[𝑖]← 18 𝑖← 𝑖 + 19 if 𝑆 > 𝑊 then10 𝑖← 𝑖− 111 ako posledi artikal ne moe ceo da stane, uzimamo samo deo12 𝑝[𝑖]← 1− (𝑆 −𝑊 )/𝑤[𝑖]

Dakle, sortiraem artikala u nerastui niz prema vrednosti po je-dinici mase tako da vai: 𝑣1

𝑤1≥ 𝑣2

𝑤2≥ . . . ≥ 𝑣𝑛

𝑤𝑛, pohlepni algoritam se

izvrxava u vremenu 𝑂(𝑛 log 𝑛).Problem 5: Neka je zadat tekst koji je potrebno zapisati sa xto mae

bitova. Pritom je svaki znak teksta predstaven jedinstvenim nizom bi-tova | kodom tog znaka. Ako su duine kodova svih znakova jednake (xtoje upravo sluqaj sa standardnim kodovima, kao xto je ASCII), broj bitovakoji predstavaju fajl zavisi samo od broja znakova u emu. Da bi sepostigla uxteda, moraju se neki znaci kodirati maim, a neki veimbrojem bitova.

Neka se u fajlu pojavuje 𝑛 razliqitih znakova, i neka se znak 𝑠𝑖pojavuje 𝑓𝑖 puta, 1 ≤ 𝑖 ≤ 𝑛. Ako sa 𝑙𝑖 oznaqimo broj bitova u koduznaka 𝑠𝑖, u kodu oznaqenom sa 𝐸, onda je ukupan broj bitova upotrebenihza predstavae kodiranog fajla 𝐿(𝐸,𝐹 ) =

∑𝑛𝑖=1 𝑙𝑖𝑓𝑖, gde je sa 𝐹 =

𝑓1, 𝑓2, . . . , 𝑓𝑛 oznaqen niz uqestanosti (frekvencija) znakova u fajlu. Os-novni uslov koji kod 𝐸 mora da zadovoi je da omoguuje jednoznaqnodekodirae, odnosno rekonstrukciju polaznog fajla na osnovu egove ko-dirane verzije. Jedan od naqina da se jednoznaqnost obezbedi, je da sekodu nametne uslov da ni jedna kodna req nije prefiks nekoj drugoj.Kodovi koji zadovoavaju ovaj uslov zovu se prefiksni kodovi. Svaki

Page 116: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

6.2. Pohlepni algoritmi 116

binarni prefiksni (onaj koji znake kodira nizovima bita) kod moe sepredstaviti binarnim stablom, videti primer na slici 6.1. Polazeiod binarnog stabla u kome su grane ka levim, odnosno desnim sinovimaoznaqene sa 0, odnosno 1, na prirodan naqin se svakoj kodnoj reqi jedno-znaqno pridruuje qvor. Polazi se od korena, a kretae se kontrolixekodnom reqi: ako je naredni bit 0, prelazi se u levog, a ako je 1, u desnogsina. Kod prefiksnih kodova kodnim reqima oqigledno odgovaraju listovikodnog stabla. Vai i obrnuto, kod zadat kodnim stablom, u kome sukodne reqi listovi, prefiksni je kod. Dekodirae prefiksnog koda jejednostavno: iz niza bita koji predstavaju kodirani fajl redom se izdvajajedna po jedna kodna req. Proces je jednoznaqno odreen upravo zato xtoje kod prefiksni. Na primer, niz bitova 011100010001, moe se u kodupredstavenim stablom na slici 6.1 dekodirati samo na jedan naqin:011 − 1 − 00 − 010 − 00 − 1. Problem efikasnog kodiraa moe se sadaformulisati na sledei naqin: Zadat je tekst sa 𝑛 razliqitih znakova,tako da su uqestanosti znakova zadate nizom 𝐹 = 𝑓1, 𝑓2, . . . , 𝑓𝑛. Odreditiprefiksni kod 𝐸 koji minimizira broj bita 𝐿(𝐸,𝐹 ) upotrebenih zakodirae. tt tt tt t

0

00

010 011

101

Slika 6.1: Predstavae prefiksnog koda stablom.

Za prefiksni kod koji minimizira vrednost 𝐿(𝐸,𝐹 ) kae se da jeoptimalni kod; on oqigledno zavisi od niza uqestanosti znakova 𝐹 . Cije za dati niz 𝐹 odrediti optimalni prefiksni kod (bilo koji; u opxtemsluqaju postoji vixe razliqitih optimalnih kodova). Razmotrimo zbogtoga malo detanije osobine optimalnih kodova. Jasno je najpre da uoptimalnom kodu qexi znaci moraju biti kodirani maim brojem bita,odnosno, ako je za proizvona dva znaka 𝑐𝑖, 𝑐𝑗 , znak 𝑐𝑖 qexi od znaka 𝑐𝑗(tj. 𝑓𝑖 > 𝑓𝑗), onda za odgovarajue duine kodnih reqi 𝑙𝑖, 𝑙𝑗 mora da vai𝑙𝑖 ≤ 𝑙𝑗 . Zaista, pretpostavimo suprotno, da je 𝑓𝑖 > 𝑓𝑗 i 𝑙𝑖 > 𝑙𝑗 . Tada je(𝑓𝑖 − 𝑓𝑗)(𝑙𝑖 − 𝑙𝑗) > 0, ili 𝑓𝑖𝑙𝑖 + 𝑓𝑗 𝑙𝑗 > 𝑓𝑗 𝑙𝑖 + 𝑓𝑖𝑙𝑗 . Ova nejednakost suprotnaje pretpostavci da se radi o optimalnom kodu: zamenom kodnih reqi zaznakove 𝑐𝑖 i 𝑐𝑗 dobija se kod sa maom vrednoxu 𝐿(𝐸,𝐹 ) od polazne.

U kodnom stablu optimalnog prefiksnog koda svaki unutraxi qvormora da ima oba sina: u protivnom bi se kod mogao pojednostaviti skra-ivaem kodnih reqi u listovima podstabla ispod qvora sa samo jednimsinom, videti primer na slici 6.2. Odatle sledi druga karakteristikaoptimalnih prefiksnih kodova: postoji optimalni prefiksni kod u komesu kodne reqi za dva znaka sa najmaim frekvencijama | listovi sa istimocem, na najveem moguem rastojau od korena (drugim reqima, te kodnereqi se razlikuju samo po posledem bitu). Zaista, dva znaka 𝑐𝑖, 𝑐𝑗 sa

Page 117: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

117 6. Algoritamske strategije

najmaim uqestanostima moraju biti kodirana sa najvixe bita, odnosnomoraju biti predstaveni listovima u najdaem sloju (na najveem ra-stojau od korena). Znaci 𝑐𝑖, 𝑐𝑗 moraju biti u istom sloju; ako ti znacinisu sinovi istog oca, onda se mogu izvrxiti zamene kodova znakova uposledem sloju (ta zamena ne mea broj upotrebenih bita 𝐿(𝐸,𝐹 )), takoda u novom optimalnom kodu znaci 𝑐𝑖, 𝑐𝑗 budu sinovi istog oca (videtiprimer na slici 6.3).

d dd

d d dd d

d dd

dd dd d dd dd

𝐴 𝐵 𝐶 𝐷 𝐸

0 1

000 001 100 101 111

𝐴 𝐵

𝐶 𝐷

00 01

100 101

𝐸11

0 1

-

Slika 6.2: Kodno stablo u kome neki qvor ima samo jednog sina nije kodnostablo optimalnog koda.

b bb b bb

b

𝑓𝑖 𝑓𝑟 𝑓𝑠 𝑓𝑗

b bb b bb

b

𝑓𝑖 𝑓𝑗 𝑓𝑠 𝑓𝑟

-

Slika 6.3: Transformacija kodnog stabla, posle koje dva znaka sanajmaim frekvencijama 𝑓𝑖 i 𝑓𝑗 postaju sinovi istog oca.

Algoritam kodiraa (nalaea optimalnog koda) zasniva se na svoeuproblema sa 𝑛 znakova na problem sa 𝑛−1 znakom; bazni sluqaj je trivijalan.Svoee na mau azbuku izvodi se zamenom dva najrea znaka jednim novimznakom. Neka su 𝑐𝑖 i 𝑐𝑗 dva proizvona znaka sa najmaim uqestanostima.Prema gore dokazanom tvreu, postoji optimalni kod u kome znacima 𝑐𝑖i 𝑐𝑗 odgovaraju listovi na maksimalnom rastojau od korena. Dva znaka𝑐𝑖 i 𝑐𝑗 zameujemo novim znakom koji moemo da oznaqimo sa 𝑧 i qija jefrekvencija 𝑓𝑖+𝑓𝑗 . Alfabet sada ima 𝑛−1 znak, pri qemu zbir uqestanostiznakova nije promeen, pa se za ega prema induktivnoj hipotezi moeodrediti optimalni kod. Optimalni kod za polazni alfabet dobija setako xto se listu 𝑧 u kodu za 𝑛 − 1 znak dodaju dva sina, lista kojiodgovaraju znacima 𝑐𝑖 i 𝑐𝑗 . Optimalni kod dobijen opisanom konstrukcijomzove se Hafmenov kod (prema imenu autora algoritma, D. Huffman).

Operacije koje se izvrxavaju prilikom formiraa Hafmenovog kodasu

∙ umetae u strukturu podataka,

Page 118: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

6.3. Algoritmi zasnovani na razlagau 118

∙ brisae dva znaka sa najmaim frekvencijama iz strukture, i

∙ konstrukcija kodnog stabla.

Hip je pogodna struktura podataka za prve dve operacije, jer se tada teoperacije u najgorem sluqaju izvrxavaju za 𝑂(log 𝑛) koraka. Sloenostdodavaa novog qvora stablu ograniqena je konstantom. Umetaa i brisaaiz hipa izvrxavaju se u 𝑂(log 𝑛) koraka. Sloenost algoritma je dakle𝑂(𝑛 log 𝑛).

Primer: Neka je dat fajl u kome se pojavuju znaci 𝐴, 𝐵, 𝐶, 𝐷, 𝐸i 𝐹 sa frekvencijama redom 5, 2, 3, 4, 10 i 1. Dva znaka sa najmaimfrekvencijama su 𝐹 i𝐵; oni se zameuju novim znakom𝐵𝐹 sa frekvencijom1 + 2 = 3. Daa zameivaa prikazana su u sledeoj tabeli.

1 2 3 4 5 6 novi znak

𝐴 𝐵 𝐶 𝐷 𝐸 𝐹 𝐵𝐹5 2 3 4 10 1 3

𝐴 𝐶 𝐷 𝐸 𝐵𝐹 𝐶𝐵𝐹5 3 4 10 3 6

𝐴 𝐷 𝐸 𝐶𝐵𝐹 𝐴𝐷5 4 10 6 9

𝐸 𝐶𝐵𝐹 𝐴𝐷 𝐶𝐵𝐹𝐴𝐷10 6 9 15

𝐸 𝐶𝐵𝐹𝐴𝐷 𝐸𝐶𝐵𝐹𝐴𝐷10 15 25

Na slici 6.4 prikazano je dobijeno kodno stablo.

Slika 6.4: Stablo Hafmenovog koda iz primera.

6.3 Algoritmi zasnovani na razlagau

Neka je dat problem dimenzije 𝑛 koji treba rexiti. Strategija raz-lagaa (dekompozicije, engl. divide-and-conquer) sastoji se u tome da seformira nekoliko potproblema maih dimenzija. Potrebno je rexiti ovepotprobleme, a zatim nai metod za kombinovae rexea potproblemau rexee polaznog problema. Ukoliko su potproblemi i dae velikih

Page 119: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

119 6. Algoritamske strategije

dimenzija, mogue je ponovo vrxiti razlagae. Najqexe su potproblemidobijeni razlagaem istog tipa kao i polazni problem. Ponovna primenaprincipa razlagaa se prirodno izraava rekurzivnim algoritmom. Naovaj naqin dobijaju se sve mai i mai potproblemi sve dok se ne dobijupotproblemi koji su dovono mali da se mogu rexiti bez razlagaa.Sloenost veine algoritama zasnovanih na razlagau se moe izrazitirekurentnom jednaqinom oblika:

𝑇 (𝑛) =

𝑇 (1), 𝑛 = 1

𝑎𝑇 (𝑛/𝑏) + 𝑓(𝑛) 𝑛 > 1

pri qemu se od problema dimenzije 𝑛 formira 𝑎 potproblema dimenzije 𝑏puta mae, a ukupno vreme potrebno za razlagae problema na potproblemei za objediavae rexea potproblema u rexee problema je 𝑓(𝑛).

U nastavku emo videti neke primere problema koji se mogu efikasnorexiti algoritmima zasnovanim na razlagau.

6.3.1 Binarna pretraga i varijacije

Binarna pretraga je za oblast algoritama ono xto je toqak za meha-nizme: ona je jednostavna, elegantna, neizmerno vana, i otkrivana jevixe puta. Osnovna ideja binarne pretrage je podela prostora na dvapriblino jednaka dela postavaem samo jednog pitaa. U nastavkuemo razmotriti nekoliko varijacija binarne pretrage.

Qista binarna pretraga

Problem: Neka je 𝑥1, 𝑥2, . . . , 𝑥𝑛 niz realnih brojeva takav da je 𝑥1 ≤ 𝑥2 ≤· · · ≤ 𝑥𝑛. Za zadati realni broj 𝑧 treba ustanoviti da li se pojavuje unizu, a ako je odgovor \da", potrebno je pronai indeks 𝑖 takav da je 𝑥𝑖 = 𝑧.

Zbog jednostavnosti, traimo samo jedan indeks 𝑖 takav da je 𝑥𝑖 = 𝑧. Uopxtem sluqaju ci moe da bude pronalaee svih takvih indeksa, naj-maeg ili najveeg meu ima i sliqno. Ideja je prepoloviti prostor kojise pretrauje tako xto se najpre proveri sredi qlan niza. Pretpostavimozbog jednostavnosti da je 𝑛 paran broj. Ako je 𝑧 mae od 𝑥𝑛/2+1, onda 𝑧moe biti samo u prvoj polovini niza; u protivnom, 𝑧 moe biti samo udrugoj polovini niza. Pronalaee 𝑧 u prvoj ili drugoj polovini niza jeproblem sa veliqinom ulaza 𝑛/2, koji se rexava rekurzivno. Bazni sluqaj𝑛 = 1 rexava se neposrednim uporeivaem broja 𝑧 sa elementom.

𝐵𝑖𝑛𝑎𝑟𝑛𝑎 𝑝𝑟𝑒𝑡𝑟𝑎𝑔𝑎(𝑋,𝑛, 𝑧)ulaz: 𝑋 - niz od 𝑛 brojeva ureenih neopadajue, 𝑧 - broj koji se traiizlaz: indeks 𝑖 takav da je 𝑋[𝑖] = 𝑧 ili 0 ako takav indeks ne postoji,

(pretpostavka je da indeksi niza idu od 1)1 return 𝑁𝑎𝑑𝑗𝑖(𝑧,𝑋, 1, 𝑛)

𝑁𝑎𝑑𝑗𝑖(𝑧,𝑋,𝐿𝑒𝑣𝑖,𝐷𝑒𝑠𝑛𝑖)ulaz: 𝑋 - niz od 𝑛 brojeva ureenih neopadajue koji se razmatra

u granicama od 𝐿𝑒𝑣𝑖 do 𝐷𝑒𝑠𝑛𝑖, 𝑧 - broj koji se traiizlaz: indeks 𝑖 takav da je 𝑋[𝑖] = 𝑧 ili 0 ako takav indeks ne postoji

Page 120: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

6.3. Algoritmi zasnovani na razlagau 120

1 if 𝐿𝑒𝑣𝑖 = 𝐷𝑒𝑠𝑛𝑖 then2 if 𝑋[𝐿𝑒𝑣𝑖] = 𝑧 then3 return 𝐿𝑒𝑣𝑖4 else return 05 else6 𝑆𝑟𝑒𝑑𝑛𝑗𝑖← ⌈(𝐿𝑒𝑣𝑖 + 𝐷𝑒𝑠𝑛𝑖)/2⌉7 if 𝑧 < 𝑋[𝑆𝑟𝑒𝑑𝑛𝑗𝑖] then8 return 𝑁𝑎𝑑𝑗𝑖(𝑧,𝑋,𝐿𝑒𝑣𝑖, 𝑆𝑟𝑒𝑑𝑛𝑗𝑖− 1)9 else10 return 𝑁𝑎𝑑𝑗𝑖(𝑧,𝑋, 𝑆𝑟𝑒𝑑𝑛𝑗𝑖,𝐷𝑒𝑠𝑛𝑖)

Sloenost: Posle svakog uporeivaa opseg moguih indeksa se polovi,pa je potreban broj uporeivaa za pronalaee zadatog broja u nizuveliqine 𝑛 jednak𝑂(log 𝑛). Ova varijanta binarne pretrage odlae proverujednakosti do samog kraja. Alternativa je provera jednakosti sa 𝑧 u svakomkoraku. Problem sa prikazanom varijantom je u tome xto se pretraga nemoe zavrxiti pre nego xto se opseg za pretragu suzi na samo jedan broj;prednost joj je pak da se u svakom koraku vrxi samo jedno uporeivae.Ovakva pretraga je zbog toga obiqno bra. Iako je jednostavnije napravitirekurzivni program, ovaj program nije texko prevesti u nerekurzivni.Binarna pretraga nije tako efikasna za male vrednosti 𝑛, pa je tada boezadati niz pretraiti linearno, qlan po qlan.

Sledei problem svodi se na binarnu pretragu.Problem: Za zadati rastue ureeni niz celih brojeva 𝑎1, 𝑎2, . . . , 𝑎𝑛

utvrditi da li postoji indeks 𝑖, takav da je 𝑎𝑖 = 𝑖.Zaista, niz 𝑥𝑖 = 𝑎𝑖−𝑖 je neopadajui (jer je 𝑥𝑖+1−𝑥𝑖 = 𝑎𝑖+1−𝑎𝑖−1 ≥ 0),

a uslov 𝑎𝑖 = 𝑖 je ekvivalentan uslovu 𝑥𝑖 = 0. Prema tome, zadati problemrexava se binarnom pretragom niza 𝑥𝑖, u kome se trai broj 𝑧 = 0.

Binarna pretraga cikliqki ureenog niza

Za niz 𝑥1, 𝑥2, . . . , 𝑥𝑛 kae se da je cikliqki ureen ako vae nejednakosti

𝑥𝑖 < 𝑥𝑖+1 < · · · < 𝑥𝑛 < 𝑥1 < · · · < 𝑥𝑖−1,

gde je 𝑥𝑖 najmai element niza.Problem: Za zadati cikliqki ureeni niz pronai poziciju minimal-

nog elementa niza (zbog jednostavnosti moe se pretpostaviti da je tapozicija jedinstvena).

Da bismo pronaxli minimalni element 𝑥𝑖 u nizu, koristimo idejubinarne pretrage da jednim uporeivaem eliminixeno polovinu niza.Uzmimo proizvona dva broja 𝑥𝑘 i 𝑥𝑚 takva da je 𝑘 < 𝑚. Ako je 𝑥𝑘 < 𝑥𝑚,onda 𝑖 ne moe biti u intervalu 𝑘 < 𝑖 ≤ 𝑚, jer je 𝑥𝑖 najmai element niza(u tom sluqaju bilo bi 𝑥𝑖 < 𝑥𝑚 < 𝑥𝑘 | suprotno pretpostavci da je 𝑥𝑘 <𝑥𝑚). U protivnom, ako je 𝑥𝑘 > 𝑥𝑚, onda 𝑖 mora biti u intervalu 𝑘 < 𝑖 ≤ 𝑚,jer je tada monotonost niza prekinuta negde u intervalu indeksa [𝑘,𝑚],videti sliku 6.5. Prema tome, jednim uporeivaem moe se eliminisatimnogo elemenata. Odgovarajuim izborom 𝑘 i𝑚, 𝑖 se moe odrediti pomou𝑂(log 𝑛) uporeivaa. Invarijanta glavne pete algoritma je uslov da se𝑖 uvek nalazi u (cikliqnom) intervalu (𝐿𝑒𝑣𝑖,𝐷𝑒𝑠𝑛𝑖].

Page 121: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

121 6. Algoritamske strategije

-

6

𝑖𝑖− 1𝑘1 𝑚 𝑛

𝑗

𝑥𝑗

s ssss g

s ssss g

Slika 6.5: Cikliqki ureen niz | ilustracija.

𝐶𝑖𝑘𝑙𝑖𝑐𝑛𝑎 𝐵𝑖𝑛𝑎𝑟𝑛𝑎 𝑃𝑟𝑒𝑡𝑟𝑎𝑔𝑎(𝑋,𝑛)ulaz: 𝑋 - niz od 𝑛 razliqitih brojeva ureenih cikliqkiizlaz: indeks minimalnog elementa u nizu 𝑋1 return 𝑐 𝑁𝑎𝑑𝑗𝑖(𝑋, 1, 𝑛)

𝑐 𝑁𝑎𝑑𝑗𝑖(𝑋,𝐿𝑒𝑣𝑖,𝐷𝑒𝑠𝑛𝑖)ulaz: 𝑋 - niz od 𝑛 brojeva ureenih cikliqki koji se razmatra

u granicama od 𝐿𝑒𝑣𝑖 do 𝐷𝑒𝑠𝑛𝑖izlaz: indeks minimalnog elementa u datom podnizu1 if 𝐿𝑒𝑣𝑖 = 𝐷𝑒𝑠𝑛𝑖 then2 return 𝐿𝑒𝑣𝑖3 else4 𝑆𝑟𝑒𝑑𝑛𝑗𝑖← ⌈(𝐿𝑒𝑣𝑖 + 𝐷𝑒𝑠𝑛𝑖)/2⌉5 if 𝑋[𝑆𝑟𝑒𝑑𝑛𝑗𝑖] < 𝑋[𝐷𝑒𝑠𝑛𝑖] then6 return 𝑐 𝑁𝑎𝑑𝑗𝑖(𝑋,𝐿𝑒𝑣𝑖, 𝑆𝑟𝑒𝑑𝑛𝑗𝑖)7 else8 return 𝑐 𝑁𝑎𝑑𝑗𝑖(𝑋,𝑆𝑟𝑒𝑑𝑛𝑗𝑖 + 1, 𝐷𝑒𝑠𝑛𝑖)

Binarna pretraga niza nepoznate duine

Posmatrajmo varijantu problema pretrage kad se zadati broj 𝑧 trai uureenom nizu nepoznate duine. Da bi se problem sveo na ve rexen,potrebno je pronai bar jedan indeks 𝑖 takav da je 𝑥𝑖 > 𝑧: tada se moeprei na binarnu pretragu opsega indeksa od 1 do 𝑖.

Moe se postupiti na sledei naqin. Najpre se 𝑧 uporeuje sa 𝑥1. Akoje 𝑧 ≤ 𝑥1, onda 𝑧 moe biti jednako samo broju 𝑥1. Pretpostavimo daznamo indeks 𝑗 takav da je 𝑧 > 𝑥𝑗 . Posle uporeivaa 𝑧 sa 𝑥2𝑗 postoje dvemogunosti. Ako je 𝑧 ≤ 𝑥2𝑗 , onda znamo da je 𝑥𝑗 < 𝑧 ≤ 𝑥2𝑗 , pa se 𝑧 moepronai pomou 𝑂(log2 𝑗) uporeivaa. Ako je pak 𝑧 > 𝑥2𝑗 , onda je prostorza pretraivae udvostruqen, i treba nastaviti (indukcijom) tako xtose 𝑗 zameni sa 2𝑗. Pretpostavimo da je 𝑖 najmai indeks takav da je 𝑧 ≤ 𝑥𝑖.Tada je dovono 𝑂(log2 𝑖) uporeivaa da se (udvostruqavaem) pronaetakvo 𝑥𝑗 koje je vee ili jednako od 𝑧, i novih 𝑂(log2 𝑖) uporeivaa da sepronae 𝑧.

Page 122: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

6.3. Algoritmi zasnovani na razlagau 122

Isti algoritam moe se upotrebiti i ako je duina niza poznata, alioqekujemo da je indeks 𝑖 vrlo mali. Da bi ovaj algoritam bio boi odobiqne binarne pretrage, potrebno je da bude priblino 2 log2 𝑖 < log2 𝑛,odnosno 𝑖 <

√𝑛.

Problem mucavog podniza

Princip binarne pretrage moe se iskoristiti i u problemima koji naprvi pogled nemaju veze sa binarnom pretragom. Neka su 𝐴 = 𝑎1𝑎2 . . . 𝑎𝑛i 𝐵 = 𝑏1𝑏2 . . . 𝑏𝑚 dva niza znakova iz konaqnog alfabeta i vai 𝑚 ≤ 𝑛.Kae se da je 𝐵 podniz niza 𝐴 ako postoje indeksi 𝑖1 < 𝑖2 < · · · < 𝑖𝑚takvi da je 𝑏𝑗 = 𝑎𝑖𝑗 za sve indekse 𝑗, 1 ≤ 𝑗 ≤ 𝑚, odnosno ako se niz 𝐵 moe"uklopiti" u niz 𝐴. Lako je ustanoviti da li je 𝐵 podniz niza 𝐴: u nizu𝐴 trai se prva pojava znaka 𝑏1, zatim od te pozicije dae prva pojavaznaka 𝑏2, itd. Ispravnost ovog algoritma lako se dokazuje indukcijom.Poxto se elementi oba niza prolaze taqno po jednom, vremenska sloenostalgoritma je 𝑂(𝑚 + 𝑛). Za zadati niz 𝐵, neka 𝐵𝑖 oznaqava niz u kome seredom svaki znak niza 𝐵 ponava 𝑖 puta. Na primer, ako je 𝐵 = 𝑥𝑦𝑧𝑧𝑥,onda je 𝐵3 = 𝑥𝑥𝑥𝑦𝑦𝑦𝑧𝑧𝑧𝑧𝑧𝑧𝑥𝑥𝑥.

Problem: Data su dva niza 𝐴 i 𝐵. Odrediti maksimalnu vrednost 𝑖

takvu da je 𝐵𝑖 podniz niza 𝐴.Ovaj problem se naziva problem mucavog podniza. Iako na prvi

pogled teak, on se lako moe rexiti pomou binarne pretrage. Za svakuzadatu vrednost 𝑖 lako se konstruixe niz 𝐵𝑖, i proverava da li je 𝐵𝑖

podniz niza 𝐴. Pored toga, ako je 𝐵𝑗 podniz niza 𝐴, onda je za svako 𝑖,1 ≤ 𝑖 ≤ 𝑗, 𝐵𝑖 podniz niza 𝐴. Najvea vrednost za 𝑖 koju treba razmatratimaa je ili jednaka od 𝑛/𝑚, jer bi u protivnom niz 𝐵𝑖 bio dui odniza 𝐴. Dakle, moe se primeniti binarna pretraga. Poqiemo sa 𝑖 =⌈𝑛/(2𝑚)⌉ i proveravamo da li je 𝐵𝑖 podniz niza 𝐴. Zatim nastavamosa binarnom pretragom, eliminixui doi, odnosno gori podintervalako je odgovor da, odnosno ne. Posle ⌈log2(𝑛/𝑚)⌉ testova bie pronaenomaksimalno 𝑖 za koje tvree vai. Vremenska sloenost algoritma je𝑂((𝑛 + 𝑚) log(𝑛/𝑚)) = 𝑂(𝑛 log(𝑛/𝑚)).

Rexee ovog problema lako je uopxtiti. Pretpostavimo da ako broj 𝑖zadovoava uslov 𝑃 (𝑖), onda i svi brojevi 𝑗, 1 ≤ 𝑗 ≤ 𝑖 zadovoavaju tajuslov. Ako traimo maksimalnu vrednost 𝑖 koja zadovoava uslov 𝑃 (𝑖),dovono je da imamo algoritam koji utvruje da li zadato 𝑖 zadovoavataj uslov. Tada se problem rexava binarnom pretragom moguih vrednostiza 𝑖. Ako se ne zna gora granica za 𝑖, moe se iskoristiti postupak saudvostruqavaem: poqie se sa 𝑖 = 1, a zatim se 𝑖 udvostruqava, sve dokse ne dobije neka gora granica.

6.3.2 Istovremeno traee najmaeg i najveeg qlana niza

Nalaee najveeg ili najmaeg elementa u nizu je jednostavno. Akoznamo najvei element u nizu duine 𝑛−1, onda treba da ga jox uporedimosa 𝑛-tim elementom da bismo pronaxli najvei element niza duine 𝑛.Nalaee najveeg elementa niza duine 1 je trivijalno. Proces zahtevajedno uporeivae po elementu, poqevxi od drugog elementa. Ukupan brojuporeivaa je dakle 𝑛− 1.

Page 123: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

123 6. Algoritamske strategije

Razmotrimo sada naredni problem.

Problem: Pronai najvei i najmai element datog niza.

Najjednostavnije je rexiti ova dva problema nezavisno. Ukupan brojuporeivaa je 2𝑛 − 3: 𝑛 − 1 da se pronae najvei, a zatim 𝑛 − 2 da sepronae najmai element (jer se najvei pri tome ne mora razmatrati).Moe li se ovo poboxati? Razmotrimo jox jednom induktivni pristup.Pretpostavimo da umemo da reximo problem za datih 𝑛−1 elemenata, i daje potrebno rexiti problem za 𝑛 elemenata (bazni sluqaj je trivijalan).Treba uporediti novi element sa najveim i najmaim do tada. To su dvauporeivaa, xto znaqi da e broj uporeivaa ponovo biti 2𝑛 − 3, jerza prvi element nije potrebno ni jedno uporeivae.

Algoritam zasnovan na razlagau bi radio na sledei naqin: ako nizima vixe od dva elementa, delimo ga na dve polovine. Taqnije ako radimosa nizom 𝑎1, 𝑎2, . . . , 𝑎𝑛 delimo ga na dva podniza 𝑎1, . . . , 𝑎⌈𝑛/2⌉ i 𝑎⌈𝑛/2⌉+1, . . . , 𝑎𝑛.Nakon toga moemo rekurzivno rexiti ova dva potproblema. Kako iskom-binovati rexea ova dva potproblema? Maksimum polaznog niza jednakje veoj od vrednosti maksimuma dva razmatrana potproblema, a minimumpolaznog niza maoj od vrednosti minimuma dva razmatrana potproblema.Ako je niz duine jedan onda je jedini element niza egov minimum imaksimum, a ako je duine dva onda korixeem jednog poreea moemorexiti problem.

𝑀𝑎𝑘𝑠𝑖𝑚𝑢𝑚𝐼𝑀𝑖𝑛𝑢𝑚𝑢𝑚(𝑋,𝑛,𝑀𝑎𝑥,𝑀𝑖𝑛)ulaz: 𝑋 - niz od 𝑛 brojevaizlaz: 𝑀𝑎𝑥 - maksimalni element niza, 𝑀𝑖𝑛 - minimalni element niza1 𝑀𝑎𝑥𝑀𝑖𝑛(𝑋, 1, 𝑛,𝑀𝑎𝑥,𝑀𝑖𝑛)

𝑀𝑎𝑥𝑀𝑖𝑛(𝑋,𝐿𝑒𝑣𝑖,𝐷𝑒𝑠𝑛𝑖,𝑀𝑎𝑥,𝑀𝑖𝑛)ulaz: 𝑋 - niz od 𝑛 brojeva koji se razmatra u granicama od 𝐿𝑒𝑣𝑖 do 𝐷𝑒𝑠𝑛𝑖izlaz: 𝑀𝑎𝑥 - maksimalni element niza, 𝑀𝑖𝑛 - minimalni element niza1 if 𝐿𝑒𝑣𝑖 = 𝐷𝑒𝑠𝑛𝑖 then2 𝑀𝑎𝑥← 𝑋[𝐿𝑒𝑣𝑖]3 𝑀𝑖𝑛← 𝑋[𝐿𝑒𝑣𝑖]4 else if 𝐿𝑒𝑣𝑖 = 𝐷𝑒𝑠𝑛𝑖− 1 then5 if 𝑋[𝐿𝑒𝑣𝑖] < 𝑋[𝐷𝑒𝑠𝑛𝑖] then6 𝑀𝑎𝑥← 𝑋[𝐷𝑒𝑠𝑛𝑖]7 𝑀𝑖𝑛← 𝑋[𝐿𝑒𝑣𝑖]8 else9 𝑀𝑎𝑥← 𝑋[𝐿𝑒𝑣𝑖]10 𝑀𝑖𝑛← 𝑋[𝐷𝑒𝑠𝑛𝑖]11 else12 𝑆𝑟𝑒𝑑𝑛𝑗𝑖← ⌈(𝐿𝑒𝑣𝑖 + 𝐷𝑒𝑠𝑛𝑖)/2⌉13 𝑀𝑎𝑥𝑀𝑖𝑛(𝑋,𝐿𝑒𝑣𝑖, 𝑆𝑟𝑒𝑑𝑛𝑗𝑖,𝑀𝑎𝑥,𝑀𝑖𝑛)14 𝑀𝑎𝑥𝑀𝑖𝑛(𝑋,𝑆𝑟𝑒𝑑𝑛𝑗𝑖 + 1, 𝐷𝑒𝑠𝑛𝑖,𝑀𝑎𝑥1,𝑀𝑖𝑛1)15 𝑀𝑎𝑥← max𝑀𝑎𝑥,𝑀𝑎𝑥116 𝑀𝑖𝑛← min𝑀𝑖𝑛,𝑀𝑖𝑛1

Page 124: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

6.3. Algoritmi zasnovani na razlagau 124

Sloenost: Broj poreea koji se koristi u ovom pristupu dat je re-kurentnom jednaqinom:

𝑇 (𝑛) =

⎧⎪⎨⎪⎩0, 𝑛 = 1

1, 𝑛 = 2

2𝑇 (⌊𝑛/2⌋) + 2, 𝑛 > 2

Ako pretpostavimo da je 𝑛 = 2𝑘 vai:

𝑇 (2𝑘) = 2𝑇 (2𝑘−1) + 2

𝑇 (2𝑘)

2𝑘=

𝑇 (2𝑘−1)

2𝑘−1+

1

2𝑘−1

Ako izraz 𝑇 (2𝑘)2𝑘

oznaqimo sa 𝑎𝑘, pri qemu vai 𝑎1 = 𝑇 (2)2 = 1

2 dobijamojednaqinu:

𝑎𝑘 = 𝑎𝑘−1 +1

2𝑘−1

Sumiraem dobijamo: 𝑎𝑘 = 𝑎1 + 1− 21−𝑘 = 32 − 21−𝑘. Prema tome:

𝑇 (𝑛) = 𝑇 (2𝑘) = 2𝑘𝑎𝑘 =3

22𝑘 − 2 =

3

2𝑛− 2

Moe se pokazati da ako 𝑛 nije stepen dvojke, tada vai 𝑇 (𝑛) ≤ 32𝑛− 2.

6.3.3 Sortirae objediavaem i sortirae razdvajaem

(kvik sort)

Prethodno razmatrani algoritmi za sortirae objediavaem i sor-tirae razdvajaem su zasnovani na strategiji rexavaa problema raz-lagaem i neemo ih sada ponovo razmatrati.

6.3.4 Problem odreivaa 𝑘-tog najmaeg qlana niza

Rangovske statistike niza 𝑆 su 𝑘-ti najmai brojevi 𝑟𝑘, 𝑘 = 1, 2, . . . , 𝑛.Sve rangovske statistike mogu se dobiti sortiraem niza 𝑆. Specijalnisluqajevi su minimum 𝑟1, maksimum 𝑟𝑛 i medijana 𝑟⌈𝑛/2⌉.

Problem: Za zadati niz elemenata 𝑆 = 𝑥1, 𝑥2, . . . , 𝑥𝑛 i prirodni broj𝑘, 1 ≤ 𝑘 ≤ 𝑛, odrediti 𝑘-ti najmai element u 𝑆.

Ovaj problem nazivamo problem odreivaa rangovskih statistika,odnosno problem selekcije. Ako je 𝑘 vrlo blizu 1 ili 𝑛, onda se 𝑘-tinajmai element moe odrediti izvrxavaem algoritma za nalaeeminimuma (maksimuma) 𝑘 puta. Ovaj pristup zahteva oko 𝑘𝑛 uporeivaa.Ovo je boe od sortiraa niza, sve dok 𝑘 ne postane reda veliqine log 𝑛.Meutim, postoji drugi algoritam koji efikasno pronalazi 𝑘-ti najmaielement za proizvono 𝑘.

Ideja je primeniti razlagae na isti naqin kao i kod algoritma sor-tiraa razdvajaem, sem xto je ovog puta dovono rexiti samo jedan oddva potproblema. Kod sortiraa razdvajaem niz se razdvaja pomou pi-vota na dva podniza. Dva podniza se zatim sortiraju rekurzivno. Ovde je

Page 125: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

125 6. Algoritamske strategije

dovono odrediti koji od podnizova sadri 𝑘-ti najmai element, a ondaalgoritam primeniti rekurzivno samo na taj podniz. Ostali elementimogu se ignorisati.

𝑆𝑒𝑙𝑒𝑘𝑐𝑖𝑗𝑎(𝑋,𝑛, 𝑘)ulaz: 𝑋 - niz od 𝑛 brojeva i 𝑘 - prirodni brojizlaz: 𝑆 - 𝑘-ti najmai element niza 𝑋1 if 𝑘 < 1 or 𝑘 > 𝑛 then2 𝑝𝑟𝑖𝑛𝑡 \grexka"3 else4 𝑆 ← 𝑆𝑒𝑙(𝑋, 1, 𝑛, 𝑘)5 return 𝑆

𝑆𝑒𝑙(𝑋,𝐿𝑒𝑣𝑖,𝐷𝑒𝑠𝑛𝑖, 𝑘)ulaz: 𝑋 - niz od 𝑛 brojeva koji se razmatra u granicama od 𝐿𝑒𝑣𝑖 do 𝐷𝑒𝑠𝑛𝑖

𝑘 - prirodni broj, 1 ≤ 𝑘 ≤ 𝐷𝑒𝑠𝑛𝑖− 𝐿𝑒𝑣𝑖 + 1izlaz: 𝑆 - 𝑘-ti najmai element meu ima1 if 𝐿𝑒𝑣𝑖 = 𝐷𝑒𝑠𝑛𝑖 then2 return 𝐿𝑒𝑣𝑖3 else4 𝑆 ← 𝑅𝑎𝑧𝑑𝑣𝑎𝑗𝑎𝑛𝑗𝑒(𝑋,𝐿𝑒𝑣𝑖,𝐷𝑒𝑠𝑛𝑖)5 if 𝑆 − 𝐿𝑒𝑣𝑖 + 1 ≥ 𝑘 then6 𝑆 ← 𝑆𝑒𝑙(𝑋,𝐿𝑒𝑣𝑖, 𝑆, 𝑘)7 else8 𝑆 ← 𝑆𝑒𝑙(𝑋,𝑆 + 1, 𝐷𝑒𝑠𝑛𝑖, 𝑘 − (𝑆 − 𝐿𝑒𝑣𝑖 + 1))9 return 𝑆

Sloenost: U proseku se oqekuje da sloenost algoritma 𝑇 (𝑛) budelinearna, jer zadovoava (grubo) rekurentnu relaciju 𝑇 (𝑛) = 𝑇 (𝑛/2) +𝑂(𝑛). Kao i kod sortiraa razdvajaem, lox izbor pivota vodi kvadratnomalgoritmu. Sreda sloenost ovog algoritma moe se oceniti na sliqannaqin kao kod sortiraa razdvajaem. Neka je sa 𝑇 (𝑛, 𝑘) oznaqen prose-qan broj uporeivaa u algoritmu na ulazima duine 𝑛 kad se trai 𝑘-ti najmai element. Pretpostavimo da posle razdvajaa (koje se sastojiod 𝑛 − 1 uporeivaa) pivot sa jednakom verovatnoom 1/𝑛 moe doina svaku poziciju 𝑖 = 1, 2, . . . , 𝑛. Razmatraemo malo izmeenu varijantualgoritma, u kojoj se dae izvrxavae odmah prekida ako je pozicijapivota 𝑘 (i sliqno u daim rekurzivnim pozivima), jer je tada pronaen𝑘-ti najmai element. Za 𝑖 < 𝑘 (odnosno 𝑖 > 𝑘) dolazi se do rekurzivnogpoziva algoritma sloenosti 𝑇 (𝑛− 𝑖, 𝑘− 𝑖) (odnosno 𝑇 (𝑖, 𝑘)) jer preostajepronalaee (𝑘 − 𝑖)-tog najmaeg elementa od ih 𝑛 − 𝑖 (odnosno 𝑘-tognajmaeg elementa od ih 𝑖 − 1). Prema tome, diferencna jednaqina za𝑇 (𝑛, 𝑘) je

𝑇 (𝑛, 𝑘) =1

𝑛

𝑛−1∑𝑖=𝑘

𝑇 (𝑖, 𝑘) +1

𝑛

𝑛−1∑𝑖=𝑛−𝑘+1

𝑇 (𝑖, 𝑖− 𝑘 + 𝑛) + 𝑛− 1.

Page 126: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

6.3. Algoritmi zasnovani na razlagau 126

Indukcijom se moe dokazati da je 𝑇 (𝑛, 𝑘) ≤ 4𝑛 za svako 𝑘 = 1, 2, . . . , 𝑛. Za𝑛 = 2 ovo se neposredno proverava, a iz induktivne hipoteze da za 𝑖 < 𝑛i proizvono 𝑚, 1 ≤ 𝑚 ≤ 𝑖, vai 𝑇 (𝑖,𝑚) ≤ 4𝑖 sledi

𝑇 (𝑛, 𝑘) ≤ 𝑛− 1 +1

𝑛

𝑛−1∑𝑖=𝑘

4𝑖 +1

𝑛

𝑛−1∑𝑖=𝑛−𝑘+1

4𝑖

= 𝑛− 1 +4

𝑛

(𝑛− 1 + 𝑘

2(𝑛− 𝑘) +

2𝑛− 𝑘

2(𝑘 − 1)

)= 𝑛− 1 +

2

𝑛

(𝑛2 + 2𝑛𝑘 − 2𝑘2 − 3𝑛 + 2𝑘

)= 4𝑛− 1

𝑛

((𝑛− 2𝑘)2 + 3(𝑛− 𝑘) + 4𝑛

)< 4𝑛.

Prema tome, za proizvono 𝑘 je proseqna sloenost ovog algoritma 𝑂(𝑛).Veina primena rangovskih statistika zahteva odreivae medijane,

odnosno 𝑛/2-tog najmaeg elementa. Algoritam 𝑆𝑒𝑙𝑒𝑘𝑐𝑖𝑗𝑎 je odliqan algo-ritam za tu svrhu. Ne postoji jednostavniji algoritam za nalaee samomedijane. Drugim reqima, uopxtee problema nalaea medijane na na-laee 𝑘-tog najmaeg elementa qini algoritam jednostavnijim. Ovo jetakoe primer pojaqavaa induktivne hipoteze, jer rekurzija zahteva pro-izvone vrednosti za 𝑘.

6.3.5 Mnoee polinoma

Mnoee polinoma

Neka su 𝑃 =∑𝑛−1

𝑖=0 𝑝𝑖𝑥𝑖 i 𝑄 =

∑𝑛−1𝑖=0 𝑞𝑖𝑥

𝑖 dva polinoma stepena 𝑛−1 zadatanizovima svojih koeficijenata.

Problem: Izraqunati proizvod𝑅 = 𝑃 ·𝑄, odnosno odrediti koeficijentetog polinoma.

Prirodno je poi od izraza

𝑃𝑄 =(𝑝𝑛−1𝑥

𝑛−1 + · · ·+ 𝑝0) (

𝑞𝑛−1𝑥𝑛−1 + · · ·+ 𝑞0

)=

𝑝𝑛−1𝑞𝑛−1𝑥2𝑛−2 + · · ·+ (𝑝𝑛−1𝑞𝑖+1 + 𝑝𝑛−2𝑞𝑖+2 + · · ·+ 𝑝𝑖+1𝑞𝑛−1)𝑥𝑛+𝑖 + · · ·+ 𝑝0𝑞0.

Koeficijenti polinoma 𝑃𝑄 mogu se izraqunati direktno iz ove jedna-kosti, pri qemu je jasno da e tada broj mnoea i sabiraa biti 𝑂(𝑛2).Moe li se isti posao obaviti efikasnije? Do sada smo videli vixeprimera da se trivijalni kvadratni algoritmi mogu poboxati, pa nijeiznenaujue da je i u ovom sluqaju odgovor pozitivan. Prikazaemo sadalgoritam sloenosti 𝑂(𝑛𝑙𝑜𝑔23) zasnovan na razlagau.

Pretpostavimo zbog jednostavnosti da je 𝑛 stepen dvojke. Svaki od po-linoma delimo na dva jednaka dela. Neka je dakle 𝑃 = 𝑃1 + 𝑥𝑛/2𝑃2 i𝑄 = 𝑄1 + 𝑥𝑛/2𝑄2, gde je

𝑃1 = 𝑝0 + 𝑝1𝑥+ · · ·+ 𝑝𝑛/2−1𝑥𝑛/2−1, 𝑃2 = 𝑝𝑛/2 + 𝑝𝑛/2+1𝑥+ · · ·+ 𝑝𝑛−1𝑥

𝑛/2−1,

odnosno

𝑄1 = 𝑞0 + 𝑞1𝑥+ · · ·+ 𝑞𝑛/2−1𝑥𝑛/2−1, 𝑄2 = 𝑞𝑛/2 + 𝑞𝑛/2+1𝑥+ · · ·+ 𝑞𝑛−1𝑥

𝑛/2−1.

Page 127: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

127 6. Algoritamske strategije

Sada imamo

𝑃𝑄 = (𝑃1 + 𝑃2𝑥𝑛/2)(𝑄1 + 𝑄2𝑥

𝑛/2) = 𝑃1𝑄1 + (𝑃1𝑄2 + 𝑃2𝑄1)𝑥𝑛/2 + 𝑃2𝑄2𝑥𝑛.

U izrazu za 𝑃𝑄 pojavuju se proizvodi polinoma stepena 𝑛/2− 1, kojise mogu izraqunati indukcijom (rekurzivno). Kombinovaem dobijenihrezultata dobija se rexee. Uzimajui u obzir da je mnoee polinomastepena 0 isto xto i mnoee brojeva, ovim je kompletno definisanrekurzivni algoritam za mnoee polinoma. Ukupan broj operacija 𝑇 (𝑛)koje se izvrxavaju u okviru ovog algoritma zadovoava sledeu diferencnujednaqinu:

𝑇 (𝑛) = 4𝑇 (𝑛/2) + 𝑂(𝑛), 𝑇 (1) = 1.

Faktor 4 odgovara izraqunavau qetiri proizvoda maih polinoma, aqlan 𝑂(𝑛) odgovara kombinovau tih proizvoda. Prema master teoremirexee diferencne jednaqine je 𝑇 (𝑛) = 𝑂(𝑛2), pa ovaj algoritam nijeboi od prethodnog.

Da bi se doxlo do poboxaa u odnosu na kvadratni algoritam, po-trebno je, na primer, da problem reximo svoeem na mae od qetiripotproblema. Oznaqimo proizvode 𝑃1𝑄1, 𝑃2𝑄1, 𝑃1𝑄2, 𝑃2𝑄2 redom sa 𝐴, 𝐵,𝐶, 𝐷. Treba da izraqunamo 𝐴+ (𝐵 +𝐶)𝑥𝑛/2 +𝐷𝑥𝑛. Moe se primetiti danisu neophodni sami proizvodi 𝐵 i 𝐶, nego samo ihov zbir. Ako znamoproizvod 𝐸 = (𝑃1 +𝑃2)(𝑄1 +𝑄2), onda je traeni zbir 𝐵+𝐶 = 𝐸−𝐴−𝐷.Primetimo da je polinom 𝐸 proizvod dva polinoma stepena 𝑛/2−1. Dakle,dovono je izraqunati samo tri proizvoda maih polinoma: 𝐴, 𝐷 i 𝐸. Sveostalo su sabiraa i oduzimaa polinoma, xto ionako ulazi u qlan 𝑂(𝑛) udiferencnoj jednaqini. Diferencna jednaqina za sloenost poboxanogalgoritma je

𝑇 (𝑛) = 3𝑇 (𝑛/2) + 𝑂(𝑛),

a eno rexee je 𝑇 (𝑛) = 𝑂(𝑛log2 3) = 𝑂(𝑛1.59).Zapaamo da su polinomi 𝑃1 + 𝑃2 i 𝑄1 + 𝑄2 sa polaznim polinomima

vezani na neobiqan naqin: dobijeni su od ih sabiraem koeficijenataqiji se indeksi razlikuju za 𝑛/2. Ovaj neintuitivni naqin mnoea po-linoma znatno smauje broj operacija za velike vrednosti 𝑛.

Primer: Neka je 𝑛 = 4, 𝑃 = 1 − 𝑥 + 2𝑥2 − 𝑥3 i 𝑄 = 2 + 𝑥 − 𝑥2 + 2𝑥3.Izraqunajmo proizvod 𝑃𝑄 na opisani naqin.

Ako se linearni polinomi mnoe direktno, rekurzija se primeujesamo jednom,

𝐴 = (1− 𝑥)(2 + 𝑥) = 2− 𝑥− 𝑥2,

𝐷 = (2− 𝑥)(−1 + 2𝑥) = −2 + 5𝑥− 2𝑥2,

𝐸 = (3− 2𝑥)(1 + 3𝑥) = 3 + 7𝑥− 6𝑥2.

Na osnovu 𝐸, 𝐴 i 𝐷 izraqunava se 𝐵 + 𝐶 = 𝐸 −𝐴−𝐷:

𝐵 + 𝐶 = 3 + 3𝑥− 3𝑥2.

Sada je 𝑃𝑄 = 𝐴 + (𝐵 + 𝐶)𝑥𝑛/2 + 𝐷𝑥𝑛, odnosno

𝑃𝑄 = (2− 𝑥− 𝑥2) + (3 + 3𝑥− 3𝑥2)𝑥2 + (−2 + 5𝑥− 2𝑥2)𝑥4 =

= 2− 𝑥 + 2𝑥2 + 3𝑥3 − 5𝑥4 + 5𝑥5 − 2𝑥6.

Page 128: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

6.3. Algoritmi zasnovani na razlagau 128

Primeuje se da je izvrxeno 12 mnoea, u odnosu na 16 kod trivijalnogalgoritma, i 12 umesto 9 sabiraa/oduzimaa; broj mnoea bio bi svedenna 9 da je rekurzija primeena jox jednom (i na linearne polinome).Uxteda je naravno mnogo vea za velike 𝑛.

Mnoee brojeva

Mnoee 𝑛-bitnih brojeva 𝑢 i 𝑣 direktno se svodi na mnoee dva polinoma𝑃 i 𝑄 stepena 𝑛 − 1: koeficijente polinoma treba zameniti binarnimciframa ovih brojeva, 𝑥 zameniti sa 2, izraqunati proizvod 𝑅 = 𝑃𝑄,posle qega jox ostaje da se dobijeni proizvod "normalizuje", tj. pretvoriu obiqan binarni broj. Sloenost ove normalizacije je 𝑂(𝑛), jer proizvoddva 𝑛-bitna broja ima najvise 2𝑛 bita.

Pretpostavimo da su nam data dva 𝑛-bitna broja 𝑢 i 𝑣 (jednostavnostiradi pretpostaviemo da je 𝑛 stepen dvojke). Oznaqimo sa 𝑢0 niih 𝑛/2bitova broja 𝑢, a sa 𝑢1 vixih 𝑛/2 bitova, i analogno za 𝑣0 i 𝑣1. Ondamoemo zapisati brojeve 𝑢 i 𝑣 kao:

𝑢 = 2𝑛/2𝑢1 + 𝑢0

𝑣 = 2𝑛/2𝑣1 + 𝑣0

Proizvod brojeva 𝑢 i 𝑣 moemo zapisati kao proizvod tri broja duine𝑛/2:

𝑢𝑣 = (2𝑛/2𝑢1 + 𝑢0)(2𝑛/2𝑣1 + 𝑣0) = 2𝑛𝑢1𝑣1 + 2𝑛/2(𝑢1𝑣0 + 𝑣1𝑢0) + 𝑢0𝑣0

= 2𝑛𝑢1𝑣1 + 2𝑛/2((𝑢1 − 𝑢0)(𝑣0 − 𝑣1) + 𝑢1𝑣1 + 𝑢0𝑣0) + 𝑢0𝑣0

= 𝑢1𝑣1(2𝑛 + 2𝑛/2) + 2𝑛/2(𝑢1 − 𝑢0)(𝑣0 − 𝑣1) + 𝑢0𝑣0(2𝑛/2 + 1)

Ovim se dobija algoritam qije vreme izvrxavaa zadovoava reku-rentnu jednaqinu 𝑇 (𝑛) = 3𝑇 (𝑛

2 ) +𝑂(𝑛). Dakle sloenost izloenog algo-ritma je 𝑂(𝑛log2 3).

6.3.6 Xtrasenov algoritam za mnoee matrica

Pretpostavimo da je zadatak pomnoiti dve kvadratne matrice 𝑃 i 𝑄dimenzije 𝑛, odnosno izraqunati 𝑅 = 𝑃 ·𝑄. Na problem mnoea matricamoe se primeniti postupak razlagaa, sliqno kao na mnoee polinoma.Zbog jednostavnosti pretpostaviemo da je dimenzija matrice 𝑛 stependvojke. Neka je

𝑃 =

[𝑎 𝑏𝑐 𝑑

], 𝑄 =

[𝐴 𝐵𝐶 𝐷

], (6.1)

gde su 𝑎, 𝑏, 𝑐, 𝑑, odnosno 𝐴,𝐵,𝐶,𝐷 𝑛/2×𝑛/2 matrice. Primenom razlagaase problem svodi na izraqunavae qetiri 𝑛/2× 𝑛/2 podmatrice matrice𝑅. Proizvod blok matrica izraqunava se na isti naqin kao kad se blokovizamene elementima, pa se problem moe shvatiti kao traee efikasnog

Page 129: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

129 6. Algoritamske strategije

naqina za izraqunavae proizvoda dve 2 × 2 matrice. Od algoritma zamnoee 2×2 matrica dobija se algoritam za mnoee 𝑛×𝑛 matrica takoxto se umesto proizvoda elemenata umetnu rekurzivni pozivi procedureza mnoee. Obiqan algoritam za mnoee 2× 2 matrica koristi 8 mno-ea:

𝑃𝑄 =

[𝑎𝐴 + 𝑏𝐶 𝑎𝐵 + 𝑏𝐷𝑐𝐴 + 𝑑𝐶 𝑐𝐵 + 𝑑𝐷

],

Zameujui svako mnoee rekurzivnim pozivom, dobijamo diferenc-nu jednaqinu 𝑇 (𝑛) = 8𝑇 (𝑛/2)+𝑂(𝑛2) (kombinovae maih rexea sastojise od qetiri sabiraa matrica reda 𝑛/2, ukupno 𝑛2 sabiraa), qije jerexee 𝑇 (𝑛) = 𝑂(𝑛log2 8) = 𝑂(𝑛3). Ovo nije iznenaujue, jer se koristiobiqan algoritam za mnoee. Ako bismo uspeli da izraqunamo proizvod2 × 2 matrica izvodei mae od 8 mnoea elemenata, dobili bismoalgoritam koji je asimptotski bri od kubnog.

Faktor koji najvixe utiqe na rekurziju je broj mnoea potrebnih zaizraqunavae proizvoda 2×2 matrica. Broj sabiraa nije tako vaan, jermea samo qinilac uz qlan 𝑂(𝑛2) u diferencnoj jednaqini, pa ne utiqena asimptotsku sloenost (on meutim utiqe na konstantni faktor).Xtrasen (Strassen) je otkrio da je dovono sedam mnoea elemenatada se izraquna proizvod dve matrice reda dva. Proizvod 𝑃𝑄 moe seizraqunati na sledei naqin:

𝑃𝑄 =

[𝑧1 + 𝑧4 𝑧2 − 𝑧3 + 𝑧4 + 𝑧5

𝑧1 + 𝑧3 + 𝑧6 + 𝑧7 𝑧2 + 𝑧6

],

pri qemu su sa 𝑧1, 𝑧2, . . . , 𝑧7 oznaqeni sledei proizvodi 𝑧1 = 𝑏(𝐴 + 𝐶),𝑧2 = 𝑐(𝐵 + 𝐷), 𝑧3 = (𝑐 − 𝑏)(𝐴 + 𝐷), 𝑧4 = (𝑎 − 𝑏)𝐴, 𝑧5 = (𝑎 − 𝑐)(𝐵 − 𝐴),𝑧6 = (𝑑 − 𝑐)𝐷 i 𝑧7 = (𝑑 − 𝑏)(𝐶 − 𝐷). Ova qienica moe se neposrednoproveriti. Na primer, zbir 𝑧2 + 𝑧6 = 𝑐(𝐵 + 𝐷) + (𝑑− 𝑐)𝐷 = 𝑐𝐵 + 𝑑𝐷

Sloenost: U algoritmu se izraqunava sedam proizvoda matrica dvaputa mae dimenzije i koristi se konstantan broj sabiraa takvih matrica.Dakle, diferencna jednaqina za sloenost ovog algoritma je 𝑇 (𝑛) =7𝑇 (𝑛/2) + 𝑂(𝑛2) i eno rexee je 𝑇 (𝑛) = 𝑂(𝑛log2 7) = 𝑂(𝑛2.81), xto znaqida je Xtrasenov algoritam asimptotski bri od obiqnog mnoea ma-trica.

Xtrasenov algoritam ima tri vana nedostatka:

1. Praktiqne provere pokazuju da 𝑛 mora biti vee od 100 da bi Xtra-senov algoritam bio bri od obiqnog mnoea matrica sloenosti𝑂(𝑛3).

2. Xtrasenov algoritam mae je stabilan od obiqnog. Za iste veliqinegrexke ulaznih podataka, Xtrasenov algoritam obiqno dovodi doveih grexaka u izlaznim podacima.

3. Xtrasenov algoritam je komplikovaniji i tei za realizaciju odobiqnog. Pored toga, ega nije lako paralelizovati.

Bez obzira na ove nedostatke, Xtrasenov algoritam je veoma vaan.Bri je od obiqnog mnoea matrica za velike vrednosti 𝑛, a moe seiskoristiti i u drugim problemima sa matricama, kao xto su inverzijamatrice i izraqunavae determinante.

Page 130: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

6.3. Algoritmi zasnovani na razlagau 130

6.3.7 Nalaee dve najblie taqke

Pretpostavimo da su zadate lokacije 𝑛 objekata i da je zadatak pro-veriti postoje li meu ima dva objekta, koji su preblizu jedan drugom.Ovi objekti mogu biti, na primer, delovi mikroprocesorskog qipa, zvezdeu galaksiji ili sistemi za navodavae. Ovde emo razmotriti samo jednuvarijantu ovog problema, kao predstavnika xire klase.

Problem: U zadatom skupu od 𝑛 taqaka u ravni pronai dve koje su nanajmaem meusobnom rastojau.

Sliqni ovom su problemi nalaea najblie taqke (ili 𝑘 najbliihtaqaka) za svaku taqku zadatog skupa, ili nalaee najblie taqke no-vododatoj taqki.

Direktni pristup

Mogu se izraqunati rastojaa izmeu svake dve taqke, i zatim pronainajmae meu rastojaima. To obuhvata 𝑛(𝑛−1)/2 izraqunavaa rastojaai 𝑛(𝑛 − 1)/2 − 1 uporeivaa. Direktno induktivno rexee moglo bi sezasnivati na uklaau jedne taqke, rexavau problema za 𝑛−1 taqaka, idodavau nove taqke. Meutim, jedina korisna informacija koja se dobijarexavaem problema za 𝑛−1 taqaka je minimalno rastojae, pa se morajuproveriti rastojaa nove taqke do svih prethodnih 𝑛 − 1 taqaka. Zbogtoga ukupan broj 𝑇 (𝑛) izraqunavaa rastojaa za 𝑛 taqaka zadovoavadiferencnu jednaqinu 𝑇 (𝑛) = 𝑇 (𝑛 − 1) + 𝑛 − 1, 𝑇 (2) = 1, qije je rexee𝑇 (𝑛) = 𝑂(𝑛2). Dva opisana rexea suxtinski su ekvivalentna. Ci jepronai efikasniji algoritam za velike 𝑛.

Algoritam zasnovan na razlagau

Umesto da razmatramo taqke jednu po jednu, moemo da skup taqaka po-delimo na dva jednaka dela. Induktivna hipoteza ostaje nepromeena,izuzev xto problem svodimo ne na jedan problem sa 𝑛− 1 taqkom, nego nadva problema sa 𝑛/2 taqaka. Postoji vixe naqina da se skup podeli nadva jednaka dela. Biramo naqin koji najvixe odgovara naxim cievima.Voleli bismo da dobijemo xto vixe korisnih informacija iz rexeamaih problema, odnosno da xto vei deo tih informacija vai i zakompletan problem. Izgleda razumno da se skup podeli na dva dela podelomravni na dva disjunktna dela, tako da svaki od ih sadri polovinutaqaka. Poxto se pronau najmaa rastojaa u svakom delu, treba razmotritisamo rastojaa izmeu taqaka bliskih granici skupova. Najjednostavnijinaqin podele je sortirati taqke prema (na primer) 𝑥-koordinatama ipodeliti ravan pravom paralelnom sa 𝑦-osom, koja deli skup na dva jednakadela, videti sliku 6.6 (ako vixe taqaka lei na pravoj podele, taqkese mogu na proizvoan naqin razdeliti izmeu skupova). Naqin podeleizabran je tako da se maksimalno pojednostavi objediavae rexea maihproblema. Sortirae treba izvrxiti samo jednom.

Zbog jednostavnosti ograniqiemo se na nalaee vrednosti najmaegrastojaa izmeu taqaka (a ne i para taqaka za koje se ono dostie). Pro-nalaee dve najblie taqke izvodi se minimalnom doradom algoritma.Neka je 𝑃 skup taqaka. Najpre se skup 𝑃 deli na dva podskupa 𝑃1 i 𝑃2

qije se veliqine razlikuju najvixe za jedan na opisani naqin. Najmae

Page 131: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

131 6. Algoritamske strategije

- -

𝑑1 𝑑1

ssss

s

ssssssss ss

s-

𝑑1-𝑑2

Slika 6.6: Problem nalaea dve najblie taqke.

rastojae u svakom podskupu pronalazi se na osnovu induktivne hipoteze.Neka je 𝑑1 minimalno rastojae u 𝑃1, a 𝑑2 minimalno rastojae u 𝑃2.Bez smaea opxtosti moe se pretpostaviti da je 𝑑1 ≤ 𝑑2. Potrebno jepronai najmae rastojae u celom skupu, odnosno ustanoviti da li u 𝑃1

postoji taqka na rastojau maem od 𝑑1 od neke taqke u 𝑃2. Primetimonajpre da je dovono razmatrati taqke u traci xirine 2𝑑1, simetriqnoju odnosu na pravu podele (videti sliku 6.6). Ostale taqke ne mogu bitina rastojau maem od 𝑑1 od neke taqke iz drugog podskupa. Na osnovuovog zapaaa obiqno se iz razmatraa eliminixe veliki broj taqaka.Meutim, u najgorem sluqaju sve taqke mogu biti u toj traci, pa ne moemoda sebi priuxtimo primenu trivijalnog algoritma na ih.

Drugo mae oqigledno zapaae je da je za proizvonu taqku 𝑝 u tracidovono proveriti samo eno rastojae od najvixe 8 taqaka iz suprotnetrake: 4 koje joj prethode, i 4 koje su iza e u sortiranom redosledu po𝑦-koordinatama. Prema tome, ako sve taqke u traci sortiramo prema 𝑦-koordinatama i pregledamo ih tim redom, dovono je da za svaku taqkuproverimo rastojae osam suseda u suprotnoj traci, qetiri ispod i qetiriiznad (a ne od svih 𝑛− 1 taqaka u najgorem sluqaju).

𝑁𝑎𝑗𝑏𝑙𝑖𝑧𝑖 𝑝𝑎𝑟1(𝑝1, 𝑝2, . . . , 𝑝𝑛)ulaz: 𝑝1, 𝑝2, . . . , 𝑝𝑛 - skup od 𝑛 taqaka u ravniizlaz: 𝑑 - rastojae izmeu dve najblie taqke skupa1 Sortirati taqke prema 𝑥 koordinatama2 Ovo sortirae izvrxava se samo jednom, na poqetku3 Podeliti skup na dva istobrojna podskupa4 Rekurzivno izraqunati minimalno rastojae u oba podskupa5 Neka je 𝑑 mae od dva minimalna rastojaa6 Eliminisati taqke koje su na rastojau veem od 𝑑 od prave podele7 Sortirati preostale taqke prema 𝑦 koordinatama8 Za preostale taqke proveriti ihova rastojaa od qetiri prethodne9 i qetiri naredne taqke iz suprotne trake10 dovono je proveriti i samo qetiri prethodne taqke!11 if neko od ovih rastojaa je mae od 𝑑 then12 aurirati 𝑑

Page 132: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

6.3. Algoritmi zasnovani na razlagau 132

- -

𝑑1 𝑑1

v

0.7𝑑1 0.7𝑑1

0.7𝑑1

0.35𝑑1

0.35𝑑1

0.7𝑑1

𝑝

v

v

v

v

v

v

6

?6

?

?

6

6

6

?

- -

v

v

Slika 6.7: Ocena maksimalnog broja taqaka iz suprotnog podskupa,bliskih fiksiranoj taqki.

Sloenost: Sortirae sloenosti 𝑂(𝑛 log 𝑛) izvrxava se samo jednom.Zatim se rexavaju dva potproblema veliqine 𝑛/2. Eliminacija taqaka vancentralne trake moe se izvesti za 𝑂(𝑛) koraka. Za sortirae taqaka utraci po 𝑦-koordinatama u najgorem sluqaju potrebno je 𝑂(𝑛 log 𝑛) koraka.Konaqno, potrebno je 𝑂(𝑛) koraka da se pregledaju taqke u traci, i da seprovere rastojaa svake od ih od konstantnog broja suseda u sortiranomredosledu. Ukupno, da bi se rexio problem veliqine 𝑛, treba rexiti dvapotproblema veliqine 𝑛/2 i izvrxiti 𝑂(𝑛 log 𝑛) koraka za kombinovaeihovih rexea (plus 𝑂(𝑛 log 𝑛) koraka za jednokratno sortirae taqakapo 𝑥-koordinatama na poqetku). Dobijamo diferencnu jednaqinu

𝑇 (𝑛) < 2𝑇 (𝑛/2) + 𝑐𝑛 log2 𝑛, 𝑇 (2) = 1,

pri qemu u 𝑇 (𝑛) nije ukuqeno poqetno sortirae po 𝑥-koordinatama.Indukcijom se pokazuje da je eno rexee 𝑇 (𝑛) = 𝑂(𝑛 log2 𝑛), odnosnopreciznije 𝑇 (𝑛) < 𝑐𝑛 log2

2 𝑛: iz 𝑇 (𝑛/2) < 𝑐(𝑛/2) log22(𝑛/2) i diferencne

jednaqine sledi da za 𝑛 > 2 vai 𝑇 (𝑛) < 𝑐𝑛(log2 𝑛 − 1)2 + 𝑐𝑛 log2 𝑛 =𝑐𝑛(log2

2 𝑛 − log2 𝑛 + 1) < 𝑐𝑛 log22 𝑛. Sloenost 𝑂(𝑛 log2 𝑛) je asimptotski

boa od kvadratne, ali videemo da se moe jox malo poboxati.Dokaz korektnosti algoritma: Ostaje jox da se dokae korektnost iz-

loenog algoritma, odnosno qienice da je dovono za svaku taqku prove-riti eno rastojae od 4 pre e i 4 posle e u suprotnoj traci, sortiranopo 𝑦-koordinatama. Neka je sa 𝑦𝑝 oznaqena 𝑦-koordinata taqke 𝑝. Kon-struiximo pravougaonik visine 2.1𝑑1 < 3

2

√2𝑑1 i xirine 1.4𝑑1 <

√2𝑑1

u suprotnoj traci (videti sliku 6.7), tako da nalee na pravu podele i

Page 133: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

133 6. Algoritamske strategije

da mu je 𝑦-koordinata preseka dijagonala jednaka 𝑦𝑝. Podelimo ga jednomvertikalnom pravom i sa dve horizontalne prave na xest jednakih kvadratastranice 0.7𝑑1. Obzirom da vai

√2/2 > 0.7, dijagonala ovih kvadrata

maa je od 𝑑1. Iz ove qienice sledi da se u svakom od malih kvadratamoe nai najvixe jedna taqka, jer je rastojae bilo koje dve taqke ukvadratu mae od 𝑑1. Sve taqke u drugom podskupu, sa rastojaem od 𝑝maim od 𝑑1, oqigledno se moraju nalaziti u pravougaoniku. Dakle, udrugom podskupu se moe nalaziti najvixe xest taqaka na rastojau od𝑝 maem od 𝑑1: taqka kandidat sa 𝑦-koordinatom 𝑦𝑞 mora da zadovoi iuslov |𝑦𝑝 − 𝑦𝑞| < 𝑑1, pa se mora nalaziti u jednom od xest kvadrata.

Algoritam sloenosti 𝑂(𝑛 log 𝑛)

Osnovna ideja je pojaqati induktivnu hipotezu. U toku objediavaa re-xea potproblema izvodi se 𝑂(𝑛 log 𝑛) koraka zbog sortiraa taqaka po𝑦-koordinatama. Moe li se sortirae izvesti usput, u toku nalaeadveju najbliih taqaka? Drugim reqima, ci je pojaqati induktivnuhipotezu za problem dve najblie taqke tako da obuhvati i sortirae.

Induktivna hipoteza: Za zadati skup od < 𝑛 taqaka u ravni umemo dapronaemo najmae rastojae i da skup taqaka sortiramo po 𝑦-koordina-tama.

Ve smo videli kako se moe pronai minimalno rastojae ako setaqke u svakom koraku sortiraju po 𝑦-koordinatama. Dakle, potrebno jejox samo proxiriti induktivnu hipotezu tako da obuhvati sortirae 𝑛taqaka kad su dva podskupa veliqine 𝑛/2 ve sortirana. Meutim, to jeupravo sortirae objediavaem. Osnovna prednost ovog pristupa je utome xto se pri objediavau rexea ne mora izvesti kompletno sor-tirae, nego samo objediavae dva ve sortirana podniza. Poxto seobjediavae sortiranih podnizova izvodi za 𝑂(𝑛) koraka, diferencnajednaqina za sloenost (bez poqetnog sortiraa po 𝑥-koordinatama) po-staje 𝑇 (𝑛) < 2𝑇 (𝑛/2) + 𝑐𝑛, 𝑇 (2) = 1. eno rexee je 𝑇 (𝑛) = 𝑂(𝑛 log 𝑛),xto je asimptotski jednako sloenosti poqetnog sortiraa taqaka po 𝑥-koordinatama.

𝑁𝑎𝑗𝑏𝑙𝑖𝑧𝑖 𝑝𝑎𝑟2(𝑝1, 𝑝2, . . . , 𝑝𝑛)ulaz: 𝑝1, 𝑝2, . . . , 𝑝𝑛 - skup od 𝑛 taqaka u ravniizlaz: 𝑑 - rastojae izmeu dve najblie taqke skupa1 Sortirati taqke prema 𝑥 koordinatama2 Ovo sortirae izvrxava se samo jednom, na poqetku3 Podeliti skup na dva istobrojna podskupa4 Rekurzivno izvrxiti sledee:5 Izraqunati minimalno rastojae u oba podskupa6 Sortirati taqke u svakom delu prema 𝑦 koordinatama7 Objediniti dva sortirana niza u jedan8 Objediavae se mora izvrxiti pre eliminacije9 Sledeem nivou rekurzije se mora isporuqiti sortiran kompletan skup10 Neka je 𝑑 mae od dva minimalna rastojaa11 Eliminisati taqke koje su na rastojau veem od 𝑑 od prave podele12 Za preostale taqke proveriti ihova rastojaa od qetiri prethodne13 i qetiri naredne taqke iz suprotne trake

Page 134: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

6.4. Pretraga sa vraaem 134

14 dovono je proveriti i samo qetiri prethodne taqke!15 if neko od ovih rastojaa je mae od 𝑑 then16 popraviti 𝑑

6.4 Pretraga sa vraaem

U potrazi za osnovnim principima konstrukcije algoritama, pretragasa vraaem ili skraeno pretraga (engl. backtracking) predstavajednu od najopxtijih tehnika. Mnogi problemi koji se tiqu traeaskupa rexea ili koji imaju za ci odreivae optimalnog rexea kojezadovoava neki skup ograniqea mogu se rexiti formulisaem u viduproblema pretrage sa vraaem. Naziv backtrack smislio je D. H. Lemerpedesetih godina proxlog veka1.

U velikom broju primena metoda pretrage sa vraaem, traeno rexeese moe izraziti 𝑛-torkom (𝑥1, 𝑥2, . . . , 𝑥𝑛) gde se 𝑥𝑖 bira iz nekog konaqnogskupa 𝑆𝑖. Qesto se u problemu koji se rexava zahteva da se nae vektor (𝑛-torka) za koji se maksimizuje (ili minimizuje ili zadovoava) funkcija𝑃 (𝑥1, 𝑥2, . . . , 𝑥𝑛). Nekada se trae svi vektori koji zadovoavaju 𝑃 . Naprimer, sortirae niza celih brojeva 𝐴[1..𝑛] je problem qije se rexeemoe predstaviti 𝑛-torkom 𝑥, gde je 𝑥𝑖 indeks 𝑖-tog najmaeg elementaniza 𝐴. Funkcija 𝑃 se u ovom sluqaju moe zadati kao konjunkcija uslova𝐴[𝑥𝑖] ≤ 𝐴[𝑥𝑖+1] za 1 ≤ 𝑖 < 𝑛. Skup 𝑆𝑖 je konaqan i sadri cele brojeveod 1 do 𝑛. Iako sortirae nije problem koji se obiqno rexava metodompretrage sa vraaem, on predstava jedan od poznatih problema qije serexee moe formulisati u vidu 𝑛-torke.

Ako sa 𝑚𝑖 oznaqimo veliqinu skupa 𝑆𝑖, onda postoji 𝑚 = 𝑚1 ·𝑚2 · · ·𝑚𝑛

𝑛-torki koje predstavaju potencijalne kandidate za rexee. Algoritamgrube sile bi formirao sve 𝑛-torke, za svaku od ih izraqunao vrednostfunkcije 𝑃 i vratio onu koja postie optimalnu vrednost. Algoritampretrage sa vraaem odlikuje svojstvo da moe da vrati isti odgovor saqesto dosta mae od 𝑚 pokuxaja. Osnovna ideja je da se pronae i koristimodifikovana funkcija 𝑃 (𝑥1, . . . , 𝑥𝑖) (ograniqavajua funkcija) kojaza deo vektora rexea (𝑥1, 𝑥2, . . . , 𝑥𝑖) moe da ustanovi da li ima ikakvuxansu za uspeh. Glavna prednost ovog metoda je sledea: ako je jasno daparcijalni vektor (𝑥1, 𝑥2, . . . , 𝑥𝑖) ne moe ni na koji naqin da bude deooptimalnog rexea, onda se𝑚𝑖+1 · · ·𝑚𝑛 moguih test vektora u potpunostiignorixe, odnosno preskaqe.

Mnogi od problema koje rexavamo metodom pretrage sa vraaem zah-tevaju da sva rexea zadovoavaju sloeni skup ograniqea. Za svakiproblem ova ograniqea se mogu podeliti u dve kategorije: eksplicitnai implicitna.

Eksplicitna ograniqea su pravila koja se odnose na pojedinaqnekoordinate 𝑥𝑖, kao xto je na primer:

𝑙𝑖 ≤ 𝑥𝑖 ≤ 𝑢𝑖 i 𝑥𝑖 je celobrojno, tj. 𝑆𝑖 = 𝑎 ∈ 𝑍 : 𝑙𝑖 ≤ 𝑎 ≤ 𝑢𝑖Implicitna ograniqea su pravila koja se odnose na dve ili vixe

komponenti 𝑛-torke.

1Ovaj deo teksta napisan je na osnovu [4].

Page 135: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

135 6. Algoritamske strategije

Primer 6.1 (Problem 8 dama). Klasiqni kombinatorni problem je po-staviti osam dama na 8× 8 xahovskoj tabli tako da se nikoje dve dame nenapadaju, tj. da nikoje dve ne budu u istoj vrsti, koloni niti dijagonali.Numeriximo vrste i kolone xahovske table brojevima od 1 do 8. Moemo,takoe, i dame numerisati brojevima od 1 do 8. S obzirom na to da dve damene mogu biti u istoj vrsti, moemo bez gubitka opxtosti pretpostavitida se dama 𝑖 postava u vrstu 𝑖. Sva rexea problema 8 dama se stoga mogupredstaviti osmorkama (𝑥1, 𝑥2, . . . , 𝑥8), pri qemu je sa 𝑥𝑖 oznaqena kolona ukoju je smextena 𝑖-ta dama. Eksplicitna ograniqea u ovoj formulacijisu 𝑆𝑖 = 1, 2, 3, 4, 5, 6, 7, 8, 1 ≤ 𝑖 ≤ 8. Stoga se prostor rexea sastojiod 88 osmorki. Implicitna ograniqea u ovom sluqaju su da nikoja dva𝑥𝑖 ne smeju biti ista (tj. sve dame moraju biti u razliqitim kolonama)i nikoje dve dame ne smeju biti na istoj dijagonali. Prvo od ova dvaograniqea ima za posledicu da su sva rexea permutacije osmorke(1, 2, 3, 4, 5, 6, 7, 8). Ovim se prostor rexea smauje sa 88 na 8! osmorki. Naslici 6.8 prikazano je rexee problema kome odgovara osmorka (4, 6, 8, 2, 7, 1, 3, 5).

Slika 6.8: Jedno rexee problema 8 dama

Algoritmi pretrage sa vraaem odreuju rexea problema siste-matiqnom pretragom prostora rexea za datu instancu problema. Ovapretraga se moe olakxati predstavaem prostora rexea korenskimstablom. Ponekad je mogue isti prostor rexea predstaviti razliqitimkorenskim stablima. Sledea dva primera ilustruju predstavae prosorarexea stablom.

Primer 6.2 (Problem 𝑛 dama). Problem 𝑛 dama predstava uopxteeproblema 8 dama: potrebno je postaviti 𝑛 dama na xahovskoj tabli dimenzije𝑛 × 𝑛 tako da se nikoje dve ne napadaju. Prethodno razmatrae pokazujeda se prostor rexea sastoji od 𝑛! permutacija 𝑛-torke (1, 2, . . . , 𝑛). Naslici 6.9 prikazano je jedno mogue stablo za sluqaj 𝑛 = 4. Ovakvo stablonazivamo stablom permutacija. Grane su oznaqene moguim vrednostimaza 𝑥𝑖. Grane koje vode od qvora nivoa 0 do qvorova nivoa 1 zadaju vrednostiza 𝑥1. Tako na primer, levo podstablo odgovara rexeima kod kojih je𝑥1 = 1, egovo levo podstablo rexeima kod kojih je 𝑥1 = 1 i 𝑥2 = 2 itako dae. Grane koje vode od nivoa 𝑖− 1 do nivoa 𝑖 su oznaqene moguimvrednostima za 𝑥𝑖. Prostor moguih rexea odgovara svim putevima od

Page 136: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

6.4. Pretraga sa vraaem 136

korena do lista. Stablo na slici 6.9 ima ukupno 4! = 24 listova. Stablorexea se moe obilaziti recimo algoritmom DFS; na slici 6.9 qvorovistabla rexea numerisani su u skladu sa redosledom obilaska algoritmomDFS.

Slika 6.9: Stablo prostora rexea problema 4 dama. Qvorovi sunumerisani kao u algoritmu DFS

Primer 6.3 (Traee podskupa brojeva sa zadatim zbirom). Za datiskup pozitivnih brojeva 𝑤𝑖, 1 ≤ 𝑖 ≤ 𝑛 i broj 𝑚, potrebno je pronai svepodskupove brojeva 𝑤𝑖 qija je suma𝑚. Na primer, za 𝑛 = 4 i (𝑤1, 𝑤2, 𝑤3, 𝑤4) =(11, 13, 24, 7) i 𝑚 = 31, traeni podskupovi bi bili (11, 13, 7) i (24, 7).Umesto da predstavimo rexee kao vektor sa komponentama 𝑤𝑖 qija jesuma 𝑚, moemo da predstavimo vektor rexea zadavaem indeksa ovihvrednosti 𝑤𝑖. U ovoj notaciji ova dva rexea bismo zapisali kao (1, 2, 4)i (3, 4). U opxtem sluqaju sva rexea su neke 𝑘-torke (𝑥1, 𝑥2, . . . , 𝑥𝑘),1 ≤ 𝑘 ≤ 𝑛 i razliqitim rexeima mogu odgovarati torke razliqiteduine. Eksplicitna ograniqea bi u ovom sluqaju bila 𝑥𝑗 ∈ 1, 2, . . . , 𝑛,a implicitna ograniqea da nikoja dva 𝑥𝑖 nisu ista, a suma 𝑤𝑥𝑖

je maaili jednaka 𝑚. Da bismo izbegli generisae vixestrukih instanci istogrexea, jox jedno implicitno ograniqee bilo bi da je 𝑥𝑖 < 𝑥𝑖+1, 1 ≤ 𝑖 <𝑘.

Rexea se mogu predstaviti na drugi naqin, 𝑛-torkom (𝑥1, 𝑥2, . . . , 𝑥𝑛)tako da je 𝑥𝑖 ∈ 0, 1, 1 ≤ 𝑖 ≤ 𝑛, pri qemu je 𝑥𝑖 = 0 ako 𝑤𝑖 nije ukuqenou sumu, a 𝑥𝑖 = 1 ako jeste. Prethodna rexea bismo sad zapisali kao(1, 1, 0, 1) i (0, 0, 1, 1). Na ovaj naqin se sva rexea mogu izraziti torkamafiksne duine. Zakuqujemo da je mogue da postoji vixe naqina da serexea predstave kao torke koje zadovoavaju neka ograniqea. Moe sepokazati da se u obe formulacije problema prostor rexea sastoji od 2𝑛

razliqitih torki.Na slikama 6.10 i 6.11 prikazana su stabla prostora rexea za svaku

od ove dve formulacije za sluqaj 𝑛 = 4. Prva slika odgovara promenivojveliqini torke. Grane su oznaqene tako da grana od qvora nivoa 𝑖 − 1 doqvora nivoa 𝑖 predstava vrednost za 𝑥𝑖. U svakom qvoru prostor rexea

Page 137: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

137 6. Algoritamske strategije

Slika 6.10: Jedna mogua ogranizacija prostora rexea za problem sumepodskupova. Brojevi uz qvorove odgovaraju BFS poretku

Slika 6.11: Drugo mogue stablo prostora rexea za problem sumepodskupova. Broj listova stabla je 16, xto je jednako broju qvorova uprethodnom stablu.

se deli na prostore delimiqnih rexea. Prostor rexea se definixeputevima od korena do proizvonog qvora u stablu, s obzirom na to dasvaki ovakav put odgovara podskupu koji zadovoava eksplicitna ograni-qea. Mogui putevi su () (prazan put od korena do ega samog), (1), (1, 2),(1, 2, 3), (1, 2, 3, 4), (1, 2, 4), (1, 3, 4), (2), (2, 3), itd. Druga slika odgovaraformulaciji sa fiksnom veliqinom torke. Grane od qvora nivoa 𝑖− 1 doqvora nivoa 𝑖 oznaqene su vrednostima 𝑥𝑖, koje mogu biti 0 ili 1. Svi

Page 138: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

6.4. Pretraga sa vraaem 138

putevi od korena do lista definixu prostor rexea. Stablo na slici6.11 ima 24 listova koji daju 16 moguih torki.

Svaki qvor u stablu odgovara stau problema.Prihvativa staasu ona staa problema 𝑠 za koje put od korena do qvora 𝑠 definixe torkuu prostoru rexea. U stablu sa slike 6.10 svi qvorovi su prihvativastaa, dok u stablu sa slike 6.11 samo listovi predstavaju prihvativastaa. Cina staa su ona prihvativa staa 𝑠 za koje put od korenado qvora 𝑠 definixe torku koja je element skupa rexea (tj. zadovoavaimplicitna ograniqea) problema. Stablo koje odgovara prostoru rexeanazivamo stablom prostora staa.

U svakom unutraxem qvoru stabla u prethodnim primerima prostorrexea se deli u disjunktne prostore delimiqnih rexea. Na primer, uqvoru 1 stabla prikazanog na slici 6.9 prostor rexea se deli u qetiridisjunktna skupa. Podstabla sa korenima u qvorovima 2, 18, 34 i 50 pred-stavaju sve elemente prostora rexea kod kojih je 𝑥1 = 1, 2, 3 i 4,redom. U qvoru 2 prostor delimiqnih rexea za 𝑥1 = 1 se dae deli utri disjunktna skupa.

Stabla prostora staa opisana u primeru sume podskupa nazivaju sestatiqkim stablima, jer ihova struktura ne zavisi od instance prob-lema koju rexavamo. Za neke probleme je korisno koristiti razliqiteorganizacije stabla za razliqite instance problema. U tom sluqaju orga-nizacija stabla se odreuje dinamiqki tokom pretrage prostora rexea.Stabla prostora staa koja su zavisna od instance problema nazivaju sedinamiqkim stablima. Na primer, posmatrajmo formulaciju sa fiks-nom veliqinom torke u problemu sume podskupa. Korixeem organiza-cije dinamiqkog stabla, jedna instanca problema za 𝑛 = 4 se moe rexitikorixeem organizacije prikazane na slici 6.11. Druga instanca pro-blema za 𝑛 = 4 moe se rexiti tako xto u nivou 1 podela odgovaraizborima 𝑥2 = 1 i 𝑥2 = 0.

Kada je jednom osmixeno stablo prostora staa, problem se moerexiti sistematiqnim generisaem staa problema, odreivaem koja suod ih su prihvativa staa i konaqno odreivaem koja prihvativastaa su i cina staa. Postoje dva fundamentalno razliqita naqinaza generisae staa problema. Oba pristupa kreu od korena i generixuostale qvorove. Qvor koji je generisan i za koga nisu generisani svi sinovinazivamo ivim (otvorenim) qvorom. ivi qvor qiji se sinovi tre-nutno generixu, odnosno qvor qija se ekspanzija (proxirivae) trenutnovrxi, nazivamo E-qvor. Mrtav (zatvoreni) qvor je generisani qvorkoji dae nee biti proxirivan, odnosno qiji su svi sinovi ve generisani.U oba pristupa odravamo listu ivih qvorova.

∙ U skladu sa prvim metodom, qim se generixe novi sin 𝐶 tekuegE-qvora 𝑅, ovaj sin postaje novi E-qvor. 𝑅 e ponovo postati E-qvor kada se podstablo 𝐶 potpuno istrai. Ovo odgovara generisaustaa problema u dubinu.

∙ U skladu sa drugim metodom E-qvor ostaje E-qvor sve dok je iv, tj.dok se ne zavrxi sa egovim proxirivaem.

Page 139: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

139 6. Algoritamske strategije

Oba metoda porazumevaju korixee ograniqavajuih funkcija za\ubijae" (zatvarae otvorenih) ivih qvorova bez generisaa ihovihsinova. Ograniqavajue funkcije koriste se paivo, tako da se garantujegenerisae bar jednog cinog qvora, odnosno generisae svih qvorovaodgovara ako je zadatak da se nau sva rexea problema. Generisae qvorovau dubinu naziva se pretraga sa vraaem (ili samo pretraga). Metodegenerisaa staa kod kojih E-qvor ostaje E-qvor sve dok ne bude mrtavvodi ka algoritmima granaa sa odsecaem, videti odeak 6.4.4.

Qvorovi na slici 6.9 numerisani su prema redosledu generisaa kojiodgovara pretrazi u dubinu. Qvorovi na slikama 6.10 i 6.11 numerisani sumetodom kod koga E-qvor ostaje E-qvor sve dotle dok ne postane mrtav qvor.Kod stabla na slici 6.10 svaki novi qvor smexta se u red. Kada se zavrxigenerisae svih sinova trenutnog E-qvora, naredni qvor sa poqetka redapostaje novi E-qvor; ovo odgovara pretrazi stabla u xirinu. Kod stablana slici 6.11 qvorovi se smextaju u stek umesto u red, a odgovarajuapretraga zove se 𝐷-pretraga.

Slika 6.12: Primer rexea zasnovanog na pretrazi sa vraaem zaproblem 4 dama

Primer 6.4. Pogledajmo kako pretraga sa vraaem radi na primeruproblema 4 dame. Kao ograniqavajuu funkciju uzeemo oqigledni krite-rijum da ako je (𝑥1, 𝑥2, . . . 𝑥𝑖) put do tekueg E-qvora, tada svakom sinutog qvora do koga vodi grana oznaqena sa 𝑥𝑖+1 odgovara skup dama napozicijama (1, 𝑥1), (2, 𝑥2), . . . , (𝑖 + 1, 𝑥𝑖+1) pri qemu se nikoje dve dame nenapadaju. Poqiemo sa korenom kao jedinim ivim qvorom. On postajeE-qvor i put je (). Generixemo jednog sina. Pretpostavimo da se sinovigenerixu u rastuem redosledu. Stoga se generixe qvor 2 sa slike 6.9i put je sada (1). Ovo odgovara postavau dame 1 u kolonu 1. Qvor 2postaje E-qvor. Generixe se qvor 3 i odmah zatim ubija. Sledei qvor

Page 140: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

6.4. Pretraga sa vraaem 140

koji se generixe je qvor 8 i put postaje (1,3). Sada qvor 8 postaje E-qvor.Ipak, i on se ubija jer svi egovi sinovi predstavaju konfiguracijekoje ne vode cinom qvoru. Vraamo se u qvor 2 i generixemo novog sina13. Put je sada (1,4). Na slici 6.12 prikazane su konfiguracije xahovsketable kako pretraga napreduje. Taqke odgovaraju postavaima dame kojasu pokuxana, a nisu dozvoena zbog napada neke druge dame. Na slici6.12(b) druga dama se postava u kolone 1 i 2 i najzad se konaqno smexta ukolonu 3. Na slici 6.12(c) algoritam pokuxava sa sve qetiri kolone i nijeu mogunosti da smesti narednu damu na tablu. Sada se moramo vratitiunazad. Na slici 6.12(d) pomera se druga dama u kolonu 4, a trea damau kolonu 2. Naredni dijagrami pokazuju preostale korake algoritma svedok se ne pronae rexee.

Slika 6.13: Deo stabla sa slike 6.9

Na slici 6.13 prikazan je deo stabla sa slike 6.9 koji se generixe.Qvorovi su numerisani prema redosledu kojim su generisani. Qvor kojise ubija kao rezultat ograniqavajue funkcije ima slovo 𝐵 ispod sebe.Primetimo da stablo sa slike 6.9 ima 31 qvor za razliku od novog stablakoje ima 16 qvorova.

Posmatrajmo sada metodu pretrage sa vraaem u opxtem sluqaju. Pret-postavimo da je zadatak pronai sve cine qvorove, a ne samo jedan. Nekaje (𝑥1, 𝑥2, . . . , 𝑥𝑖), 1 ≤ 𝑖 ≤ 𝑛, put od korena do qvora u stablu prostorastaa. Oznaqimo sa 𝑇 (𝑥1, 𝑥2, . . . , 𝑥𝑖) skup svih moguih vrednosti za 𝑥𝑖+1

tako da je (𝑥1, 𝑥2, . . . , 𝑥𝑖+1) takoe put do staa problema. Specijalno,𝑇 (𝑥1, 𝑥2, . . . , 𝑥𝑛) = ∅. Pretpostavamo da je 𝐵𝑖+1 odgovarajua logiqkaograniqavajua funkcija takve da ako je 𝐵𝑖+1(𝑥1, 𝑥2, . . . , 𝑥𝑖+1) netaqno zaput (𝑥1, . . . , 𝑥𝑖+1) od korena do staa problema, onda put ne moe bitiproduen tako da dosegne neki od cinih qvorova. Prirodno je opisatialgoritam pretrage sa vraaem na rekurzivan naqin.

Page 141: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

141 6. Algoritamske strategije

𝐵𝑎𝑐𝑘𝑡𝑟𝑎𝑐𝑘(𝑘)𝑋 - vektor rexea, 𝑛 - dimenzija vektora globalne promeniveulaz: 𝑘 - indeks komponente 𝑋 qija se vrednost bira u tekuem pozivu1 for 𝑋[𝑘] ∈ 𝑇 (𝑋[1..𝑘 − 1]) do2 if 𝐵𝑘(𝑋[1..𝑘]) then3 if 𝑋[1..𝑘] je put do cinog qvora then4 𝑝𝑟𝑖𝑛𝑡(𝑋[1..𝑘])5 if 𝑘 < 𝑛 then6 𝐵𝑎𝑐𝑘𝑡𝑟𝑎𝑐𝑘(𝑘 + 1)

Ovaj algoritam pozivamo sa 𝐵𝑎𝑐𝑘𝑡𝑟𝑎𝑐𝑘(1). Primetimo da se ovim al-goritmom xtampaju sva rexea i pretpostava se da torke razliqitihduina mogu da saqiavaju rexee. Ako je potrebno samo jedno rexee,moe se dodati fleg kao parametar kao indikator prve pojave uspeha.

Prikazaemo i iterativnu verziju ovog uopxtenog algoritma. Prime-timo da se elementi generixu metodom u dubinu.

𝐵𝑎𝑐𝑘𝑡𝑟𝑎𝑐𝑘 𝑖𝑡(𝑋,𝑛)ulaz: 𝑋 - vektor rexea, 𝑛 - dimenzija vektoraizlaz: odxtampane sve 𝑛-torke 𝑋 koje zadovoavaju uslove1 𝑘 ← 12 while 𝑘 = 0 do3 if postoji neko 𝑋[𝑘] ∈ 𝑇 (𝑋[1..𝑘 − 1]) koje nije obraeno i

𝐵𝑘(𝑋[1..𝑘]) then4 if 𝑋[1..𝑘] predstava put do cinog qvora then5 𝑝𝑟𝑖𝑛𝑡(𝑋[1..𝑘])6 𝑘 ← 𝑘 + 17 else 𝑘 ← 𝑘 − 1

6.4.1 Problem 𝑛 dama

Za problem 𝑛 dama, prikazaemo algoritam za generisae svih kon-figuracija koje odgovaraju rexeima. Kodu prethodi kod algoritma zaproveru da li je dozvoeno postaviti 𝑘-tu damu na poziciju 𝑖 u 𝑘-tojvrsti.

𝑆𝑚𝑒𝑠𝑡𝑖(𝑘, 𝑖)ulaz: 𝑋 - globalni niz qiji su elementi 𝑋[1..𝑘 − 1] ve postaveni,

𝑘 - indeks vrste, 𝑖 - indeks koloneizlaz: 𝑡𝑟𝑢𝑒 ako se dama moe postaviti u 𝑘-toj vrsti i 𝑖-toj koloni;

inaqe 𝑓𝑎𝑙𝑠𝑒1 for 𝑗 ← 1 to 𝑘 − 1 do2 if 𝑋[𝑗] = 𝑖 dve dame u istoj koloni

or |𝑋[𝑗]− 𝑖| = |𝑗 − 𝑘| dve dame na istoj dijagonali then3 return 𝑓𝑎𝑙𝑠𝑒4 return 𝑡𝑟𝑢𝑒

Page 142: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

6.4. Pretraga sa vraaem 142

𝑁𝐷𝑎𝑚𝑎(𝑘)𝑋 - vektor rexea, 𝑛 - dimenzija vektora globalne promeniveulaz: 𝑋 - niz u koji smextamo indekse kolona rexea 𝑛 dama,

𝑘 - indeks vrste do koje se stiglo, 𝑛 - dimenzija xahovske tableizlaz: xtampaju se sva mogua postavaa 𝑛 dama na tablu dimenzije 𝑛× 𝑛

sa postavenih 𝑘 − 1 prvih dama1 for 𝑖← 1 to 𝑛 do2 if 𝑆𝑚𝑒𝑠𝑡𝑖(𝑘, 𝑖) then3 𝑋[𝑘]← 𝑖4 if 𝑘 = 𝑛 then5 𝑝𝑟𝑖𝑛𝑡(𝑋[1..𝑛])6 else7 𝑁𝐷𝑎𝑚𝑎(𝑘 + 1)

Spisak svih rexea dobija se pozivom 𝑁𝐷𝑎𝑚𝑎(1). Zbog simetrije,dovono je za prvu vrstu razmatrati samo kolone od 1 do ⌈𝑛/2⌉.

6.4.2 Zbir podskupa

Pretpostavimo da imamo na raspolagau 𝑛 razliqitih pozitivnihbrojeva i da nam je ci da pronaemo sve podskupove ovih brojeva qiji jezbir jednak 𝑚. U odeku 6.3 pokazano je kako se ovaj problem moe formu-lisati korixeem torki fiksne ili promenive veliqine. Razmotriemosad rexee zasnovano na pretrazi korixeem strategije sa torkamafiksne veliqine. U tom sluqaju element 𝑥𝑖 vektora rexea ima vrednostnula ili jedan u zavisnosti od toga da li je predmet 𝑤𝑖 ukuqen u podskupili ne. Sinovi svakog qvora sa slike 6.11 se jednostavno generixu. Zaqvor nivoa 𝑖− 1 levi sin odgovara sluqaju 𝑥𝑖 = 1, a desni sluqaju 𝑥𝑖 = 0.Prirodno je da se za ograniqavajuu funkciju koristi funkcija:

𝐵𝑘(𝑥1, . . . , 𝑥𝑘) = 𝑡𝑟𝑢𝑒 akko

𝑘∑𝑖=1

𝑤𝑖𝑥𝑖+

𝑛∑𝑖=𝑘+1

𝑤𝑖 ≥ 𝑚 i

𝑘∑𝑖=1

𝑤𝑖𝑥𝑖+𝑚𝑖𝑛𝑘+1≤𝑗≤𝑛𝑤𝑗 ≤ 𝑚

Jasno je da 𝑥1, . . . , 𝑥𝑘 ne mogu biti na putu ka cinom qvoru ako ovajuslov nije zadovoen. Ograniqavajua funkcija se moe pojednostavitiako se teine 𝑤𝑖 prethodno poreaju tako da qine neopadajui niz. U ovomsluqaju 𝑥1, . . . , 𝑥𝑘 ne moe voditi ka cinom qvoru ako je

𝑘∑𝑖=1

𝑤𝑖𝑥𝑖 + 𝑤𝑘+1 > 𝑚

Stoga koristimo funkciju ograniqavaa:

𝐵𝑘(𝑥1, . . . , 𝑥𝑘) = 𝑡𝑟𝑢𝑒 akko

𝑘∑𝑖=1

𝑤𝑖𝑥𝑖 +

𝑛∑𝑖=𝑘+1

𝑤𝑖 ≥ 𝑚 i

𝑘∑𝑖=1

𝑤𝑖𝑥𝑖 +𝑤𝑘+1 ≤ 𝑚

U usavrxenoj verziji algoritma koji sledi izbegava se da se stalnoraqunaju ove dve sume, time xto se koriste ihove prethodne vrednosti.

Page 143: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

143 6. Algoritamske strategije

𝑆𝑢𝑚𝑎𝑃𝑜𝑑𝑠𝑘𝑢𝑝𝑜𝑣𝑎(𝑤, 𝑛,𝑚, 𝑘, 𝑠, 𝑟)ulaz: 𝑤 - nerastui niz brojeva duine 𝑛,

𝑚 - traena suma elemenata podskupa𝑘 - indeks elementa niza 𝑥 koji se eventualno ukuquje u zbir

𝑠 =∑𝑘−1

𝑗=1 𝑤[𝑗]𝑥[𝑗], 𝑟 =∑𝑛

𝑗=𝑘 𝑤[𝑗]

izlaz: xtampaju se svi mogui podskupovi sa sumom 𝑚1 generixemo levog sina; primetimo: 𝑠 + 𝑤[𝑘] ≤ 𝑚 jer je 𝐵𝑘−1 taqno2 𝑥[𝑘]← 13 if 𝑠 + 𝑤[𝑘] = 𝑚 then4 𝑝𝑟𝑖𝑛𝑡 𝑥[1..𝑘] pronaeno je jedno od rexea5 else if 𝑠 + 𝑤[𝑘] + 𝑤[𝑘 + 1] ≤ 𝑚 then6 𝑆𝑢𝑚𝑎𝑃𝑜𝑑𝑠𝑘𝑢𝑝𝑜𝑣𝑎(𝑤, 𝑛,𝑚, 𝑘 + 1, 𝑠 + 𝑤[𝑘], 𝑟 − 𝑤[𝑘])7 generixemo desnog sina i raqunamo 𝐵𝑘 koristei pretpostavku da je 𝐵𝑘−1 taqno8 if 𝑠 + 𝑤[𝑘 + 1] ≤ 𝑚 and 𝑠 + 𝑟 − 𝑤[𝑘] ≥ 𝑚 then9 𝑥[𝑘]← 010 𝑆𝑢𝑚𝑎𝑃𝑜𝑑𝑠𝑘𝑢𝑝𝑜𝑣𝑎(𝑤, 𝑛,𝑚, 𝑘 + 1, 𝑠, 𝑟 − 𝑤[𝑘])

Algoritam se poziva sa 𝑆𝑢𝑚𝑎𝑃𝑜𝑑𝑠𝑘𝑢𝑝𝑜𝑣𝑎(𝑤, 𝑛,𝑚, 1, 0,∑𝑛

𝑖=1 𝑤𝑖). Inte-resantno je da algoritam ne koristi eksplicitno test 𝑘 > 𝑛 za prekidrekurzije. Ovaj test nije neophodan jer na startu algoritma vai 𝑠 < 𝑚i 𝑠 + 𝑟 ≥ 𝑚. Stoga je 𝑟 > 0, tj. suma 𝑟 sadri bar jedan sabirak, pa je𝑘 ≤ 𝑛. Takoe vaa primetiti da u naredbi else if iz 𝑠 + 𝑤𝑘 < 𝑚 i𝑠 + 𝑟 ≥ 𝑚 sledi da je 𝑟 = 𝑤𝑘 i stoga 𝑘 + 1 ≤ 𝑛. Primetimo, takoe, daako vai 𝑠 + 𝑤𝑘 = 𝑚, onda 𝑥𝑘+1, . . . , 𝑥𝑛 moraju biti jednaki 0. U okviru

else if naredbe ne testiramo∑𝑘

𝑖=1 𝑤𝑖𝑥𝑖 +∑𝑛

𝑖=𝑘+1 𝑤𝑖 ≥ 𝑚, jer ve znamo daje 𝑠 + 𝑟 ≥ 𝑚 i 𝑥𝑘 = 1.

6.4.3 3-bojee grafa

Neka je 𝐺 = (𝑉,𝐸) neusmereni graf. Ispravno bojee (ili samobojee) grafa𝐺 je takvo pridruivae boja svim qvorovima, da su susednimqvorovima uvek pridruene razliqite boje.

Problem 3-bojee grafa: Dat je neusmereni graf𝐺 = (𝑉,𝐸). Ustanovitida li se 𝐺 moe obojiti sa tri boje.

U sluqaju problema 3-bojea, broj potencijalnih rexea je 3𝑛, jer je toukupan broj naqina na koje se 𝑛 qvorova mogu obojiti sa tri boje. Naravno,sem ako graf nema grana, broj ispravnih bojea moe da bude znatno maiod 3𝑛, jer grane nameu ograniqea na mogua bojea. Da bi se ispitalisvi mogui naqini bojea qvorova, moe se zapoqeti dodeivaem pro-izvone boje jednom od qvorova, a zatim nastaviti sa bojeem ostalihqvorova, vodei raquna o ograniqeima koje nameu grane | da susedniqvorovi moraju biti obojeni razliqitim bojama. Pri bojeu qvora, po-kuxava se sa svim moguim bojama, koje su konzistentne sa prethodnoobojenim qvorovima. Ovaj proces moe se obaviti algoritmom pretra-ge sa vraaem stabla prostora staa (stabla varijanti), koji je dobrailustracija pretrage i granaa sa odsecaem. Da bismo razlikovali qvo-rove grafa i stabla, qvorove stabla zvaemo temenima.

Koren stabla odgovara poqetnom stau problema, a svaka grana odgovaranekoj odluci o vrednosti nekog parametra. Oznaqimo tri boje sa 𝐶 (crveno),

Page 144: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

6.4. Pretraga sa vraaem 144

𝑃 (plavo) i 𝑍 (zeleno). Na poqetku se mogu izabrati neka dva susedna qvora𝑣 i 𝑤, i obojiti recimo sa 𝑃 i 𝑍. Poxto se oni ionako moraju obojitirazliqitim bojama, nije bitno koje e boje biti izabrane (konaqno bojeese uvek moe ispermutovati), pa se zato moe zapoqeti sa bojeem dvaumesto jednog qvora. Bojee ova dva qvora odgovara poqetnom stau pro-blema, koje je pridrueno korenu stabla varijanti. Stablo se konstruixeu toku samog obilaska. U svakom temenu 𝑡 stabla bira se sledei qvor𝑢 grafa koji treba obojiti, i dodaje jedan, dva ili tri sina temenu 𝑡,zavisno od broja boja kojima se moe obojiti qvor 𝑢. Na primer, ako je𝑢 prvi izabrani qvor (posle 𝑣 i 𝑤), a 𝑢 je susedan qvoru 𝑤 (koji je veobojen bojom 𝑍), onda postoje dve mogunosti za bojee 𝑢, 𝑃 i 𝐶, pa sekorenu dodaju dva sina. Zatim se bira jedan od ova dva sina i proces senastava. Kad se jedan qvor oboji, smauje se broj mogunosti za bojeeostalih qvorova; prema tome, broj sinova pokazuje tendenciju opadaakako se napreduje u dubinu stabla.

U trenutku kada su obojeni svi qvorovi grafa, problem je rexen. Ve-rovatnije je, meutim, da emo naii na qvor koji se ne moe obojiti(jer ima tri susedna qvora koji su ve obojeni razliqitim bojama). U tomtrenutku qinimo korak nazad | vraamo se uz stablo (ka nekom temenu naniem nivou) i pokuxavamo sa drugim sinovima. Primer grafa, i stablakoje odgovara rexavau problema 3-bojee na tom grafu, prikazan je naslici 6.14. Primetimo da kada se u ovom primeru fiksiraju boje qvorova 1i 2, za bojee ostalih qvorova postoji samo jedan naqin, do koga se dolazikrajim desnim putem kroz stablo na slici.

ss s

ss s

4

3

2

1

5 s sss

ssss

s

1𝑃, 2𝑍

3𝐶

4𝑍 4𝑃

3𝑃

4𝑍4𝐶

5𝐶

(a) (b)

Slika 6.14: Primer primene pretrage na 3-bojee grafa.

Algoritam za obilazak stabla varijanti moe se formulisati induk-cijom po broju obojenih qvorova.

Induktivna hipoteza: Umemo da zavrximo 3-bojee grafa koji imamae od 𝑘 neobojenih qvorova, ili da za takav graf ustanovimo da sene moe obojiti sa tri boje.

Ako je dat graf sa 𝑘 neobojenih qvorova, biramo jedan od neobojenihqvorova i pronalazimo sve mogue boje kojima se on moe obojiti. Ako susve boje ve iskorixene za susede tog qvora, zapoqeto 3-bojee se ne moekompletirati. U protivnom, qvor bojimo jednom od moguih boja (jednompo jednom) i rexavamo preostale probleme (koji imaju po 𝑘 − 1 neobojeniqvor) indukcijom.

Page 145: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

145 6. Algoritamske strategije

3− 𝑏𝑜𝑗𝑒𝑛𝑗𝑒(𝐺,𝑈)ulaz: 𝐺 = (𝑉,𝐸) - neusmereni graf,

𝑈 - skup obojenih qvorova (na poqetku prazan)izlaz: pridruivae jedne od tri boja svakom qvoru1 if 𝑈 = 𝑉 then2 𝑝𝑟𝑖𝑛𝑡 \bojee je zavrxeno"3 prekid svih rekurzivnih poziva4 else5 izabrati neki qvor 𝑣 ∈ 𝑉, 𝑣 /∈ 𝑈6 for 𝐶 ← 1 to 3 do7 if nijedan sused 𝑣 nije obojen bojom 𝐶 then8 neka je 𝑈1 skup dobijen od skupa 𝑈 dodavaem qvora 𝑣 obojenog bojom 𝐶9 3-bojee(𝐺,𝑈1)

Nije texko nai primer grafa i redosled egovih qvorova, takav dase pri bojeu grafa dobija stablo sa eksponencijalnim brojem temena.Ovo je qesta situacija u algoritmima pretrage. Jedino se moemo nadatida emo, ako stablo budemo obilazili na pogodan naqin, na rexee brzonaii. Algoritam koji smo opisali ne precizira naqin izbora sledeegqvora. Poxto se kao sledei moe izabrati proizvoan qvor, imamo iz-vesnu fleksibilnost, koja se moe iskoristiti za primenu odgovarajueheuristike. Heuristika je deo algoritma koji ne garantuje da e se dorexea doi efikasnije, ali se pretpostava na osnovu iskustva ilineke analize da je pretraga na taj naqin efikasnija. U ovom primeruheuristika bi mogla da bude da se u svakom koraku za bojee bira qvorkoji ima najvixe neobojenih suseda ili recimo qvor qiji su susedi veobojeni najveim brojem razliqitih boja.

6.4.4 Bojee grafa minimalnim brojem boja

Posmatrajmo opxti problem bojea grafa: ci je pronai najmaibroj boja potreban za bojee zadatog grafa, a ne ustanoviti da li je grafmogue obojiti sa tri boje. Moe se formirati stablo sliqno kao za 3-bojee, ali broj sinova svakog temena moe da bude vrlo veliki. Svakinovi qvor moe se obojiti nekom od ve korixenih boja (sem ako je nekiod egovih suseda ve obojen tom bojom), ili novom bojom. Prema tome,algoritam za 3-bojee mea se na dva mesta:

1. konstanta 3 zameuje se brojem do sada korixenih boja, i

2. algoritam se ne zavrxava u trenutku kad je 𝑉 = 𝑈 , jer je mogue dapostoji boi naqin da se oboji graf.

Potexkoe izaziva qienica da u algoritmu dolazi do vraaa unazadsamo kad se doe do lista u stablu (odnosno kad je 𝑉 = 𝑈), jer se nova bojauvek moe dodeliti qvoru. Prema tome, skoro je sigurno da e ovakavalgoritam biti vrlo neefikasan (sem ako je graf vrlo gust). Efikasnostalgoritma moe da poboxa sledee opaae. Pretpostavimo da smoproxli deo stabla do nekog lista i tako pronaxli ispravno bojee sa𝑘 boja. Pretpostavimo dae da smo posle vraaa unazad krenuli drugim

Page 146: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

6.4. Pretraga sa vraaem 146

putem, i tako doxli do qvora koji zahteva uvoee (𝑘 + 1)-e boje. U tomtrenutku moe se napraviti korak nazad (izvrxiti odsecae), jer je vepoznato boe rexee. Prema tome, 𝑘 slui kao granica za pretragu.

U opxtem sluqaju u svakom temenu stabla varijanti izraqunavamo dougranicu za najboe rexee na koje se moe naii meu sledbenicima togtemena. Ako je ta doa granica vea od nekog ve naenog rexea, qinimokorak nazad (vrximo odsecae). Vaan naqin da se algoritam granaasa odsecaem uqini efikasnim je izraqunavae dobrih doih granica,odnosno izbor dobre ograniqavajue funkcije; ako se trai minimum,onda se trae dobre gore granice. Drugi vaan element je nalaeedobrog redosleda obilaska, koji omoguuje brzo pronalaee dobrih re-xea, a time i ranije napuxtae neperspektivnih podstabala.

6.4.5 (0,1) problem ranca

Podsetimo se problema ranca. Neka je dat niz vrednosti artikala 𝑉 =[𝑣1, 𝑣2, . . . 𝑣𝑛], niz teina artikala 𝑊 = [𝑤1, 𝑤2, . . . , 𝑤𝑛] i kapacitet ranca𝑀 . Sve ove vrednosti su pozitivni celi brojevi. Potrebno je odreditivektor (𝑥1, ..., 𝑥𝑛), 𝑥𝑖 ∈ 0, 1 tako da vai

∑𝑤𝑖𝑥𝑖 ≤ 𝑀 , a da vrednost

sume∑

𝑣𝑖𝑥𝑖 bude maksimalna. Kaemo da 𝑛-torka [𝑥1, 𝑥2, . . . , 𝑥𝑛] nula ijedinica predstava prihvativo rexee ako je

∑𝑤𝑖𝑥𝑖 ≤𝑀 .

Jednostavan algoritam za rexavae ovog problema sastoji se od ispro-bavaa svih 2𝑛 moguih 𝑛-torki nula i jedinica (videti [3]). To moemouraditi tako xto emo prvo izabrati vrednost za 𝑥1, zatim za 𝑥2 itd.Pretraga sa vraaem predstava jednostavan metod za generisae svihmoguih 𝑛-torki. Nakon xto se svaka 𝑛-torka generixe, proverava se dali je prihvativa. Ako jeste prihvativa, onda se ena vrednost poredisa trenutno najboim rexeem. Najboe tekue rexee se aurira kadgod se nae boe prihvativo rexee.

Oznaqimo sa 𝑋 = [𝑥1, 𝑥2, . . . , 𝑥𝑛] tekuu kompletiranu 𝑛-torku kojase konstruixe, a sa 𝑉 𝑡𝑒𝑘𝑢𝑐𝑒 =

∑𝑛𝑖=1 𝑤𝑖𝑥𝑖 enu vrednost. Neka je 𝑂𝑝𝑡𝑋

trenutno najboe rexee, a 𝑂𝑝𝑡𝑉 vrednost tog rexea. U nastavku sledikod jednostavnog rekurzivnog algoritma za rexavae ovog problema.

𝑅𝑎𝑛𝑎𝑐1(𝑙)𝑉 - vektor vrednosti artikala, 𝑊 - vektor teina artikala,𝑀 - kapacitet ranca (globalne promenive)ulaz: 𝑙 - redni broj koordinate koju trenutno postavamoizlaz: 𝑂𝑝𝑡𝑉 - vrednost optimalnog rexea,

𝑂𝑝𝑡𝑋 -vrednost torke za koju se postie optimalna vrednost1 if 𝑙 = 𝑛 + 1 then2 if

∑𝑛𝑖=1 𝑤𝑖𝑥𝑖 ≤𝑀 then

3 𝑉 𝑡𝑒𝑘𝑢𝑐𝑒←∑𝑛

𝑖=1 𝑣𝑖𝑥𝑖

4 if 𝑉 𝑡𝑒𝑘𝑢𝑐𝑒 > 𝑂𝑝𝑡𝑉 then5 𝑂𝑝𝑡𝑉 ← 𝑉 𝑡𝑒𝑘𝑢𝑐𝑒6 𝑂𝑝𝑡𝑋 ← [𝑥1, 𝑥2, . . . , 𝑥𝑛]7 else8 𝑥𝑙 ← 19 𝑅𝑎𝑛𝑎𝑐1(𝑙 + 1)10 𝑥𝑙 ← 0

Page 147: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

147 6. Algoritamske strategije

11 𝑅𝑎𝑛𝑎𝑐1(𝑙 + 1)

Pre poziva algoritma treba postaviti vrednost 𝑂𝑝𝑡𝑉 na nula, a ondapozvati algoritam 𝑅𝑎𝑛𝑎𝑐1(1) da bi se rexila instanca problema. Rekur-zivni pozivi implicitno grade stablo prostora staa. Za 𝑛 = 3 ovo stabloje prikazano na slici 6.15.

Slika 6.15: Stablo prostora staa za 𝑛 = 3.

Predloeni algoritam generixe 2𝑛 binarnih 𝑛-torki. Potrebno je𝑂(𝑛) koraka da se svako rexee proveri, te je stoga asimptotski vremeizvrxavaa ovog algoritma 𝑂(𝑛2𝑛). Primetimo da nisu sve 𝑛-torke nulai jedinica prihvative, pa bi jednostavna modifikacija ovog algoritmamogla to da uzme u obzir. Za problem ranca primetimo da mora da vai:

𝑙−1∑𝑖=1

𝑤𝑖𝑥𝑖 ≤𝑀

za svako parcijalno rexee [𝑥1, 𝑥2, . . . , 𝑥𝑙−1]. Drugim reqima, moemo pro-veriti parcijalna rexea da vidimo da li je zadovoen kriterijum pri-hvativosti. Ako je 𝑙 ≤ 𝑛 uvodimo oznaku:

𝑊 𝑡𝑒𝑘𝑢𝑐𝑒 =

𝑙−1∑𝑖=1

𝑤𝑖𝑥𝑖

U izmeenom algoritmu proverava se prihvativost pre nego xto senapravi rekurzivni poziv. Ovaj algoritam se poziva sa 𝑙 = 1 i𝑊 𝑡𝑒𝑘𝑢𝑐𝑒 =0.

𝑅𝑎𝑛𝑎𝑐2(𝑙,𝑊 𝑡𝑒𝑘𝑢𝑐𝑒)𝑉 - vektor vrednosti artikala, 𝑊 - vektor teina artikala,𝑀 - kapacitet ranca, 𝑋 - vektor rexea (globalne promenive)ulaz: 𝑙 - redni broj koordinate koju trenutno postavamo

𝑊 𝑡𝑒𝑘𝑢𝑐𝑒 - tekua teina rancaizlaz: 𝑂𝑝𝑡𝑉 - vrednost optimalnog rexea,

𝑂𝑝𝑡𝑋 -vrednost torke za koju se postie optimalna vrednost1 if 𝑙 = 𝑛 + 1 then

Page 148: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

6.4. Pretraga sa vraaem 148

2 if∑𝑛

𝑖=1 𝑣𝑖𝑥𝑖 > 𝑂𝑝𝑡𝑉 then3 𝑂𝑝𝑡𝑉 ←

∑𝑛𝑖=1 𝑣𝑖𝑥𝑖

4 𝑂𝑝𝑡𝑋 ← [𝑥1, 𝑥2, . . . , 𝑥𝑛]5 else6 if 𝑊 𝑡𝑒𝑘𝑢𝑐𝑒 + 𝑤𝑙 ≤𝑀 then7 𝑥𝑙 ← 18 𝑅𝑎𝑛𝑎𝑐2(𝑙 + 1,𝑊 𝑡𝑒𝑘𝑢𝑐𝑒 + 𝑤𝑙)9 𝑥𝑙 ← 010 𝑅𝑎𝑛𝑎𝑐2(𝑙 + 1,𝑊 𝑡𝑒𝑘𝑢𝑐𝑒)11 else12 𝑥𝑙 ← 013 𝑅𝑎𝑛𝑎𝑐2(𝑙 + 1,𝑊 𝑡𝑒𝑘𝑢𝑐𝑒)

Kad god je 𝑊 𝑡𝑒𝑘𝑢𝑐𝑒 + 𝑤𝑙 > 𝑀 imamo odsecae. To znaqi da se jedanod dva rekurzivna poziva (onaj koji odgovara 𝑥𝑙 = 1) ne izvodi. Odsecaese moe uraditi u jox nekim situacijama, korixeem ograniqavajuihfunkcija. Oznaqimo sa 𝑣𝑟𝑒𝑑𝑛𝑜𝑠𝑡(𝑋) vrednost proizvonog prihvativogrexea 𝑋. Za svako parcijalno prihvativo rexee 𝑋 = [𝑥1, . . . , 𝑥𝑙−1]oznaqimo sa 𝑃 (𝑋) maksimalnu vrednost proizvonog rexea koje je potomak𝑋 u stablu prostora staa. Drugim reqima 𝑃 (𝑋) oznaqava maksimalnuvrednost 𝑣𝑟𝑒𝑑𝑛𝑜𝑠𝑡(𝑋 ′), gde je 𝑋 ′ = [𝑥′

1, . . . , 𝑥′𝑛] takvo da je 𝑥𝑖 = 𝑥′

𝑖 za 1 ≤ 𝑖 ≤𝑙− 1. U principu 𝑃 (𝑋) bi se moglo izraqunati prolaskom kroz podstablosa korenom𝑋. Da bismo ovo izbegli, koristiemo ograniqavajuu funkciju.Ograniqavajua funkcija je realna funkcija koju oznaqavamo sa 𝐵 de-finisana na skupu staa u stablu za koju vai: za svako prihvativorexee 𝑋, 𝐵(𝑋) ≥ 𝑃 (𝑋). Drugim reqima, 𝐵(𝑋) je gora granica zavrednost dostupnog rexea koje je potomak parcijalnog niza 𝑋. Kadase zna neka ograniqavajua funkcija, ta funkcija se moe iskoristitiza odsecae u stablu staa. Pretpostavimo da smo u nekoj fazi pretragei da imamo tekue parcijalno rexee 𝑋 = [𝑥1, . . . , 𝑥𝑙−1] i da je 𝑂𝑝𝑡𝑉tekua optimalna vrednost. Uvek kada vai𝐵(𝑋) ≤ 𝑂𝑝𝑡𝑉 , vai i 𝑃 (𝑋) ≤𝐵(𝑋) ≤ 𝑂𝑝𝑡𝑉 , odnosno nijedan potomak ne moe popraviti tekuu opti-malnu vrednost. Stoga moemo odsei celo tekue podstablo.

Pokazaemo sada kako definisati efikasnu ograniqavajuu funkcijuza problem ranca korixeem razlomenog problema ranca, qija je for-mulacija problema ista kao za (0, 1) problem ranca, samo umesto uslova𝑥𝑖 ∈ 0, 1 imamo uslov 0 ≤ 𝑥𝑖 ≤ 1. Podsetimo se da se razlomeni problemranca moe efikasno rexiti pohlepnim algoritmom u kojem artikleposmatramo u nerastuem redosledu odnosa vrednosti prema teini.

Neka 𝑅𝑎𝑧𝑙𝑜𝑚𝑙𝑗𝑒𝑛𝑖(𝑘; 𝑣1, . . . , 𝑣𝑘, 𝑤1, . . . , 𝑤𝑘,𝑀) oznaqava optimalno re-xee razlomenog problema ranca za proizvonu instancu meu onimakoje sadre neke od prvih 𝑘 predmeta (one predmete kojima odgovarajedinica na odgovarajuoj koordinati u vektoru 𝑋). Ovaj algoritam ko-ristimo za definisae ograniqavajue funkcije na sledei naqin: zaprihvativo parcijalno rexee 𝑋 = [𝑥1, . . . , 𝑥𝑙−1] (0,1) problema ranca,definixemo:

Page 149: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

149 6. Algoritamske strategije

𝐵(𝑥) =

𝑙−1∑𝑖=1

𝑣𝑖𝑥𝑖 + 𝑅𝑎𝑧𝑙𝑜𝑚𝑙𝑗𝑒𝑛𝑖(𝑛− 𝑙 + 1, 𝑣𝑙, . . . , 𝑣𝑛, 𝑤𝑙, . . . , 𝑤𝑛,𝑀 −𝑙−1∑𝑖=1

𝑤𝑖𝑥𝑖)

= 𝑊 𝑡𝑒𝑘𝑢𝑐𝑒 + 𝑅𝑎𝑧𝑙𝑜𝑚𝑙𝑗𝑒𝑛𝑖(𝑛− 𝑙 + 1, 𝑣𝑙, . . . , 𝑣𝑛, 𝑤𝑙, . . . , 𝑤𝑛,𝑀 −𝑊 𝑡𝑒𝑘𝑢𝑐𝑒)

Ovde je 𝐵(𝑋) jednako sumi ve dobijenih vrednosti za objekte 1, . . . , 𝑙−1i vrednosti preostalih 𝑛−𝑙+1 objekata, korixeem preostalog kapaciteta𝑀 −𝑊 𝑡𝑒𝑘𝑢𝑐𝑒, ali dozvoavaem necelobrojnih vrednosti za 𝑥𝑖. Na ovajnaqin moemo dobiti veu vrednost, stoga je 𝐵(𝑋) ≥ 𝑉 (𝑋), gde je sa 𝑉 (𝑋)oznaqena vrednost rexea 𝑋 i 𝐵 je zaista ograniqavajua funkcija. Sobzirom na to da ju je lako izraqunati, korisna je za odsecae.

Vratimo se sada na rexavae (0,1) problema ranca. Pre nego xtozapoqnemo algoritam pretrage, korisno je sortirati objekte u opadajuemredosledu odnosa vrednosti i teine. Stoga za objekte 𝑙, ..., 𝑛 za koje seizraqunava ograniqavajua funkcija vai da su ve dati u odgovarajuemredosledu, tj. vai 𝑣1

𝑤1≥ . . . ≥ 𝑣𝑛

𝑤𝑛.

𝑅𝑎𝑛𝑎𝑐3(𝑙,𝑊 𝑡𝑒𝑘𝑢𝑐𝑒)𝑉 - vektor vrednosti artikala, 𝑊 - vektor teina artikala,𝑀 - kapacitet ranca, 𝑋 - vektor rexea (globalne promenive)ulaz: 𝑙 - redni broj koordinate koju trenutno postavamo

𝑊 𝑡𝑒𝑘𝑢𝑐𝑒 - tekua teina rancaizlaz: 𝑂𝑝𝑡𝑉 - vrednost optimalnog rexea,

𝑂𝑝𝑡𝑋 -vrednost torke za koju se postie optimalna vrednost1 if 𝑙 = 𝑛 + 1 then2 if

∑𝑛𝑖=1 𝑣𝑖𝑥𝑖 > 𝑂𝑝𝑡𝑉 then

3 𝑂𝑝𝑡𝑉 ←∑𝑛

𝑖=1 𝑣𝑖𝑥𝑖

4 𝑂𝑝𝑡𝑋 ← [𝑥1, 𝑥2, . . . , 𝑥𝑛]5 else6 𝐵 ←𝑊 𝑡𝑒𝑘𝑢𝑐𝑒 + 𝑅𝑎𝑧𝑙𝑜𝑚𝑙𝑗𝑒𝑛𝑖(𝑛− 𝑙 + 1, 𝑣𝑙, . . . , 𝑣𝑛, 𝑤𝑙, . . . , 𝑤𝑛,𝑀 −𝑊 𝑡𝑒𝑘𝑢𝑐𝑒)7 if 𝐵 ≤ 𝑂𝑝𝑡𝑉 then8 return odsecae jer nema boeg rexea9 if 𝑊 𝑡𝑒𝑘𝑢𝑐𝑒 + 𝑤𝑙 ≤𝑀 then10 𝑥𝑙 ← 111 𝑅𝑎𝑛𝑎𝑐3(𝑙 + 1,𝑊 𝑡𝑒𝑘𝑢𝑐𝑒 + 𝑤𝑙)12 if 𝐵 ≤ 𝑂𝑝𝑡𝑉 then13 return14 𝑥𝑙 ← 015 𝑅𝑎𝑛𝑎𝑐3(𝑙 + 1,𝑊 𝑡𝑒𝑘𝑢𝑐𝑒)

Vano je napomenuti da se uslov odsecaa 𝐵 ≤ 𝑂𝑝𝑡𝑉 proverava presvakog rekurzivnog poziva. Ovo se radi zato xto se vrednost 𝑂𝑝𝑡𝑉 moepoveati kako algoritam napreduje, te stoga proveravamo da li moemovrxiti odsecae prilikom svake pripreme izbora vrednosti za 𝑥𝑙.

Primer 6.5 (Primer rexavaa (0,1) problema ranca). Pretpostavimo dana raspolagau imamo pet objekata teina redom 11, 12, 8, 7, 9, vrednosti23, 24, 15, 13, 16 i kapacitet ranca 𝑀 = 26. Primetimo da su objekti

Page 150: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

6.4. Pretraga sa vraaem 150

ve poreani u opadajuem redosledu vrednosti po jedinici teine. Naslici 6.16 prikazano je stablo prostora staa koje se obilazi u redosledukao xto je dato u algoritmu Ranac3. U svakom qvoru beleimo tekuevrednosti za 𝑋, 𝐵(𝑋) i 𝑊 𝑡𝑒𝑘𝑢𝑐𝑒.

Primetimo da se odsecae korixeem ograniqavajue funkcije uovom primeru dogaa u tri grupe temena:

1. U trenutku kada je𝑋 = [1, 0] i [1, 0, 1], najboa ve pronaena vrednostje 𝑂𝑝𝑡𝑉 = 51. S obzirom na to da je 𝐵(𝑋) = 51, drugi rekurzivnipoziv se ne izvodi. Stoga se podstabla sa korenom [1, 0, 0] i [1, 0, 1, 0]odsecaju.

2. Kada je 𝑋 = [0], imamo da vai 𝑂𝑝𝑡𝑉 = 51 i 𝐵(𝑋) = 50.14 < 51,stoga se ne izvode rekurzivni pozivi. Podstablo sa korenom [0] seodseca.

3. Takoe, odsecae zbog premaxenog kapaciteta se java u qvorovima[1, 1], [1, 1, 0], [1, 1, 0, 0] i [1, 0, 1, 1]. U svakom od ovih qvorova prvirekurzivni poziv za 𝑥𝑙 = 1 se ne izvodi.

Slika 6.16: Stablo prostora staa za Ranac3.

Page 151: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

Glava 7

Generisae kombinatornih

objekata

Algoritmi za generisae kombinatornih objekata (kao xto su permutacije,varijacije, kombinacije) oduvek su privlaqili pau. Nama su intere-santni kao komponenta algoritama zasnovanih na gruboj sili, odnosnokao primeri algoritama pretrage (pretrage sa vraaem). Problem kojirazmatramo je generisae svih objekata datog tipa na primer, svihpermutacija reda 𝑛, odnosno kombinacija, particija i varijacija.

7.1 Uvod

U vezi sa sloenoxu ovih algoritama moe se razmatrati sloenostgenerisaa, odnosno sloenost listaa svih objekata. Na primer, opti-malni algoritam za generisae svih permutacija reda 𝑛 bio bi sloenosti𝑂(𝑛!), a algoritam za ihovo listae sloenosti 𝑂(𝑛 · 𝑛!), jer je ispissvake permutacije duine 𝑛 sloenosti 𝑂(𝑛). Ako je 𝑃 broj instancikombinatornog objekta, a 𝑁 proseqna veliqina instance, onda se kaeda algoritam lista sve instance za asimptotski optimalno vreme ako jesloenost algoritma 𝑂(𝑁 · 𝑃 ).

Meu nizovima 𝑎 = 𝑎1, 𝑎2, . . . , 𝑎𝑝 i 𝑏 = 𝑏1, 𝑏2, . . . , 𝑏𝑞 elemenata iz ureenogskupa leksikografski poredak se definixe na sledei naqin: 𝑎 pret-hodi 𝑏 (odnosno 𝑎 < 𝑏) ako i samo ako postoji indeks 𝑖 takav da je 𝑎𝑗 = 𝑏𝑗 za𝑗 < 𝑖 i vai 𝑖 = 𝑝+1 ≤ 𝑞 ili 𝑎𝑖 < 𝑏𝑖. Na primer, 11 < 112 < 221 (ovde je 𝑖 =3, odnosno 𝑖 = 1). Ovaj poredak se koristi za utvrivae redosleda reqi ureqniku. Na primer, leksikografski redosled podskupova skupa 1, 2, 3predstavenih kao skupova bio bi: ∅, 1, 1, 2, 1, 2, 3, 1, 3, 2, 2, 3,3. U binarnoj notaciji redosled je nexto drugaqiji: 000, 001, 010, 011,100, 101, 110, 111, xto odgovara podskupovima ∅, 3, 2, 2, 3, 1,1, 3, 1, 2, 1, 2, 3. Kao xto se vidi, leksikografski redosled objekatazavisi od naqina ihovog predstavaa razliqitim notacijama moguda odgovaraju razliqiti redosledi istih objekata.

Algoritmi za generisae kombinatornih objekata mogu da budu rekur-zivni ili iterativni. Iterativni algoritmi obiqno omoguavaju bou

151

Page 152: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

7.1. Uvod 152

kontrolu nad naqinom generisaa narednog objekta, polazei od tekueg.Mi emo ovde razmatrati iterativne algoritme.

Skoro svi algoritmi za generisae se zasnivaju na jednoj od sledeetri ideje:

∙ korixee nekog naqina numerisaa (pridruivaa uzastopnih ce-lih brojeva objektima). Na primer, binarnim trojkama odgovarajuceli brojevi 0, 1, 2, . . . , 7, pa se trojke mogu generisati tako xto seredom za 𝑖 = 0, 1, . . . , 7 formira trocifreni binarni zapis broja 𝑖

∙ leksikografsko aurirae; pronalazi se najdesniji element instan-ce koji treba \aurirati" ili premestiti na novu poziciju. Takose, na primer, naredna binarna trojka u nizu trojki 000, 001, . . . , 111dobija tako xto se najdesnija nula zameni jedinicom, pa se iza edopixu nule

∙ pravilo najmae promene; prelaz izmeu uzastopnih objekata vrxise pomou najmaeg broja izmena; primeri primene ovog pravila su:

generisae u obliku Grejovog koda, kada su promene teorijskinajmae mogue. Na primer, u nizu binarnih trojki 000, 001, 011,010, 110, 111, 101, 100 svake dve uzastopne trojke razlikuju se nataqno jednoj poziciji

transpozicije, kada se naredna instanca dobija zamenom paraelemenata (ne obavezno susednih). Na primer, u nizu permutacija123, 132, 231, 213, 312, 321 svaka permutacija se od prethodne dobijajednom transpozicijom.

zamena para susednih elemenata. Na primer, u nizu permutacija123, 132, 312, 321, 231, 213 svaka permutacija se od prethodne do-bija jednom zamenom susednih elemenata.

I algoritmi koji su zasnovani na numerisau objekata se dre leksi-kografskog poretka. Prema tome, algoritmi za generisae kombinatornihobjekata mogu da se podele na one koji se dre leksikografskog redosledai one koji se dre pravila najmae promene. Oba tipa algoritama imajusvoje prednosti, pa izbor zavisi od primene.

Mnogi problemi zahtevaju u okviru rexea potpunu pretragu varijanti.Tipiqni primeri takvih problema su problem 8 dama, traee puta krozlavirint, izbor predmeta kojima bi se popunio ranac datog kapaciteta.Za neke od problema ne zna se algoritam polinomijalne sloenosti, pa zaihovo rexavae preostaje neki oblik potpune pretrage. Poxto je obiqnobroj rexea koje treba proveriti eksponencijalna funkcija od veliqineulaza, potrebno je koristiti neku strategiju sistematiqne pretrage, dabi se poveala efikasnost potpune pretrage. Jedna takva strategija jepretraga (sa vraaem), postupak koji radi sa parcijalnim rexeimaproblema. Rexee se proxiruje u vee parcijalno rexee ako to moe dadovede do kompletnog rexea ta faza se zove faza proxirivaa. Akoproxirivae tekueg rexea nije mogue ili je dostignuto kompletnorexee a trai se i naredno rexee, onda se vrxi povratak na kraeparcijalno rexee i pokuxava se ponovo ova faza naziva se fazom

Page 153: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

153 7. Generisae kombinatornih objekata

skraivaa. Pretraga je obiqno povezana sa leksikografskim poretkominstanci. Opxti oblik ove strategije pretrage moe se opisati sledeimkodom:

1 inicijalizacija2 repeat3 if tekue parcijalno rexee se moe proxiriti then4 proxirivae5 else6 skraivae7 if tekue rexee je prihvativo then8 odxtampaj ga9 until pretraga je zavrxena

7.2 Podskupovi i particije

Bez smaea opxtosti moe se pretpostaviti da je zadatak izlistatisve podskupove skupa 1, 2, . . . , 𝑛. Svaki podskup moe se predstaviti kaoniz 𝑥1, 𝑥2, . . . , 𝑥𝑟, 1 ≤ 𝑟 ≤ 𝑛, 1 ≤ 𝑥1 < 𝑥2 < . . . < 𝑥𝑟 ≤ 𝑛. Podskup sataqno𝑚 elemenata je (𝑚,𝑛)-podskup. Na primer, za 𝑛 = 5 leksikografskiredosled podskupova je sledei:

1 12 123 1234 12345

1235

124 1245

125

13 134 1345

135

14 145

15

2 23 234 2345

235

24 245

25

3 34 345

35

4 45

5

U fazi proxirea algoritam xtampa podskupove u istom redu slevaudesno. Ako je posledi element u podskupu 𝑛, algoritam prelazi u novired to je faza skraivaa.

Page 154: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

7.2. Podskupovi i particije 154

𝑃𝑜𝑑𝑠𝑘𝑢𝑝𝑜𝑣𝑖(𝑛)1 𝑟 ← 0; 𝑥𝑟 ← 0 zbog pogodnosti se koristi 𝑥02 repeat3 if 𝑥𝑟 < 𝑛 then4 𝑥𝑟+1 ← 𝑥𝑟 + 1; 𝑟 ← 𝑟 + 1 proxirivae 5 else6 𝑟 ← 𝑟 − 1;𝑥𝑟 ← 𝑥𝑟 + 1 skraivae 7 odxtampati 𝑥1, 𝑥2, . . . 𝑥𝑟

8 until 𝑥1 = 𝑛

Za generisae (𝑚,𝑛)-podskupova treba promeniti instrukciju if nasledei naqin:

if 𝑥𝑟 < 𝑛 and 𝑟 < 𝑚 then𝑥𝑟 ← 𝑥𝑟 + 1; 𝑟 ← 𝑟 + 1 proxirivae

elseif 𝑥𝑟 < 𝑛 then𝑥𝑟 ← 𝑥𝑟 + 1 preskok

else𝑟 ← 𝑟 − 1;𝑥𝑟 ← 𝑥𝑟 + 1 skraivae

Uvedena faza \preskok" se koristi kada se sa jednog podskupa prelazina podskup u nekom kasnijem redu, preskaqui podskupove sa vixe od𝑚 elemenata. Na primer, za 𝑚 = 3, 𝑛 = 5 rezultat su prve tri koloneprethodne tabele.

Razmotrimo sada algoritam za generisae varijacija. Svaka (𝑚,𝑛)-varijacija elemenata skupa 1, 2, . . . , 𝑛 moe se predstaviti nizom 𝑧1, 𝑧2, . . . , 𝑧𝑚,gde je 1 ≤ 𝑧𝑖 ≤ 𝑛. Naredna varijacija koja sledi posle 𝑧1, 𝑧2, . . . , 𝑧𝑚 moese odrediti tako xto se pronae najvei indeks 𝑡 takav da je 𝑧𝑡 < 𝑛, xtoznaqi da se 𝑧𝑡 moe poveati; indeks 𝑡 je prelomna taqka (eng. turningpoint). Vrednost 𝑧𝑡 poveava se za jedan, a nove vrednosti 𝑧𝑖 za 𝑖 > 𝑡su 1. Na primer, posle (4,3) varijacije 2133 sledi qetvorka 2211 i ovdeje prelomna taqka 2: najdesniji elemenat razliqit od 3 je 1, element saindeksom 2). Algoritam se moe opisati sledeim kodom:

𝑉 𝑎𝑟𝑖𝑗𝑎𝑐𝑖𝑗𝑒(𝑚,𝑛)1 for 𝑖← 0 to 𝑚 do 𝑧𝑖 ← 12 repeat3 odxtampati 𝑧1𝑧2 . . . 𝑧𝑚4 𝑡← 𝑚5 while 𝑧𝑡 = 𝑛 do 𝑡← 𝑡− 16 𝑧𝑡 ← 𝑧𝑡 + 17 for 𝑖← 𝑡 + 1 to 𝑚 do 𝑧𝑖 ← 18 until 𝑡 = 0

Podskupovi se mogu izlistati i u obliku binarnih nizova, pri qemusvaka jedinica odgovara elementu podskupa. Na primer, podskup 1, 3, 4 za𝑛 = 5 moe se predstaviti nizom 11010. Prema tome, podskupovi odgovarajucelim brojevima zapisanim binarno. Jednostavni rekurzivni algoritam

Page 155: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

155 7. Generisae kombinatornih objekata

za generisae (redosledom koji je suprotan od leksikografskog) svih bi-narnih 𝑛-torki moe se opisati sledeim kodom:

𝐵𝑖𝑛𝑎𝑟𝑛𝑖 𝑠𝑡𝑟𝑖𝑛𝑔𝑜𝑣𝑖(𝑛)1 if 𝑛 = 0 then odxtampati 𝑐1, 𝑐2, . . . , 𝑐𝑛2 else3 𝑐𝑛 ← 0;𝐵𝑖𝑛𝑎𝑟𝑛𝑖 𝑠𝑡𝑟𝑖𝑛𝑔𝑜𝑣𝑖(𝑛− 1)4 𝑐𝑛 ← 1;𝐵𝑖𝑛𝑎𝑟𝑛𝑖 𝑠𝑡𝑟𝑖𝑛𝑔𝑜𝑣𝑖(𝑛− 1)

Zadati prirodan broj 𝑛 moe se na vixe naqina predstaviti u oblikuzbira prirodnih brojeva (svojih delova): 𝑛 = 𝑥1 + 𝑥2 + . . . + 𝑥𝑚. Ovakvapredstava zove se particija ako redosled sabiraka nije bitan. Na primer,broj 5 ima sedam particija:

5, 4 + 1, 3 + 2, 3 + 1 + 1, 2 + 2 + 1, 2 + 1 + 1 + 1, 1 + 1 + 1 + 1 + 1

Ako je redosled sabiraka bitan, onda se predstave broja 𝑛 u oblikuzbira zovu celobrojne kompozicije. Na primer, kompozicije broja 5su:

5, 4+1, 1+4, 3+2, 2+3, 3+1+1, 1+3+1, 1+1+3, 2+2+1, 2+1+2, 1+2+2,

2 + 1 + 1 + 1, 1 + 2 + 1 + 1, 1 + 1 + 2 + 1, 1 + 1 + 1 + 2, 1 + 1 + 1 + 1 + 1

Kompozicije broja 𝑛 u 𝑚 delova su predstave broja 𝑛 u obliku zbirataqno 𝑚 sabiraka. Te kompozicije se mogu predstaviti u obliku 𝑛 =𝑥1 + 𝑥2 + . . . + 𝑥𝑚, gde je 𝑥1 > 0, . . . , 𝑥𝑚 > 0. Pokazaemo sada kakva vezapostoji izmeu celobrojnih kompozicija i kombinacija ili podskupova, uzavisnosti da li je fiksiran broj sabiraka.

Posmatrajmo kompoziciju 𝑛 = 𝑥1 + . . . + 𝑥𝑚, gde je 𝑚 fiksirano ilinije fiksirano. Neka je 𝑦1, . . . , 𝑦𝑚 niz sa 𝑖-tim qlanom: 𝑦𝑖 = 𝑥1 + . . . + 𝑥𝑖,1 ≤ 𝑖 ≤ 𝑚. Oqigledno je 𝑦𝑚 = 𝑛. Niz 𝑦1, 𝑦2, . . . , 𝑦𝑚−1 je podskup skupa1, 2, . . . , 𝑛− 1.

∙ Ako broj delova𝑚 nije fiksiran, onda kompozicije broja 𝑛 u proizvoanbroj delova odgovaraju podskupovima skupa 1, 2, . . . , 𝑛 − 1 i ihovbroj je 2𝑛−1.

∙ Ako je broj delova 𝑚 fiksiran, onda su nizovi 𝑦1, . . . , 𝑦𝑚−1 kombina-cije 𝑚−1 od 𝑛−1 elemenata iz skupa 1, 2, . . . , 𝑛−1 i ihov broj je(𝑛−1𝑚−1

). Svaki niz 𝑥1, . . . , 𝑥𝑚 se lako moe dobiti od niza 𝑦1, . . . , 𝑦𝑚,

jer je 𝑥𝑖 = 𝑦𝑖−𝑦𝑖−1 (moe se smatrati da je 𝑦0 = 0). Na primer, (3, 5)-kompozicijama 3 + 1 + 1, 1 + 3 + 1, 1 + 1 + 3, 2 + 2 + 1, 2 + 1 + 2, 1 + 2 + 2(nizovima 𝑥1,𝑥2,𝑥3) odgovaraju nizovi 3, 4, 5; 1, 4, 5; 1, 2, 5; 2, 4, 5; 2, 3, 5;1, 3, 5 (nizovi 𝑦1,𝑦2,𝑦3), koji svi imaju 5 kao posledi element, a qijiprefiksi duine dva qine svih xest (2,4)-kombinacija.

Prema tome, za generisae kompozicija broja 𝑛 moe se iskoristitialgoritam za generisae podskupova ili algoritam za generisae kombi-nacija.

Page 156: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

7.3. Kombinacije 156

7.3 Kombinacije

Proizvona (𝑚,𝑛)-kombinacija elemenata skupa 1, 2, . . . , 𝑛 moe sepredstaviti nizom 𝑧1, 𝑧2, . . . , 𝑧𝑚, gde je 1 ≤ 𝑧1 < 𝑧2 < . . . < 𝑧𝑚 ≤ 𝑛. Izovih nejednakosti sledi da je 𝑧𝑚−1 ≤ 𝑛 − 1, 𝑧𝑚−2 ≤ 𝑛 − 2, 𝑧𝑚−3 ≤ 𝑛 − 3,odnosno uopxte 𝑧𝑖 ≤ 𝑛 − 𝑚 + 𝑖 za 1 ≤ 𝑖 ≤ 𝑚. Broj (𝑚,𝑛)-kombinacija je(𝑛𝑚

)= 𝑛!

𝑚!(𝑛−𝑚)! . Razmotrimo sada algoritam za generisae kombinacija

leksikografskim redosledom. Da bi se odredila naredna kombinacijaposle kombinacije 𝑧1, 𝑧2, . . . 𝑧𝑚 pronalazi se najvei indeks 𝑡 takav da je𝑧𝑡 < 𝑛−𝑚+𝑡, odnosno najvei indeks 𝑡 takav da se 𝑧𝑡 moe poveati; indeks𝑡 nazivamo prelomna taqka. Poxto se 𝑧𝑡 povea za jedan, iza ega sledeelementi 𝑧𝑡 + 1, 𝑧𝑡 + 2, . . ., odnosno za 𝑖-ti element, 𝑖 ≥ 𝑡 je 𝑧𝑡 + 𝑖− 𝑡 + 1.

Na primer, niz (4,6)-kombinacija sa odgovarajuim vrednostima 𝑡 pri-kazana je u sledeoj tabeli:

1234 1235 1236 1245 1246 1256 1345 1346 1356 1456 2345 2346 2356 2456 3456

t=4 4 3 4 3 2 4 3 2 1 4 3 2 1 0

Jednostavnije je prelomnu taqku odrediti na osnovu prethodne prelomnetaqke. Mogua su dva sluqaja: ili je 𝑧𝑡 od svoje maksimalne vrednosti𝑛−𝑚 + 𝑡 mae za bar 2, ili je mae za taqno 1.

Sluqaj 𝑧𝑡 < 𝑛 − 𝑚 + 𝑡 − 1 Tada se 𝑧𝑡 poveava za 1 i ne dostie svojumaksimalnu vrednost, a elementi koji slede iza ega su 𝑧𝑡 + 1, 𝑧𝑡 +2, . . ., i nijedan od ih ne dostie svoju maksimalnu vrednost, pa jeprelomna taqka 𝑡 za narednu kombinaciju jednaka 𝑚. Takav primerje kombinacija 1256 iz gore tabele: 𝑡 = 2, 𝑧𝑡−3 je za 2 mae od svojemaksimalne vrednosti 4. U narednoj kombinaciji 1345 svi elementisu mai od svoje maksimalne vrednosti, pa je prelomna taqka 𝑡 = 4.

Sluqaj 𝑧𝑡 = 𝑛−𝑚 + 𝑡− 1

Tada se 𝑧𝑡 poveava za 1 i dostie svoju maksimalnu vrednost, aelementi koji slede iza ega su 𝑧𝑡 + 1, 𝑧𝑡 + 2, . . . (oni ne meajusvoje vrednosti!). Svi oni, kao i 𝑧𝑡, dostigli su svoju maksimalnuvrednost, pa je prelomna taqka 𝑡 za narednu kombinaciju jednaka 𝑡−1.Takav primer je kombinacija 1356 iz gore tabele: 𝑡 = 2, 𝑧𝑡 = 3 je za1 mae od svoje maksimalne vrednosti 4, pa je naredna kombinacija1456 (elementi posle 𝑧𝑡, 4, 5 i 6 nisu promenili svoje vrednosti!).Nova prelomna taqka je za 1 maa od prethodne, odnosno 1.

Prema tome, algoritam se moe prikazati sledeim kodom.

Page 157: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

157 7. Generisae kombinatornih objekata

𝐾𝑜𝑚𝑏𝑖𝑛𝑎𝑐𝑖𝑗𝑒(𝑚,𝑛)1 𝑧0 ← 1; 𝑡← 𝑚2 for 𝑖← 1 to 𝑚 do 𝑧𝑖 ← 𝑖3 repeat4 odxtampati 𝑧1𝑧2 . . . 𝑧𝑚5 𝑧𝑡 ← 𝑧𝑡 + 16 if 𝑧𝑡 = 𝑛−𝑚 + 𝑡 then7 𝑡← 𝑡− 18 else9 for 𝑖← 𝑡 + 1 to 𝑚 do10 𝑧𝑖 ← 𝑧𝑡 + 𝑖− 𝑡11 𝑡← 𝑚12 until 𝑡 = 0

Zapaamo da se prelomna taqka uvek odreuje posle samo jedne provere.

7.4 Permutacije

Niz 𝑝1, 𝑝2, . . . , 𝑝𝑛 razliqitih elemenata je permutacija skupa 1, 2, . . . , 𝑛ako i samo ako je 𝑝1, 𝑝2, . . . , 𝑝𝑛 = 1, 2, . . . , 𝑛. Na primer, xest permuta-cija skupa 1, 2, 3 su 123, 132, 213, 231, 312, 321. Na osnovu opxteg metoda,permutacije se leksikografskim redosledom mogu generisati na sledeinaqin: permutacija koja sledi iza 𝑥1, 𝑥2, . . . 𝑥𝑛 odreuje se tako xto sepronae najvei indeks 𝑖 takav da je 𝑥𝑖 < 𝑥𝑖+1 (koji i u ovom sluqaju zovemoprelomna taqka; ako takav indeks ne postoji, onda naredna permutacijane postoji). Zatim se pronalazi najmai element 𝑥𝑗 , 𝑗 > 𝑖, takav daje 𝑥𝑗 > 𝑥𝑖; elementi 𝑥𝑖 i 𝑥𝑗 zameuju mesta. Posle toga se invertujeredosled elemenata 𝑥𝑖+1, . . . , 𝑥𝑛 (koji su pre toga qinili opadajui niz).Na primer, za permutaciju 3, 9, 4, 8, 7, 6, 5, 2, 1 prelomna taqka je 𝑥3 = 4, pase 𝑥3 zameuje sa 𝑥7 = 5 (to je najmai element iza 𝑥3 = 4 koji je vei odega) i invertuje se redosled elemenata 8, 7, 6, 4, 2, 1; naredna permutacijaje 3, 9, 5, 1, 2, 4, 6, 7, 8. Algoritam se moe opisati narednim kodom:

𝑃𝑒𝑟𝑚𝑢𝑡𝑎𝑐𝑖𝑗𝑒(𝑛)1 for 𝑖← 0 to 𝑛 do 𝑧𝑖 ← 𝑖 zbog udobnosti se koristi 𝑧0 = 02 while 𝑖 = 0 do3 odxtampati 𝑧1𝑧2 . . . 𝑧𝑛4 𝑖← 𝑛− 15 while 𝑧𝑖 ≥ 𝑧𝑖+1 do 𝑖← 𝑖− 16 𝑗 ← 𝑛7 while 𝑧𝑖 ≥ 𝑧𝑗 do 𝑗 ← 𝑗 − 18 zameniti 𝑧𝑖 i 𝑧𝑗9 obrnuti redosled elemenata 𝑧𝑖+1, 𝑧𝑖+2, . . . , 𝑧𝑛

7.5 Zadaci za vebu

1. Pretpostavimo da u problemu odabira aktivnosti, umesto da uvekbiramo aktivnost koja se najranije zavrxava, biramo aktivnost koja

Page 158: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

7.5. Zadaci za vebu 158

najkasnije poqie, a koja je kompatibilna sa prethodnom odabranimaktivnostima. Dokazati da i ovakva pohlepna strategija daje opti-malno rexee.

2. Ne daje svaka pohlepna strategija u problemu odabira aktivnostioptimalno rexee. Dati primer da naredne strategije ne daju opti-malno rexee:

∙ pristup kojim se bira najkraa aktivnost koja je kompatibilnasa prethodno odabranim aktivnostima,

∙ pristup kojim se bira aktivnost koja se preklapa sa najmaepreostalih aktivnosti,

∙ pristup kojim se bira aktivnost koja prva poqie.

3. Pretpostavimo da imamo na raspolagau skup aktivnosti koje trebarasporediti unutar velikog broja sala za predavae, pri qemu sesvaka od aktivnosti moe odrati u bilo kojoj od sala. elimo darasporedimo sve aktivnosti korixeem xto maeg broja sala. Datiefikasni pohlepni algoritam za utvrivae koja aktivnost trebada se odri u kojoj sali. Ovaj problem se naziva i problem bojeaintervalnog grafa. Qvorovi intervalnog grafa su aktivnosti in-tervali, a granama su povezane nekompatibilne aktivnosti. Cije odrediti najmai mogui broj boja kojim je mogue obojiti sveqvorove grafa, tako da nikoja dva susedna qvora nemaju istu boju.

4. Neka je dat skup aktivnosti. Konstruisati algoritam za rasporei-vae aktivnosti kojim se minimizuje prosek vremena zavrxetka svihaktivnosti. Svaka aktivnost se mora izvrxavati u kontinuitetu,tj. jednom kada aktivnost 𝑎𝑖 krene sa radom, radi neprekidno tokomvremena 𝑝𝑖. Dokazati da predloeni algoritam minimizuje proseqnovreme zavrxetka i oceniti vremensku sloenost predloenog algo-ritma.

Razmotrimo izmeenu verziju problema u kojoj svaka od aktivnostimoe da krene tek nakon nekog momenta 𝑟𝑖 i pritom je mogue nekuaktivnost na neko vreme suspendovati (proizvoan broj puta) i nas-taviti sa enim radom kasnije. Konstruisati algoritam za raspo-reivae aktivnosti kojim se minimizuje prosek vremena zavrxetkasvih aktivnosti u ovom scenariju i oceniti vremensku sloenostovog algoritma.

5. Pun rezervoar automobila omoguava prelazak 𝑋 kilometara. Kakoprei dati put sa xto mae zaustavaa radi sipaa benzina, akoznamo gde se na putu nalaze pumpe?

6. Opisati efikasni algoritam koji za dati skup 𝑥1, 𝑥2, . . . , 𝑥𝑛 od 𝑛taqaka na realnoj pravoj, odreuje najmai broj zatvorenih intervalajediniqne duine koji sadre sve taqke.

7. Koji je optimalni Hafmanov kod za naredni skup frekvencija, kojeodgovaraju prvim elementima Fibonaqijevog niza?

Page 159: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

159 7. Generisae kombinatornih objekata

Slika 7.1: Kodno stablo za date frekvencije

𝑎 : 1, 𝑏 : 1, 𝑐 : 2, 𝑑 : 3, 𝑒 : 5, 𝑓 : 8, 𝑔 : 13, ℎ : 21

Kako glasi odgovor u opxtem sluqaju, kada su frekvencije prvih 𝑛Fibonaqijevih brojeva?

Neka je 𝐹𝑛 𝑛-ti qlan Fibonaqijevog niza, 𝐹1 = 𝐹2 = 1. Indukcijomse moe pokazati da vai

∑𝑛𝑖=1 𝐹𝑖 = 𝐹𝑛+2 − 1.

Baza indukcije: 𝐹1 + 𝐹2 = 1 + 1 = 2 = 3− 1 = 𝐹4 − 1

Induktivni korak: pretpostavimo da tvree vai za sve pozitivnebrojeve mae od 𝑛. Onda je:

𝑛∑𝑖=1

𝐹𝑖 = 𝐹1 + 𝐹2 +

𝑛∑𝑖=3

(𝐹𝑖−1 + 𝐹𝑖−2) = 2 +

𝑛∑𝑖=3

𝐹𝑖−1 +

𝑛∑𝑖=3

𝐹𝑖−2

= 𝐹𝑛+1 + 𝐹𝑛 − 1 = 𝐹𝑛+2 − 1

Stoga e, prilikom konstrukcije Hafmanovog koda, tekua suma frek-vencija uvek biti maa od svih preostalih listova osim najmaeg,te e najmai list uvek biti kombinovan sa tekuem sumom. Stogae kod za 𝑖-to slovo biti 10𝑖−1, 𝑖 = 1, 2, . . . , 𝑛.

8. Posmatrajmo problem vraaa kusura od 𝑛 dinara korixeem naj-maeg broja novqanica. Pretpostavimo da su raspoloive novqaniceu vrednostima koje su stepen broja 𝑐, tj. 𝑐0, 𝑐1, . . . , 𝑐𝑘 za neke celebrojeve 𝑐 > 1 i 𝑘 ≥ 1. Pokazati da pohlepni pristup uvek dajeoptimalno rexee.

Pohlepni algoritam za traee kusura od 𝑛 dinara odgovara pred-stavau broja 𝑛 u sistemu sa osnovom 𝑐: trai se novqanica 𝑐𝑗

tako da vai: 𝑗 = max0 ≤ 𝑖 ≤ 𝑘 : 𝑐𝑖 ≤ 𝑛 koja je deo rexea aonda rekurzivno rexee za kusur vrednosti 𝑛− 𝑐𝑗 . Dokaimo prvonarednu lemu:

Page 160: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

7.5. Zadaci za vebu 160

Lema: Za 𝑖 = 0, 1, , . . . , 𝑘 neka je sa 𝑎𝑖 oznaqen broj novqanica vrednosti𝑐𝑖 koje se koriste u optimalnom rexeu. Tada za 𝑖 = 0, 1, . . . , 𝑘 − 1vai 𝑎𝑖 < 𝑐.

Dokaz: Ako je 𝑎𝑖 ≥ 𝑐 za neko 0 ≤ 𝑖 < 𝑘, onda moemo popraviti

rexee korixeem jedne vixe novqanice od 𝑐𝑖+1 i 𝑐 mae novqanicaod 𝑐𝑖. Na ovaj naqin vrednost kusura ostaje neizmeena, a smaen jebroj novqanica za 𝑐− 1 > 0.

Da bismo pokazali da je pohlepno rexee optimalno, pokazaemo dasvako drugo rexee nije optimalno. Neka je 𝑗 = max0 ≤ 𝑖 ≤ 𝑘 : 𝑐𝑖 ≤𝑛; tada pohlepno rexee koristi bar jednu novqanicu vrednosti 𝑐𝑗 .Posmatrajmo nepohlepno rexee koje ne koristi novqanice vrednosti𝑐𝑗 . Neka nepohlepno rexee koristi 𝑎𝑖 novqanica vrednosti 𝑐𝑖 za𝑖 = 0, . . . , 𝑗 − 1. Tada je

∑𝑗−1𝑖=0 𝑎𝑖𝑐

𝑖 = 𝑛. S obzirom na to da je 𝑛 ≥ 𝑐𝑗

vai∑𝑗−1

𝑖=0 𝑎𝑖𝑐𝑖 ≥ 𝑐𝑗 . Pretpostavimo sad da je nepohlepno rexee

optimalno. Prema goroj lemi 𝑎𝑖 ≤ 𝑐− 1 za 𝑖 = 0, . . . , 𝑗 − 1. Stoga je:

𝑗−1∑𝑖=0

𝑎𝑖𝑐𝑖 ≤

𝑗−1∑𝑖=0

(𝑐− 1)𝑐𝑖 = (𝑐− 1)

𝑗−1∑𝑖=0

𝑐𝑖 = (𝑐− 1)𝑐𝑗 − 1

𝑐− 1= 𝑐𝑗 − 1 < 𝑐𝑗

xto je u kontradikciji sa prethodnom pretpostavkom. Stoga nepohlepnorexee nije optimalno.

9. Neka su data dva skupa 𝐴 i 𝐵 od kojih svaki sadri 𝑛 pozitivnihcelih brojeva. Dozvoeno je preurediti redosled elemenata u sku-povima na proizvoan naqin. Nakon preureivaa neka je 𝑎𝑖 𝑖-tielement skupa 𝐴, a 𝑏𝑖 𝑖-ti element skupa 𝐵. Ukupna dobit jednakaje

∏𝑛𝑖=1 𝑎

𝑏𝑖𝑖 . Konstruisati algoritam kojim se maksimizuje ukupna

dobit i utvrditi egovo vreme izvrxavaa.

10. Konstruisati algoritam ternarne pretrage koji ispituje da li seneka vrednost nalazi u nizu brojeva ureenih neopadajue na sledeinaqin: poredi se vrednost koja se trai sa elementom niza na poziciji𝑛/3, ukoliko je potrebno poredi se dae sa elementom na poziciji2𝑛/3 i na ovaj naqin polazni problem svodi na problem tri putamae dimenzije. Odrediti sloenost ovog algoritma.

𝑇𝑒𝑟𝑛𝑎𝑟𝑛𝑎 𝑝𝑟𝑒𝑡𝑟𝑎𝑔𝑎(𝑋,𝑛, 𝑧)ulaz: 𝑋 - niz od 𝑛 brojeva ureenih neopadajue, 𝑧 - broj koji se traiizlaz: indeks 𝑖 takav da je 𝑋[𝑖] = 𝑧 ili 0 ako takav indeks ne postoji1 return 𝑁𝑎𝑑𝑗𝑖 𝑡(𝑧,𝑋, 1, 𝑛)

𝑁𝑎𝑑𝑗𝑖 𝑡(𝑧,𝑋,𝐿𝑒𝑣𝑖,𝐷𝑒𝑠𝑛𝑖)ulaz: 𝑋 - niz od 𝑛 brojeva ureenih neopadajue koji se razmatra

u granicama od 𝐿𝑒𝑣𝑖 do 𝐷𝑒𝑠𝑛𝑖, 𝑧 - broj koji se traiizlaz: indeks 𝑖 takav da je 𝑋[𝑖] = 𝑧 ili 0 ako takav indeks ne postoji1 if 𝐿𝑒𝑣𝑖 = 𝐷𝑒𝑠𝑛𝑖 then2 if 𝑋[𝐿𝑒𝑣𝑖] = 𝑧 then

Page 161: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

161 7. Generisae kombinatornih objekata

3 return 𝐿𝑒𝑣𝑖4 else return 05 else6 𝑆1 ← ⌈𝐿𝑒𝑣𝑖 + (𝐷𝑒𝑠𝑛𝑖− 𝐿𝑒𝑣𝑖)/3⌉7 𝑆2 ← ⌈𝐿𝑒𝑣𝑖 + (𝐷𝑒𝑠𝑛𝑖− 𝐿𝑒𝑣𝑖) * 2/3⌉8 if 𝑧 < 𝑋[𝑆1] then9 return 𝑁𝑎𝑑𝑗𝑖 𝑡(𝑧,𝑋,𝐿𝑒𝑣𝑖, 𝑆1 − 1)10 else if 𝑧 < 𝑋[𝑆2]11 return 𝑁𝑎𝑑𝑗𝑖 𝑡(𝑧,𝑋, 𝑆1, 𝑆2 − 1)12 else13 return 𝑁𝑎𝑑𝑗𝑖 𝑡(𝑧,𝑋, 𝑆2, 𝐷𝑒𝑠𝑛𝑖)

Sloenost algoritma se dobija rexavaem rekurentne jednaqine:

𝑇 (𝑛) = 𝑇 (𝑛/3) + 2

11. Izmeniti algoritam binarne pretrage tako da ne deli ulaz na dvadela priblino jednake veliqine, ve na dva dela qije su priblinoveliqine 1/3 i 2/3 ulaza. Kolika bi bila sloenost ovog algoritma?

12. Xta bi se desilo ako bismo u algoritmu za istovremeno odreivaeminimuma i maksimuma izostavili redove 410? Da li bi se i daeizraqunavala korektna vrednost minimuma i maksimuma niza?

13. Neka su𝑋 i 𝑌 dva skupa celih brojeva od 𝑛 elemenata, svaki sortiranu neopadajuem redosledu. Konstruisati algoritam sloenosti𝑂(log 𝑛)kojim se pronalazi medijana skupa 𝑋 ∪ 𝑌 .

14. Pokazati kako se mogu pomnoiti dva kompleksna broja 𝑎+𝑏𝑖 i 𝑐+𝑑𝑖korixeem samo tri mnoea realnih brojeva. Algoritam kao ulazprima vrednosti 𝑎, 𝑏, 𝑐 i 𝑑, a kao izlaz treba da da realnu komponentu𝑎𝑐− 𝑏𝑑 i imaginarnu komponentu 𝑎𝑑 + 𝑏𝑐.

15. Koliko brzo se moe pomnoiti matrica dimenzije 𝑘𝑛×𝑛 matricomdimenzije 𝑛×𝑘𝑛, korixeemXtrasenovog algoritma kao primitive?Xta ako se redosled matrica izmeni?

16. Pretpostavimo da smo doxli do varijante Xtrasenovog algoritmazasnovanog na qienici da se matrice dimenzije 3×3 mogu pomnoitikorixeem samo 𝑚 mnoea umesto uobiqajenih 27. Koliko malomora da bude 𝑚 da bi novi algoritam bio bri od Xtrasenovog zadovono veliko 𝑛?

17. Problem maksimalne sume susednih elemenata niza je problem u komeza dati niz 𝐴[1..𝑛] prirodnih brojeva, treba pronai vrednosti 𝑖

i 𝑗, 1 ≤ 𝑖, 𝑗 ≤ 𝑛 tako da je vrednost sume∑𝑗

𝑘=𝑖 𝐴[𝑘] maksimalnamogua. Konstruisati algoritam zasnovan na razlagau koji rexavaovaj problem u vremenu 𝑂(𝑛 log 𝑛).

18. Algoritam𝑁𝐷𝑎𝑚𝑎 se moe uqiniti jox efikasnijim ako se funkcija𝑆𝑚𝑒𝑠𝑡𝑖(𝑘, 𝑖) preformulixe tako da ili vraa narednu legitimnu

Page 162: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

7.5. Zadaci za vebu 162

kolonu u koju je mogue smestiti 𝑘-tu damu ili informaciju da tonije mogue. Preformulisati obe funkcije tako da implementirajuovu strategiju.

19. Na xahovsoj tabli dimenzija 𝑛×𝑛 skakaq je postaven na proizvonopoe sa koordinatama (𝑥, 𝑦). Problem koji razmatramo je kako odrediti𝑛2 − 1 poteza skakaqa tako da je svako poe table poseeno taqnojednom, ako takav niz poteza postoji. Konstruisati algoritam kojirexava ovaj problem.

20. Neka je dat skup brojeva 𝑤 = 5, 7, 10, 12, 15, 18, 20 i vrednost 𝑚 =35. Pronai sve mogue podskupove skupa 𝑤 qiji je zbir jednak 𝑚.Nacrtati deo stabla prostora staa koji se generixe.

21. Za 𝑚 = 35 izvrxava se algoritam 𝑆𝑢𝑚𝑎𝑃𝑜𝑑𝑠𝑘𝑢𝑝𝑜𝑣𝑎 na skupovima:

a) 𝑤 = 5, 7, 10, 12, 15, 18, 20,b) 𝑤 = 20, 18, 15, 12, 10, 7, 5 ic) 𝑤 = 15, 7, 20, 5, 18, 10, 12.

Da li postoje primetne razlike u broju pregledanih qvorova u stabluprostora staa?

22. Napisati algoritam pretrage sa vraaem za problem sume podskupovakorixeem stabla prostora staa koje odgovara formulaciji sapromenivom duinom torke.

23. Navesti primer familije grafova za koju trajae bojea sa tri bojealgoritmom pretrage raste eksponencijalno sa brojem qvorova 𝑛, abojee ne postoji.

Page 163: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

Glava 8

Traee reqi u tekstu

Neka su 𝑆 = 𝑠1𝑠2 . . . 𝑠𝑛 i 𝑃 = 𝑝1𝑝2 . . . 𝑝𝑚 dve niske znakova iz konaqneazbuke. Za prvu od ih rei emo da je tekst, a za drugu da je req (ne uobiqnom smislu | ova req moe da sadri i razmake, odnosno bilo kojeznakove). Podniska niske 𝑆 je niska 𝑆[𝑖..𝑗] od uzastopnih znakova 𝑆, 𝑖 ≤ 𝑗.

Problem. Za dati tekst 𝑆 = 𝑠1𝑠2 . . . 𝑠𝑛 i req 𝑃 = 𝑝1𝑝2 . . . 𝑝𝑚 ustanovitida li postoji podniska niske 𝑆 jednaka 𝑃 , a ako postoji, pronai prvutakvu podnisku, odnosno najmai indeks 𝑘 takav da je 𝑆[𝑘..𝑘 + 𝑚− 1] = 𝑃

Tipiqna situacija u kojoj se nailazi na ovaj problem je kad se traineka req u tekstualnoj datoteci. Problem ima primenu i u drugim oblas-tima, na primer u molekularnoj biologiji, gde je korisno pronai nekeuzorke u okviru velikih molekula rnk ili dnk .

Na prvi pogled problem izgleda jednostavno. Dovono je uporeditireq 𝑃 sa svim moguim podniskama teksta 𝑆[𝑘..𝑘 + 𝑚− 1] duine 𝑚, priqemu 𝑘 uzima vrednosti redom 1, 2, . . . , 𝑛 − 𝑚 + 1. Uporeivae reqi sapodniskom vrxi se znak po znak sleva udesno, sve dok se ne ustanovi da susvi znaci reqi jednaki odgovarajuim znacima podniske (u tom trenutkuprekida se dae pregledae podniski), ili dok se ne naie na neslagae𝑝𝑖 = 𝑠𝑘+𝑖−1 za neko 𝑖, 1 ≤ 𝑖 ≤ 𝑚:

𝑗 = 𝑘 + 𝑖− 1↓

𝑠1 . . . 𝑠𝑘 . . . 𝑠𝑗 . . . 𝑠𝑘+𝑚−1 . . . 𝑠𝑛𝑝1 . . . 𝑝𝑖 . . . 𝑝𝑚

↑𝑖

U drugom sluqaju req se "pomera" za jedan znak udesno, odnosno nastava sesa proverom jednakosti 𝑝1 sa 𝑠𝑘+1. Ovaj jednostavan algoritam za traeereqi u tekstu opisuje sledei kod.

𝑁𝑎𝑑𝑗𝑖 𝑟𝑒𝑐(𝑆, 𝑛, 𝑃,𝑚)ulaz: 𝑆 - tekst duine 𝑛 i 𝑃 - req duine 𝑚izlaz: 𝑆𝑡𝑎𝑟𝑡 - indeks poqetka prve podniske niske 𝑆 jednake 𝑃 ,

ako takva postoji, odnosno 0 u protivnom1 𝑆𝑡𝑎𝑟𝑡← 0

163

Page 164: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

164

2 𝑖← 1 indeks slova u reqi3 𝑗 ← 1 indeks slova u tekstu4 while 𝑖 ≤ 𝑚 and 𝑗 ≤ 𝑛 do 𝑖, 𝑗 su indeksi u nizovima 𝑃 , odnosno 𝑆5 if 𝑃 [𝑖] = 𝑆[𝑗] then6 𝑖← 𝑖 + 1 slagae: napredovae i u 𝑆 i u 𝑃7 𝑗 ← 𝑗 + 18 else9 𝑗 ← 𝑗 − 𝑖 + 2 neslagae: 𝑃 se pomera za 1 udesno10 𝑖← 111 if 𝑖 > 𝑚 then12 𝑆𝑡𝑎𝑟𝑡← 𝑗 − 𝑖 + 1 pronaena je podniska teksta jednaka reqi13 return 𝑆𝑡𝑎𝑟𝑡

Broj uporeivaa znakova mai je od𝑚𝑛, pa je sloenost ovog algoritmau najgorem sluqaju 𝑂(𝑚𝑛).

Neracionalnost ovog algoritma posledica je vraaa unazad u tekstuposle nailaska na neslagae. Pretpostavimo da je do neslagaa doxlo napoziciji 𝑖 u reqi, tj. za neki indeks 𝑗 u tekstu je 𝑝𝑖 = 𝑠𝑗 i 𝑃 [1..𝑖 − 1] =𝑆[𝑗 − 𝑖 + 1..𝑗 − 1] (videti sliku 8.1). Postava se pitae: koliko najmaetreba req 𝑃 pomeriti udesno, odnosno koje poslede slovo 𝑝𝑙 reqi trebapostaviti naspram slova 𝑠𝑗 teksta, tako da se deo reqi 𝑃 [1..𝑙 − 1], i daeslae sa delom teksta 𝑆[𝑗 − 𝑙 + 1..𝑗 − 1]? Iz prethodnog slagaa reqi satekstom sledi da je 𝑃 [𝑖 − 𝑙 + 1..𝑖 − 1] = 𝑆[𝑗 − 𝑙 + 1..𝑗 − 1], pa 𝑃 [1..𝑙 − 1] =𝑆[𝑗 − 𝑙 + 1..𝑗 − 1] povlaqi 𝑃 [1..𝑙 − 1] = 𝑃 [𝑖 − 𝑙 + 1..𝑖 − 1]. Zakuquje seda je traeni indeks 𝑙 za jedan vei od duine najveeg prefiksa niza𝑃 [1..𝑖 − 1] jednakog sufiksu niza 𝑃 [1..𝑖 − 1], odnosno 𝑙 je za jedan vee odduine perioda dela reqi 𝑃 [1..𝑖−1]. Indeks 𝑙 zavisi samo od 𝑃 i 𝑖. Mogueje dakle najpre obraditi req, tako da se u poseban niz ℎ na poziciju ℎ[𝑖]smesti izraqunati indeks 𝑙, 𝑖 = 1, 2, . . . ,𝑚.

Pretpostavimo da ni za jedno 0 < 𝑙 < 𝑖 nije ispuen uslov 𝑃 [1..𝑙− 1] =𝑃 [𝑖− 𝑙 + 1..𝑖− 1], pa je taj uslov ispuen samo za 𝑙 = 0:

∙ ako je 𝑖 > 1, onda je ℎ[𝑖] = 1 < 𝑖

∙ ako je 𝑖 = 1, onda je se zbog ℎ[𝑖] < 𝑖 (req se mora pomeriti udesno)mora uzeti da je ℎ[𝑖] = 0, odnosno u algoritmu KMP se 𝑝1 stavanaspram 𝑠𝑗+1, xto odgovara stavau 𝑝0 naspram 𝑠𝑗 .

Prema tome, pod pretpostavkom da je za datu req 𝑃 izraqunat niz ℎ,poboxani algoritam za traee reqi 𝑃 u tekstu 𝑆 odvija se na sledeinaqin (videti sliku 8.1). Neka je prilikom uporeivaa 𝑃 sa nekom pod-niskom 𝑆 𝑝𝑖 = 𝑠𝑗 prvo neslagae. Tada se oqitava vrednost 𝑙 = ℎ[𝑖] i reqpomera udesno za 𝑖 − ℎ[𝑖], pa se (ako je 𝑙 > 0) proverava da li je 𝑝𝑙 = 𝑠𝑗 .Ako jeste, onda se uporeuju 𝑝𝑙+1 i 𝑠𝑗+1, a ako nije, onda se postupa naisti naqin kao da je 𝑝𝑙 = 𝑠𝑗 prvo neslagae posle niza slagaa: oqitavase vrednost ℎ[𝑙] i req se pomera dae udesno za 𝑙−ℎ[𝑙], itd. Ukoliko je pak𝑙 = 0, onda se napreduje u tekstu, tj. 𝑝1 se postava naspram 𝑠𝑗+1. Opisanialgoritam, koji je dobio ime KMP po svojim autorima Knutu, Morisu iPratu (Knuth, Moris, Pratt), moe se opisati sledeim kodom.

𝐾𝑀𝑃 (𝑆, 𝑛, 𝑃,𝑚)

Page 165: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

165 8. Traee reqi u tekstu

6𝑙 = ℎ[𝑖]

𝑃

𝑃

𝑆?𝑗

6𝑖

?𝑘

61

Slika 8.1: Ideja na kojoj se zasniva algoritam KMP.

ulaz: 𝑆 - tekst duine 𝑛 i 𝑃 - req duine 𝑚pretpostava se da je niz ℎ izraqunat izlaz: 𝑆𝑡𝑎𝑟𝑡 - indeks poqetka prve podniske niske 𝑆 jednake 𝑃 ,

ako takva postoji, odnosno 0 u protivnom1 𝑆𝑡𝑎𝑟𝑡← 02 𝑖← 1 indeks slova u reqi3 𝑗 ← 1 indeks slova u tekstu4 while 𝑖 ≤ 𝑚 and 𝑗 ≤ 𝑛 do 𝑖, 𝑗 su indeksi u nizovima 𝑃 , odnosno 𝑆5 while 𝑖 > 0 and 𝑃 [𝑖] = 𝑆[𝑗] do6 𝑖← ℎ[𝑖] pomerae reqi udesno za 𝑖− ℎ[𝑖] 7 𝑖← 𝑖 + 1 napredovae i u 𝑆 i u 𝑃8 𝑗 ← 𝑗 + 19 if 𝑖 > 𝑚 then10 𝑆𝑡𝑎𝑟𝑡← 𝑗 − 𝑖 + 1 pronaena je podniska teksta jednaka reqi11 return 𝑆𝑡𝑎𝑟𝑡

Algoritam najpre uqitava req i formira tabelu ℎ (prema algoritmukoji e biti izloen kasnije), koja odreuje koliko znakova treba pomeritireq udesno u sluqaju neslagaa. Zatim se prelazi na traee reqi 𝑃 utekstu 𝑆. Poxto nema vraaa, ulaz se moe uqitavati znak po znak. Uunutraxoj while peti se, posle otkrivaa neslagaa 𝑝𝑖 = 𝑠𝑗 , req 𝑃pomera udesno za 𝑖− ℎ[𝑖] pozicija, tj. indeks slova u reqi umesto 𝑖 dobijanovu vrednost ℎ[𝑖]. Ovaj korak se ponava sve dok ne bude 𝑖 = 0 ili 𝑝𝑖 = 𝑠𝑗(xto znaqi da je 𝑃 [1..𝑖] = 𝑆[𝑗−𝑖+1..𝑗] za trenutnu vrednost 𝑖). U oba sluqajase u spoaxoj while peti indeksi u reqi 𝑃 i tekstu 𝑆 poveavaju zajedan.

Sloenost. Linija 𝑖 ← ℎ[𝑖] u unutraxoj peti algoritma KMP(koja smauje 𝑖 bar za 1) ne moe se izvrxiti vixe puta od linije 𝑗 ←𝑗 + 1; 𝑖 ← 𝑖 + 1 koja poveava 𝑖 za 1) u spoaxoj peti. Meutim, istata linija poveava 𝑗 za 1, i samo ta linija mea 𝑗, pa je broj enihizvrxavaa 𝑂(𝑛). Prema tome, u unutraxoj peti se req 𝑃 pomeraudesno najvixe 𝑂(𝑛) puta, pa je vremenska sloenost ovog algoritma 𝑂(𝑛).Primetimo da vremenska sloenost algoritma KMP ne zavisi od veliqinealfabeta.

Razmotrimo sada kako se efektivno mogu izraqunati elementi niza ℎ.Neposredno se vidi da je ℎ[1] = 0 i ℎ[2] = 1. Sledee razmatrae pokazujekako se moe odrediti ℎ[𝑖+ 1] ako se zna ℎ[1..𝑖]. Kao xto je reqeno, 𝑗 = ℎ[𝑖]je najvei indeks 𝑗 za koji je 𝑃 [1..𝑗 − 1] = 𝑃 [𝑖 − 𝑗 + 1..𝑖 − 1]. Drugimreqima, 𝑗 je za 1 vee od duine perioda dela reqi 𝑃 [1..𝑖 − 1]. Potrebno

Page 166: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

166

je odrediti ℎ[𝑖 + 1], xto je za 1 vee od duine perioda dela reqi 𝑃 [1..𝑖].Ako je 𝑃 [𝑖] = 𝑃 [𝑗], onda je duina perioda 𝑃 [1..𝑖] za jedan vea od duineperioda 𝑃 [1..𝑖− 1] (jer vai 𝑃 [1..𝑗] = 𝑃 [𝑖− 𝑗 + 1..𝑖]), pa je ℎ[𝑖 + 1] = 𝑗 + 1.U protivnom, ako je 𝑃 [𝑖] = 𝑃 [𝑗], onda period 𝑃 [1..𝑖] moe samo da produineki krai period 𝑃 [1..𝑖 − 1], koji mora biti period 𝑃 [1..𝑗 − 1], pa se𝑗 = ℎ[𝑖] mora zameniti sa ℎ[𝑗], da bi se nastavilo na isti naqin (sem akose dobije 𝑗 = 0). Ovim je odreen naqin izraqunavaa qlanova niza ℎ.Algoritam 𝑃𝑜𝑚𝑎𝑐𝑖 za izraqunavae niza ℎ, koji je praktiqno identiqansa algoritmom KMP, opisan je sledeim kodom.

𝑃𝑜𝑚𝑎𝑐𝑖(𝑃,𝑚)ulaz: 𝑃 - req duine 𝑚izlaz: ℎ - niz duine 𝑚1 ℎ[1]← 0 neslagae na prvom znaku u KMP : pomerae udesno2 ℎ[2]← 1 neslagae na drugom znaku u KMP : pomerae reqi udesno za 13 for 𝑖← 2 to 𝑚 do izraqunavae ℎ[𝑖 + 1]4 𝑗 ← ℎ[𝑖] poveae indeksa 𝑗 za 15 invarijanta pete: na ovom mestu je 𝑃 [𝑖− 𝑗 + 1..𝑖− 1] = 𝑃 [1..𝑗 − 1] 6 while 𝑗 > 0 and 𝑃 [𝑖] = 𝑃 [𝑗] do7 𝑗 ← ℎ[𝑗] smaivae indeksa 𝑗8 ℎ[𝑖 + 1]← 𝑗 + 1 duina perioda je produena za 1

Na slici 8.2 je xematski prikazan postupak u unutraxoj peti al-goritma.

?

6𝑗

𝑖𝑃

𝑃

?

6𝑗 + 1

𝑖+ 1 ?

6ℎ[𝑗]

𝑖

𝑝𝑖 = 𝑝𝑗 𝑝𝑖 = 𝑝𝑗

-

?

?

𝑆?𝑙

Slika 8.2: Unutraxa peta i izraqunavae jednog elementa tabele ℎ ualgoritmu 𝑃𝑜𝑚𝑎𝑐𝑖.

Sloenost. Broj izvrxavaa linije 𝑗 ← ℎ[𝑗] u unutraxoj peti,koja smauje 𝑗 bar za 1, mai je ili jednak od broja izvrxavaa linije𝑗 ← ℎ[𝑖] (𝑚 − 1 puta) u spoaxoj for peti, koja za jedan poveava 𝑗,jer je 𝑗 uvek pozitivno. Prema tome, izraqunavae ℎ obava se za vreme𝑂(𝑚).

Page 167: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

167 8. Traee reqi u tekstu

Primer. Neka je req 𝑃 = 𝑎𝑏𝑎𝑎𝑏𝑎. Algoritam 𝑃𝑜𝑚𝑎𝑐𝑖 daje sledei nizℎ:

𝑖 𝑃 [𝑖] ℎ[𝑖] 𝑖 𝑃 [𝑖] 𝑗 𝑃 [𝑗] =? 𝑗 𝑃 [𝑗] =?1 𝑎 02 𝑏 1 2 𝑏 1 𝑎 = 03 𝑎 1 3 𝑎 1 𝑎 =4 𝑎 2 4 𝑎 2 𝑏 = 1 𝑎 =5 𝑏 2 5 𝑏 2 𝑏 =6 𝑎 3

Primenimo algoritam KMP da bismo pronaxli ovu req u tekstu

𝑆 = 𝑎𝑏𝑎𝑎𝑏𝑐𝑎𝑏𝑎𝑎𝑏𝑎.

Posle slagaa prvih 5 znakova, dolazi se do neslagaa na znaku 𝑐 u 𝑆. Utom trenutku je 𝑖 = 𝑗 = 6:

𝑗 = 6↓

𝑎 𝑏 𝑎 𝑎 𝑏 𝑐 𝑎 𝑏 𝑎 𝑎 𝑏 𝑎𝑎 𝑏 𝑎 𝑎 𝑏 𝑎

↑𝑖 = 6

Prva iteracija u unutraxoj peti algoritma KMP postava 𝑖 = ℎ[6] =3, xto odgovara pomerau reqi za tri slova udesno; time se 𝑃 [3] postavanaspram 𝑆[6]:

𝑗 = 6↓

𝑎 𝑏 𝑎 𝑎 𝑏 𝑐 𝑎 𝑏 𝑎 𝑎 𝑏 𝑎𝑎 𝑏 𝑎 𝑎 𝑏 𝑎

↑𝑖 = 3

Poxto je i dae 𝑝𝑖 = 𝑠𝑗 , 𝑖 dobija novu vrednost ℎ[3] = 1.

𝑗 = 6↓

𝑎 𝑏 𝑎 𝑎 𝑏 𝑐 𝑎 𝑏 𝑎 𝑎 𝑏 𝑎𝑎 𝑏 𝑎 𝑎 𝑏 𝑎↑

𝑖 = 1

Zbog ponovnog neslagaa 𝑖 = 1 sa zameuje sa ℎ[1] = 0, odnosno req 𝑃pomera se udesno za jednu poziciju:

𝑗 = 1↓

𝑎 𝑏 𝑎 𝑎 𝑏 𝑐 𝑎 𝑏 𝑎 𝑎 𝑏 𝑎𝑎 𝑏 𝑎 𝑎 𝑏 𝑎↑

𝑖 = 1

Page 168: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

8.1. Zadaci za vebu 168

Na ovom mestu algoritam KMP pronalazi req u tekstu.Drugi efikasan algoritam za nalaee reqi u tekstu razvili su Bojer

i Mur 1977. (Boyer, Moore). Prikazaemo ga ukratko. Razlika izmeu ovogi algoritma KMP je u tome xto se req i tekst prolaze u razliqitimsmerovima. Najpre se uporeuje 𝑝𝑚 sa 𝑠𝑚. Ako su ta dva znaka jednaka,nastava se sa uporeivaem 𝑝𝑚−1 sa 𝑠𝑚−1, itd. U sluqaju neslagaa,prikupene informacije se koriste kao i u algoritmu KMP da se reqpomeri udesno. Ako je, na primer, 𝑠𝑚 ='𝑍', a znak '𝑍' se ne pojavuje ureqi, onda se req pomera udesno za 𝑚 pozicija i sledee uporeivae je𝑠2𝑚 sa 𝑝𝑚. Ako se '𝑍' pojavuje u 𝑃 kao npr. 𝑝𝑖, unda se req pomera 𝑚− 𝑖pozicija udesno. Odluka o tome koliko req treba pomeriti udesno postajekomplikovanija ako je prethodno doxlo do nekoliko slagaa znakova reqisa odgovarajuim znacima teksta; pri tome se uzima u obzir i eventualnisufiks pronaenog dela reqi jednak prefiksu reqi, kao kod algoritmaKMP. Na ovom mestu neemo se upuxtati u detae algoritma. Zanimivoje da u tekstu sa velikim alfabetom ovaj algoritam najqexe izvrxavamnogo mae od 𝑛 uporeivaa znakova, u proseku qak 𝑛/𝑚 uporeivaa,xto znaqi da su qesta pomeraa reqi za 𝑚 pozicija udesno.

8.1 Zadaci za vebu

1. Neka su svi znaci u reqi 𝑃 meusobno razliqiti. Kako se moepoboxati efikasnost prvog algoritma 𝑁𝑎𝑑𝑗𝑖 𝑟𝑒𝑐 za traee reqi𝑃 u tekstu 𝑆?

2. Izraqunati niz ℎ ako je 𝑃 = 𝑎𝑏𝑎𝑏𝑏𝑎𝑏𝑏𝑎𝑏𝑎𝑏𝑏𝑎𝑏𝑎𝑏𝑏𝑎𝑏𝑏.

3. Ucrtati u pravougaonu tabelu 6 × 12 sva uporeivaa koja se izvr-xavaju pri traeu reqi 𝑃 = 𝑎𝑏𝑎𝑎𝑏𝑎 u tekstu 𝑆 = 𝑎𝑏𝑎𝑎𝑏𝑐𝑎𝑏𝑎𝑎𝑏𝑎, ito prvim algoritmom, odnosno algoritmom KMP.

4. Pokazati da se traee reqi 𝑃 u tekstu 𝑆 svodi na odreivae nizaℎ za req 𝑃𝑆 dobijenu nadovezivaem 𝑃 i 𝑆.

Page 169: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

Glava 9

Algoritmi numeriqke

optimizacije

9.1 Izraqunavae vrednosti polinoma

Problem. Dati su realni brojevi 𝑎𝑛, 𝑎𝑛−1,. . . , 𝑎1, 𝑎0 i realni broj 𝑥.Izraqunati vrednost polinoma 𝑃𝑛(𝑥) =

∑𝑛𝑖=0 𝑎𝑖𝑥

𝑖.

Ulazni podaci za problem su 𝑛 + 2 broja. Problem se moe rexitiinduktivnim pristupom, odnosno svoeem rexea polaznog problema narexee maeg problema, koji se zatim rexava rekurzivno; pretpostavkada se mai problem moe rexiti rekurzivno zove se induktivna hipoteza.Najjednostavnije je svoee na uproxeni problem dobijen od polaznoguklaaem 𝑎𝑛. Tada imamo problem izraqunavaa vrednosti polinoma

𝑃𝑛−1(𝑥) = 𝑎𝑛−1𝑥𝑛−1 + 𝑎𝑛−2𝑥

𝑛−2 + · · ·+ 𝑎1𝑥 + 𝑎0.

To je isti problem, ali sa jednim parametrom mae.

Induktivna hipoteza Pretpostavimo da znamo da izraqunamo vred-nost polinoma zadatog koeficijentima 𝑎𝑛−1,. . . , 𝑎1, 𝑎0 u taqki 𝑥, tj. znamoda izraqunamo vrednost 𝑃𝑛−1(𝑥).

Ova hipoteza je osnova za rexavae problema indukcijom. Sluqaj 𝑛 = 0(izraqunavae vrednosti izraza 𝑎0) je trivijalan. Zatim se mora pokazatikako se polazni problem (izraqunavae 𝑃𝑛(𝑥)) moe rexiti korixeemrexea maeg problema (vrednosti 𝑃𝑛−1(𝑥)). U ovom sluqaju je to oqi-gledno: treba izraqunati 𝑥𝑛, pomnoiti ga sa 𝑎𝑛 i rezultat sabrati sa𝑃𝑛−1(𝑥): 𝑃𝑛(𝑥) = 𝑎𝑛𝑥

𝑛 + 𝑃𝑛−1(𝑥). Moe se pomisliti da je korixeeindukcije ovde nepotrebno: ono samo komplikuje vrlo jednostavno rexee.Opisani algoritam je ekvivalentan izraqunavau vrednosti polinomaredom qlan po qlan. Ispostava se da ovaj pristup ima svoju snagu.

Opisani algoritam je taqan, ali neefikasan, jer zahteva 𝑛 + (𝑛− 1) +· · · + 1 = 𝑛(𝑛 + 1)/2 mnoea i 𝑛 sabiraa. Korixeem indukcije nadrugi naqin dobija se boe rexee.

Zapaamo da u ovom algoritmu ima mnogo ponovenih izraqunavaa:stepen 𝑥𝑛 izraqunava se svaki put "od poqetka". Veliki broj mnoeamoe se uxtedeti ako se pri izraqunavau 𝑥𝑛 iskoristi 𝑥𝑛−1. Poboxae

169

Page 170: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

9.2. Lagranov interpolacioni polinom 170

se realizuje ukuqivaem izraqunavaa 𝑥𝑛−1 u (pojaqanu) induktivnuhipotezu.

Pojaqana induktivna hipoteza. Znamo da izraqunamo vrednost po-linoma 𝑃𝑛−1(𝑥) i vrednost 𝑥𝑛−1.

Ova induktivna hipoteza je jaqa, jer zahteva izraqunavae 𝑥𝑛−1, alise lakxe proxiruje (jer je sada jednostavnije izraqunati 𝑥𝑛). Da bi seizraqunalo 𝑥𝑛, dovono je izvrxiti jedno mnoee. Posle toga sledi joxjedno mnoee sa 𝑎𝑛 i sabirae sa 𝑃𝑛−1(𝑥). Ukupno je potrebno izvrxiti2𝑛 mnoea i 𝑛 sabiraa. Zanimivo je zapaziti da iako induktivnahipoteza zahteva vixe izraqunavaa, ona dovodi do smaea ukupnogbroja operacija. Dobijeni algoritam izgleda dobro u svakom pogledu: e-fikasan je, jednostavan i jednostavno se realizuje. Ipak, postoji i boialgoritam. Do ega se dolazi korixeem indukcije na novi, trei naqin.

Redukcija problema uklaaem najvixeg koeficijenta 𝑎𝑛 je oqigledankorak, ali to ipak nije jedina raspoloiva mogunost. Umesto toga semoe ukloniti koeficijent 𝑎0, i svesti problem na izraqunavae vred-nosti polinoma sa koeficijentima 𝑎𝑛, 𝑎𝑛−1,. . . , 𝑎1, odnosno polinoma

𝑃𝑛−1(𝑥) =

𝑛∑𝑖=1

𝑎𝑖𝑥𝑖−1 = 𝑎𝑛𝑥

𝑛−1 + 𝑎𝑛−1𝑥𝑛−2 + · · ·+ 𝑎1.

Primetimo da je 𝑎𝑛 ovde (𝑛−1)-i koeficijent, 𝑎𝑛−1 je (𝑛−2)-i koeficijent,i tako dae. Dakle, imamo novu induktivnu hipotezu.

Induktivna hipoteza | obrnuti redosled. Umemo da izraqunamovrednost polinoma 𝑃𝑛−1(𝑥) sa koeficijentima 𝑎𝑛, 𝑎𝑛−1,. . . , 𝑎1 u taqki 𝑥.

Ovakva induktivna hipoteza je pogodnija jer se lakxe proxiruje. Poxtoje 𝑃𝑛(𝑥) = 𝑥𝑃𝑛−1(𝑥) + 𝑎0, za izraqunavae 𝑃𝑛(𝑥) polazei od 𝑃𝑛−1(𝑥)dovono je jedno mnoee i jedno sabirae. Izraqunavae se moe opisatisledeim izrazom:

𝑎𝑛𝑥𝑛+𝑎𝑛−1𝑥

𝑛−1+· · ·+𝑎1𝑥+𝑎0 = ((· · · ((𝑎𝑛𝑥+𝑎𝑛−1)𝑥+𝑎𝑛−2) · · · )𝑥+𝑎1)𝑥+𝑎0,

poznatim kao Hornerova xema. Algoritam se moe opisati sledeim kodom.

𝑉 𝑟𝑒𝑑𝑛𝑜𝑠𝑡 𝑝𝑜𝑙𝑖𝑛𝑜𝑚𝑎(𝑎, 𝑥)ulaz: 𝑎 = 𝑎0, 𝑎1, . . . , 𝑎𝑛 - koeficijenti polinoma i 𝑥 - realan brojizlaz: 𝑃 - vrednost polinoma u taqki 𝑥1 𝑃 ← 𝑎𝑛2 for 𝑖← 1 to 𝑛 do3 𝑃 ← 𝑥 · 𝑃 + 𝑎𝑛−𝑖

4 return 𝑃

Sloenost. Algoritam obuhvata 𝑛 mnoea, 𝑛 sabiraa i zahtevasamo jednu novu memorijsku lokaciju. Posledi algoritam je ne samo efi-kasniji od prethodnih, nego je i odgovarajui program jednostavniji.

9.2 Lagranov interpolacioni polinom

Vrednosti funkcija se obiqno aproksimiraju vrednostima polinoma. Uo-biqajeno je da se za tu svrhu koriste polinomi najmaeg stepena koji

Page 171: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

171 9. Algoritmi numeriqke optimizacije

prolaze kroz sve taqke iz zadatog skupa taqaka. Kroz dve taqke moe se najedinstveni naqin provui prava | polinom prvog stepena. Opxtije, kroz𝑛 + 1 zadatih taqaka (𝑥0, 𝑦0), (𝑥1, 𝑦1), . . . (𝑥𝑛, 𝑦𝑛), moe se na jedinstveninaqin provui polinom stepena 𝑛 | Lagranov interpolacioni po-linom.

Kao i u primeru za 𝑛 = 3, i ovde se vidi da je vrednost 𝑖-tog proizvodau ovoj sumi jednaka 1 za 𝑥 = 𝑥𝑖, odnosno 0 ako je 𝑥 = 𝑥𝑗 , 𝑗 = 𝑖.

PrimerNeka je 𝑛 = 3 i neka je potrebno pronai koeficijente polinomatreeg stepena koji prolazi kroz zadate taqke (𝑥0, 𝑦0), (𝑥1, 𝑦1), (𝑥2, 𝑦2),(𝑥3, 𝑦3). Posmatrajmo polinome treeg stepena

𝐴(𝑥) =(𝑥− 𝑥1)(𝑥− 𝑥2)(𝑥− 𝑥3)

(𝑥0 − 𝑥1)(𝑥0 − 𝑥2)(𝑥0 − 𝑥3)

𝐵(𝑥) =(𝑥− 𝑥0)(𝑥− 𝑥2)(𝑥− 𝑥3)

(𝑥1 − 𝑥0)(𝑥1 − 𝑥2)(𝑥1 − 𝑥3)

𝐶(𝑥) =(𝑥− 𝑥0)(𝑥− 𝑥1)(𝑥− 𝑥3)

(𝑥2 − 𝑥0)(𝑥2 − 𝑥1)(𝑥2 − 𝑥3)

𝐷(𝑥) =(𝑥− 𝑥0)(𝑥− 𝑥1)(𝑥− 𝑥2)

(𝑥3 − 𝑥0)(𝑥3 − 𝑥1)(𝑥3 − 𝑥2)

Neposredno se vidi da su vrednosti ovih polinoma u taqkama 𝑥0, 𝑥1, 𝑥2,𝑥3 sledee:

polinom 𝐴 𝐵 𝐶 𝐷taqka

𝑥0 1 0 0 0𝑥1 0 1 0 0𝑥2 0 0 1 0𝑥3 0 0 0 1

Zbog toga je vrednost polinoma treeg stepena

𝑃 (𝑋) = 𝑦0𝐴(𝑥) + 𝑦1𝐵(𝑥) + 𝑦2𝐶(𝑥) + 𝑦3𝐷(𝑥)

u taqkama redom 𝑥0, 𝑥1, 𝑥2, 𝑥3 jednaka 𝑦0, 𝑦1, 𝑦2, 𝑦3, odnosno 𝑃 (𝑥) jetraeni (jedinstveni, xto neemo dokazivati) polinom treeg stepenakoji prolazi kroz zadate taqke (𝑥0, 𝑦0), (𝑥1, 𝑦1), (𝑥2, 𝑦2), (𝑥3, 𝑦3).

Ovaj zakuqak se neposredno uopxtava. Jedinstveni polinom stepena𝑛 koji prolazi kroz zadatih 𝑛 + 1 taqaka (𝑥0, 𝑦0), (𝑥1, 𝑦1),. . . (𝑥𝑛, 𝑦𝑛) jeLagranov interpolacioni polinom,

𝐿𝑛(𝑥) =

𝑛∑𝑖=0

𝑦𝑖∏

𝑗∈0,1,...,𝑛∖𝑖

𝑥− 𝑥𝑗

𝑥𝑖 − 𝑥𝑗.

Primer, nastavak.Potrebno je odrediti koeficijente polinoma tre-eg stepena koji prolazi kroz taqke (𝑥0, 𝑦0), (𝑥1, 𝑦1), (𝑥2, 𝑦2), (𝑥3, 𝑦3) zadatesledeom tabelom.

𝑖 0 1 2 3𝑥𝑖 0 1 −1 −2𝑦𝑖 −3 3 −13 −33

Page 172: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

9.3. Priblino rexavae jednaqina 172

Traeni polinom je

𝐿3(𝑥) = −3(𝑥− 1)(𝑥− (−1))(𝑥− (−2))

(0− 1)(0− (−1))(0− (−2))

+3(𝑥− 0)(𝑥− (−1))(𝑥− (−2))

(1− 0)(1− (−1))(1− (−2))

−13(𝑥− 0)(𝑥− 1)(𝑥− (−2))

((−1)− 0)((−1)− 1)((−1)− (−2))

−33(𝑥− 0)(𝑥− 1)(𝑥− (−1))

((−2)− 0)((−2)− 1)((−2)− (−1))

= 𝑥3 − 2𝑥2 + 7𝑥− 3.

9.3 Priblino rexavae jednaqina

Potrebno je priblino (sa zadatom taqnoxu) rexiti jednaqinu 𝑓(𝑥) = 0.Pri tome se pretpostava da se zna interval [𝑎, 𝑏] takav da na egovimkrajevima funkcija 𝑓(𝑥) ima vrednosti razliqitih znakova, da 𝑓(𝑥) imaprvi izvod na tom intervalu i da je funkcija 𝑓(𝑥) monotona na tomintervalu. Pod ovim pretpostavkama 𝑓(𝑥) ima jedinstvenu nulu 𝑥* ∈ [𝑎, 𝑏],tj. 𝑓(𝑥*) = 0. Ako je zadat broj 𝜖 > 0, potrebno je odrediti priblinorexee jednaqine 𝑓(𝑥) = 0, odnosno takav broj da je |𝑥*− | < 𝜖. Postojivixe postupaka za priblino rexavae jednaqina koje se zasnivaju naizraqunavau vrednosti funkcije u nizu taqaka 𝑥0 = 𝑎, 𝑥1 = 𝑏, 𝑥2, . . . ,𝑥𝑛, sa ciem da se pronae taqka dovono blizu nule 𝑥*.

9.3.1 Metod polovea intervala

Kodmetoda polovea intervala vrednost funkcije izraqunava senajpre u taqki 𝑥2 = (𝑥0+𝑥1)/2. Na krajevima taqno jednog od podintervala[𝑥0, 𝑥2], [𝑥2, 𝑥1] funkcija ima vrednosti razliqitih znakova, pa se sa tra-eem nule u tom podintervalu nastava na isti naqin kao u polaznomintervalu [𝑥0, 𝑥1]. Time je taqno dva puta smaena duina intervala ukome se nalazi nula funkcije. Posle izraqunavaa vrednosti funkcije utaqki 𝑥𝑛, 𝑛 > 1, dolazi se do intervala duine (𝑥1−𝑥0)/2𝑛−1. Ako se za 𝑛izabere vrednost ⌈log2

𝑥1−𝑥0

𝜖 ⌉, i ako se uzme da je sredina tog intervala,odnosno = (𝑥𝑛−1 + 𝑥𝑛)/2, onda je |− 𝑥*| < (𝑥1 − 𝑥0)/2𝑛 ≤ 𝜖. Algoritamse moe opisati sledeim kodom.

𝑀𝑒𝑡𝑜𝑑 𝑝𝑜𝑙𝑜𝑣𝑙𝑗𝑒𝑛𝑗𝑎 𝑖𝑛𝑡𝑒𝑟𝑣𝑎𝑙𝑎(𝑓, 𝑥0, 𝑥1, 𝜖)ulaz: 𝑓 - funkcija, 𝑥0 < 𝑥1 takvi da je 𝑓(𝑥0)𝑓(𝑥1) < 0, 𝜖 - granica grexkeizlaz: - priblina vrednost rexea, tj. |− 𝑥*| ≤ 𝜖1 𝑎← 𝑥0

2 𝑏← 𝑥1

3 𝑛← ⌈log2𝑥1−𝑥0

𝜖 ⌉4 for 𝑖← 2 to 𝑛 do5 Invarijanta pete: 𝑥𝑛−1 ∈ 𝑎, 𝑏, 𝑓(𝑎)𝑓(𝑏) ≤ 0, 𝑏− 𝑎 = (𝑥1 − 𝑥0)/2𝑖−26 𝑎← min𝑥𝑖−2, 𝑥𝑖−17 𝑏← max𝑥𝑖−2, 𝑥𝑖−18 𝑥𝑛 ← (𝑎 + 𝑏)/2

Page 173: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

173 9. Algoritmi numeriqke optimizacije

9 if 𝑓(𝑎)𝑓(𝑥𝑛) < 0 then10 𝑏← 𝑥𝑛

11 else12 𝑎← 𝑥𝑛

13 return = (𝑎 + 𝑏)/2

Korektnost algoritma sledi iz qienice da je invarijanta pete 𝑥𝑛−1 ∈𝑎, 𝑏, 𝑓(𝑎)𝑓(𝑏) ≤ 0, 𝑏− 𝑎 = (𝑥1 − 𝑥0)/2𝑛−2.

Primer. Ako je 𝑓(𝑥) = 𝑥2 − 2, jednaqina 𝑓(𝑥) = 0 ima koren naintervalu [1, 2], jer je 𝑓(1) = −1 < 0 i 𝑓(2) = 2 > 0. U tom intervaluje funkcija monotono rastua, jer je en izvod 𝑓 ′(𝑥) = 2𝑥 pozitivan.Rexee ove jednaqine na 11 decimala je 1.41421356237. U narednoj tabeliprikazano je rexavae ove jednaqine metodom polovea intervala.

𝑖 𝑥𝑖 𝑎 𝑏 (𝑎 + 𝑏)/2 𝑓(𝑎) 𝑓(𝑏) 𝑓(𝑥𝑖)0 11 2 1 2 1.5 −1 2 0.252 1.5000000 1.0000000 1.5000000 1.2500000 −1.0000000 0.2500000 −0.43750003 1.2500000 1.2500000 1.5000000 1.3750000 −0.4375000 0.2500000 −0.10937504 1.3750000 1.3750000 1.5000000 1.4375000 −0.1093750 0.2500000 0.06640635 1.4375000 1.3750000 1.4375000 1.4062500 −0.1093750 0.0664063 −0.02246096 1.4062500 1.4062500 1.4375000 1.4218750 −0.0224609 0.0664063 0.02172857 1.4218750 1.4062500 1.4218750 1.4140625 −0.0224609 0.0217285 −0.00042728 1.4140625 1.4140625 1.4218750 1.4179688 −0.0004272 0.0217285 0.01063549 1.4179688 1.4140625 1.4179688 1.4160156 −0.0004272 0.0106354 0.0051003

10 1.4160156 1.4140625 1.4160156 1.4150391 −0.0004272 0.0051003 0.002335511 1.4150391 1.4140625 1.4150391 1.4145508 −0.0004272 0.0023355 0.000953912 1.4145508 1.4140625 1.4145508 1.4143066 −0.0004272 0.0009539 0.000263313 1.4143066 1.4140625 1.4143066 1.4141846 −0.0004272 0.0002633 −0.000082014 1.4141846 1.4141846 1.4143066 1.4142456 −0.0000820 0.0002633 0.000090615 1.4142456 1.4141846 1.4142456 1.4142151 −0.0000820 0.0000906 0.000004316 1.4142151 1.4141846 1.4142151 1.4141998 −0.0000820 0.0000043 −0.000038817 1.4141998 1.4141998 1.4142151 1.4142075 −0.0000388 0.0000043 −0.000017318 1.4142075 1.4142075 1.4142151 1.4142113 −0.0000173 0.0000043 −0.000006519 1.4142113 1.4142113 1.4142151 1.4142132 −0.0000065 0.0000043 −0.000001120 1.4142132 1.4142132 1.4142151 1.4142141 −0.0000011 0.0000043 0.0000016

Zapaa se da se broj taqnih cifara rezultata (√

2 = 1.4142135...)poveava za oko jedan posle svaka tri izraqunavaa vrednosti funkcije.

9.3.2 Metod lanog poloaja, metod seqice

Kod metoda lanog poloaja (regula–falsi) pretpostava se da jefunkcija 𝑓(𝑥) monotona na intervalu qiji su krajevi 𝑥0 i 𝑥𝐹 , i da je𝑓(𝑥0)𝑓(𝑥𝐹 ) < 0. Zbog jednostavnosti pretpostaviemo da na tom intervalu𝑓(𝑥) ima prvi i drugi izvod i da drugi izvod ne mea znak na intervalu(tj. funkcija je na intervalu ili konkavna ili konveksna). Pretpostavimoda je 𝑥𝐹 > 𝑥0 ako je 𝑓 ′(𝑥)𝑓 ′′(𝑥) > 0 na intervalu, odnosno da je 𝑥𝐹 < 𝑥0 uprotivnom.

Page 174: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

9.3. Priblino rexavae jednaqina 174

Primer. Neka je, kao u prethodnom primeru, 𝑓(𝑥) = 𝑥2− 2. Jednaqina𝑓(𝑥) = 0 ima koren na intervalu [1, 2], jer je 𝑓(1) = −1 < 0 i 𝑓(2) = 2 > 0.Pored toga, 𝑓 ′(𝑥) = 2𝑥 > 0 i 𝑓 ′′(𝑥) = 2 > 0, pa se moe uzeti da je 𝑥0 = 1i 𝑥𝐹 = 2.

Metod lanog poloaja na osnovu taqaka 𝑥𝑛 i 𝑥𝐹 izraqunava narednutaqku 𝑥𝑛+1 kao 𝑥-koordinatu preseka prave (seqice) kroja prolazi kroztaqke (𝑥𝑛, 𝑓(𝑥𝑛)), (𝑥𝐹 , 𝑓(𝑥𝐹 )) i 𝑥-ose. Jednaqina te prave je

𝑦 − 𝑓(𝑥𝑛)

𝑥− 𝑥𝑛=

𝑓(𝑥𝐹 )− 𝑓(𝑥𝑛)

𝑥𝐹 − 𝑥𝑛

𝑥-koordinata preseka ove prave sa 𝑥-osom 𝑥𝑛+1 dobija se kao vrednost za𝑥, ako se stavi da je 𝑦 = 0:

𝑥𝑛+1 = 𝑥𝑛 −𝑓(𝑥𝑛)

𝑓(𝑥𝐹 )− 𝑓(𝑥𝑛)(𝑥𝐹 − 𝑥𝑛), 𝑛 = 0, 1, . . .

Nastavak primera. Neka je 𝑥𝐹 = 2; tada je 𝑓(𝑥𝐹 ) = 𝑥2𝐹 − 2 = 2.

U narednoj tabeli prikazano je rexavae ove jednaqine metodom lanogpoloaja.

𝑖 𝑥𝑖 𝑓(𝑥𝑖)0 1 −11 1.33333333333333 −0.222222222222222 1.40000000000000 −0.040000000000003 1.41176470588235 −0.006920415224914 1.41379310344828 −0.001189060642095 1.41414141414141 −0.000204060810126 1.41420118343195 −0.000035012779667 1.41421143847487 −0.000006007286848 1.41421319796954 −0.000001030688769 1.41421349985132 −0.00000017683827

10 1.41421355164605 −0.0000000303406511 1.41421356053263 −0.00000000520563

Na sliqan naqin,metod seqice na osnovu taqaka 𝑥𝑛−1 i 𝑥𝑛 izraqunavanarednu taqku 𝑥𝑛+1 kao 𝑥-koordinatu preseka prave kroja prolazi kroztaqke (𝑥𝑛−1, 𝑓(𝑥𝑛−1)), (𝑥𝑛, 𝑓(𝑥𝑛)), i 𝑥-ose. Jednaqina te prave je

𝑦 − 𝑓(𝑥𝑛−1)

𝑥− 𝑥𝑛−1=

𝑓(𝑥𝑛)− 𝑓(𝑥𝑛−1)

𝑥𝑛 − 𝑥𝑛−1

𝑥-koordinata preseka ove prave sa 𝑥-osom 𝑥𝑛+1 dobija se tako xto se ovdestavi da je 𝑦 = 0:

𝑥𝑛+1 = 𝑥𝑛 −𝑓(𝑥𝑛)

𝑓(𝑥𝑛−1)− 𝑓(𝑥𝑛)(𝑥𝑛−1 − 𝑥𝑛), 𝑛 = 0, 1, . . .

Naredna slika je ilustracija ova dva metoda. Zapaa se da ovaj metodne garantuje da je rexee jednaqine unutar intervala (𝑥𝑛, 𝑥𝑛+1) za svako𝑛.

Page 175: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

175 9. Algoritmi numeriqke optimizacije

Nastavak primera. Neka je 𝑥0 = 1, 𝑥1 = 2; tada je 𝑓(𝑥0) = −1 i𝑓(𝑥1) = 2. U narednoj tabeli prikazano je rexavae ove jednaqine metodomseqice.

𝑖 𝑥𝑖 𝑓(𝑥𝑖)0 1 −11 2 22 1.33333333333333 −0.222222222222223 1.40000000000000 −0.040000000000004 1.41463414634146 0.001189767995245 1.41421143847487 −0.000006007286846 1.41421356205732 −0.000000000893157 1.41421356237310 0.000000000000008 1.41421356237310 0.00000000000000

Zapaa se da broj taqnih cifara rezultata raste linearno sa brojemizraqunavaa vrednosti funkcije, znatno bre nego kod metoda poloveaintervala.

9.3.3 Metod tangente | utnov metod

Ideja na kojoj se zasniva metod tangente, odnosnoutnov metod jeda ako je 𝑥𝑛 blizu 𝑥*, onda je taqka preseka tangente na krivu 𝑦 = 𝑓(𝑥) utaqki 𝑥𝑛 jox blie rexeu 𝑥*. Jednaqina tangente na krivu 𝑦 = 𝑓(𝑥) utaqki 𝑥𝑛 je

𝑦 − 𝑓(𝑥𝑛) = 𝑓 ′(𝑥𝑛)(𝑥− 𝑥𝑛).

Stavajui ovde 𝑦 = 0 dobija se 𝑥-koordinata preseka ove prave sa 𝑥-osom𝑥𝑛+1:

𝑥𝑛+1 = 𝑥𝑛 −𝑓(𝑥𝑛)

𝑓 ′(𝑥𝑛), 𝑛 = 1, 2, . . .

Naredna slika je ilustracija metoda tangente.

Page 176: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

9.3. Priblino rexavae jednaqina 176

Nastavak primera. Neka je 𝑥0 = 1, 𝑥1 = 2; tada je 𝑓(𝑥0) = −1 i𝑓(𝑥1) = 2. U narednoj tabeli prikazano je rexavae ove jednaqine metodomseqice.

𝑖 𝑥𝑖 𝑓(𝑥𝑖)0 1 −11 1.5000000 0.25000002 1.41666666666667 0.006944444444443 1.41421568627451 0.000006007304884 1.41421356237469 0.000000000004515 1.41421356237310 0.000000000000006 1.41421356237310 0.00000000000000

Zapaa se da se broj taqnih cifara rezultata poveava mnogo bresa brojem izraqunavaa vrednosti funkcije, nego kod prethodnih metoda(otprilike sa kvadratom broja izraqunavaa).

Page 177: Algoritmi i strukture podatakapoincare.matf.bg.ac.rs/~vesnap/asp/asp.pdf ·  · 2018-02-062 Autori: prof. dr Miodrag ivkovi , redovni profesor Matematiqkog fakulteta u Beogradu dr

Literatura

[1] T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, Introduction toAlgorithms, Second Edition, MIT Press, 2002.

[2] M. ivkovi, Algoritmi, Matematiqki fakultet, 2000.

[3] D. L. Kreher, D. R. Stinson, Combinatorial algorithms: generation, enu-meration, and search, CRC press, 1999.

[4] E. Horowitz, S. Sahni, S. Rajasekaran, Computer Algorithms, ComputerScience Press, 1997.

[5] I. Parberry, W. Gasarch, Problems on Algorithms, Second Edition, 2002.

[6] I. Stojmenovic, Generating All and Random Instances of a CombinatorialObject, Handbook of Applied Algorithms: Solving Scientific, Engineeringand Practical Problems, John Wiley & Sons, Inc., 2008.

177