Konstrukcija i analiza algoritama 2 -...

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

Transcript of Konstrukcija i analiza algoritama 2 -...

Page 1: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

Konstrukcija i analiza algoritama 2Materijal 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: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

2

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

KONSTRUKCIJA I ANALIZA ALGORITAMA 2

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: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

Glava 1

Predgovor

Ovaj tekst predstava pratei materijal za kurs "Konstrukcija i analizaalgoritama 2\ na Matematiqkom fakultetu Univerziteta u Beogradu. Tekstje prvenstveno zasnovan na kizi \Algoritmi" Miodraga ivkovia, alii na ostaloj preporuqenoj literaturi. Veliku zahvalnost autori dugujuNikoli Ajzenhameru qija je skripta za isti kurs pomogla u pripreminekih tema iz ovog materijala. Autori su takoe zahvalni i studentimakoji su im obratili pau na grexke u materijalu. Skripta pokrivateme koje se prelaze na qasovima predavaa, ali ni u kom sluqaju ne moezameniti pohaae qasova predavaa.

Materijal je i dae u fazi dorade te ukoliko uoqite bilo kakvugrexku ili propust, molimo vas da se javite autorima skripte.

Autori

3

Page 4: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

Sadraj

1 Predgovor 3

Sadraj 4

2 Geometrijski algoritmi 72.1 Uvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.2 Utvrivae da li zadata taqka pripada mnogouglu . . . . . 82.3 Konstrukcija prostog mnogougla . . . . . . . . . . . . . . . . 112.4 Konveksni omotaq . . . . . . . . . . . . . . . . . . . . . . . . . 132.5 Preseci horizontalnih i vertikalnih dui . . . . . . . . . 182.6 Odreivae dve najudaenije taqke u ravni . . . . . . . . . 232.7 Duina unije dui na pravoj . . . . . . . . . . . . . . . . . . 272.8 “Happy-ending” teorema . . . . . . . . . . . . . . . . . . . . . . 272.9 Ispitivae da li u skupu od 𝑛 taqaka postoje tri kolinearne

taqke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282.10 Ispitivae da li u skupu od 𝑛 taqaka postoji kvadrat . . . 282.11 Rezime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3 Strukture podataka 313.1 AVL stabla . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.2 Skip liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.3 Sufiksna stabla . . . . . . . . . . . . . . . . . . . . . . . . . 41

4 Sortirae linearne sloenosti 614.1 Sortirae prebrojavaem . . . . . . . . . . . . . . . . . . . . 614.2 Sortirae razvrstavaem i sortirae vixestrukim raz-

vrstavaem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634.3 Sortirae proseqne linearne sloenosti . . . . . . . . . . 64

5 Probabilistiqki algoritmi 695.1 Odreivae broja iz gore polovine . . . . . . . . . . . . . . 695.2 Sluqajni brojevi . . . . . . . . . . . . . . . . . . . . . . . . . 705.3 Jedan problem sa bojeem . . . . . . . . . . . . . . . . . . . . 71

6 Grafovi 73

4

Page 5: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

5 1. Sadraj

6.1 Uparivae . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736.2 Optimizacija transportne mree . . . . . . . . . . . . . . . 776.3 Hamiltonovi ciklusi . . . . . . . . . . . . . . . . . . . . . . . 83

7 Redukcije 877.1 Uvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 877.2 Primeri redukcija . . . . . . . . . . . . . . . . . . . . . . . . 887.3 Redukcije na problem linearnog programiraa . . . . . . . 917.4 Primena redukcija na nalaee doih granica . . . . . . . 977.5 Uobiqajene grexke . . . . . . . . . . . . . . . . . . . . . . . . . 1007.6 Rezime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

8 Granae sa odsecaem 1038.1 Minimizirae maksimalne sume uzastopna tri broja na krugu103

9 NP kompletnost 1059.1 Dokaz nepostojaa priblinog algoritma za rexavae (opxteg)

problema trgovaqkog putnika . . . . . . . . . . . . . . . . . . 1059.2 Dokaz NP-kompletnosti problema \zbir podskupa" . . . . . 1069.3 Priblini algoritmi za rexavae problema minimalnog

pokrivaa skupa . . . . . . . . . . . . . . . . . . . . . . . . . 109

10 Paralelni algoritmi 11510.1 Uvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11510.2 Modeli paralelnog izraqunavaa . . . . . . . . . . . . . . . 11610.3 Algoritmi za raqunare sa zajedniqkom memorijom . . . . . . 11810.4 Algoritmi za mree raqunara . . . . . . . . . . . . . . . . . 12910.5 Sistoliqki algoritmi . . . . . . . . . . . . . . . . . . . . . . 13910.6 Rezime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

Literatura 143

Page 6: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj
Page 7: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

Glava 2

Geometrijski algoritmi

2.1 Uvod

Geometrijski algoritmi igraju vanu ulogu u mnogim oblastima, na pri-mer u raqunarskoj grafici, projektovau pomou raqunara, projektovauVLSI (integrisanih kola visoke rezolucije), robotici i bazama podataka.U raqunarski generisanoj slici moe biti na hiade ili qak milionetaqaka, linija, kvadrata ili krugova; projektovae kompjuterskog qipamoe da zahteva rad sa milionima elemenata. Svi ovi problemi sadreobradu geometrijskih objekata. Poxto veliqina ulaza za ove problememoe biti vrlo velika, veoma je znaqajno razviti efikasne algoritmeza ihovo rexavae.

Razmotriemo nekoliko osnovnih geometrijskih algoritama | onihkoji se mogu koristiti kao elementi za izgradu sloenijih algoritama.Objekti sa kojima se radi su taqke, prave, dui i mnogouglovi. Algo-ritmi obrauju ove objekte, odnosno izraqunavaju neke ihove karakteri-stike. Najpre emo dati osnovne definicije i navesti strukture podatakapogodne za predstavae pojedinih objekata. Taqka 𝑝 u ravni predstavase kao par koordinata (𝑥, 𝑦) (pretpostava se da je izabran fiksiranikoordinatni sistem). Prava je predstavena parom taqaka 𝑝 i 𝑞 (pro-izvone dve razliqite taqke na pravoj), i oznaqavaemo je sa −𝑝 − 𝑞−.Du se takoe zadaje parom taqaka 𝑝 i 𝑞 koje predstavaju krajeve tedui, i oznaqavaemo je sa 𝑝 − 𝑞. Put 𝑃 je niz taqaka 𝑝1, 𝑝2, . . . , 𝑝𝑘 idui 𝑝1 − 𝑝2, 𝑝2 − 𝑝3, . . . , 𝑝𝑘−1 − 𝑝𝑘 koje ih povezuju. Dui koje qine putsu egove ivice (stranice). Zatvoreni put je put qija se posledataqka poklapa sa prvom. Zatvoreni put zove se i mnogougao. Taqke kojedefinixu mnogougao su egova temena. Na primer, trougao je mnogougaosa tri temena. Mnogougao se predstava nizom, a ne skupom taqaka, jer jebitan redosled kojim se taqke zadaju (promenom redosleda taqaka iz istogskupa u opxtem sluqaju dobija se drugi mnogougao). Prost mnogougaoje onaj kod koga odgovarajui put nema preseka sa samim sobom; drugimreqima, jedine ivice koje imaju zajedniqke taqke su susedne ivice sasvojim zajedniqkim temenom. Prost mnogougao ograniqava jednu oblastu ravni, unutraxost mnogougla. Konveksni mnogougao je mnogougaoqija unutraxost sa svake dve taqke koje sadri, sadri i sve taqke te

7

Page 8: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

2.2. Utvrivae da li zadata taqka pripada mnogouglu 8

dui.Konveksni put je put od taqaka 𝑝1, 𝑝2, . . . , 𝑝𝑘 takav da je mnogougao𝑝1𝑝2 . . . 𝑝𝑘, 𝑝1 konveksan.

Pretpostava se da je qitalac upoznat sa osnovama analitiqke geome-trije. U algoritmima koje emo razmatrati nailazi se, na primer, naizraqunavae preseqne taqke dveju dui, utvrivae da li dve taqkelee sa iste strane zadate prave, izraqunavae rastojaa izmeu dvetaqke. Sve ove operacije mogu se izvesti za vreme ograniqeno konstantom,konstantnom primenom osnovnih aritmetiqkih operacija. Pri tome, naprimer, pretpostavamo da se kvadratni koren moe izraqunati za konstantnovreme.

Qesta neugodna karakteristika geometrijskih problema je postojaemnogih "specijalnih sluqajeva". Na primer, dve prave u ravni obiqno seseku u jednoj taqki, sem ako su paralelne ili se poklapaju. Pri rexavauproblema sa dve prave, moraju se predvideti sva tri mogua sluqaja. Slo-eniji objekti prouzrokuju pojavu mnogo veeg broja specijalnih sluqajeva,o kojima treba voditi raquna. Obiqno se veina tih specijalnih sluqajevarexava neposredno, ali potreba da se oni uzmu u obzir qini ponekadkonstrukciju geometrijskih algoritama vrlo iscrpujuom. Mi emo uovom poglavu qesto ignorisati detae koji nisu od suxtinskog znaqaja zarazumevae osnovnih ideja algoritama, ali qitaocu savetujemo da razmotrirexavae svakog od specijalnih sluqajeva na koji se pri konstrukcijialgoritma naie.

2.2 Utvrivae da li zadata taqka pripada mnogouglu

Razmatrae zapoqiemo jednim jednostavnim problemom.

Problem. Zadat je prost mnogougao 𝑃 i taqka 𝑞. Ustanoviti da li jetaqka u ili van mnogougla 𝑃 .

q

Slika 2.1: Utvrivae pripadnosti taqke unutraxosti prostogmnogougla.

Problem izgleda jednostavno na prvi pogled, ali ako se razmatrajusloeni nekonveksni mnogouglovi, kao onaj na slici 2.1, problem sigurnonije jednostavan. Prvi intuitivni pristup je pokuxati nekako "izainapoe", polazei od zadate taqke. Posmatrajmo proizvonu polupravusa temenom 𝑞. Vidi se da je dovono prebrojati preseke sa stranicamamnogougla, sve do dostizaa spoaxe oblasti. U primeru na slici 2.1,

Page 9: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

9 2. Geometrijski algoritmi

idui na severoistok od date taqke (pratei isprekidanu liniju), nai-lazimo na xest preseka sa mnogouglom do dostizaa spoaxe oblasti.Istina, ve posle qetiri preseka stie se van mnogougla, ali to raqunar"ne vidi"; zato se broji ukupan broj preseka poluprave sa stranicamamnogougla. Poxto nas posledi presek pre izlaska izvodi iz mnogougla, apretposledi nas vraa u mnogougao, itd., taqka je van mnogougla. Uopxtetaqka je u mnogouglu ako i samo ako je broj preseka neparan (specijalnesluqajeve na trenutak zanemarujemo).

Algoritam Tacka u mnogouglu 1(𝑃, 𝑞); prvi pokuxajUlaz: 𝑃 (prost mnogougao sa temenima 𝑝1, 𝑝2, . . . , 𝑝𝑛 i ivicama 𝑒1, 𝑒2, . . . , 𝑒𝑛), i 𝑞 (taqka).

Izlaz: 𝑃𝑟𝑖𝑝𝑎𝑑𝑎 (Bulova promeniva, 𝑡𝑟𝑢𝑒 akko 𝑞 pripada 𝑃 ).

begin

Izabrati proizvonu taqku 𝑠 van mnogougla;

Neka je 𝐿 du 𝑞 − 𝑠;

𝑏𝑟𝑜𝑗 := 0;

for sve stranice 𝑒𝑖 mnougla do

if 𝑒𝑖 seqe 𝐿 then

pretpostavamo da presek nije ni teme ni ivica, videti tekst𝑏𝑟𝑜𝑗 := 𝑏𝑟𝑜𝑗 + 1;

if 𝑏𝑟𝑜𝑗 je neparan then 𝑝𝑟𝑖𝑝𝑎𝑑𝑎 := 𝑡𝑟𝑢𝑒

else 𝑝𝑟𝑖𝑝𝑎𝑑𝑎 := 𝑓𝑎𝑙𝑠𝑒

end

Kao xto je reqeno u prethodnom odeku, obiqno postoje neki specijalnisluqajevi koje treba posebno razmotriti. Neka je 𝑠 taqka van mnogougla, ineka je 𝐿 du koja spaja 𝑞 i 𝑠. Ci je utvrditi da li 𝑞 pripada unutraxostimnogougla 𝑃 na osnovu broja preseka dui 𝐿 sa ivicama mnogougla 𝑃 .Meutim, du 𝐿 moe se delom preklapati sa nekim ivicama mnogougla𝑃 . Ovo preklapae oqigledno ne treba brojati u preseke. Prvi specijalnisluqaj je kada du 𝐿 sadri neko teme 𝑝𝑖 mnogougla. Na slici 2.2(a)vidi se primer sluqaja kad presek 𝐿 sa temenom ne treba brojati, a naslici 2.2(b) primer kad taj presek treba brojati. Postoji vixe naqina zautvrivae da li neki ovakav presek treba brojati ili ne.

∙ Jedan naqin je sledei: ako su dva temena mnogougla susedna temenu𝑝𝑖 i sa iste strane 𝐿, presek se ne raquna. U protivnom, ako su dvasusedna temena sa razliqitih strana dui 𝐿, presek se broji.

∙ Drugi mogui naqin je sledei: s obzirom na to da razmatramo presekeprave paralelne sa 𝑦 osom, za svaku ivicu mnogougla raqunamo recimolevo teme, a desno ne (temena klasifikujemo kao levo i desno uodnosu na vrednosti 𝑥 koordinate). Time neemo raqunati preseknalik onom na slici 2.2(a) jer je za obe ivice presek kroz desnoteme, a presek kao na slici 2.2(b) hoemo jednom, jer je za jednu odivica koje se sustiqu u tom temenu to levo teme, a za drugu desno.

Drugi sluqaj je kada se nekoliko uzastopnih temena zajedno sa 𝑝𝑖 nalazena polupravoj, teme 𝑝𝑗 prethodi ovim temenima, a teme 𝑝𝑘 je prvo posle

Page 10: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

2.2. Utvrivae da li zadata taqka pripada mnogouglu 10

s

s𝑞

𝑠 s

s𝑞

𝑠(a) (b)

Slika 2.2: Specijalni sluqajevi kad prava seqe ivicu kroz teme.

ih na mnogouglu: ako su temena 𝑝𝑖 i 𝑝𝑗 sa razliqitih, odnosno sa istestrane poluprave, presek se raquna, odnosno ne raquna.

Razvijajui ovaj algoritam, implicitno smo pretpostavali da radimosa slikom. Problem je nexto drugaqiji kad je ulaz dat nizom koordinata,xto je uobiqajeno. Na primer, kad posao radimo ruqno i vidimo mnogougao,lako je nai dobar put (onaj sa malo preseka) do neke taqke van mnogougla.U sluqaju mnogougla datog nizom koordinata, to nije lako. Najvei deovremena troxi se na izraqunavae preseka. Taj deo posla moe se bitnouprostiti ako je du 𝑞 − 𝑠 paralelna jednoj od osa | na primer 𝑦-osi.Broj preseka sa ovom specijalnom dui moe biti mnogo vei nego saoptimalnom dui (koju nije lako odrediti | qitaocu se ostava darazmotri ovaj problem), ali je nalaee preseka mnogo jednostavnije (zakonstantni faktor).

Algoritam Tacka u mnogouglu 2(𝑃, 𝑞); drugi pokuxajUlaz: 𝑃 (prost mnogougao sa temenima 𝑝1, 𝑝2, . . . , 𝑝𝑛 i stranicama 𝑒1, 𝑒2, . . . , 𝑒𝑛),

i 𝑞 (taqka sa koordinatama (𝑥0, 𝑦0)).

Izlaz: 𝑃𝑟𝑖𝑝𝑎𝑑𝑎 (bulova promeniva, 𝑡𝑟𝑢𝑒 akko 𝑞 pripada 𝑃 ).

begin

𝐵𝑟𝑜𝑗 := 0;

for sve grane 𝑒𝑖 mnogougla do

if prava 𝑥 = 𝑥0 seqe 𝑒𝑖 then

Pretpostavamo da presek nije ni teme ni stranica mnogouglaNeka je 𝑦𝑖 𝑦-koordinata preseka prave 𝑥 = 𝑥0 sa 𝑒𝑖;

if 𝑦𝑖 < 𝑦0 then presek je ispod 𝑞𝐵𝑟𝑜𝑗 := 𝐵𝑟𝑜𝑗 + 1;

if 𝐵𝑟𝑜𝑗 je neparan then 𝑃𝑟𝑖𝑝𝑎𝑑𝑎 := 𝑡𝑟𝑢𝑒

else 𝑃𝑟𝑖𝑝𝑎𝑑𝑎 := 𝑓𝑎𝑙𝑠𝑒

end

Sloenost. Za izraqunavae preseka dve dui potrebno je konstantnovreme. Neka je 𝑛 broj ivica mnogougla. Kroz osnovnu petu algoritmaprolazi se 𝑛 puta. U svakom prolasku nalazi se presek dve dui i izvrxavajuse jox neke operacije za konstantno vreme. Dakle, ukupno vreme izvrxavaaalgoritma je 𝑂(𝑛).

Komentar. U mnogo sluqajeva jednostavan postupak inspirisan obiqnimalgoritmom (onim kojim se ruqno rexava problem) nije efikasan za velikeulaze. Ponekad je pak takav pristup ne samo jednostavan, nego i efikasan.

Page 11: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

11 2. Geometrijski algoritmi

Pristup rexavau problema postupkom koji se vizuelno namee je obiqnodobar izbor. Time se moe doi do vixe korisnih zapaaa o problemu.U ovom sluqaju, posmatrajui sliku, primetili smo da se problem moerexiti pratei neki put od taqke do spoaxosti mnogougla.

Interesantan problem jeste kako nai \optimalnu" polupravu krozdatu taqku 𝑞, odnosno onu koja seqe najmai broj stranica mnogougla.Za svako teme 𝑝𝑖 izraqunavamo ugao koji poluprava 𝑞 − 𝑝𝑖− zaklapa sa 𝑥osom i temena sortiramo rastue prema ovoj vrednosti. Za svaku stranicurazlikujemo poqetno i kraje teme, pri qemu poqetnim temenom nazivamoono teme kome odgovara mai ugao poluprave. Najpre se odredi broj 𝑏preseka poluprave kroz 𝑞 i prvo teme (u sortiranom redosledu) sa mnogou-glom (to se moe uraditi u vremenu𝑂(𝑛), gde je 𝑛 broj stranica mnogougla).Pretpostavimo da je za 𝑖-to teme u sortiranom redosledu, 𝑖 ≥ 1, odreenbroj preseka poluprave 𝑞−𝑝𝑖− sa stranicama mnogougla. Prilikom prelaskana naredno teme 𝑝𝑖+1 potrebno je razmotriti dve stranice kroz to teme iaurirati vrednost brojaqa 𝑏. Vrednost brojaqa 𝑏 se moe pritom promenitiza najvixe 2. U svakom sluqaju sloenost auriraa brojaqa je 𝑂(1).Tokom prolaska kroz sva temena pamtimo najmau do sada dobijenu vrednostbrojaqa 𝑏 i za koji skup polupravih se ona dobija (izmeu koja dva temenatreba da prolazi dati zrak). S obzirom da je operacija auriraa konstantnevremenske sloenosti, a da to radimo za svako teme, odnosno 𝑂(𝑛) puta,ukupna sloenost ovog koraka je 𝑂(𝑛). Ukupna sloenost ovog algoritmaje zbog poqetnog sortiraa 𝑂(𝑛 log 𝑛).

2.3 Konstrukcija prostog mnogougla

Skup taqaka u ravni definixe mnogo razliqitih mnogouglova, zavisnood izabranog redosleda taqaka. Razmotriemo sada pronalaee prostogmnogougla sa zadatim skupom temena.

Problem. Dato je 𝑛 taqaka u ravni, takvih da nisu sve kolinearne. Po-vezati ih prostim mnogouglom.

Postoji vixe metoda za konstrukciju traenog prostog mnogougla; uos-talom, jasno je da u opxtem sluqaju problem nema jednoznaqno rexee.Prikazaemo najpre geometrijski pristup ovom problemu. Neka je 𝐶 nekikrug, qija unutraxost sadri sve taqke. Za nalaee takvog krugadovono je 𝑂(𝑛) operacija | izraqunavaa najveeg meu rastojaimaproizvone taqke ravni (centra kruga) do svih 𝑛 taqaka. Povrxina 𝐶moe se "prebrisati" (pregledati) rotirajuom polupravom kojoj je poqetakcentar 𝐶, videti sliku 2.3. Pretpostavimo za trenutak da rotirajuapoluprava u svakom trenutku sadri najvixe jednu taqku. Oqekujemo daemo spajaem taqaka onim redom kojim poluprava nailazi na ih dobitiprost mnogougao. Pokuxajmo da to dokaemo. Oznaqimo taqke, ureene uskladu sa redosledom nailaska poluprave na ih, sa 𝑝1, 𝑝2, . . . , 𝑝𝑛 (prvataqka bira se proizvono). Za svako 𝑖, 1 ≤ 𝑖 ≤ 𝑛, stranica 𝑝𝑖−𝑝𝑖−1 (odnosno𝑝1− 𝑝𝑛 za 𝑖 = 1) sadrana je u novom (disjunktnom) iseqku kruga, pa se neseqe ni sa jednom drugom stranom. Ako bi ovo tvree bilo taqno, dobijenimnogougao bi morao da bude prost. Meutim, ugao izmeu polupravih krozneke dve uzastopne taqke 𝑝𝑖 i 𝑝𝑖+1 moe da bude vei od 𝜋. Tada iseqak koji

Page 12: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

2.3. Konstrukcija prostog mnogougla 12

sadri du 𝑝𝑖−𝑝𝑖+1 sadri vixe od pola kruga i nije konveksna figura,a du 𝑝𝑖 − 𝑝𝑖+1 prolazi kroz druge iseqke kruga, pa moe da seqe drugestranice mnogougla. Da bismo se uverili da je to mogue, dovono je daumesto nacrtanog zamislimo krug sa centrom van kruga sa slike 2.3. Ovoje dobar primer specijalnih sluqajeva na koje se nailazi pri rexavaugeometrijskih problema. Potrebno je da budemo paivi, da bismo bilisigurni da su svi sluqajevi razmotreni. Na ovu pojavu nailazi se kod svihvrsta algoritama, ali je ona kod geometrijskih algoritama drastiqnijeizraena.

rrrrrr

r rb

?

Slika 2.3: Prolazak taqaka u krugu rotirajuom polupravom.

Da bi se rexio uoqeni problem, mogu se, na primer, fiksirati proiz-vone tri taqke iz skupa, a za centar kruga izabrati neka taqka unutarima odreenog trougla (na primer teixte, koje se lako nalazi). Ovakavizbor garantuje da ni jedan od dobijenih sektora kruga nee imati ugaovei od 𝜋. Mogue je izabrati i drugo rexee, da se za centar krugauzme jedna od taqaka iz skupa | taqka 𝑧 sa najveom 𝑥-koordinatom (i sanajmaom 𝑦-koordinatom, ako ima vixe taqaka sa najveom 𝑥-koordinatom);zvaemo je ekstremna taqka. Zatim koristimo isti osnovni algoritam.Sortiramo taqke prema poloaju u krugu sa centrom 𝑧. Preciznije, sortirajuse uglovi izmeu 𝑥-ose i polupravih od 𝑧 ka ostalim taqkama. Ako dve ilivixe taqaka imaju isti ugao, one se dae sortiraju prema rastojau odtaqke 𝑧. Na kraju, 𝑧 se povezuje sa taqkom sa najmaim i najveim uglom, aostale taqke povezuju se u skladu sa dobijenim ureeem, po dve uzastopne.Poxto sve taqke lee levo od 𝑧, do degenerisanog sluqaja o kome je biloreqi ne moe doi. Prost mnogougao dobijen ovim postupkom za taqke saslike 2.3 prikazan je na slici 2.4.

s

ssssss s

𝑧

Slika 2.4: Konstrukcija prostog mnogougla.

Opisani metod moe se usavrxiti na dva naqina. Ugao 𝜙 koji prava𝑦 = 𝑚𝑥+𝑏 zaklapa sa 𝑥 osom dobija se korixeem veze 𝑚 = tg𝜙, odnosno

Page 13: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

13 2. Geometrijski algoritmi

iz jednaqine 𝜙 = arctg𝑚. Meutim, uglovi se ne moraju eksplicitnoizraqunavati. Uglovi se koriste samo za nalaee redosleda kojim trebapovezati taqke. Isti redosled dobija se ureeem nagiba (odnosno odnosapriraxtaja 𝑦- i 𝑥-koordinata) odgovarajuih polupravih; to qini nepotrebnimizraqunavae arkustangensa. Iz istog razloga nepotrebno je izraqunavaerastojaa kad dve taqke imaju isti nagib| dovono je izraqunati kvadraterastojaa. Dakle, nema potrebe za izraqunavaem kvadratnih korenova.

Algoritam Prost mnogougao(𝑝1, 𝑝2, . . . , 𝑝𝑛);

Ulaz: 𝑝1, 𝑝2, . . . , 𝑝𝑛 (taqke u ravni).

Izlaz: 𝑃 (prost mnogougao sa temenima 𝑝1, 𝑝2, . . . , 𝑝𝑛 u nekom redosledu).

begin

promeniti oznake tako da 𝑝1 bude ekstremna taqka;

taqka sa najveom 𝑥-koordinatom, a ako takvih ima vixe,ona od ih koja ima najmau𝑦-koordinatufor 𝑖 := 2 to 𝑛 do

izraqunati ugao 𝛼𝑖 izmeu prave −𝑝1 − 𝑝𝑖− i 𝑥-ose;

sortirati taqke prema uglovima 𝛼2, . . . , 𝛼𝑛;

u grupi sa istim uglom sortirati ih prema rastojau od 𝑝1𝑃 je mnogougao definisan sortiranom listom taqaka

end

Sloenost. Osnovna komponenta vremenske sloenosti ovog algoritmapotiqe od sortiraa. Sloenost algoritma je dakle 𝑂(𝑛 log 𝑛).

2.4 Konveksni omotaq

Konveksni omotaq konaqnog skupa taqaka definixe se kao najmaikonveksni mnogougao koji sadri sve taqke skupa. Konveksni omotaq sepredstava na isti naqin kao obiqan mnogougao, temenima navedenim ucikliqkom redosledu.

Problem. Konstruisati konveksni omotaq zadatih 𝑛 ≥ 3 taqaka u ravni.

Obrada konveksnih mnogouglova jednostavnija je od obrade proizvonihmnogouglova. Na primer, postoji algoritam sloenosti𝑂(log 𝑛) za proverupripadnosti taqke konveksnom 𝑛-touglu.

Pretpostavimo da je zadatak da utvrdimo da li se taqka 𝑞 nalaziunutar datog konveksnog mnogougla 𝑝1𝑝2 . . . 𝑝𝑛. Ideja na kojoj se zasnivaalgoritam je da se primeni binarna pretraga: ako znamo da se 𝑞 nalaziunutar ugla 𝑝𝑖𝑝1𝑝𝑗 , 𝑖 < 𝑗, onda se posle provere da li se 𝑞 i 𝑝𝑗 nalazesa iste strane prave 𝑝1𝑝𝑚, 𝑚 = ⌊(𝑖 + 𝑗)/2⌋, zna da li je 𝑞 unutar ugla 𝑝𝑚𝑝1𝑝𝑗 (ako je odgovor "da", ili ako je 𝑞 na pravoj 𝑝1𝑝𝑚), ili unutar ugla 𝑝𝑖𝑝1𝑝𝑚 (u protivnom). Na poqetku se proverava da li je 𝑞 unutar ugla 𝑝2𝑝1𝑝𝑛 (ako nije, onda 𝑞 ne pripada mnogouglu). Posle najvixe 𝑂(log 𝑛)koraka zakuquje se ili da 𝑞 ne pripada mnogouglu, ili da je unutar nekogugla 𝑝𝑖𝑝1𝑝𝑖+1; u drugom sluqaju je 𝑞 u mnogouglu akko pripada trouglu𝑝𝑖𝑝1𝑝𝑖+1.

Page 14: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

2.4. Konveksni omotaq 14

Temena konveksnog omotaqa su neke od taqaka iz zadatog skupa. Kaemoda taqka pripada omotaqu ako je teme omotaqa. Koveksni omotaq moe sesastojati od najmae tri, a najvixe 𝑛 taqaka. Konveksni omotaqi imajuxiroku primenu, pa su zbog toga razvijeni mnogobrojni algoritmi zaihovu konstrukciju.

2.4.1 Direktni pristup

Kao i obiqno, pokuxaemo najpre sa direktnim induktivnim pristupom.Konveksni omotaq za tri taqke lako je nai. Pretpostavimo da umemo dakonstruixemo konveksni omotaq skupa od < 𝑛 taqaka, i pokuxajmo dakonstruixemo konveksni omotaq skupa od 𝑛 taqaka. Kako 𝑛-ta taqka moeda promeni konveksni omotaq za prvih 𝑛 − 1 taqaka? Postoje dva moguasluqaja: ili je nova taqka u prethodnom konveksnom omotaqu (tada on ostajenepromeen), ili je ona van ega, pa se omotaq "xiri" da obuhvati inovu taqku, videti sliku 2.5. Potrebno je dakle rexiti dva potproblema:utvrivae da li je nova taqka unutar omotaqa i proxirivae omotaqanovom taqkom. Oni nisu jednostavni. Stvar se moe uprostiti pogodnimizborom 𝑛-te taqke. Zvuqi izazovno pokuxati sa izborom taqke unutaromotaqa; to, meutim, nije uvek mogue jer u nekim sluqajevima sve taqkepripadaju omotaqu. Druga mogunost, koja se pokazala uspexnom u pret-hodnom problemu, je izbor ekstremne taqke za 𝑛-tu taqku.

t

tt

t t

t tt t tt t 𝑝2

𝑝1

𝑝6

𝑝5 𝑝4𝑝3

𝑞

Slika 2.5: Proxirivae konveksnog omotaqa novom taqkom.

Izaberimo ponovo taqku sa najveom 𝑥-koordinatom (i minimalnom𝑦-koordinatom ako ima vixe taqaka sa najveom 𝑥-koordinatom). Nekaje to taqka 𝑞. Jasno je da taqka 𝑞 mora biti teme konveksnog omotaqa.Pitae je kako promeniti konveksni omotaq ostalih 𝑛− 1 taqaka tako daobuhvati i 𝑞. Potrebno je najpre pronai temena starog omotaqa koja su uunutraxosti novog omotaqa (𝑝3 i 𝑝4 na slici 2.5) i ukloniti ih; zatimse umee novo teme 𝑞 izmeu dva postojea (𝑝2 i 𝑝5 na slici 2.5). Pravaoslonca konveksnog mnogougla je prava koja mnogougao seqe u samo jednomtemenu ili u dva susedna temena. Mnogougao uvek ceo lei sa jedne stranesvoje prave oslonca. Posmatrajmo sada prave oslonca −𝑞− 𝑝2− i −𝑞− 𝑝5−na slici 2.5. Obiqno samo dva temena mnogougla povezivaem sa 𝑞 odreujuprave oslonca (ignorisaemo specijalni sluqaj kad dva temena mnogouglalee na istoj pravoj sa 𝑞). Mnogougao lei izmeu dve prave oslonca,xto ukazuje kako treba izvesti modifikaciju omotaqa. Prave osloncazaklapaju minimalni i maksimalni ugao sa 𝑥-osom meu svim pravim

Page 15: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

15 2. Geometrijski algoritmi

kroz 𝑞 i neko teme mnogougla. Da bismo odredili ta dva temena, treba darazmotrimo prave iz 𝑞 ka svim ostalim temenima, da izraqunamo uglovekoje one zaklapaju sa 𝑥-osom, i meu tim uglovima izaberemo minimalani maksimalan. Posle pronalaea dva ekstremna temena 𝑝𝑖, 𝑝𝑗 lako jekonstruisati modifikovani omotaq. Potrebno je eliminisati jedan od dvadobijena segmenta niza temena. Posmatraju se susedna temena npr. temena𝑝𝑖. Jedno od ih je sa iste strane prave −𝑝𝑖 − 𝑝𝑗− kao i taqka 𝑞; to temepripada segmentu niza temena koje treba zameniti novim stranicama 𝑝𝑖−𝑞i 𝑞 − 𝑝𝑗 . U primeru na slici 2.5 teme 𝑝4, susedno ekstremnom temenu 𝑝5,nalazi se sa iste strane dijagonale 𝑝5 − 𝑝2, pa se segment starog omotaqa𝑝3, 𝑝4 zameuje sa dve nove stranice 𝑝5 − 𝑞 i 𝑝2 − 𝑞.

Sloenost. Za svaku taqku treba izraqunati uglove pravih ka svimprethodnim temenima i 𝑥-ose, pronai minimalni i maksimalni ugao,dodati novi qvor i izbaciti neke qvorove. Sloenost dodavaa 𝑘-te taqkeje dakle 𝑂(𝑘), a videli smo ve da je rexee diferencne jednaqine 𝑇 (𝑛) =𝑇 (𝑛−1)+𝑐𝑛 oblika 𝑂(𝑛2). Prema tome, sloenost ovog algoritma je 𝑂(𝑛2).Algoritam na poqetku takoe zahteva i sortirae, ali je vreme sortiraaasimptotski mae od vremena potrebnog za ostale operacije.

2.4.2 Uvijae poklona

Kako se moe poboxati opisani algoritam? Kad proxirujemo mno-gougao teme po teme, dosta vremena troximo na formirae konveksnihmnogouglova od taqaka koje mogu biti unutraxe za konaqni konveksniomotaq. Moe li se to izbei? Umesto da pravimo omotaqe podskupovadatog skupa taqaka, moemo da posmatramo kompletan skup taqaka i dadirektno pravimo egov konveksni omotaq. Moe se, kao i u prethodnomalgoritmu, krenuti od ekstremne taqke (koja uvek pripada omotaqu), pro-nai oj susedna temena omotaqa nalazei prave oslonca, i nastaviti naisti naqin od tih suseda. Ovaj algoritam iz razumivih razloga zove seuvijae poklona.Polazi se od jednog temena "poklona", i onda se onuvija u konveksni omotaq pronalazei teme po teme omotaqa. Algoritamopisuje naredni kod. Algoritam se moe prepraviti tako da radi i uprostorima vee dimenzije.

Algoritam uvijae poklona je direktna posledica primene sledeeinduktivne hipoteze (po 𝑘):

Induktivna hipoteza. Za zadati skup od 𝑛 taqaka u ravni, umemo dapronaemo konveksni put duine 𝑘 < 𝑛 koji je deo konveksnog omotaqaskupa.

Kod ove hipoteze naglasak je na proxirivau puta, a ne omotaqa.Umesto da pronalazimo konveksne omotaqe maih skupova, mi pronalazimodeo konaqnog konveksnog omotaqa.

Sloenost. Da bismo dodali 𝑘-to teme omotaqu, treba da pronaemopravu sa najmaim uglom u skupu od 𝑛− 𝑘 pravih. Zbog toga je vremenskasloenost algoritma uvijae poklona 𝑂(𝑛2), odnosno ako konaqni omotaqima 𝑚 taqaka, sloenost je 𝑂(𝑚𝑛).

Page 16: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

2.4. Konveksni omotaq 16

Algoritam Uvijanje poklona(𝑝1, 𝑝2, . . . , 𝑝𝑛);

Ulaz: 𝑝1, 𝑝2, . . . , 𝑝𝑛 (skup taqaka u ravni).

Izlaz: 𝑃 (konveksni omotaq taqaka 𝑝1, 𝑝2, . . . , 𝑝𝑛).

begin

Neka je 𝑃 prazan skup;

Neka je 𝑝 taqka sa najveom 𝑥-koordinatom

(i sa najmaom 𝑦-koordinatom, ako ima vixe

taqka sa najveom 𝑥-koordinatom);

Ukuqi 𝑝 u skup 𝑃 ;

Neka je 𝐿 prava kroz 𝑝 paralelna sa 𝑥-osom;

while omotaq 𝑃 nije zavrxen do

Neka je 𝑞 taqka za koju je najmai ugao izmeu 𝐿 i −𝑝− 𝑞−;

Ukuqi 𝑞 u skup 𝑃 ;

𝐿 := prava − 𝑝− 𝑞−;

𝑝 := 𝑞

end

2.4.3 Grejemov algoritam

Sada emo razmotriti algoritam za nalaee konveksnog omotaqa slo-enosti𝑂(𝑛 log 𝑛). Zapoqie se sortiraem taqaka prema uglovima, sliqnokao pri konstrukciji prostog mnogougla u odeku 2.3. Neka je 𝑝1 taqkasa najveom 𝑥-koordinatom (i sa najmaom 𝑦-koordinatom, ako ima vixetaqaka sa najveom 𝑥-koordinatom). Za svaku taqku 𝑝𝑖 izraqunavamo ugaoizmeu prave −𝑝1 − 𝑝𝑖− i 𝑥-ose, i sortiramo taqke prema veliqini ovihuglova, videti sliku 2.6. Taqke prolazimo redosledom kojim se pojavuju u(prostom) mnogouglu, i pokuxavamo da identifikujemo temena konveksnogomotaqa. Kao i kod algoritma uvijae poklona pamtimo put sastavenod dela proenih taqaka. Preciznije, to je konveksni put qiji konveksnimnogougao sadri sve do sada pregledane taqke (odgovarajui konvek-sni mnogougao dobija se povezivaem prve i poslede taqke puta). Zbogtoga, u trenutku kad su sve taqke pregledane, konveksni omotaq skupataqaka je konstruisan. Osnovna razlika izmeu ovog algoritma i uvijaapoklona je u qienici da tekui konveksni put ne mora da bude deokonaqnog konveksnog omotaqa. To je samo deo konveksnog omotaqa do sadapregledanih taqaka. Put moe da sadri taqke koje ne pripadaju konaqnomkonveksnom omotaqu; te taqke bie eliminisane kasnije. Na primer, put od𝑝1 do 𝑞𝑚 na slici 2.6 je konveksan, ali 𝑞𝑚 i 𝑞𝑚−1 oqigledno ne pripadajukonveksnom omotaqu. Ovo razmatrae sugerixe algoritam zasnovan nasledeoj induktivnoj hipotezi.

Induktivna hipoteza. Ako je dato 𝑛 taqaka u ravni, ureenih premaalgoritmu 𝑃𝑟𝑜𝑠𝑡 𝑚𝑛𝑜𝑔𝑜𝑢𝑔𝑎𝑜 (odeak 2.3), onda umemo da konstruixemokonveksni put preko nekih od prvih 𝑘 taqaka, takav da odgovarajui kon-veksni mnogougao obuhvata prvih 𝑘 taqaka.

Sluqaj 𝑘 = 1 je trivijalan. Oznaqimo konveksni put dobijen (induktivno)za prvih 𝑘 taqaka sa 𝑃 = 𝑞1, 𝑞2, . . . , 𝑞𝑚. Sada treba da proxirimo induktivnuhipotezu na 𝑘+ 1 taqaka. Posmatrajmo ugao izmeu pravih −𝑞𝑚−1− 𝑞𝑚− i

Page 17: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

17 2. Geometrijski algoritmi

r rr

r

rrr r

𝑝1

𝑞𝑚−1

𝑞𝑚

𝑝𝑘+1

Slika 2.6: Grejemov algoritam za nalaee konveksnog omotaqa skupataqaka.

−𝑞𝑚−𝑝𝑘+1− (videti sliku 2.6). Ako je taj ugao mai od 𝜋 (pri qemu se ugaomeri iz unutraxosti mnogougla), onda se 𝑝𝑘+1 moe dodati postojeemputu (novi put je zbog toga takoe konveksan), qime je korak indukcijezavrxen. U protivnom, tvrdimo da 𝑞𝑚 lei u mnogouglu dobijenom zamenom𝑞𝑚 u 𝑃 taqkom 𝑝𝑘+1, i povezivaem 𝑝𝑘+1 sa 𝑝1. Ovo je taqno jer su taqkeureene preme odgovarajuim uglovima. Prava −𝑝1 − 𝑝𝑘+1− lei "levo"od prvih 𝑘 taqaka. Zbog toga 𝑞𝑚 jeste unutar gore definisanog mnogougla,moe se izbaciti iz 𝑃 , a 𝑝𝑘+1 se moe dodati. Da li je time sve uraeno?Ne sasvim. Iako se 𝑞𝑚 moe eliminisati, modifikovani put ne mora uvekda bude konveksan. Zaista, slika 2.6 jasno pokazuje da postoje sluqajevi kadtreba eliminisati jox taqaka. Na primer, taqka 𝑞𝑚−1 moe da bude unutarmnogougla definisanog modifikovanim putem. Moramo da (unazad) nastavimosa proverama poslede dve grane puta, sve dok ugao izmeu ih ne postanemai od 𝜋. Put je tada konveksan, a hipoteza je proxirena na 𝑘+ 1 taqku.

Algoritam Grahamov algoritam(𝑝1, 𝑝2, . . . , 𝑝𝑛);

Ulaz: 𝑝1, 𝑝2, . . . , 𝑝𝑛 (skup taqaka u ravni).

Izlaz: 𝑞1, 𝑞2, . . . , 𝑞𝑚 (konveksni omotaq taqaka 𝑝1, 𝑝2, . . . , 𝑝𝑛).

begin

Neka je 𝑝1 taqka sa najveom 𝑥-koordinatom (a najmaom 𝑦-koordinatom,

ako ima vixe taqaka sa najveom 𝑥-koordinatom);

Pomou algoritma 𝑃𝑟𝑜𝑠𝑡 𝑚𝑛𝑜𝑔𝑜𝑢𝑔𝑎𝑜 urediti taqke u odnosu na 𝑝1;

neka je to redosled 𝑝1, 𝑝2, . . . , 𝑝𝑛;

𝑞1 := 𝑝1;

𝑞2 := 𝑝2;

𝑞3 := 𝑝3; put 𝑃 se na poqetku sastoji od 𝑝1, 𝑝2 i 𝑝3𝑚 := 3;

for 𝑘 := 4 to 𝑛 do

while ugao izmeu − 𝑞𝑚−1 − 𝑞𝑚 − i − 𝑞𝑚 − 𝑝𝑘−) ≥ 𝜋 do

𝑚 := 𝑚− 1;

𝑚 := 𝑚+ 1;

𝑞𝑚 := 𝑝𝑘 na slici 2.6 to je 𝑝𝑘+1end

Sloenost. Glavni deo sloenosti algoritma potiqe od poqetnog sor-

Page 18: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

2.5. Preseci horizontalnih i vertikalnih dui 18

tiraa. Ostatak algoritma izvrxava se za vreme 𝑂(𝑛). Svaka taqka skuparazmatra se taqno jednom u induktivnom koraku kao 𝑝𝑘+1. U tom trenutkutaqka se uvek dodaje konveksnom putu. Ista taqka bie razmatrana i kasnije(moda qak i vixe nego jednom) da bi se proverila ena pripadnostkonveksnom putu. Broj taqaka na koje se primeuje ovakav povratni testmoe biti veliki, ali se sve one, sem dve (tekua taqka i taqka za koju seispostava da dae pripada konveksnom putu) eliminixu, jer taqka moebiti eliminisana samo jednom! Prema tome, troxi se najvixe konstantnovreme za eliminaciju svake taqke i konstantno vreme za eno dodavae.Ukupno je za ovu fazu potrebno 𝑂(𝑛) koraka. Zbog sortiraa je vremeizvrxavaa kompletnog algoritma 𝑂(𝑛 log 𝑛).

2.5 Preseci horizontalnih i vertikalnih dui

Qesto se nailazi na probleme nalaea preseka. Ponekad je potrebnopronalaee preseka vixe objekata, a ponekad samo treba otkriti da lije presek neprazan skup. Problemi detekcije su obiqno lakxi. U ovomodeku prikazaemo jedan problem nalaea preseka, koji ilustruje vanutehniku za rexavae geometrijskih problema. Ista tehnika moe se pri-meniti i na druge probleme.

Problem. Za zadati skup od 𝑛 horizontalnih i 𝑚 vertikalnih duipronai sve ihove preseke.

Ovaj problem vaan je, na primer, pri projektovau kola VLSI (in-tegrisanih kola sa ogromnim brojem elemenata). Kolo moe da sadrina hiade "iqica", a projektant treba da bude siguran da ne postojeneoqekivani preseci. Na problem se takoe nailazi pri eliminaciji skri-venih linija kada je potrebno zakuqiti koje ivice ili delovi ivicasu skriveni samim objektom ili nekim drugim objektom; taj problem jeobiqno komplikovaniji, jer se ne radi samo o horizontalnim i vertikalnimlinijama. Primer ulaza za ovaj problem prikazan je na slici 2.7.

𝐿

Slika 2.7: Preseci horizontalnih i vertikalnih dui.

Nalaee svih preseka vertikalnih dui je jednostavan problem, kojise ostava qitaocu za vebae (isto se odnosi i na horizontalne dui).Pretpostavimo zbog jednostavnosti da ne postoje preseci izmeu proizvonedve horizontalne, odnosno proizvone dve vertikalne dui. Ako pokuxamoda problem reximo uklaaem jedne po jedne dui (bilo horizontalne,bilo vertikalne), onda e biti neophodno da se pronau preseci ukloene

Page 19: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

19 2. Geometrijski algoritmi

dui sa svim ostalim duima, pa se dobija algoritam sa 𝑂(𝑚𝑛) nalaeapreseka dui. U opxtem sluqaju broj preseka moe da bude 𝑂(𝑚𝑛), paalgoritam moe da utroxi vreme 𝑂(𝑚𝑛) ve samo za prikazivae svihpreseka. Meutim, broj preseka moe da bude mnogo mai od 𝑚𝑛. Volelibismo da konstruixemo algoritam koji radi dobro kad ima malo preseka,a ne previxe loxe ako preseka ima mnogo. Dakle ci nam je da problemreximo korixeem algoritma osetivog na izlaz, qija sloenost zavisii od veliqine ulaza i od veliqine izlaza. To se moe postii kombinovaemdveju ideja: izbora specijalnog redosleda indukcije i pojaqavaa induk-tivne hipoteze.

Redosled primene indukcije moe se odrediti pokretnom pravom (eng.sweeping line) koja prelazi ("skenira") ravan sleva udesno; dui se razmatrajuonim redom kojim na ih nailazi pokretna prava. Pored nalaea preseqnihtaqaka, treba quvati i neke podatke o duima koje je pokretna pravave zahvatila. Ti podaci bie korisni za efikasnije nalaee narednihpreseka. Ova tehnika zove se tehnika pokretne linije.

Zamislimo vertikalnu pravu koja prelazi ravan sleva udesno. Da bismoostvarili efekat prebrisavaa, sortiramo sve krajeve dui prema ihovim𝑥-koordinatama. Dve kraje taqke vertikalne dui imaju iste 𝑥-koordinate,pa se registruje samo jedna 𝑥-koordinata Za horizontalne dui moraju sekoristiti oba kraja. Posle sortiraa krajeva, dui se razmatraju jednapo jedna utvrenim redosledom. Kao i obiqno pri induktivnom pristupu,pretpostavamo da smo pronaxli preseqne taqke prethodnih dui, i dasmo obezbedili neke dopunske informacije, pa sada pokuxavamo da obradimosledeu du i da unesemo neophodne dopune informacija. Prema tomestruktura algoritma je u osnovi sledea. Razmatramo krajeve dui jedanpo jedan, sleva udesno. Koristimo informacije prikupene do sada (nismoih jox specificirali) da obradimo kraj dui, pronaemo preseke u kojimaona uqestvuje, i dopuujemo informacije da bismo ih koristili pri sledeemnailasku na neki kraj dui. Osnovni problem je definisae informacijakoje treba prikupati. Pokuxajmo da pokrenemo algoritam da bismo otkrilikoje su to informacije potrebne.

Prirodno je u induktivnu hipotezu ukuqiti poznavae svih preseqnihtaqaka dui koje se nalaze levo od trenutnog poloaja pokretne prave.Da li je boe proveravati preseke kad se razmatra horizontalna ilivertikalna du? Kad razmatramo vertikalnu du, horizontalne duikoje je mogu sei jox uvek se razmatraju (poxto nije dostignut ihovdesni kraj). S druge strane, kad posmatramo bilo levi, bilo desni krajhorizontalne dui, mi ili nismo naixli na vertikalne dui koje jeseku, ili smo ih ve zaboravili. Dakle, boe je preseke brojati prilikomnailaska na vertikalnu du. Pretpostavimo da je pokretna prava trenutnopreklopila vertikalnu du 𝐿 (videti sliku 2.7). Kakve informacije supotrebne da se pronau svi preseci dui 𝐿? Poxto se pretpostava dasu svi preseci levo od trenutnog poloaja pokretne prave ve poznati,nema potrebe razmatrati horizontalnu du ako je en desni kraj levood pokretne prave. Prema tome, treba razmatrati samo one horizontalnedui qiji su levi krajevi levo, a desni krajevi desno od trenutnog poloajapokretne prave (na slici 2.7 takvih dui ima xest). Potrebno je quvatilistu takvih horizontalnih dui (odnosno ihovih 𝑦-koordinata). Kadse naie na vertikalnu du 𝐿, potrebno je proveriti da li se ona seqe sa

Page 20: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

2.5. Preseci horizontalnih i vertikalnih dui 20

tim horizontalnim duima. Vano je primetiti da za nalaee presekasa 𝐿 ovde 𝑥-koordinate krajeva dui nisu od znaqaja. Mi ve znamo dahorizontalne dui iz liste imaju 𝑥-koordinate koje "pokrivaju" 𝑥-koordinatudui 𝐿. Potrebno je proveriti samo 𝑦-koordinate horizontalnih dui izliste, da bi se proverilo da li su one obuhvaene opsegom 𝑦-koordinatadui 𝐿. Sada smo spremni da formulixemo induktivnu hipotezu.

Induktivna hipoteza. Neka je zadata lista od prvih 𝑘 sortiranih 𝑥-koordinata krajeva dui kao xto je opisano, pri qemu je 𝑥𝑘 najvea od𝑥-koordinata. Umemo da pronaemo sve preseke dui koji su levo od 𝑥𝑘, ida eliminixemo sve horizontalne dui koje su levo od 𝑥𝑘.

Za horizontalne dui koje se jox uvek razmatraju rei emo da sukandidati (to su horizontalne dui qiji su levi krajevi levo, a desnikrajevi desno od tekueg poloaja pokretne prave). Formiraemo i odravatistrukturu podataka koja sadri skup kandidata. Odloiemo za trenutakanalizu realizacije ove strukture podataka.

Bazni sluqaj za navedenu induktivnu hipotezu je jednostavan. Da bismoje proxirili, potrebno je da obradimo (𝑘 + 1)-i kraj dui. Postoje trimogunosti.

1. (𝑘 + 1)-i kraj dui je desni kraj horizontalne dui; du se tadaprosto eliminixe iz spiska kandidata. Kao xto je reqeno, presecise pronalaze pri razmatrau vertikalnih dui, pa se ni jedan odpreseka ne gubi eliminacijom horizontalne dui. Ovaj korak dakleproxiruje induktivnu hipotezu.

2. (𝑘 + 1)-i kraj dui je levi kraj horizontalne dui; du se tadadodaje u spisak kandidata. Poxto desni kraj dui nije dostignut,du se ne sme jox eliminisati, pa je i u ovom sluqaju induktivnahipoteza proxirena na ispravan naqin.

3. (𝑘+1)-i kraj dui je vertikalna du. Ovo je osnovni deo algoritma.Preseci sa ovom vertikalnom dui mogu se pronai uporeivaem𝑦-koordinata svih horizontalnih dui iz skupa kandidata sa 𝑦-ko-ordinatama krajeva vertikalne dui.

Algoritam je sada kompletan. Broj uporeivaa e obiqno biti mnogomai od 𝑚𝑛. Na alost, u najgorem sluqaju ovaj algoritam ipak zahteva𝑂(𝑚𝑛) uporeivaa, qak iako je broj preseka mali. Ako se, na primer,sve horizontalne dui prostiru sleva udesno ("celom xirinom"), ondase mora proveriti presek svake vertikalne dui sa svim horizontalnimduima, xto implicira sloenost 𝑂(𝑚𝑛). Ovaj najgori sluqaj pojavujese qak i ako nijedna vertikalna du ne seqe nijednu horizontalnu du.

Da bi se usavrxio algoritam, potrebno je smaiti broj uporeivaa𝑦-koordinata vertikalne dui sa 𝑦-koordinatama horizontalnih dui uskupu kandidata. Neka su 𝑦-koordinate dui koja se trenutno razmatra𝑦𝐷 i 𝑦𝐺, i neka su 𝑦-koordinate horizontalnih dui iz skupa kandidata𝑦1, 𝑦2, . . . , 𝑦𝑟. Pretpostavimo da su horizontalne dui u skupu kandidatazadate sortirano prema 𝑦-koordinatama (odnosno niz 𝑦1, 𝑦2, . . . , 𝑦𝑟 je rastui).Horizontalne dui koje se seku sa vertikalnom mogu se pronai izvoeemdve binarne pretrage, jedne za 𝑦𝐷, a druge za 𝑦𝐺. Neka je 𝑦𝑖 < 𝑦𝐷 ≤ 𝑦𝑖+1 ≤

Page 21: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

21 2. Geometrijski algoritmi

𝑦𝑗 ≤ 𝑦𝐺 < 𝑦𝑗+1. Vertikalnu du seku horizontalne sa koordinatama 𝑦𝑖+1,𝑦𝑖+2,. . . 𝑦𝑗 , i samo one. Moe se takoe izvrxiti jedna binarna pretragaza npr. 𝑦𝐷, a zatim prolaziti 𝑦-koordinate dok se ne doe do 𝑦𝑗 . Iakoje polazni problem dvodimenzionalan, nalaee 𝑦𝑖+1, . . . 𝑦𝑗 je jednodi-menzionalni problem. Traee brojeva u jednodimenzionalnom opsegu (uovom sluqaju od 𝑦𝐷 do 𝑦𝐺) zove se jednodimenzionalna pretraga opsega.Ako su brojevi sortirani, onda je vreme izvrxea jednodimenzionalnepretrage opsega proporcionalno zbiru vremena traea prvog preseka ibroja pronaenih preseka. Naravno, ne moemo da priuxtimo sebi sortiraehorizontalnih dui pri svakom nailasku na vertikalnu du.

Prisetimo se jox jednom zahteva. Potrebna je struktura podataka pogodnaza quvae kandidata, koja dozvoava umetae novog elementa, brisaeelementa i efikasno izvrxee jednodimenzionalne pretrage opsega. Nasreu, postoji vixe struktura podataka| na primer, uravnoteeno stablo| koja omoguuju izvrxee umetaa, brisaa i traea sloenosti𝑂(log 𝑛) po operaciji (gde je 𝑛 broj elemenata u skupu), i linearno pretra-ivae za vreme proporcionalno broju pronaenih elemenata. Pretragazapoqie traeem 𝑦𝐷 i 𝑦𝐺 u stablu koje sadri kandidate 𝑦1, . . . , 𝑦𝑟.Neka su putevi koji se pri tome prelaze polazei od korena stabla oznaqenisa 𝑃𝐷, 𝑃𝐺, i neka je 𝑣 posledi zajedniqki qvor za ta dva puta. Rezultatpretrage su kuqevi kompletnih desnih podstabala qvorova sa puta 𝑃𝐷

(ispod 𝑣) u kojima put nastava levom granom, i (simetriqno) kompletnihlevih podstabala qvorova sa puta 𝑃𝐺 (ispod 𝑣) u kojima put nastavadesnom granom. Ovim su obuhvaeni svi qvorovi u unutraxim podstablimakoja su ograena putevima 𝑃𝐷 i 𝑃𝐺. Tokom obilaska, takoe se proveravajui prijavuju svi qvorovi na putevima 𝑃𝐷 i 𝑃𝐺 koji lee u intervalu.

Sloenost. Poqetno sortirae prema 𝑥-koordinatama krajeva duizahteva 𝑂((𝑚 + 𝑛) log(𝑚 + 𝑛)) koraka. Poxto svako umetae i brisaezahteva 𝑂(log 𝑛) koraka, ukupno vreme za obradu horizontalnih dui je𝑂(𝑛 log 𝑛). Obrada vertikalnih dui zahteva jednodimenzionalnu pretraguopsega, koja se moe izvrxiti za vreme 𝑂(log 𝑛 + 𝑟), gde je 𝑟 broj presekaove vertikalne dui. Vremenska sloenost algoritma je dakle

𝑂((𝑚 + 𝑛) log(𝑚 + 𝑛) + 𝑅),

gde je 𝑅 ukupan broj preseka.

Page 22: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

2.5. Preseci horizontalnih i vertikalnih dui 22

Slika 2.8: Primer jednodimenzionalne pretrage opsega. Kandidati, ih25, upisani su u uravnoteeno stablo, a ispisuju se kandidati izintervala [30,39]. Rezultat qine tamno sivi i crni qvorovi.

Algoritam Preseci((𝑣1, 𝑣2, . . . , 𝑣𝑚), (ℎ1, ℎ2, . . . , ℎ𝑛));

Ulaz: 𝑣1, 𝑣2, . . . , 𝑣𝑚 (skup vertikalnih dui), iℎ1, ℎ2, . . . , ℎ𝑛 (skup horizontalnih dui).

𝑦𝐺(𝑣𝑖) i 𝑦𝐺(𝑣𝑖) su maa i vea 𝑦-koordinata dui 𝑣𝑖Izlaz: Skup svih parova dui koje imaju presek.

begin

Sortirati sve 𝑥-koordinate u neopadajui niz i smestiti ih u 𝑄;

𝑉 := ∅;𝑉 je skup horizontalnih dui, trenutnih kandidata za preseke; organizovanje kao uravnoteeno stablo prema 𝑦-koordinatama horizontalnih duiwhile 𝑄 je neprazan do

ukloniti iz 𝑄 naredni kraj dui, 𝑝;

if 𝑝 je desni kraj dui ℎ𝑘 then

ukloniti ℎ𝑘 iz 𝑉

else if 𝑝 je levi kraj dui ℎ𝑘 then

ukuqiti ℎ𝑘 u 𝑉

else if 𝑝 je 𝑥-koordinata vertikalne dui 𝑣𝑖 then

nalaee preseka kandidata sa vertikalnom duijednodimenzionalna pretraga opsega od 𝑦𝐺(𝑣𝑖) do 𝑦𝐺(𝑣𝑖) u 𝑉

end

Page 23: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

23 2. Geometrijski algoritmi

2.6 Odreivae dve najudaenije taqke u ravni

Qesto je, pored dve najblie taqke, vano odrediti i dve najudaenijetaqke u nekom skupu taqaka. Neka je 𝑆 skup od 𝑛 taqaka u ravni i nekaje zadatak odrediti dijametar 𝐷(𝑆) skupa taqaka 𝑆 koji se definixe kaonajvee rastojae neke dve taqke iz 𝑆:

𝐷(𝑆) = max𝑑(𝑝, 𝑞) | 𝑝, 𝑞 ∈ 𝑆

Pritom elimo da utvrdimo i koje su to dve taqke 𝑎 i 𝑏 za koje vaida je 𝑑(𝑎, 𝑏) = 𝐷(𝑆) (moemo da razlikujemo dve varijante ovog problema:nai bilo koji par takvih taqaka ili sve parove koji zadovoavaju ovajuslov). Direktan naqin da reximo ovaj problem sastojao bi se od raqunaarastojaa 𝑑(𝑝, 𝑞) za svaki par taqaka (𝑝, 𝑞) i odreivaa najvee od tihvrednosti. S obzirom na to da se raqunae rastojaa dve taqke moeuraditi u konstantnom vremenu i da je broj parova taqaka jednak

(𝑛2

), ovaj

algoritam je sloenosti 𝑂(𝑛2). Pokazaemo u nastavku teksta da se ovajproblem moe rexiti i algoritmom sloenosti 𝑂(𝑛 log 𝑛).

Lema 2.1. Dijametar skupa taqaka 𝑆 jednak je dijametru skupa temenaegovog konveksnog omotaqa 𝑆′.

Dokaz. Neka su 𝑝 i 𝑞 dve razliqite taqke skupa 𝑆 tako da nisu obe u 𝑆′. Bezsmaea opxtosti pretpostavimo da 𝑞 /∈ 𝑆′. Pokaimo da onda vai dapostoji taqka 𝑟 u 𝑆′ tako da je 𝑑(𝑝, 𝑞) < 𝑑(𝑝, 𝑟). Bez naruxavaa opxtosti,pretpostavimo da je prava kroz taqke 𝑝 i 𝑞 horizontalna i da je 𝑝 levood 𝑞. S obzirom na to da taqka 𝑞 ne pripada konveksnom omotaqu, morada postoji teme konveksnog omotaqa 𝑟 koje je na vertikalnoj pravoj kroz𝑞 ili desno od e. Nejednakost 𝑑(𝑝, 𝑞) < 𝑑(𝑝, 𝑟) sledi iz qienica da je utrouglu (𝑝, 𝑞, 𝑟) ugao kod temena 𝑞 prav ili tup (a naspram najveeg ugla utrouglu uvek lei najvea stranica).

Dakle, da bismo izraqunali dijametar skupa taqaka u ravni, dovonoje razmotriti samo temena koja pripadaju egovom konveksnom omotaqu.Drugim reqima, bez smaea opxtosti moe se pretpostaviti da su taqkeiz skupa 𝑆 temena konveksnog mnogougla, pri qemu su svi uglovi konveksnogomotaqa mai od 𝜋 (ako je ugao mnogougla u nekom temenu jednak 𝜋, ondato teme ne pripada konveksnom omotaqu).

Lema 2.2. Neka je 𝑙 prava kroz taqke 𝑝1 i 𝑝2. Niz rastojaa preostalihtaqaka do prave 𝑙: 𝑑(𝑝3, 𝑙), 𝑑(𝑝4, 𝑙), . . . , 𝑑(𝑝𝑛, 𝑙) raste do neke vrednosti 𝑑(𝑝𝑖, 𝑙),a zatim opada.

Dokaz. Ovo tvree sledi direktno iz qienice da su taqke skupa 𝑆temena konveksnog mnogougla.

Ako je 𝑒 neka ivica konveksnog omotaqa, oznaqimo sa 𝑙𝑒 pravu kojasadri 𝑒. Neka je 𝐿 skup svih parova (𝑝, 𝑞) za koje za jednu od ivica 𝑒konveksnog omotaqa koje sadre 𝑝 vai da je 𝑞 najdaa taqka konveksnogomotaqa od 𝑙𝑒, odnosno vai da je: 𝑑(𝑞, 𝑙𝑒) = max𝑑(𝑟, 𝑙𝑒)|𝑟 ∈ 𝑆. U primeruna slici 2.9 taqka 𝑞 je na maksimalnom rastojau od prave 𝑙𝑒. Ako sa𝑙𝑞𝑒 oznaqimo pravu kroz 𝑞 koja je paralelna sa 𝑙𝑒, tada su sve taqke iz 𝑆

Page 24: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

2.6. Odreivae dve najudaenije taqke u ravni 24

izmeu 𝑙𝑒 i 𝑙𝑞𝑒 (zbog konveksnosti, prava 𝑙𝑞𝑒 moe da sadri najvixe joxjednu taqku skupa 𝑆). Stoga je par (𝑝, 𝑞) sadran u skupu 𝐿.

Slika 2.9: Ilustracija definicije skupa 𝐿. Ivica 𝑒 ima 𝑝 kao krajutaqku i 𝑞 je najudaenija od 𝑙𝑒. Stoga skup 𝐿 sadri par (𝑝, 𝑞)

Lema 2.3. Dijametar skupa 𝑆 jednak je najveem rastojau 𝑑(𝑝, 𝑞) za nekipar iz skupa 𝐿.

Dokaz. Neka su 𝑎 i 𝑏 dve taqke iz 𝑆 takve da je 𝑑(𝑎, 𝑏) = 𝐷(𝑆). Pokaimoda je par (𝑎, 𝑏) ili par (𝑏, 𝑎) sadran u 𝐿, qime e lema biti dokazana.

Slika 2.10: Ilustracija dokaza leme 3. Prava kroz 𝑎 i 𝑒 je prva kojanailazi na ivicu konveksnog omotaqa.

Bez naruxavaa opxtosti, pretpostavimo da je prava kroz 𝑎 i 𝑏 hori-zontalna. Sve taqke iz 𝑆 ∖ 𝑎, 𝑏 su strogo izmeu dve vertikalne pravekroz 𝑎 i 𝑏 (inaqe bi dijametar skupa 𝑆 bio vei od 𝑑(𝑎, 𝑏)). Rotirajmo

Page 25: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

25 2. Geometrijski algoritmi

ove dve prave simultano u smeru kazae na qasovniku oko 𝑎 i 𝑏 i stanimoqim se jedna od ih poklopi sa stranicom konveksnog omotaqa skupa 𝑆;prilikom rotacije ove dve prave ostaju paralelne (slika 2.10). Neka je𝑒 ivica sa kojom se dexava prvo preklapae. Ako je 𝑎 kraja taqka oveivice, nije texko zakuqiti da 𝑏 ima najvee rastojae do prave kroz 𝑒.Stoga je par (𝑎, 𝑏) sadran u skupu 𝐿. Sliqno, ukoliko je 𝑏 kraja taqkaivice 𝑒, onda je par (𝑏, 𝑎) sadran u 𝐿.

Na osnovu prethodne leme zakuqujemo da dijametar moemo izraqunatina sledei naqin: najpre odredimo skup 𝐿, a zatim odredimo i sva rastojaaodreena elementima iz 𝐿 i pronaemo najvee. Pokaimo da skup 𝐿sadri najvixe 4𝑛 elemenata, pri qemu je sa 𝑛 oznaqen broj ivica konveksnogmnogougla 𝑆. Uoqimo jednu ivicu 𝑒 konveksnog omotaqa. Ona je ograniqenadvema taqkama. Postoje najvixe dve taqke skupa 𝑆 na maksimalnom rastojauod prave 𝑙𝑒 kroz 𝑒. Posledica ove qienice je da ovoj ivici odgovaranajvixe qetiri para u 𝐿 iz qega sledi da je veliqina skupa 𝐿 najvixe 4𝑛.Na osnovu toga zakuqujemo da je drugi korak algoritma sloenosti 𝑂(𝑛).Ostaje problem odreivaa skupa 𝐿. Pokazaemo da se on moe izraqunatiu vremenu 𝑂(𝑛).

Podsetimo se da smo taqke skupa 𝑆 numerisali kao 𝑝1, 𝑝2, . . . , 𝑝𝑛 u smerusuprotnom od kretaa kazake na qasovniku. Neka je 𝑒 ivica ograniqenataqkama 𝑝1 i 𝑝2 i neka je 𝑙𝑒 prava koja sadri 𝑒. elimo da pronaemonajvixe dve taqke skupa 𝑆 koje su na maksimalnom rastojau od 𝑙𝑒. Lema2.2 nam daje jednostavan postupak za odreivae ovih taqaka:

𝑗 ← 3while 𝑑(𝑝𝑗+1, 𝑙𝑒) > 𝑑(𝑝𝑗 , 𝑙𝑒) do

𝑗 ← 𝑗 + 1Pritom se podrazumeva da se indeksi taqaka raqunaju po modulu 𝑛, tj.da vai 𝑝𝑛+1 = 𝑝1. Na kraju ove while pete imamo da vai 𝑑(𝑝3, 𝑙𝑒) <𝑑(𝑝4, 𝑙𝑒) < . . . < 𝑑(𝑝𝑗 , 𝑙𝑒) i 𝑑(𝑝𝑗+1, 𝑙𝑒) ≤ 𝑑(𝑝𝑗 , 𝑙𝑒). Ako je 𝑑(𝑝𝑗+1, 𝑙𝑒) < 𝑑(𝑝𝑗 , 𝑙𝑒)onda je 𝑝𝑗 jedina taqka sa maksimalnim rastojaem do 𝑙𝑒 i dodajemo dvapara (𝑝1, 𝑝𝑗) i (𝑝2, 𝑝𝑗) u 𝐿. Inaqe, imamo 𝑑(𝑝𝑗+1, 𝑙𝑒) = 𝑑(𝑝𝑗 , 𝑙𝑒) i dodajemoqetiri para (𝑝1, 𝑝𝑗), (𝑝1, 𝑝𝑗+1), (𝑝2, 𝑝𝑗), (𝑝2, 𝑝𝑗+1) u 𝐿. Na ovaj naqin smoobradili prvu ivicu 𝑒. Ukupno utroxeno vreme je 𝑂(𝑛), jer indeks 𝑗prolazi 𝑛 vrednosti.

Neka je 𝑒′ naredna ivica konveksnog omotaqa, koja ima kraje taqke 𝑝2i 𝑝3. Razmotrimo kako moemo da efikasno pronaemo najvixe dve taqkeskupa 𝑆 koja su na maksimalnom rastojau od 𝑙𝑒′ .

Lema 2.4. Neka je indeks 𝑗 takav da vai da je 𝑝𝑗 na najveem rastojauod prave 𝑙𝑒. Sliqno, neka je indeks 𝑖 takav da je taqka 𝑝𝑖 na najveemrastojau od 𝑙′𝑒. Tada je 𝑗 ≤ 𝑖 ≤ 𝑛 ili 𝑖 = 1.

Dokaz. Pretpostavimo bez naruxavaa opxtosti da je prava kroz 𝑝1 i 𝑝2horizontalna. Tada je 𝑝1 levo od 𝑝2. Neka je 𝑙𝑗 (analogno 𝑙′𝑗) prava kroz 𝑝𝑗paralelna sa 𝑙𝑒 (odnosno 𝑙′𝑒), videti sliku 2.11. S obzirom na to da je 𝑝𝑗 nanajveem rastojau od 𝑙𝑒, znamo da su taqke 𝑝4, 𝑝5, . . . , 𝑝𝑗−1 sve na pravoj 𝑙𝑗ili ispod e. Zbog konveksnosti ove taqke moraju da budu desno od prave𝑙′𝑗 (pokazati da je ovo taqno i ako je ugao u 𝑝2 mai od 𝜋/2). Stoga vai daje 𝑑(𝑝𝑗 , 𝑙

′𝑒) > 𝑑(𝑝𝑘, 𝑙

′𝑒), 𝑘 = 4, 5, . . . , 𝑗 − 1, dakle 𝑖 /∈ 4, 5, . . . , 𝑗 − 1. Jasno je

Page 26: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

2.6. Odreivae dve najudaenije taqke u ravni 26

Slika 2.11: Ilustracija dokaza leme 4.

i da je 𝑖 = 2 i 𝑖 = 3. Prema tome, na najdau taqku od 𝑒′ nailazi se posletaqke 𝑝𝑗 .

Posledica ove leme je sledea: da bismo naxli indeks 𝑖, ne moramo dakrenemo od 𝑝4 tokom obilaska konveksnog omotaqa; moemo krenuti od 𝑝𝑗 .

U opxtem sluqaju, neka je 𝑒𝑘 ivica konveksnog omotaqa sa krajimtaqkama 𝑝𝑘 i 𝑝𝑘+1 i neka je 𝑝𝑢 taqka na maksimalnom rastojau od prave 𝑙𝑘kroz 𝑒𝑘. Da bismo pronaxli taqku na maksimalnom rastojau od prave 𝑙𝑘+1

koja sadri narednu ivicu 𝑒𝑘+1, moemo razmotriti temena konveksnogomotaqa poqev od 𝑝𝑢 i razmotriti taqke 𝑝𝑢, 𝑝𝑢+1, . . . , 𝑝𝑛, 𝑝1, . . . , 𝑝𝑘 sve dokne pronaemo maksimalni element niza

𝑑(𝑝𝑢, 𝑙𝑘+1), 𝑑(𝑝𝑢+1, 𝑙𝑘+1), . . . , 𝑑(𝑝𝑛, 𝑙𝑘+1), 𝑑(𝑝1, 𝑙𝑘+1), . . . , 𝑑(𝑝𝑘, 𝑙𝑘+1)

za koji znamo da mu elementi prvo rastu, a zatim opadaju. Na ovaj naqinraqunamo skup 𝐿 i pritom prolazimo maksimalno dva puta oko konveksnogomotaqa, te se ovaj skup raquna u vremenu𝑂(𝑛). Stoga smo dokazali narednuteoremu:

Teorema 1. Neka je 𝑆 skup od 𝑛 taqaka u ravni. Dijametar skupa 𝑆 semoe izraqunati u vremenu 𝑂(𝑛 log 𝑛). Ako su taqke skupa 𝑆 date kaotemena konveksnog mnogougla, sortiranim redosledom, onda se dijametarmoe izraqunati u vremenu 𝑂(𝑛).

Komentar 2. Moe postojati vei broj taqaka koje su na maksimalnomrastojau, ali svi parovi takvih taqaka moraju biti sadrani u skupu𝐿. Stoga moe postojati najvixe 4𝑛 parova taqaka koje su na rastojau𝐷(𝑆) i predloeni algoritam ih sve pronalazi.

Razmotrimo jox nekoliko zanimivih geometrijskih problema.

Page 27: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

27 2. Geometrijski algoritmi

2.7 Duina unije dui na pravoj

Problem. Za dati skup od 𝑛 dui na pravoj, odrediti ukupnu duinukoju pokrivaju ove dui.

Ukoliko bi sve dui bile meusobno disjunktne, onda bismo problemlako rexili: sabrali bismo duine svih dui. Meutim, ove dui semogu preklapati (potencijalno i po nekoliko ih istovremeno), te jepotrebno razviti drugaqiji algoritam. Pretpostavimo da sve dui leena 𝑥-osi. Ideja je iskoristiti tehniku vertikalne pokretne prave kojaravan prelazi sleva udesno i koja redom prolazi skupom krajih taqakasvih datih dui.

Formirajmo od svih 𝑥 koordinata krajih taqaka dui niz 𝑡𝑎𝑐𝑘𝑒 duine2𝑛. Uz 𝑥 koordinatu taqke potrebno je uz svaki qlan niza pamtiti iinformaciju da li je taqka poqetna i kraja. Sortirajmo zatim ovaj nizprema 𝑥 koordinati neopadajue; ukoliko dve ili vixe taqaka imaju istuvrednost 𝑥 koordinate, prvo se u sortiranom nizu trebaju nalaziti krajetaqke, a zatim poqetne. Bie nam potreban jedan namenski brojaq 𝑏𝑟 qijaje vrednost u svakom trenutku broj preklopenih dui neposredno izapokretne prave (a pre narednog kraja dui) i koji na poqetku inicijalizujemona 0, i promeniva 𝑢𝑘𝑢𝑝𝑛𝑎 𝑑𝑢𝑧𝑖𝑛𝑎 koju takoe inicijalizujemo na nulu iqija vrednost treba da bude zbir duina dui koje je pokretna pravave \pregledala". Ova dva tvrea nam predstavaju invarijantu petealgoritma koji treba formulisati. Nakon toga prolazimo redom krozelemente niza i za svaki qlan niza ukoliko je vrednost brojaqa vea odnule promenivu 𝑢𝑘𝑢𝑝𝑛𝑎 𝑑𝑢𝑧𝑖𝑛𝑎 uveavamo za vrednost 𝑡𝑎𝑐𝑘𝑎[𝑖]− 𝑡𝑎𝑐𝑘𝑎[𝑖−1]. Prilikom nailaska na poqetnu taqku dui vrednost brojaqa inkrementiramo,a prilikom nailaska na kraju taqku dui vrednost brojaqa dekrementiramo(dakle u svakom trenutku vrednost brojaqa nam ukazuje na broj dui kojese u toj taqki preklapaju).

Ovaj algoritam (Klee, 1977.) predstava ilustraciju tehnike pokretneprave. Sloenost ovog algoritma je 𝑂(𝑛 log 𝑛) xto potiqe od poqetnogsortiraa krajih taqaka dui.

2.8 “Happy-ending” teorema

Teorema 3. Za svaki skup od 5 taqaka u ravni koje su u opxtem poloajupostoji qetvoroqlani podskup koji formira konveksni qetvorougao.

Ova teorema se moe jednostavno dokazati razmatraem sluqajeva.Ukoliko su od ovih pet taqaka qetiri ili pet taqaka temena konveksnogomotaqa, onda bilo koje qetiri taqke konveksnog omotaqa odreuju rexee.Ako skup taqaka ima oblik trougla sa dve taqke unutar ega, onda seuvek mogu odabrati dve unutraxe taqke i jedna od stranica trougla.Koju stranicu trougla biramo? S obzirom na to da su taqke u opxtempoloaju (tj. nikoje tri taqke nisu kolinearne), prava koja sadri dveunutraxe taqke skupa seqe taqno dve stranice trougla. Biramo treustranicu trougla i dve unutraxe taqke.

Na slici 2.12 prikazane su sve tri mogue konfiguracije na koje moemonaii prilikom analize sluqajeva. Ovaj rezultat je Pol Erdex nazvao

Page 28: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

2.9. Ispitivae da li u skupu od 𝑛 taqaka postoje tri

kolinearne taqke 28

Slika 2.12: Razliqite konfiguracije problema: kada se konveksni omotaqsastoji od pet, qetiri i tri taqke

“happy-ending” teorema jer se dvoje egovih prijatea koji su radili naovom problemu (or Sekerex i Ester Klajn) venqalo. Uopxtee ovogrezultata je teorema Erdex-Sekerex koja glasi:

Teorema 4. Najmai broj taqaka za koje svaki proizvoan raspored sadrikonveksni podskup od 𝑛 taqaka je 2𝑛−2 + 1.

Ona je i dae bez dokaza, ali su dokazane neke mae precizne granice.

2.9 Ispitivae da li u skupu od 𝑛 taqaka postoje tri kolinearne taqke

Problem. Neka je zadato 𝑛 taqaka u ravni. Potrebno je ispitati da limeu ima postoje neke tri koje su kolinearne.

Algoritam grube sile bi za svake tri taqke proveravao kolinearnost,pa bi sloenost bila 𝑂(𝑛3).

Za svaku taqku izraqunamo nagib prave kroz u i svaku od preostalih𝑛−1 taqaka skupa, a zatim taj niz nagiba sortiramo. Nakon toga potrebnoje proveriti da li postoje dve susedne iste vrednosti u ovom sortiranomnizu. Ako postoje, onda postoje tri kolinearne taqke. Sloenost ovogalgoritma je 𝑂(𝑛) za raqunae nagiba pravih, a zatim 𝑂(𝑛 log 𝑛) za ihovosortirae. To radimo 𝑛 puta, tako da je ukupna sloenost algoritma𝑂(𝑛2 log 𝑛).

2.10 Ispitivae da li u skupu od 𝑛 taqaka postoji kvadrat

Problem. Za datih 𝑛 taqaka u ravni potrebno je utvrditi da li postojeneke qetiri koje obrazuju kvadrat.

Algoritam grube sile bi za svake qetiri taqke proveravao da li obrazujukvadrat i bio bi sloenosti 𝑂(𝑛4). Algoritam moemo unaprediti takoxto za svake dve taqke moemo da izraqunamo koordinate potencijalnihkvadrata nad tom stranicom (postoje po dva takva kvadrata). Nakon toga,potrebno je ustanoviti da li se u skupu nalaze taqke sa datim koordinatama.Niz taqaka moemo sortirati rastue i onda primeniti binarnu pretragu.Algoritam je sloenosti 𝑂(𝑛2 log 𝑛).

Page 29: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

29 2. Geometrijski algoritmi

2.11 Rezime

Geometrijski algoritmi su na neki naqin mae apstraktni od grafovskih,jer smo navikli da vidimo i radimo sa geometrijskim objektima. Meutim,to je samo prvi utisak. Raditi sa ogromnim brojem objekata nije isto xtoi raditi sa malim slikama, pa moramo biti oprezni da nas predstavakoju imamo ne navede na pogrexne zakuqke. Moraju se predvideti mnogispecijalni sluqajevi. Algoritam za utvrivae pripadnosti taqke unutraxostimnogougla (odeak 2.2) je dobar primer. Zbog toga konstrukcija geometrijskihalgoritama zahteva poseban oprez.

U konstrukciji (diskretnih) geometrijskih algoritama vanu uloguigra indukcija. Tehnika pokretne prave, zasnovana na indukciji, zajedniqkaje za vixe geometrijskih algoritama; takoe se qesto koristi razlagae.Geometrijski algoritmi (izuzev najjednostavnijih) qesto zahtevaju komplikovanestrukture podataka, pa su mnoge sloene strukture podataka razvijeneupravo za tu namenu. Ovde nismo razmatrali ni jednu od takvih specijalnihstruktura podataka.

Page 30: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj
Page 31: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

Glava 3

Strukture podataka

3.1 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 3.1).

Slika 3.1: Primer AVL stabla.

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

Teorema 5. Za AVL stablo sa 𝑛 qvorova visina ℎ zadovoava uslov ℎ <2 log2 𝑛.

31

Page 32: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

3.1. AVL stabla 32

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 3.2. Oznaqimo sa 𝑛ℎ minimalni broj qvorova AVLstabla visine ℎ, tj. broj qvorova stabla 𝑇ℎ; 𝑛0 = 1, 𝑛1 = 2, 𝑛2 = 4, . . . Podefiniciji Fibonaqijevih stabala je 𝑛ℎ = 𝑛ℎ−1 + 𝑛ℎ−2 + 1, za ℎ ≥ 2. Sobzirom na to da je 𝑛ℎ > 𝑛ℎ−1 za svako ℎ ≥ 2 vai:

𝑛ℎ = 𝑛ℎ−1 + 𝑛ℎ−2 + 1 > 2𝑛ℎ−2 + 1 > 2𝑛ℎ−2

Dokaimo indukcijom da vai tvree 𝑛ℎ > 2ℎ/2. Za ℎ = 0 i ℎ = 1tvree vai. Pretpostavimo da tvree vai za ℎ− 2, odnosno da vai𝑛ℎ−2 > 2(ℎ−2)/2. Na osnovu veze 𝑛ℎ > 2𝑛ℎ−2 vai

𝑛ℎ > 2 · 2(ℎ−2)/2 = 2ℎ/2−1+1 = 2ℎ/2

odnosno nakon logaritmovaa obe strane dobijamo ℎ < 2 log2 𝑛ℎ ≤ 2 log2 𝑛jer je po pretpostavci za sva stabla visine ℎ broj qvorova 𝑛 vei ilijednak od 𝑛ℎ.

c c c cc c c c cc c c c

c𝑇0 𝑇1 𝑇2 𝑇3

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

Moe se pokazati i jaqe tvree.

Teorema 6. Za AVL stablo sa 𝑛 qvorova visina ℎ zadovoava uslov ℎ <1.441 log2 𝑛.

Dokaz. Krenimo od dobijene rekurentne jednaqine za minimalni broj qvorovaAVL stabla visine ℎ: 𝑛ℎ = 𝑛ℎ−1 + 𝑛ℎ−2 + 1. Vai 𝑛ℎ + 1 = (𝑛ℎ−1 +1) + (𝑛ℎ−2 + 1), za ℎ ≥ 2. Vidimo da brojevi 𝑛ℎ + 1 zadovoavaju istudiferencnu jednaqinu kao i Fibonaqijevi brojevi 𝐹ℎ (𝐹ℎ+2 = 𝐹ℎ+1 + 𝐹ℎ

za ℎ ≥ 1; 𝐹1 = 𝐹2 = 1). Uzimajui u obzir jednakost po prva dva qlananizova 𝑛0+1 = 𝐹3 = 2 i 𝑛1+1 = 𝐹4 = 3, indukcijom se neposredno pokazujeda vai 𝑛ℎ = 𝐹ℎ+3 − 1. Polazei od izraza za opxti qlan Fibonaqijevogniza

𝐹ℎ =1√5

((1 +√

5

2

)ℎ

−(

1−√

5

2

)ℎ)≥ 1√

5

((1 +√

5

2

)ℎ

− 1

)

Page 33: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

33 3. Strukture podataka

dobijamo

𝑛ℎ ≥1√5

((1 +√

5

2

)ℎ+3

− 1

)− 1 ≥ 1√

5

(1 +√

5

2

)ℎ+3

− 1.45,

Ova nejednakost ekvivalentna je sa

ℎ ≤ log(1+√5)/2(√

5(𝑛ℎ + 1.45))− 3 < 1.441 log2 𝑛ℎ ≤ 1.441 log2 𝑛

qime je teorema dokazana.

3.1.1 Operacije sa AVL stablom

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

Umetae elementa u AVL stablo

Prilikom umetaa novog elementa 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(videti sliku 3.3). 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 3.3.

U prvom sluqaju se na stablo primeuje rotacija: koren levogpodstabla𝐵 (videti sliku 3.4) 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 3.4). Novi koren podstabla postaje qvor𝐵, sa faktorom ravnotee 0.

Page 34: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

3.1. AVL stabla 34

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 3.3: 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 3.4: Uravnoteavae AVLstabla posle umetaa | rotacija.

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

ℎ+ 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 3.5: Uravnoteavae AVLstabla posle umetaa | dvostrukarotacija.

Zapaamo da u oba sluqaja visina podstabla kome je koren kritiqniqvor posle uravnoteavaa ostaje nepromeena. Uravnoteavae pod-

Page 35: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

35 3. Strukture podataka

stabla kome je koren kritiqan qvor zbog toga ne utiqe na ostatak stabla.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 uravno-teavaa visine iznad kritiqnog qvora ostaju nepromeene. Kompletanpostupak umetaa sa uravnoteavaem dakle izgleda ovako: idui nanieprilikom umetaa pamti se posledi qvor sa faktorom ravnotee razli-qitim od nule kritiqan qvor; kad se doe do mesta umetaa, ustanovavase da li je umetae na "dobroj" ili "pogrexnoj" strani u odnosu nakritiqan qvor, a onda se jox jednom prolazi put unazad do kritiqnogqvora, popravaju se faktori ravnotee i izvrxavaju eventualne rotacije.

Brisae elementa iz AVL stabla

Brisae je komplikovanije, kao i kod obiqnog BSP. U opxtem sluqaju seuravnoteavae ne moe izvesti pomou samo jedne ili dve rotacije. Naprimer, da bi se Fibonaqijevo stablo 𝐹ℎ sa 𝑛 qvorova uravnoteilo poslebrisaa "loxe" izabranog qvora, potrebno je izvrxiti ℎ − 2, odnosno𝑂(log 𝑛) rotacija (videti sliku 3.6 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 3.6: Uravnoteavae Fibonaqijevog stabla 𝑇4 posle brisaaqvora, pomou dve rotacije.

3.1.2 Sloenost osnovnih operacija sa AVL stablom

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.

Page 36: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

3.2. Skip liste 36

3.2 Skip liste

Ureena binarna stabla se qesto koriste za realizaciju reqnika. Ona sedobro ponaxaju ukoliko se elementi umeu sluqajnim redosledom. Meutim,neki nizovi operacija, kao xto je umetae elemenata ureenih rastueprema vrednosti degenerixu binarno stablo i kvare egove performanse.Algoritmi za rad sa uravnoteenim (balansiranim) stablima meajustrukturu stabla tokom izvrxavaa osnovnih operacija da bi se odraouslov uravnoteenosti i osigurale dobre performanse.

Skip lista (brza lista ili lista sa preqicama) je probabilistiqkaalternativa uravnoteenim stablima, kod koje se uravnoteee postiekorixeem generatora sluqajnih brojeva. Iako u najgorem sluqaju skipliste imaju loxe performanse, ni jedan ulaz ne odgovara konzistentnonajgorem sluqaju (sliqno algoritmu kviksort kada se pivot bira na sluqajannaqin). Malo je verovatno da skip lista bude znaqajno neuravnoteena.Dakle, skip lista ima svojstvo uravnoteenosti nalik ureenim binarnimstablima izgraenim sluqajnim umetaima elemenata, ali ne zahteva daumetaa budu sluqajna.

Prilikom rada sa obiqnom listom ponekad je potrebno pregledatisvaki qvor liste (slika 3.7a)). Ukoliko lista quva elemente u sortiranomredosledu i svaki drugi qvor ima i pokazivaq na qvor dva mesta ispredega u listi onda je maksimalni broj qvorova koje treba ispitati ⌈𝑛/2⌉+1 (gde je sa 𝑛 oznaqena ukupna duina liste); za traee se koristeproreeni pokazivaqi dok se ne naie na qvor sa kuqem veim od traenog(slika 3.7b)). Na primer, ako lista ima 5 qvorova i mi traimo elementkoji se nalazi na qetvrtom mestu u listi, najpre bismo ispitali prviqvor, zakuqili da je vrednost elementa koji traimo vea od vrednosti uovom qvoru i pokazivaqem koji preskaqe po dva qvora liste ispitali treiqvor liste, poxto je i egova vrednost maa od traene, naredni bismoispitali peti qvor liste. Meutim, vrednost petog qvora liste je vea odtraene, te bismo iz treeg qvora liste idui pokazivaqem koji povezujesusedne qvorove liste ispitali qetvrti qvor liste i zakuqili da setraena vrednost nalazi na tom mestu. Dakle ukupno bismo analizirali4 qvora liste xto je jednako ⌈5/2⌉+ 1.

Ako bi svaki qetvrti qvor pored toga imao i pokazivaq ka qvoruqetiri mesta ispred ega, maksimalni ukupan broj qvorova koje trebaanalizirati bio bi ⌈𝑛/4⌉ + 2 (slika 3.7c)). Ako svaki 2𝑖-ti qvor imapokazivaqe na qvorove 20, 21, . . . , 2𝑖 mesta ispred ega u listi, maksimalnibroj qvorova koje treba analizirati se smauje na𝑂(log2 𝑛), po cenu dupliraaukupnog broja pokazivaqa (slika 3.7d)). Ovakva struktura podataka bibila efikasna za pretragu, ali bi brisaa i umetaa bila potpuno nepraktiqna.

Nazovimo qvor koji ima 𝑘 pokazivaqa unapred qvorom nivoa 𝑘. Ukolikosvaki 2𝑖-ti qvor ima pokazivaq na qvor 2𝑖 mesta ispred ega, onda sunivoi qvorova raspodeeni na sledei naqin: 50% qvorova je nivoa 1,25% qvorova je nivoa 2, 12.5% ih je nivoa 3, itd. Xta bi se desilo akobi nivoi qvorova bili birani na sluqajan naqin, ali u istoj proporciji(slika 3.7e))? Qvorov 𝑖-ti pokazivaq bi umesto da pokazuje na qvor 2𝑖−1

mesta ispred ega, pokazivao na naredni qvor nivoa 𝑖 ili veeg. Umetaai brisaa bi zahtevala samo lokalne izmene. Nivo qvora izabran na sluqajannaqin prilikom kreiraa ne bi morao nikada da se mea. Ovakvu strukturu

Page 37: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

37 3. Strukture podataka

Slika 3.7: Povezana lista sa dodatnim pokazivaqima

podataka nazivamo skip listom.

3.2.1 Operacije sa skip listom

Sada emo razmotriti kako se nad skip listom izvode osnovne operacijereqnika: pretraga, umetae i brisae.

Svaki element je predstaven qvorom qiji se stepen bira na sluqajannaqin prilikom umetaa. Qvor nivoa 𝑖 ima 𝑖 pokazivaqa unapred, saindeksima od 1 do 𝑖. Nivoi su ograniqeni konstantom 𝑀𝑎𝑥𝑁𝑖𝑣𝑜. Nivoliste je maksimalni nivo qvora liste (ili 1 ako je lista prazna). Glavaliste (poqetni element, koji postoji i u praznoj listi) ima pokazivaqe nanivoima od 1 do 𝑀𝑎𝑥𝑁𝑖𝑣𝑜. Pokazivaqi unapred glave liste na nivoimaveim od trenutno maksimalnog nivoa liste pokazuju na element 𝑁𝐼𝐿.

Inicijalizacija skip liste se sastoji od dva koraka:

∙ alocira se element𝑁𝐼𝐿 i daje mu se vrednost vea od svih dozvoenihvrednosti za kuq,

∙ inicijalizuje se nova lista tako da je 𝑛𝑖𝑣𝑜 liste jednak 1 i svipokazivaqi glave liste pokazuju na 𝑁𝐼𝐿.

Traee elementa u skip listi

Traee elementa u skip listi sa kuqem jednakim zadatom broju 𝑎poqie na najvixem nivou liste. Na tom nivou prate se pokazivaqi dokse ne naie na kuq koji je vei ili jednak od 𝑎. U prethodnom qvoru natom nivou prelazi se na sledei \nii" pokazivaq. Postupak se ponavana tom i svim niim nivoima. Kad se na osnovnom nivou naie na qvorsa kuqem jednakim 𝑎, pretraga je zavrxena.

Ako se pretpostavi da svaki qlan liste ima poa 𝑘 (kuq), 𝑣𝑟𝑒𝑑𝑛𝑜𝑠𝑡 iniz 𝑛𝑎𝑟𝑒𝑑𝑛𝑖 postupak traea opisuje sledei kod.

Na primer, ako se u listi na slici 3.8 trai broj 12, polazi se odqvora 6 i nivoa 4, pa se nastava sa istim qvorom na nivou 3 i nivou 2,

Page 38: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

3.2. Skip liste 38

Algoritam Search(𝐿, 𝑘𝑙𝑗𝑢𝑐);

Ulaz: 𝐿 (skip lista) i 𝑘𝑙𝑗𝑢𝑐 (kuq elementa koji se trai).

Izlaz: vrednost elementa sa datim kuqem ili 𝑛𝑒𝑢𝑠𝑝𝑒ℎ ako se element ne nalazi u listi.

begin

𝑥 := 𝐿 → 𝑔𝑙𝑎𝑣𝑎

for 𝑖 := 𝐿 → 𝑛𝑖𝑣𝑜 downto 1 do

while 𝑥 → 𝑛𝑎𝑟𝑒𝑑𝑛𝑖[𝑖] → 𝑘 < 𝑘𝑙𝑗𝑢𝑐 do

𝑥 := 𝑥 → 𝑛𝑎𝑟𝑒𝑑𝑛𝑖[𝑖]

invarijanta pete: 𝑥 je posledi element nivoa 𝑖 sa kuqem maim od 𝑘𝑙𝑗𝑢𝑐𝑥 := 𝑥 → 𝑛𝑎𝑟𝑒𝑑𝑛𝑖[1]

if 𝑥 → 𝑘 = 𝑘𝑙𝑗𝑢𝑐 then return 𝑥 → 𝑣𝑟𝑒𝑑𝑛𝑜𝑠𝑡

else return 𝑛𝑒𝑢𝑠𝑝𝑒ℎ

end

dolazi se do qvora 9 na nivou 2, qvora 9 na nivou 1, qvoru 12 na nivou 1.Tu se iskaqe iz pete, pri qemu je u tom trenutku 𝑥 uperen na qvor 9 nanivou 1. Naredno premextae vodi nas u qvor sa traenim kuqem 12.

Napomena: u prikazanim primerima kao vrednosti qvorova korixenisu ihovi kuqevi. U opxtem sluqaju kuqevi se koriste za ureeeliste, a vrednosti u qvorovima mogu biti proizvone.

Brisae elementa iz skip liste

Slika 3.8: Ilustracija dva koraka od kojih se sastoji operacija umetaavrednosti 17 u datu skip listu.

Da bismo obrisali qvor iz skip liste, potrebno je da pretraimo skiplistu i da preveemo pokazivaqe. Prilikom traea podaci neophodniza brisae quvaju se u pomonom vektoru 𝑝𝑜𝑚 duine jednake broju nivoaliste. Preciznije, 𝑝𝑜𝑚[𝑖] sadri pokazivaq na najdesniji qvor nivoa 𝑖ili vixeg koji se nalazi levo od lokacije gde treba izvesti brisae. Naprimer, ako iz liste sa slike 3.8 elimo da obrixemo qvor sa kuqem25, prvo pronalazimo taj qvor. Pritom vrednosti 𝑝𝑜𝑚[4] i 𝑝𝑜𝑚[3] sadrepokazivaq na qvor sa vrednoxu 6, vrednost 𝑝𝑜𝑚[2] pokazivaq na qvor savrednoxu 17, a 𝑝𝑜𝑚[1] pokazivaq na qvor sa vrednoxu 21. Qvor 25 brixe

Page 39: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

39 3. Strukture podataka

se tako xto se prevezuju pokazivaqi na nivoima maim ili jednakim odegovog nivoa (3): pokazivaqi u qvorovima 6, 17 i 21 (na koje pokazujuelementi niza 𝑝𝑜𝑚) dobijaju nove vrednosti, tako da pokazuju na qvoroveredom 𝑁𝐼𝐿, 𝑁𝐼𝐿, 26.

Nakon svakog brisaa, vrxi se provera da li je obrisani qvor jediniqvor sa maksimalnim nivoom u listi; ako jeste, smauje se maksimalninivo liste.

Algoritam Delete(𝐿, 𝑘𝑙𝑗𝑢𝑐);

Ulaz: 𝐿 (skip lista) i 𝑘𝑙𝑗𝑢𝑐 (kuq elementa koji se brixe).

begin

𝑥 := 𝐿 → 𝑔𝑙𝑎𝑣𝑎

for 𝑖 := 𝐿 → 𝑛𝑖𝑣𝑜 downto 1 do

while 𝑥 → 𝑛𝑎𝑟𝑒𝑑𝑛𝑖[𝑖] → 𝑘 < 𝑘𝑙𝑗𝑢𝑐 do

𝑥 := 𝑥 → 𝑛𝑎𝑟𝑒𝑑𝑛𝑖[𝑖]

𝑝𝑜𝑚[𝑖] := 𝑥

𝑥 := 𝑥 → 𝑛𝑎𝑟𝑒𝑑𝑛𝑖[1]

if 𝑥 → 𝑘 = 𝑘𝑙𝑗𝑢𝑐 then

for 𝑖 := 1 to 𝐿 → 𝑛𝑖𝑣𝑜 do

if 𝑝𝑜𝑚[𝑖] → 𝑛𝑎𝑟𝑒𝑑𝑛𝑖[𝑖] = 𝑥 then break premaxili smo stepen qvora 𝑥𝑝𝑜𝑚[𝑖] → 𝑛𝑎𝑟𝑒𝑑𝑛𝑖[𝑖] := 𝑥 → 𝑛𝑎𝑟𝑒𝑑𝑛𝑖[𝑖]

𝑓𝑟𝑒𝑒(𝑥)

while 𝐿 → 𝑛𝑖𝑣𝑜 > 1 and 𝐿 → 𝑔𝑙𝑎𝑣𝑎 → 𝑛𝑎𝑟𝑒𝑑𝑛𝑖[𝐿 → 𝑛𝑖𝑣𝑜] = NULL do

𝐿 → 𝑛𝑖𝑣𝑜 := 𝐿 → 𝑛𝑖𝑣𝑜− 1

end

Umetae elementa u skip listu

Da bismo umetnuli qvor u skip listu, kao i kod brisaa, potrebno je dapretraimo listu i da preveemo pokazivaqe (slika 3.8). Za prevezivaepokazivaqa nam je opet potreban vektor 𝑝𝑜𝑚 koji, kao i u sluqaju brisaaelementa iz liste, sadri pokazivaq na najdesniji qvor nivoa 𝑖 ili vixegkoji se nalazi levo od lokacije gde treba izvesti umetaa.

Ukoliko umetae generixe qvor veeg nivoa nego xto je prethodninivo liste, auriramo vrednost nivoa liste i inicijalizujemo odgovara-jue delove niza 𝑝𝑜𝑚.

Birae nivoa qvora na sluqajan naqin

Kako na sluqajan naqin izabrati nivo novog qvora? Pretpostavimo daprocenat 𝑝 qvorova nivoa 𝑖 ima pokazivaqe nivoa 𝑖 + 1 (najqexe se bira𝑝 = 1/2). Da bi se odredio nivo novog qvora koristi se generator sluqajnihbrojeva, koji na izlazu daje sluqajni broj iz intervala [0, 1) sa ravnomernomraspodelom verovatnoa. Svaki put kada se na izlazu iz generatora dobijebroj mai od 𝑝 (xto se dexava sa verovatnoom jednakom upravo 𝑝), nivose poveava za 1, sem ako ve nije dostignut maksimalni nivo.

Ovakav naqin generisaa nivoa nekada moe biti neefikasan jer podrazumevapotencijalno vei broj poziva funkcije 𝑟𝑎𝑛𝑑𝑜𝑚() (2 poziva u proseku).

Page 40: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

3.2. Skip liste 40

Algoritam Insert(𝐿, 𝑘𝑙𝑗𝑢𝑐, 𝑛𝑜𝑣𝑎 𝑣𝑟𝑒𝑑𝑛𝑜𝑠𝑡);

Ulaz: 𝐿 (skip lista), 𝑘𝑙𝑗𝑢𝑐 (kuq elementa koji se dodaje) i 𝑛𝑜𝑣𝑎 𝑣𝑟𝑒𝑑𝑛𝑜𝑠𝑡 (vrednost elementa koji se dodaje).

begin

𝑥 := 𝐿 → 𝑔𝑙𝑎𝑣𝑎

for 𝑖 := 𝐿 → 𝑛𝑖𝑣𝑜 downto 1 do

while 𝑥 → 𝑛𝑎𝑟𝑒𝑑𝑛𝑖[𝑖] → 𝑘 < 𝑘𝑙𝑗𝑢𝑐 do

𝑥 := 𝑥 → 𝑛𝑎𝑟𝑒𝑑𝑛𝑖[𝑖]

𝑝𝑜𝑚[𝑖] := 𝑥

𝑥 := 𝑥 → 𝑛𝑎𝑟𝑒𝑑𝑛𝑖[1]

if 𝑥 → 𝑘 = 𝑘𝑙𝑗𝑢𝑐 then ve postoji ta vrednost kuqa, samo auriramo vrednost𝑥 → 𝑣𝑟𝑒𝑑𝑛𝑜𝑠𝑡 := 𝑛𝑜𝑣𝑎 𝑣𝑟𝑒𝑑𝑛𝑜𝑠𝑡

else

𝑛𝑖𝑣𝑜 := 𝑆𝑙𝑢𝑐ℎ𝑎𝑗𝑛𝑖𝑁𝑖𝑣𝑜() na sluqajan naqin bira se nivo novog qvora if 𝑛𝑖𝑣𝑜 > 𝐿 → 𝑛𝑖𝑣𝑜 then ako je nivo novog qvora vei od tekueg nivoa liste

for 𝑖 := 𝐿 → 𝑛𝑖𝑣𝑜+ 1 to 𝑛𝑖𝑣𝑜 do

𝑝𝑜𝑚[𝑖] := 𝐿 → 𝑔𝑙𝑎𝑣𝑎

𝐿 → 𝑛𝑖𝑣𝑜 := 𝑛𝑖𝑣𝑜

𝑥 := 𝑚𝑎𝑘𝑒𝑁𝑜𝑑𝑒(𝑛𝑖𝑣𝑜, 𝑘𝑙𝑗𝑢𝑐, 𝑛𝑜𝑣𝑎 𝑣𝑟𝑒𝑑𝑛𝑜𝑠𝑡)

for 𝑖 := 1 to 𝑛𝑖𝑣𝑜 do

𝑥 → 𝑛𝑎𝑟𝑒𝑑𝑛𝑖[𝑖] := 𝑝𝑜𝑚[𝑖] → 𝑛𝑎𝑟𝑒𝑑𝑛𝑖[𝑖]

𝑝𝑜𝑚[𝑖] → 𝑛𝑎𝑟𝑒𝑑𝑛𝑖[𝑖] := 𝑥

end

Algoritam SluchajniNivo();

Izlaz: nivo qvora.

begin

𝑛𝑖𝑣𝑜 := 1

while 𝑟𝑎𝑛𝑑𝑜𝑚() < 𝑝 and 𝑛𝑖𝑣𝑜 < 𝑀𝑎𝑥𝑁𝑖𝑣𝑜 do

𝑛𝑖𝑣𝑜 := 𝑛𝑖𝑣𝑜+ 1

return 𝑛𝑖𝑣𝑜

end

Umesto ovoga moemo iskoristiti funkciju 𝑟𝑎𝑛𝑑𝑜𝑚 𝑖𝑛𝑡() koja vraa sluqajanceo broj u opsegu [0,𝑀𝐴𝑋 𝐼𝑁𝑇 ] i vratiti poziciju prvog postavenogbita u zapisu tog broja (ova implementacija podrazumeva da𝑀𝑎𝑥𝑁𝑖𝑣𝑜 nijevei od broja bitova u zapisu broja koji vraa funkcija 𝑟𝑎𝑛𝑑𝑜𝑚 𝑖𝑛𝑡()).

Moe se desiti da u skip listi od 16 elemenata generisanih pomouvrednosti 𝑝 = 1/2 imamo 9 elemenata nivoa 1, 3 elementa nivoa 2, 3elementa nivoa 3 i jedan element nivoa 14. Ako bismo pretragu vrxilikorixeem prethodno navedenog algoritma, imali bismo puno praznoghoda. Gde bi trebalo zapoqeti pretragu? Sprovedena analiza sugerixeda bi idealno bilo zapoqeti pretragu na nivou 𝐿(𝑛) na kome oqekujemo1/𝑝 = 2 qvora. Ovo se dexava za nivo 𝐿(𝑛) = log1/𝑝 𝑛. Dakle, za vrednost𝑀𝑎𝑥𝑁𝑖𝑣𝑜 emo u algoritmu birati vrednost 𝐿(𝑛).

Primetimo da ni za jednu od navedenih operacija nije potrebno da usamom qvoru quvamo informaciju o egovom nivou.

Page 41: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

41 3. Strukture podataka

3.2.2 Sloenost osnovnih operacija sa skip listom

Vremenima potrebnim za izvrxavae operacija pretrage, umetaa ibrisaa dominira vreme potrebno za nalaee odgovarajueg elementau skip listi; kod operacija umetaa i brisaa postoji dodatna cenaproporcionalna nivou qvora koji se umee ili brixe. Vreme potrebno zapronalaee elementa je proporcionalno duini puta potrage. Analiziraemoput potrage unazad, od qvora koji smo traili, tako da napredujemo kavixim nivoima i nalevo. Oznaqimo sa 𝐶(𝑘) oqekivanu cenu (tj. duinu)puta ako smo na nivou 𝑘 odozgo. Tada je 𝐶(0) = 0, jer se pri traeupolazi od najvixeg nivoa, nivoa 0. Podsetimo se da ukoliko moemo da se\popnemo" neki nivo, uvek to i radimo jer time idemo \kraim" putem;samo ukoliko ne moemo da se kreemo navixe idemo ulevo. Prilikomprocene oqekivane duine puta 𝐶(𝑘) pretpostavamo da je skip listabeskonaqne duine.

∙ Sa verovatnoom 𝑝 u qvor gde se sada nalazimo dospeli smo iz istogqvora sa vixeg nivoa, sa oqekivanom duinom puta 𝐶(𝑘 − 1).

∙ Sa verovatnoom 1 − 𝑝 u qvor gde se sada nalazimo dospeli smo izqvora sa istog nivoa, sa oqekivanom duinom puta 𝐶(𝑘).

Prema tome, vrednosti 𝐶(𝑘) zadovoavaju diferencnu jednaqinu:

𝐶(𝑘) = (1− 𝑝)(1 + 𝐶(𝑘)) + 𝑝(1 + 𝐶(𝑘 − 1))

Sreivaem ovog izraza dobijamo:𝐶(𝑘) = 1/𝑝 + 𝐶(𝑘 − 1)

odnosno u sluqaju kada je 𝑝 = 1/2 oqekivani broj koraka na svakom nivouje 2. Daim raspisivaem izraza za 𝐶(𝑘) dobijamo 𝐶(𝑘) = 𝑘/𝑝

S obzirom na to da skip lista nije beskonaqna u nekom momentu emonaii na glavu liste iz koje vixe nisu mogue krete ulevo ve samonavixe. Ako sa 𝐿(𝑛) = log1/𝑝 𝑛 oznaqimo proseqni nivo liste duine𝑛, maksimalna vrednost za 𝑘 je 𝐿(𝑛) − 1 jer se inicijalno ve nalazimona nivou 1 (na kome smo naxli qvor). Dakle, proseqno vreme traea je𝐶(𝑘) = 𝑂(log 𝑛). Povratak na najvixi nivo nas ne moramo nuno direktnodovesti do glave skip liste, ali oqekivani broj preostalih koraka je malii ne utiqe na ukupnu sloenost.

Skip liste ne zahtevaju da se uz qvor liste quvaju informacije ouravnoteenosti (kao kod balansiranih stabala), ali zato zahtevaju quvaedodatnih pokazivaqa (u proseku 2 pokazivaqa po qvoru). Meutim, zamnoge primene skip liste su prirodnija reprezentacija od stabala i vodejednostavnijim algoritmima. Dosta su jednostavnije i za implementacijuod balansiranih binarnih stabala. Takoe, prilikom operacija umetaa ibrisaa sve izmene su lokalne, sa izuzetkom promene maksimalnog nivoaliste, te deluju pogodnije za paralelizaciju od balansiranih binarnihpretraivaqkih stabala.

3.3 Sufiksna stabla

Sufiksno stablo je struktura podataka kojom se predstava internastruktura niske.

Page 42: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

3.3. Sufiksna stabla 42

Standardna primena sufiksnih stabala je problem traea reqi utekstu. Ako je dat tekst 𝑇 duine 𝑛, nakon predobrade koje je vremenskesloenosti 𝑂(𝑛), mogue je za datu nepoznatu nisku 𝑆 duine𝑚 u vremenu𝑂(𝑚) nai neko eno pojavivae u 𝑇 ili utvrditi da se niska 𝑆 nenalazi u 𝑇 . Dakle, predobrada je vremenske sloenosti proporcionalneduini teksta, ali je nakon toga sloenost traea 𝑆 proporcionalnaduini 𝑆, nezavisno od duine teksta 𝑇 . Ova granica se ne moe postiialgoritmom KMP, qija je sloenost 𝑂(𝑛). S obzirom na to da 𝑛 moe bitiveliko u odnosu na 𝑚, ovaj rezultat predstava vano poboxae.

Prvi algoritam linearne sloenosti za konstrukciju sufiksnog stablapredloio je Vajner (Weiner) 1973. godine. Drugaqiji, prostorno efikasnijialgoritam za formirae sufiksnih stabala predloio je 1975. godineMekrajt (McCreight). Mi emo se u okviru kursa upoznati sa Ukonenovim(Ukonnen) algoritmom koji je takoe linearne vremenske sloenosti, alije jednostavnije razumeti ga.

Definicija 3.1 (Sufiksno stablo). Sufiksno stablo niske 𝑆 duine𝑚 je korensko stablo za koje vai:

∙ ima taqno 𝑚 listova koji su numerisani brojevima 1, 2, . . . ,𝑚;

∙ svaki unutraxi qvor ima barem dva sina;

∙ svaka grana je oznaqena nepraznom podniskom niske 𝑆;

∙ nikoje dve grane iz istog qvora ne poqiu istim karakterom;

∙ kada se nadoveu sve oznake na putu od korena do lista sa oznakom𝑖, rezultat je sufiks niske 𝑆 koji poqie od pozicije 𝑖, odnosno𝑆[𝑖..𝑚].

Slika 3.9: Sufiksno stablo niske 𝑥𝑎𝑏𝑥𝑎𝑐. Qvorovi sa oznakama 𝑢 i 𝑤 suunutraxi qvorovi.

Na slici 3.9 prikazano je sufiksno stablo niske 𝑥𝑎𝑏𝑥𝑎𝑐. Definicijasufiksnog stabla niske 𝑆 ne garantuje postojae sufiksnog stabla zaproizvonu nisku 𝑆. Problem se java onda kada se neki sufiks niske𝑆 poklopi sa prefiksom drugog sufiksa niske 𝑆, jer tada se put za prvi

Page 43: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

43 3. Strukture podataka

sufiks ne zavrxava u listu. Na primer, u sluqaju niske 𝑐𝑥𝑎𝑏𝑥𝑎, postojaobi put od korena do sufiksa 𝑥𝑎𝑏𝑥𝑎 koji bi se zavrxavao u listu, ali sezato put do sufiksa 𝑥𝑎 (kao prefiksa sufiksa 𝑥𝑎𝑏𝑥𝑎) ne bi zavrxavaou listu. Da bi se izbegao ovaj problem, pretpostavamo da se posledikarakter niske 𝑆 ne nalazi nigde drugde unutar 𝑆. Ovo se moe postiidodavaem specijalnog karaktera koji ne pripada azbuci jezika u kojem seformira niska 𝑆. Taj karakter emo oznaqavati sa $ i zvati ga zavrxni(ili terminirajui) karakter.

Jox jedan problem koji se jednostavno moe rexiti korixeem su-fiksnog stabla jeste da se za datu req 𝑃 duine 𝑚 i tekst 𝑇 duine 𝑛nau sva pojavivaa 𝑃 u 𝑇 u vremenu 𝑂(𝑚+𝑛). Rexee preko sufiksnihstabala bi podrazumevalo formirae sufiksnog stabla za nisku 𝑇 uvremenu 𝑂(𝑛). Nakon toga bismo pratili jedinstveni put u sufiksnomstablu qiji je prefiks niska 𝑃 , sve dok ne naemo sve karaktere reqi𝑃 ili do trenutka kada se ispostavi da se naredni karakter niske 𝑃 nemoe pronai ni na jednom putu do nekog lista. U drugom sluqaju moemozakuqiti da se niska 𝑃 nigde ne java u tekstu 𝑇 , dok u prvom sluqajusvaki list u podstablu sa korenom u qvoru u kome se desilo posledepoklapae karaktera predstava indeks od koga poqie pojava reqi 𝑃 utekstu 𝑇 . Na primer, na slici 3.10 prikazan je jedan fragment sufiksnogstabla za nisku 𝑎𝑤𝑦𝑎𝑤𝑥𝑎𝑤𝑥𝑧. Req 𝑃 = 𝑎𝑤 java se tri puta u 𝑇 napoqetnim pozicijama 1, 4 i 7.

Slika 3.10: Tri pojavivaa niske 𝑎𝑤 u niski 𝑎𝑤𝑦𝑎𝑤𝑥𝑎𝑤𝑥𝑧. ihovepoqetne pozicije se nalaze u listovima podstabla qvora gde se zavrxavaniska 𝑎𝑤.

Page 44: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

3.3. Sufiksna stabla 44

3.3.1 Jednostavni algoritam za formirae sufiksnog stabla

Da bismo ilustrovali problem formiraa sufiksnog stabla niske 𝑆duine𝑚, opisaemo najpre rexee problema najjednostavnijim algoritmom.Ovaj jednostavni algoritam polazi od stabla koje sadri koren i jednugranu, sa oznakom sufiksa 𝑆[1..𝑚] jednakog celoj nisci 𝑆. Zatim se za 𝑖 =2, 3, . . . ,𝑚 u stablo redom ukuquje sufiks 𝑆[𝑖..𝑚]. Induktivna hipotezaglasi: \Umemo da konstruixemo stablo 𝑁𝑖 koje kodira sve sufikse niske𝑆 koji poqiu na pozicijama od 1 do 𝑖".

Bazni sluqaj je jednostavan stablo𝑁1 se sastoji od jedne grane oznaqeneoznakom 𝑆$ koja povezuje koren i list sa oznakom 1. Stablo𝑁𝑖+1 se konstruixeod stabla 𝑁𝑖 na sledei naqin: polazei od korena stabla 𝑁𝑖 pronalazi senajdui put qija se oznaka poklapa sa prefiksom niske 𝑆[𝑖 + 1..𝑚]$; podoznakom puta podrazumeva se konkatenacija oznaka grana koje qine taj put.Kada se pronae takav put, on se zavrxava ili u nekom unutraxem qvoru𝑤 ili unutar neke grane (𝑢, 𝑣). Ako je unutar grane, onda se grana (𝑢, 𝑣)\razbija" na dve grane umetaem qvora 𝑤 taqno nakog posledeg karakterana grani koji se poklopio karakterom u 𝑆[𝑖 + 1..𝑚] i taqno ispred prvogkaraktera na grani koji se nije poklopio. Nova grana (𝑢,𝑤) oznaqava sedelom oznake grane (𝑢, 𝑣) koja se poklopila sa prefiksom niske 𝑆[𝑖+1..𝑚],a nova grana (𝑤, 𝑣) se oznaqava ostatkom oznake grane (𝑢, 𝑣). Zatim, bilo dase novi qvor 𝑤 formirao ili da je neki qvor ve postojao na mestu gde sepoklapae zavrxilo, algoritam kreira novu granu (𝑤, 𝑖+ 1) koja povezujeqvor 𝑤 i novi list sa oznakom 𝑖+ 1 i oznaqava novu granu nepoklopenimdelom sufiksa 𝑆[𝑖 + 1..𝑚]$.

Sloenost. Pronalaee puta koji odgovara jednom sufiksu traje𝑂(𝑚),a zavrxna obrada tog sufiksa je sloenosti 𝑂(1). Ovo se radi za svakisufiks, pa je prema tome ukupna vremenska sloenost algoritma 𝑂(𝑚2).

3.3.2 Ukonenov algoritam za formirae sufiksnog stabla

Esko Ukonen je konstruisao algoritam za formirae sufiksnog stablau linearnom vremenu i on je dobijen kombinacijom nekoliko lepih uvidau strukturu sufiksnog stabla i nekoliko pametnih implementacionihdetaa. Tokom izvrxavaa algoritma formira se niz implicitnih sufiksnihstabala, posle qega se poslede od dobijenih implicitnih sufiksnihstabala pretvara u pravo sufiksno stablo niske 𝑆.

Definicija 3.2 (Implicitno sufiksno stablo). Implicitno sufiksnostablo niske 𝑆 je stablo dobijeno od sufiksnog stabla niske 𝑆$ brisaemsvih pojava zavrxnog karaktera $ sa oznaka grana stabla, nakon togabrisaem svih grana sa praznom oznakom i, konaqno, brisaem svih qvorovakoji nemaju bar dva sina.

Implicitno sufiksno stablo za prefiks 𝑆[1..𝑖] niske 𝑆 oznaqavaemosa 𝑇𝑖. Stablo 𝑇𝑖 se dobija primenom postupka iz definicije 3.2 na sufiks𝑆[1..𝑖].

Implicitno sufiksno stablo za proizvonu nisku 𝑆 ima mae od𝑚 = |𝑆| listova ako i samo ako barem jedan od sufiksa niske 𝑆 predstavaprefiks nekog drugog sufiksa. Zavrxni karakter $ se dodaje na kraj niske

Page 45: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

45 3. Strukture podataka

𝑆 upravo da bi se izbegla ova situacija. Ako se sama niska 𝑆 zavrxavakarakterom koji se ne pojavuje nigde drugde u 𝑆, onda implicitno sufiksnostablo niske 𝑆 ima list za svaki sufiks, pa je samim tim pravo sufiksnostablo.

Slika 3.11: Sufiksno stablo niske 𝑥𝑎𝑏𝑥𝑎$.

Slika 3.12: Implicitno sufiksno stablo niske 𝑥𝑎𝑏𝑥𝑎.

Na primer, posmatrajmo sufiksno stablo niske 𝑥𝑎𝑏𝑥𝑎$ prikazano naslici 3.11. Sufiks 𝑥𝑎 je prefiks sufiksa 𝑥𝑎𝑏𝑥𝑎, i sliqno je niska 𝑎prefiks sufiksa 𝑎𝑏𝑥𝑎. Zato su u sufiksnom stablu za 𝑥𝑎𝑏𝑥𝑎 grane kojevode do listova 4 i 5 oznaqene samo karakterom $. Odbacivaem tih granaproizvode se dva nova qvora koja imaju samo jednog sina, pa se onda i oniodbacuju. Rezultat je implicitno sufiksno stablo niske 𝑥𝑎𝑏𝑥𝑎 prikazanona slici 3.12.

Iako implicitno sufiksno stablo ne mora da ima list za svaki sufiks,ono ipak kodira sve sufikse niske 𝑆 svaki sufiks se dobija nadovezivaemkaraktera na nekom putu od korena implicitnog sufiksnog stabla. Ipak,ako se put ne zavrxi u listu, ne postoji oznaka koja oznaqava kraj puta.Zbog toga su implicitna sufiksna stabla sama po sebi mae informativnaod sufiksnih stabala.

Ukonenov algoritam konstruixe implicitno sufiksno stablo 𝑇𝑖 zasvaki prefiks 𝑆[1..𝑖] niske 𝑆, polazei od 𝑇1, sve dok se ne formira𝑇𝑚. Sufiksno stablo niske 𝑆 se konstruixe od posledeg implicitnogsufiksnog stabla 𝑇𝑚 i vreme izvrxavaa celokupnog algoritma je 𝑂(𝑚).

Page 46: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

3.3. Sufiksna stabla 46

Najpre emo prikazati metod koji zahteva𝑂(𝑚3) koraka da se formirajusva stabla 𝑇𝑖, a nakon toga prikazaemo optimizacije u implementacijiUkonenovog algoritma koje omoguavaju da algoritam postane linearnevremenske sloenosti.

Opis Ukonenovog algoritma

Razmotrimo sluqaj niske 𝑆 = 𝑎𝑏𝑏𝑎. Ci nam je da odredimo implicitnasufiksna stabla 𝑇𝑖 za sve prefikse 𝑆[1..𝑖], 𝑖 = 1, 2, 3, 4 niske 𝑆. Na slici3.13 prikazana su dobijena implicitna stabla za sve prefikse niske 𝑆.

Slika 3.13: Implicitna sufiksna stabla svih prefiksa niske 𝑎𝑏𝑏𝑎.

Ukonenov algoritam se sastoji od 𝑚 faza. U (𝑖+ 1)-oj fazi stablo 𝑇𝑖+1

se formira na osnovu stabla 𝑇𝑖, 𝑖 = 1, 2, . . . ,𝑚. Faza 𝑖+1 sastoji se od 𝑖+1produea, po jednog za svaki od 𝑖 + 1 sufiksa niske 𝑆[1..𝑖 + 1]. Koristise qienica da se za 𝑗 = 1, 2, ..., 𝑖 sufiks 𝑆[𝑗..𝑖 + 1] dobija produavaemsufiksa 𝑆[𝑗..𝑖] (koji je ve u stablu) karakterom 𝑆[𝑖 + 1].

U produeu 𝑗 faze 𝑖 + 1, pronalazimo mesto sufiksu 𝑆[𝑗..𝑖 + 1], 𝑗 =1, 2, . . . , 𝑖 + 1. U implicitnom stablu 𝑇𝑖 formiranom u prethodnoj fazipronalazi se kraj puta (od korena) sa oznakom 𝑆[𝑗..𝑖]. Zatim se podniska𝑆[𝑗..𝑖] kao oznaka puta produuje dodavaem karaktera 𝑆[𝑖+1] na en kraj,osim ukoliko se karakter 𝑆[𝑖 + 1] ve ne nalazi tamo (u nastavku oznakeistog puta). Produee 𝑖 + 1 faze 𝑖 + 1 produuje prazan sufiks niske𝑆[1..𝑖], odnosno, \umee" nisku koja se sastoji od jednog karaktera, 𝑆[𝑖+ 1],u stablo (osim u situaciji kada se taj karakter ve nalazi u stablu). Ovajalgoritam moe se opisati kodom sa slike 3.14.

Pravila za produavae sufiksa. U okviru ovog algoritma neophodnoje precizirati kako se izvodi produavae sufiksa. Neka je 𝑆[𝑗..𝑖] = 𝛽sufiks niske 𝑆[1..𝑖]. U produeu 𝑗, kada algoritam pronae kraj sufiksa𝛽 u trenutnom stablu, vrxi se produavae niske 𝛽 da bi se i novisufiks 𝛽𝑆[𝑖+ 1] naxao u stablu. Pri tome su mogua tri sluqaja, odnosnoproduee se izvodi primenom jednog od naredna tri pravila:

Pravilo 1: U trenutnom stablu, put 𝛽 se zavrxava u listu. Drugimreqima, posleda grana puta oznaqenog sa 𝛽 je grana 𝑒 koja se zavrxavau listu. Da bi se stablo produilo, karakter 𝑆[𝑖 + 1] se dodaje nakraj oznake grane 𝑒.

Pravilo 2: Nijedan put od kraja niske 𝛽 ne poqie karakterom 𝑆[𝑖+ 1],ali barem jedan oznaqeni put nastava od kraja niske 𝛽. U ovomsluqaju, formira se nova grana od kraja niske 𝛽 i oznaqava se karakterom𝑆[𝑖 + 1]. Ako se 𝛽 zavrxava unutar grane, na tom mestu se formira

Page 47: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

47 3. Strukture podataka

Algoritam Ukonenov algoritam(𝑆);

Ulaz: 𝑆 (niska od koje se konstruixe sufiksno stablo), 𝑚 (duina niske).

Izlaz: sufiksno stablo niske 𝑆.

begin

Konstruixi stablo 𝑇1;

for 𝑖 := 1 to 𝑚− 1 do

zapoqiemo fazu 𝑖+ 1for 𝑗 := 1 to 𝑖+ 1 do

zapoqiemo produee 𝑗Pronai put od korena sa oznakom 𝑆[𝑗..𝑖] u trenutnom stablu

if 𝑆[𝑖+ 1] se ne nalazi iza kraja puta then

Ovime se postie da je niska 𝑆[𝑗..𝑖+ 1] u stabluProdui put dodavaem karaktera 𝑆[𝑖+ 1]

end

Slika 3.14: Kod jednostavnog algoritma za formirae sufiksnog stablasloenosti 𝑂(𝑚3).

novi qvor. Listu na kraju nove grane se pridruuje broj 𝑗 (poxtolist odgovara sufiksu koji poqie od indeksa 𝑗).

Pravilo 3: Neki put od kraja niske 𝛽 poqie karakterom 𝑆[𝑖+1]. U ovomsluqaju niska 𝛽𝑆[𝑖+ 1] se ve nalazi u stablu, tako da nije potrebnouraditi nixta (prisetimo se da u implicitnom sufiksnom stablukraj sufiksa ne mora da bude eksplicitno oznaqen).

Slika 3.15: Implicitno sufiksno stablo niske 𝑎𝑥𝑎𝑏𝑥 pre dodavaaxestog karaktera 𝑏.

Na primer, posmatrajmo implicitno sufiksno stablo niske 𝑆 = 𝑎𝑥𝑎𝑏𝑥prikazano na slici 3.15. Prva qetiri sufiksa se zavrxavaju u listovima,ali se jednokarakterski sufiks 𝑥 zavrxava unutar grane. Kada se xesti

Page 48: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

3.3. Sufiksna stabla 48

Slika 3.16: Produeno implicitno sufiksno stablo niske 𝑎𝑥𝑎𝑏𝑥 nakondodavaa xestog karaktera 𝑏.

karakter 𝑏 dodaje niski, prva qetiri sufiksa se produuju primenompravila 1, peti sufiks se produuje primenom pravila 2, a xesti sufiksprimenom pravila 3. Rezultat je prikazan na slici 3.16.

Implementacija i ubrzae. Korixeem pravila za produavaesufiksa, posle pronalaea sufiksa 𝛽 niske 𝑆[1..𝑖] u trenutnom stablu,potreban je samo konstantan broj koraka za primenu pravila za produavae(odnosno, da bi se obezbedilo da se sufiks 𝛽𝑆[𝑖+ 1] nalazi u stablu). Zbogtoga je osnovni problem u realizaciji Ukonenovog algoritma pronalaeesvih 𝑖 sufiksa niske 𝑆[1..𝑖].

Najjednostavniji pristup omoguuje pronalaee bilo kog sufiksa𝛽 u 𝑂(|𝛽|) koraka, prolaskom puta od korena trenutnog stabla. Dakle,produee 𝑗 faze 𝑖 + 1 bi zahtevalo 𝑂(𝑖 + 1− 𝑗) = |𝑆[𝑖..𝑗]| koraka. Poxtoje ukupan broj produea jednak 𝑖 + 1, stablo 𝑇𝑖+1 se formira od stabla𝑇𝑖 u vremenu 𝑂(𝑖2), a sloenost formiraa stabla 𝑇𝑚 je 𝑂(𝑚3). Na prvipogled nije jasno zaxto smo uopxte razmatrali ovaj algoritam sloenosti𝑂(𝑚3), kada ve znamo jednostavan algoritam sloenosti𝑂(𝑚2). Meutim,metodiqki je algoritam sloenosti 𝑂(𝑚3) veoma vaan, jer predstavapolaznu taqku za razvoj Ukonenovog algoritma linearne vremenske sloenosti.

Ubrzae sa𝑂(𝑚3) na𝑂(𝑚) moe se izvesti na osnovu nekoliko zapaaai implementacionih trikova. Svaki trik za sebe deluje kao razumna heuristikaza ubrzae algoritma, ali ihova pojedinaqna primena ne povlaqi smaeesloenosti u najgorem sluqaju. Meutim, ukoliko se koriste zajedno, omoguavajuizvrxee algoritma u linearnom vremenu u najgorem sluqaju.

Definicija 3.3 (Sufiksna veza). Neka 𝑥𝛼 oznaqava proizvonu nisku,gde je 𝑥 karakter i 𝛼 (eventualno prazna) niska. Ako za unutraxi qvor𝑣 sa oznakom puta 𝑥𝛼 postoji neki drugi qvor 𝑠(𝑣) sa oznakom puta 𝛼,onda se pokazivaq od 𝑣 do 𝑠(𝑣) naziva sufiksna veza.

Sufiksnu vezu oznaqavaemo ureenim parom (𝑣, 𝑠(𝑣)). U specijalnomsluqaju kada je 𝛼 prazna niska, sufiksna veza iz unutraxeg qvora sa

Page 49: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

49 3. Strukture podataka

oznakom puta 𝑥𝛼 = 𝑥 vodi ka korenu stabla. Koren se ne smatra unutraximqvorom i ne postoji sufiksna veza koja polazi iz ega.

Iz definicije sufiksne veze ne sledi da svaki unutraxi qvor implicitnogsufiksnog stabla ima sufiksnu vezu koja polazi iz ega. Ispostava seda je ovo tvree ipak taqno.

Lema 3.1 (Postojae sufiksnih veza u stablu). Ako se trenutnom stabluu produeu 𝑗 faze 𝑖 + 1 doda novi unutraxi qvor 𝑣 sa oznakom puta𝑥𝛼, onda vai jedno od naredna dva tvrea:

∙ put od korena sa oznakom 𝛼 se ve zavrxava u unutraxem qvorutrenutnog stabla

∙ bie formiran unutraxi qvor na kraju niske 𝛼 (primenom pravilaza produee) u (narednom) produeu 𝑗 + 1 faze 𝑖 + 1.

Dokaz. Niska koja se razmatra u fazi 𝑖+1 je 𝑆[1..𝑖+1]. Razmatramo pravilo2 za produavae sufiksa, jer se jedino prilikom primene ovog pravilamoe formirati novi unutraxi qvor: tokom produea 𝑗, odnosno razmatraasufiksa 𝑆[𝑗..𝑖 + 1], unutraxi qvor je ili ve postojao ili se kreiradodavaem karaktera 𝑆[𝑖+ 1] na put 𝑆[𝑗..𝑖]. Sufiksna veza treba da od togqvora vodi ka qvoru za oznakom puta 𝑆[𝑗+1..𝑖+1], koji ili ve postoji, ilie biti kreiran nakon produea sufiksa 𝑆[𝑗 + 1..𝑖] karakterom 𝑆[𝑖 + 1]tokom produea 𝑗 + 1 faze 𝑖 + 1.

Slika 3.17: Sufiksne veze za implicitno sufiksno stablo niske 𝑎𝑎𝑏𝑏𝑎𝑏𝑎𝑎.

Teorema 3.1 (Postojae sufiksnih veza u Ukonenovom algoritmu). UUkonenovom algoritmu bilo koji novoformirani unutraxi qvor do krajanarednog produea dobie sufiksnu vezu koja polazi od ega.

Dokaz. Dokaimo ovo tvree indukcijom po rednom broju faze 𝑖. Tvreetrivijalno vai za 𝑇1, jer ne postoje unutraxi qvorovi. Pretpostavimoda tvree vai za fazu 𝑖, odnosno za stablo 𝑇𝑖. Za unutraxe qvorovekreirane do pretposledeg produea tvree vai prema lemi 3.1.Razmotrimo poslede, (𝑖 + 1)-vo produee. U emu se dodaje samo znak𝑆[𝑖 + 1] (pravilom 1 ili 3) bez dodavaa novih unutraxih qvorova.

Teorema 3.1 utvruje vanu qienicu o implicitnim stablima i specijalnoo sufiksnim stablima. Moemo je formulisati i na drugi naqin.

Page 50: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

3.3. Sufiksna stabla 50

Teorema 3.2 (Postojae sufiksnih veza u implicitnom sufiksnom stablu).U proizvonom implicitnom sufiksnom stablu 𝑇𝑖, ako unutraxi qvorima oznaku puta 𝑥𝛼, tada postoji qvor 𝑠(𝑣) stabla 𝑇𝑖 sa oznakom puta𝛼.

Na osnovu teoreme 3.1, svi unutraxi qvorovi u tekuem stablu imaesufiksne veze koje polaze iz ih, sa izuzetkom posledeg dodatog unutraxegqvora, koji e dobiti svoju sufiksnu vezu do kraja narednog produea.Sada emo prikazati kako se sufiksne veze mogu iskoristiti da ubrzajuimplementaciju.

Prisetimo se da u fazi 𝑖 + 1 algoritam locira sufiks 𝑆[𝑗..𝑖] niske𝑆[1..𝑖], za svako 𝑗 od 1 do 𝑖 + 1 (za 𝑗 = 𝑖 + 1 to je prazan sufiks). U okvirujednostavnog algoritma ovo se izvodi praeem niske 𝑆[𝑗..𝑖] polazei odkorena trenutnog stabla. Sufiksne veze mogu da skrate put koji se prelazii da na taj naqin produee uqine efikasnijim. Razmotrimo redom produea:

∙ 𝑗 = 1 (produee 1): s obzirom na to da je 𝑆[1..𝑖] najdua niskakodirana u stablu 𝑇𝑖, traee niske 𝑆[1..𝑖] se mora zavrxiti unekom listu stabla 𝑇𝑖. To qini jednostavnim nalaee kraja togsufiksa (pri formirau stabla moemo da quvamo pokazivaq nalist do koga vodi put sa oznakom 𝑆[1..𝑖]). egovo produee vrxise primenom pravila 1. Dakle, prvo produee bilo koje faze jespecijalan sluqaj i koristi𝑂(1) koraka, s obzirom na to da algoritamsadri pokazivaq na qvor sa oznakom jednakom trenutnoj nisci.

∙ 𝑗 = 2 (produee 𝑆[2..𝑖] u 𝑆[2..𝑖 + 1]): neka je niska 𝑆[1..𝑖] (koja sezavrxava u listu 1 stabla 𝑇𝑖) oblika 𝑥𝛼, gde je 𝑥 karakter i 𝛼(eventualno prazna) niska, i neka je (𝑣, 1) grana stabla koja ulaziu list sa oznakom 1 (obratimo pau da ova grana ne mora bitioznaqena samo posledim karakterom ove niske ve moe biti oznaqenaveim brojem karaktera). Algoritam treba da pronae kraj niske𝑆[2..𝑖] = 𝛼 u trenutnom stablu koje se formira na osnovu stabla 𝑇𝑖.Kuq je u tome da je qvor 𝑣 ili koren ili unutraxi qvor stabla 𝑇𝑖.Ako je koren, onda da bi se pronaxao kraj 𝛼 prelazi se put od korenapratei 𝛼 kao u jednostavnom algoritmu. Ako je pak 𝑣 unutraxiqvor, onda po teoremi 3.2 (s obzirom da je 𝑣 u stablu 𝑇𝑖) qvor 𝑣 imasufiksnu vezu do qvora 𝑠(𝑣). Dae, s obzirom da 𝑠(𝑣) ima oznaku putakoja je prefiks niske 𝛼, kraj niske 𝛼 mora da se nalazi u podstablu sakorenom 𝑠(𝑣). Zbog toga prilikom traea kraja niske 𝛼 u stablu,algoritam ne mora da prelazi qitav put od korena, ve moe dakrene od qvora 𝑠(𝑣). Ovo je glavni razlog za korixee sufiksnihveza u algoritmu. Preciznije, neka je 𝛾 oznaka grane (𝑣, 1). Da bise pronaxao kraj 𝛼, treba se vratiti iz lista sa oznakom 1 u qvor𝑣, pratiti sufiksnu vezu od 𝑣 do 𝑠(𝑣), a zatim proi od qvora 𝑠(𝑣)niz stablo (taj put moe da se sastoji od jedne ili vixe grana)putaom oznaqenom niskom 𝛾. Kraj tog puta odreen je zavrxetkomniske 𝛼 (videti sliku 3.18). Na kraju puta sa oznakom 𝛼 stablo seaurira korixeem odgovarajueg pravila za produee. Ovim suu potpunosti opisana prva dva produea faze 𝑖 + 1.

Page 51: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

51 3. Strukture podataka

Slika 3.18: Produee prefiksa 𝑆[𝑗..𝑖] u prefiks 𝑆[𝑗..𝑖 + 1] u fazi 𝑖 + 1:potrebno je popeti se najvixe jednom granom (sa oznakom 𝛾; na slici je𝛾 = 𝑎𝑏𝑐𝑑) od kraja puta oznaqenog 𝑆[𝑗 − 1..𝑖] do qvora 𝑣; zatim se pratisufiksna veza od 𝑣 do 𝑠(𝑣); nakon toga prolazi se od qvora 𝑠(𝑣) niz stabloputem oznaqenim 𝛾, qime je u stablu pronaena niska 𝑆[𝑗..𝑖]. Na krajuse primeuje odgovarajue pravilo produea da bi se umetnuo sufiks𝑆[𝑗..𝑖 + 1].

∙ Da bi se produila niska 𝑆[𝑗..𝑖] u nisku 𝑆[𝑗..𝑖 + 1] za 𝑗 > 2, koristise sliqna opxta ideja. Da bi se u stablu pronaxla niska 𝑆[𝑗..𝑖],polazi se od kraja niske 𝑆[𝑗 − 1..𝑖] (kojoj je ona prefiks), pee senajvixe jednom granom do korena ili unutraxeg qvora 𝑣 koji imasufiksnu vezu iz sebe; neka je 𝛾 oznaka te grane. Pod pretpostavkomda 𝑣 nije koren, prolazi se sufiksnom vezom od 𝑣 do 𝑠(𝑣); nastava seniz stablo od 𝑠(𝑣) pratei put sa oznakom 𝛾 do kraja 𝑆[𝑗..𝑖]. Konaqno,vrxi se produavae sufiksa da se dobije sufiks 𝑆[𝑗..𝑖+1] korixeemnekog od pravila za produavae sufiksa. Postoji jedna mala razlikaizmeu produea za 𝑗 > 2 i prva dva produea. Uopxteno govorei,kraj niske 𝑆[𝑗−1..𝑖] moe biti u qvoru koji i sam ima sufiksnu vezukoja polazi iz ega (ako je to unutraxi qvor), i u tom sluqajualgoritam prati tu sufiksnu vezu. Primetimo da qak i kada sepravilo 2 primeuje u produeu 𝑗 − 1 (tako da se kraj 𝑆[𝑗 − 1..𝑖]nalazi u novoformiranom unutraxem qvoru 𝑤), ako otac qvora 𝑤nije koren, onda otac qvora 𝑤 ve ima sufiksnu vezu koja polazi izega na osnovu teoreme 3.1. Zbog toga algoritam u toku produea𝑗 nikada na putu ka korenu ne prelazi vixe od jedne grane.

Izvedena analiza omoguuje da se precizira algoritam za produee𝑆[𝑗..𝑖] u 𝑆[𝑗..𝑖 + 1] u fazi 𝑖 + 1:

∙ Polazei od lista kome u stablu odgovara sufiks 𝑆[𝑗−1..𝑖] na putu kakorenu pronai prvi unutraxi qvor 𝑣; qvor 𝑣 ili ima sufiksnuvezu ili je koren. Ovo zahteva peae uz najvixe jednu granu od

Page 52: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

3.3. Sufiksna stabla 52

kraja 𝑆[𝑗 − 1..𝑖] u trenutnom stablu. Neka je 𝛾 (eventualno prazna)niska na grani kojom se iz 𝑣 nastava pratei 𝑆[𝑗 − 1..𝑖].

∙ Ako 𝑣 nije koren, onda treba proi sufiksnom vezom od 𝑣 do 𝑠(𝑣)i zatim proi putem kroz stablo od 𝑠(𝑣) pratei put sa oznakom 𝛾.Ako je 𝑣 koren, onda treba proi putem niske 𝑆[𝑗..𝑖] od korena (kaou jednostavnom algoritmu). Time je u stablu pronaen kraj niske𝑆[𝑗..𝑖].

∙ Korixeem odgovarajueg pravila za produee sufiksa, obezbeditida se niska 𝑆[𝑗..𝑖 + 1] nalazi u stablu.

∙ Ako je formiran novi unutraxi qvor 𝑤 u produeu 𝑗−1 (korixeempravila 2), onda po teoremi 3.1 niska 𝛼 mora da se zavrxi u qvoru𝑠(𝑤), qvoru do kojeg dolazi sufiksna veza iz qvora 𝑤. Formiratisufiksnu vezu (𝑤, 𝑠(𝑤)) od qvora 𝑤 do qvora 𝑠(𝑤).

Pod pretpostavkom da algoritam quva pokazivaq do trenutne cele niske𝑆[1..𝑖], prvo produee faze 𝑖 + 1 ne zahteva nikakvo peae uz, nitisilazak niz stablo. Takoe, prvo produee faze 𝑖 + 1 uvek primeujepravilo 1.

Korixee sufiksnih veza je oqigledno praktiqno poboxae u odnosuna polazak od korena u svakom produeu, kao xto se radi u jednostavnomalgoritmu. Meutim, ovo poboxae nije dovono da popravi brzinualgoritma u najgorem sluqaju. U nastavku emo opisati implementacionitrik koji smauje sloenost algoritma u najgorem sluqaju na 𝑂(𝑚2).

U drugom koraku produea 𝑗 + 1 algoritam silazi niz stablo odqvora 𝑠(𝑣) pratei put sa oznakom 𝛾. Prisetimo se da takav put sigurnopostoji od 𝑠(𝑣). Direktno implementiran, prolazak kroz put sa oznakom 𝛾zahteva 𝑂(|𝛾|) koraka, odnosno, proporcionalan je broju karaktera oznake𝛾. Efikasnije je prilikom praea niske u stablu prelaziti grane za 𝑂(1)(umesto za vreme proporcionalno duini oznake grane). To se postieprelaskom u naredni qvor preko grane i pomeraem pozicije u nisci kojase prati za broj jednak duini oznake grane. Ta ideja, tzv. preskok saodbrojavaem (eng. skip/count) ima za rezultat da je sloenost prelaskaputa proporcionalna broju grana na putu, umesto zbiru duina oznakagrana na putu.

Trik 1 (Preskok sa odbrojavaem). Neka 𝑔 oznaqava broj karakteraoznake 𝛾. Prisetimo se da nikoje dve oznake grana koje izlaze iz qvora 𝑠(𝑣)ne mogu da poqnu istim karakterom, odnosno da prvi karakter ℎ oznake𝛾 mora da se pojavi kao prvi karakter na taqno jednoj grani koja izlaziiz 𝑠(𝑣). Neka 𝑔′ oznaqava broj karaktera na toj grani. Ako je 𝑔 > 𝑔′, ondaalgoritam nema potrebe da qita nijedan drugi karakter na toj grani; trebada jednostavno doe do qvora na kraju te grane. Pored toga, aurirajuse vrednosti 𝑔 i ℎ, tako xto se 𝑔 zameni sa 𝑔 − 𝑔′, a ℎ se zameni prvimkarakterom niske 𝑔′. Postupak se nastava na isti naqin biraem izlaznegrane qija oznaka poqie karakterom ℎ. Uopxte, kada algoritam pronaenarednu granu na putu, on uporeuje trenutnu vrednost 𝑔 i broj karaktera𝑔′ na toj grani. Kada je 𝑔 > 𝑔′, algoritam prelazi do qvora na kraju tegrane, zameuje 𝑔 sa 𝑔 − 𝑔′, zameuje ℎ karakterom qiji je indeks u nisci

Page 53: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

53 3. Strukture podataka

vei za 𝑔′, pronalazi granu qiji se prvi karakter poklapa sa karakteromℎ oznake 𝛾 i ponava postupak. Kada se dostigne grana u kojoj je 𝑔 ≤ 𝑔′,onda algoritam prelazi do karaktera sa rednim brojem 𝑔 na toj grani izavrxava se, poxto se put sa oznakom 𝛾 iz qvora 𝑠(𝑣) zavrxava na tojgrani taqno 𝑔 karaktera od poqetka oznake grane (videti sliku 3.19).

Slika 3.19: Preskok sa odbrojavaem. U fazi 𝑖 + 1, podniska 𝛾 =𝑧𝑎𝑏𝑐𝑑𝑒𝑓𝑔ℎ𝑦 ima duinu 10. Postoji kopija podniske 𝛾 koja poqie odqvora 𝑠(𝑣); ona se zavrxava tri karaktera od poqetka oznake na posledojgrani, nakon xto se izvedu qetiri preskakaa grana.

Pod pretpostavkom da se zna duina oznake svake grane stabla i da sekarakter niske 𝑆 sa zadatim indeksom pronalazi za vreme 𝑂(1), efekatkorixea preskoka sa odbrojavaem je prelaee grane pri praeuoznake 𝛾 za vreme 𝑂(1). Ukupno vreme za pronalaee puta koji odgovaranisci 𝛾 proporcionalno je broju qvorova na putu umesto broju karakterana emu.

Definicija 3.4 (Dubina qvora). Dubina qvora 𝑢 je broj qvorova na putuod korena do 𝑢.

Teorema 3.3 (Dubina qvora na kraju sufiksne veze). Neka je (𝑣, 𝑠(𝑣))proizvona sufiksna veza koja se prolazi u Ukonenovom algoritmu. Utrenutku kada se koristi sufiksna veza, dubina qvora 𝑣 je za najvixejedan vea od dubine qvora 𝑠(𝑣).

Dokaz. Razmotrimo puteve sa oznakama 𝑆[𝑗..𝑖+1] i 𝑆[𝑗+1..𝑖+1] i unutraxiqvor 𝑣 na putu sa oznakom 𝑆[𝑗..𝑖 + 1]. Kuqno zapaae je da iz svakogpretka qvora 𝑣 vodi sufiksna veza ka jedinstvenom pretku qvora 𝑠(𝑣) kojije takoe unutraxi qvor. Ovo vai za sve unutraxe qvorove osim zaprvi karakter puta 𝑆[𝑖..𝑗 + 1] qija sufiksna veza vodi ka korenu. Zbog ovepovezanosti unutraxih qvorova na dva razmatrana puta vai da dubina

Page 54: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

3.3. Sufiksna stabla 54

qvora 𝑣 moe za najvixe jedan biti vea od dubine qvora 𝑠(𝑣). Ilustracijaovog dokaza prikazana je na slici 3.20.

Slika 3.20: Za svaki qvor 𝑣 na putu sa oznakom 𝑥𝛼, odgovarajui qvor 𝑠(𝑣)nalazi se na putu sa oznakom 𝛼. Pri tome, ako je dubina qvora 𝑣 jednaka𝑚,onda dubina qvora 𝑠(𝑣) moe da bude 𝑚− 1, 𝑚 ili vea od 𝑚. Na primer,qvor sa oznakom 𝑥𝑎𝑏 ima dubinu dva, dok je dubina qvora sa oznakom 𝑎𝑏jednaka jedan. Sliqno, qvor sa oznakom 𝑥𝑎𝑏𝑐𝑑𝑒𝑓𝑔 ima dubinu pet, dok jedubina qvora sa oznakom 𝑎𝑏𝑐𝑑𝑒𝑓𝑔 jednaka xest.

Definicija 3.5 (Trenutna dubina algoritma). U toku izvrxavaa algoritmatrenutna dubina algoritma je dubina qvora koji je posledi poseen ualgoritmu.

Teorema 3.4 (Linearnost faze Ukonenovog algoritma). Korixeem preskokasa odbrojavaem bilo koja faza Ukonenovog algoritma zahteva 𝑂(𝑚) koraka.

Dokaz. U fazi 𝑖 se 𝑖 + 1 put radi produee sufiksa. U toku jednogproduea, algoritam prelazi najvixe jednu granu uvis, prelazi sufiksnuvezu, spuxta se za odreeni broj qvorova, primeuje neko od pravila zaproduee sufiksa i eventualno dodaje novu sufiksnu vezu. Poxto smove ustanovili da sve ostale operacije sem spuxtaa traju 𝑂(1), ostaje darazmotrimo kako se mea trenutna dubina qvora u toku jedne faze.

Kretae uvis u toku bilo kog produea smauje trenutnu dubinuqvora najvixe za jedan (poxto se na putu uvis prolazi najvixe jedanqvor). Prelazak preko sufiksne veze moe da smai trenutnu dubinunajvixe za jox jedan (teorema 3.3), a svaka grana proena na putu naniepoveava trenutnu dubinu qvora. Prema tome, u toku cele faze se dubinaqvora moe smaiti za jedan najvixe 2𝑚 puta. Poxto ni jedan qvor nema

Page 55: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

55 3. Strukture podataka

dubinu veu od 𝑚, ukupan broj inkrementiraa trenutne dubine qvorau toku cele faze ne moe da bude vei od 3𝑚. Prema tome, ukupan brojgrana preenih prilikom kretaa nanie u toku cele faze nije vei od3𝑚. Ako se koriste preskoci sa odbrojavaem, prelazak grane traje 𝑂(1),pa je ukupna sloenost dela algoritma koji odgovara kretaima nanie𝑂(𝑚).

Prethodna teorema ima za direktnu posledicu naredno tvree.

Teorema 3.5 (Kvadratna sloenost Ukonenovog algoritma). Ukonenovalgoritam se moe implementirati korixeem sufiksnih veza takoda zahteva 𝑂(𝑚2) koraka.

Sloenost 𝑂(𝑚2) dobija se mnoeem granice sloenosti za jednufazu algoritma, 𝑂(𝑚), brojem faza u algoritmu, 𝑚. Ova gruba procenasloenosti posledica je nezavisne procene sloenosti proizvone faze.Poboxae se postie tako xto se u analizi razmatraju i prelasciizmeu faza.

Vaan deta u realizaciji algoritma. Ci je postii da vremenskasloenost algoritma bude 𝑂(𝑚). Na tom putu postoji jedna oqiglednaprepreka: prostor koji zauzima sufiksno stablo je Θ(𝑚2), jer oznake granamogu da budu duine Θ(𝑚), a broj grana je Θ(𝑚). Zbog toga bilo kojialgoritam za formirae sufiksnog stabla mora da ima sloenost barΘ(𝑚2). Da bi se doxlo do algoritma sloenosti 𝑂(𝑚), mora se obezbeditida oznake grana zauzimaju prostor 𝑂(1).

Ispostava se da takva, jednostavna alternativna xema predstavaaoznaka grana postoji. Umesto eksplicitnog zapisivaa podniske na grani,moe se koristiti ureen par indeksa na grani, koji oznaqavaju poqetnui kraju poziciju te podniske u 𝑆 (videti sliku 3.21). S obzirom daalgoritam quva kopiju niske 𝑆, on je u stau da u konstantnom vremenupronae bilo koji karakter u 𝑆. Zbog toga je mogue opisati bilo kojialgoritam rada sa sufiksnim stablom kao da su oznake grana predstaveneeksplicitno, a zatim implementirati algoritam sa samo konstantnimbrojem karaktera na svakoj grani. Opisana xema naziva se kompresijaoznaka grana.

Na primer, kada se u okviru Ukonenovog algoritma prati podniska kojaodgovara prelasku jedne grane, koristi se par indeksa zapisanih na granida se iz 𝑆 proqitaju karakteri te niske i zatim se ti karakteri uporeujusa karakterima niske. Pravila za produee se takoe jednostavno realizujukorixeem kompresije oznaka grana. Kada se u fazi 𝑖+1 primeni pravilo2, novoformirana grana se oznaqava parom indeksa (𝑖 + 1, 𝑖 + 1), a kada seprimeni pravilo 1 (ka listu), promeni se par indeksa na toj grani sa (𝑝, 𝑞)na (𝑝, 𝑞 + 1). Indukcijom se lako pokazuje da 𝑞 mora biti jednako 𝑖 i otudanova oznaka (𝑝, 𝑖 + 1) predstava korektnu novu podnisku za tu granu kalistu.

Korixeem parova indeksa za predstavae oznaka grane na svakojgrani zapisuju se samo dva broja. Primetimo da je ukupan broj grana ustablu najvixe 2𝑚 − 1, jer je ukupan broj listova u stablu 𝑚, a svakiunutraxi qvor poveava broj listova bar za jedan, pa unutraxih qvorova

Page 56: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

3.3. Sufiksna stabla 56

Slika 3.21: Levo stablo predstava fragment sufiksnog stabla niske𝑆 = 𝑎𝑏𝑐𝑑𝑒𝑓𝑎𝑏𝑐𝑢𝑣𝑤 sa eksplicitno predstavenim oznakama grana.Desno stablo predstava isti fragment sa kompresijom oznaka grana.Primetimo da se grana sa oznakom 2, 3 moe oznaqiti takoe parom 8, 9.

ima najvixe 𝑚− 1. Kako je broj grana najvixe 2𝑚− 1, to sufiksno stablokoristi samo 𝑂(𝑚) simbola i zahteva prostor veliqine 𝑂(𝑚).

Razmotrimo sada odnos pojedinih pravila za produee sufiksa sasusednim produeima, odnosno fazama.

Zapaae 1: Pravilo 3 prekida fazu. Ako se u toku faze za produeesufiksa 𝑆[𝑗..𝑖] primeni pravilo 3, isto pravilo bie primeeno i zaproduee svih ostalih sufiksa 𝑆[𝑗 + 1..𝑖], 𝑆[𝑗 + 2..𝑖], . . . Zaista, ako jeprimeeno pravilo 3, put oznaqen sa 𝑆[𝑗..𝑖] u trenutnom stablu mora dase nastavi karakterom 𝑆[𝑖 + 1]. Poxto su 𝑆[𝑗 + 1..𝑖], 𝑆[𝑗 + 2..𝑖], . . . sufiksiniske 𝑆[𝑗..𝑖], oni se takoe nastavaju istim karakterom 𝑆[𝑖 + 1], pa sepravilo 3 primeuje za produavae svih preostalih indeksa.

Prilikom primene pravila 3 nema potrebe da se bilo xta radi, jer jeprodueni sufiks ve u stablu. Pored toga, nova sufiksna veza treba dase doda u stablo samo nakon produea u kojem je primeeno pravilo 2.Ove qienice i zapaae 1 dovode do narednog implementacionog trika.

Trik 2. Kada se u fazi 𝑖 + 1 prvi put primeni pravilo 3, faza jezavrxena. Drugim reqima, ako se ovo dogodi prilikom produea sufiksa𝑆[𝑗..𝑖], onda nema potrebe eksplicitno traiti kraj bilo koje niske 𝑆[𝑘..𝑖], 𝑘 >𝑗.

Za produea u fazi 𝑖 + 1 koja su \zavrxena" nakon prve primenepravila 3 kaemo da su zavrxena implicitno. Nasuprot tome, eksplicitnaproduea su ona u toku kojih se eksplicitno trai kraj niske 𝑆[𝑗..𝑖].

Trik 2 je oqigledno dobra heuristika, qiji je rezultat smaee poslakoji se obava. Ipak, jox uvek nije jasno kako ona utiqe na ukupnu sloenostalgoritma. Za to e nam biti potrebno jox jedno zapaae i jox jedantrik.

Page 57: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

57 3. Strukture podataka

Zapaae 2: Jednom list, uvek list. Ako je u nekom trenutku uUkonenovom algoritmu formiran list i obeleen oznakom 𝑗 (za sufikskoji poqie od 𝑗-te pozicije u niski 𝑆), tada taj list ostaje list usvim narednim formiranim stablima u toku algoritma. Ovo je taqno jeralgoritam ne poseduje mehanizam za produavae \raqvaem" grane kojavodi ka listu. Preciznije, ako se u nekom trenutku pojavi list oznaqensa 𝑗, u produeu 𝑗 u bilo kojoj narednoj fazi uvek e biti primeivanopravilo 1. Dakle, jednom list, uvek list.

List 1 formira se u fazi 1, tako da u proizvonoj fazi 𝑖 postojipoqetni niz od prvih nekoliko produea koja se vrxe primenom pravila1 ili 2 (jer pravilo 3 zaustava proces produavaa; prvo produee seuvek radi primenom pravila 1). Neka 𝑗𝑖 oznaqava poslede produee utom nizu. S obzirom na to da se u fazi 𝑖+ 1 sva produea sa indeksimado 𝑗𝑖 rade primenom pravila 1, odnosno da bilo koja primena pravila 2formira novi list, iz opaaa 2 sledi da je 𝑗𝑖 ≤ 𝑗𝑖+1. Drugim reqima,poqetni niz produea gde se primeuje pravilo 1, ne moe biti smaenu narednim fazama. Ovo sugerixe implementacioni trik da se u fazi 𝑖+1izbegnu sva eksplicitna produea od 1 do 𝑗𝑖. Umesto toga bie potrebansamo konstantan broj koraka za izvoee implicitnih produea.

Da bismo opisali ovaj trik, prisetimo se da se oznake grana u (impli-citnim) sufiksnim stablima mogu predstaviti parom indeksa (𝑝, 𝑞) kojipredstavaju podnisku 𝑆[𝑝..𝑞]. Prisetimo se, takoe, da je za svaku granudo lista u 𝑇𝑖, indeks 𝑞 jednak 𝑖, i u fazi 𝑖+1 indeks 𝑞 se inkrementira na𝑖+1, registrujui tako dodavae karaktera 𝑆[𝑖+1] na kraj svakog sufiksa.

Trik 3. U fazi 𝑖 + 1, kada se grana ka listu prvi put formira i kadabi se oznaqila oznakom 𝑆[𝑝..𝑖+ 1], umesto pisaa para indeksa (𝑝, 𝑖+ 1) nagrani, napisati (𝑝, 𝑒), gde je 𝑒 simbol koji oznaqava trenutni kraj. Simbol𝑒 je globalni indeks koji se postava na 𝑖 + 1 po jednom u svakoj fazi. Ufazi 𝑖+1, s obzirom da algoritam zna da e se pravilo 1 primeniti makaru produeima od 1 do 𝑗𝑖, nije potrebno raditi dodatan eksplicitanposao kojim se implementira tih 𝑗𝑖 produea. Umesto toga, on samoinkrementira promenivu 𝑒, a zatim sprovodi samo eksplicitna produeapoqevxi od produea 𝑗𝑖 + 1.

Slika 3.22: Prikaz jednog mogueg izvrxea Ukonenovog algoritma. Svakalinija predstava fazu u algoritmu i svaki broj predstava eksplicitnoproduee izvrxeno u algoritmu: prikazane su qetiri faze i sedamnaesteksplicitnih produea. U proizvonim dvema susednim fazama nalazise najvixe jedan indeks gde se isto eksplicitno produee izvrxava uobema fazama.

Page 58: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

3.3. Sufiksna stabla 58

Linearnost Ukonenovog algoritma. Sa trikovima 2 i 3, eksplicitnaproduea u fazi 𝑖+1 potrebna su samo u produeima poqevxi od 𝑗𝑖+1do pojave prvog produea u kojem se primeuje pravilo 3 ili do krajafaze. Sva ostala produea se rade implicitno. Rezimirajui sve xtoje reqeno, realizacija faze 𝑖 + 1 moe se opisati narednim algoritmom:

∙ Inkrementirati indeks 𝑒, tako da je egova nova vrednost 𝑖 + 1 (naosnovu trika 3, ovo korektno realizuje sva implicitna produeaod 1 do 𝑗𝑖).

∙ Eksplicitno izvrxiti sva naredna produea poqevxi od 𝑗𝑖 + 1 dopojave produea 𝑗* gde se primeuje pravilo 3 ili dok se ne zavrxesva produea u trenutnoj fazi (na osnovu trika 2, ovo korektnorealizuje sva dodatna implicitna produea od 𝑗* + 1 do 𝑖 + 1).

∙ Postaviti vrednost 𝑗𝑖+1 na 𝑗*−1, da bi se pripremila naredna faza.

Posledi korak algoritma korektno postava 𝑗𝑖+1 zbog toga xto poqetniniz produea gde se primeuju pravila 1 ili 2 mora da se zavrxineposredno pre prve primene pravila 3.

Kuqna odlika algoritma je da faza 𝑖 + 1 poqie sa eksplicitnimproduavaima od produea 𝑗*, gde je 𝑗* poslede eksplicitno produeeu fazi 𝑖+ 1. Zbog toga, dve susedne faze dele najvixe jedan indeks (𝑗*) zakoji se vrxi eksplicitno produee (videti sliku 3.22). Xtavixe, faza𝑖+1 se zavrxava znajui gde se zavrxava niska 𝑆[𝑗*..𝑖], tako da ponovenoproduee 𝑗* u fazi 𝑖+2 moe da izvrxi primenu pravila za produeeza 𝑗* bez ikakvog vraaa uz stablo, praea sufiksnih veza i preskakaaqvorova. To znaqi da je sloenost prvog eksplicitnog produea u svakojfazi jednaka𝑂(1). Sada je jednostavno dokazati glavni rezultat, formulisanu obliku naredne teoreme.

Teorema 3.6 (Linearnost Ukonenovog algoritma). Korixeem sufiksnihveza i implementacionih trikova 1, 2 i 3, Ukonenov algoritam formiraimplicitna sufiksna stabla 𝑇1 do 𝑇𝑚 u 𝑂(𝑚) koraka.

Formirae pravog sufiksnog stabla. Poslede formirano implicitnosufiksno stablo 𝑇𝑚 moe se pretvoriti u pravo sufiksno stablo u vremenu𝑂(𝑚). Posle dodavaa terminirajueg karaktera $ na kraj niske 𝑆 iUkonenov algoritam izvrxava jox jednu, dopunsku fazu. Smisao dodavaaterminirajueg karaktera je da nijedan sufiks ne moe biti prefiksnekog drugog sufiksa, pa se Ukonenov algoritam zavrxava implicitnimsufiksnim stablom u kojem se svaki sufiks zavrxava u listu i timeje eksplicitno predstaven. Jedina druga izmena koja je potrebna jestezamena promenive 𝑒 vrednoxu 𝑚. Ovo se postie obilaskom stabla uvremenu 𝑂(𝑚), poseujui svaku granu ka listu. Rezultat koji se dobijaposle ovih izmena je pravo sufiksno stablo. Time je dokazana narednateorema:

Teorema 3.7 (Linearnost formiraa sufiksnog stabla Ukonenovim algoritmom).Sloenost formiraa sufiksnog stabla niske 𝑆 duine 𝑚, zajedno saformiraem svih sufiksnih veza, je 𝑂(𝑚).

Page 59: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

59 3. Strukture podataka

3.3.3 Primene sufiksnih stabala

Sufiksna stabla imaju brojne primene. Kao xto smo ve napomenuli,jedna od primena je za traee reqi u tekstu. Ako je zadat tekst 𝑇 i req𝑃 , mogue je pronai sve pojave reqi 𝑃 u 𝑇 za vreme 𝑂(𝑛 + 𝑘), gde je 𝑛duina reqi 𝑃 , a 𝑘 je broj pojava unutar 𝑇 .

Taqno traee svih zadatih reqi

Za date reqi 𝑃1, 𝑃2, . . . , 𝑃𝑘 ukupne duine 𝑛, sufiksno stablo moe da seiskoristi za pronalaee svih pojava ovih reqi u tekstu 𝑇 duine 𝑚algoritmom sloenosti 𝑂(𝑚+𝑛+𝑧), gde je 𝑧 ukupan broj pojava svih ovihreqi u 𝑇 . Sufiksno stablo koristi se za predobradu teksta 𝑇 za vreme𝑂(𝑚), a posle toga se traee svih pojava reqi (reqi se trae jedna pojedna, nezavisno) zavrxava za vreme 𝑂(𝑛 + 𝑧).

Najdua zajedniqka podniska dve niske 𝑆1 i 𝑆2

Postoji veliki broj problema koji obrauju vei broj niski, kao xto jetraee reqi u tekstu, automatsko dopuavae teksta, najdui zajedniqkipodniz dve niske, najdua palindromska niska, . . .. U ovim operacijamasve niske koje se koriste treba da budu indeksirane zbog bre pretrage.Jedan naqin da se to uradi je posredstvom sufiksnih stabala. Sufiksnostablo formirano za skup niski naziva se uopxteno sufiksno stablo.Jednostavan naqin za konstrukciju uopxtenog sufiksnog stabla dve dateniske je formiraem nove niske 𝑆1#𝑆2$, koja se dobija dodavaem dvarazliqita zavrxna karaktera, i formiraem obiqnog sufiksnog stablaza ovu nisku. Svaki list sufiksnog stabla ili poqie sufiksom niske𝑆1, ili 𝑆2, ili obe niske. Oznaka svake grane u uopxtenom sufiksnomstablu treba da odgovara podniski samo jedne ulazne niske, te ako postojeoznake puta koje ukuquju podniske obe ulazne niske, moemo da zadrimosamo poqetni deo koji pripada jednoj niski. Na osnovu oznaka listovamoemo videti da li je list sufiks prve ili druge niske (na osnovu togada li oznaka lista ima vrednost iz skupa 1..|𝑆1| ili vrednost iz skupa|𝑆1|+ 2..|𝑆1|+ |𝑆2|+ 1. Na osnovu ovoga oznaqiemo unutraxe qvorovesa 𝑆1, 𝑆2 ili 𝑆1𝑆2 na osnovu toga da li su svi listovi koji odgovarajupodstablu sa korenom u tom unutraxem qvoru sufiksi niske 𝑆1, 𝑆2 ilipostoji bar jedan list koji odgovara sufiksu niske 𝑆1 i bar jedan list kojiodgovara sufiksu niske 𝑆2. Oznake puta do unutraxeg qvora sa oznakom𝑆1𝑆2 qine podniske obe niske 𝑆1 i 𝑆2. Oznaka puta do qvora kome u stabluodgovara najdua niska oznaqenog sa 𝑆1𝑆2 daje najdui zajedniqki podnizove dve niske. Sloenost svih operacija koje je potrebno izvrxiti da sepronae najdua zajedniqka podniska niski 𝑆1 i 𝑆2 je 𝑂(|𝑆1|+ |𝑆2|).

Page 60: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj
Page 61: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

Glava 4

Sortirae linearne sloenosti

Podsetimo se da se svaki algoritam za sortirae zasnovan na uporeivaimamoe modelirati stablom odluqivaa, zbog qega je egova sloenost Ω(𝑛 log 𝑛).Ova qienica sledi iz toga da je vremenska sloenost algoritma definisanogstablom odluqivaa u najgorem sluqaju jednaka visini ovog stabla, a sobzirom na to da proizvono stablo odluqivaa za sortirae 𝑛 elemenataima bar 𝑛! listova (po jedan za svaku moguu permutaciju elemenata naulazu), egova visina je najmae log2(𝑛!) = Ω(𝑛 log 𝑛).

Sortirae je ipak mogue izvrxavati bre korixeem specijalnihosobina brojeva, ili izvodei algebarske manipulacije sa ima. Ovo neprotivreqi dokazanoj dooj granici, jer ovakvi algoritmi sortiraa nekoriste uporeivaa ve recimo qienicu da vrednosti brojeva mogu dase efikasno koriste kao adrese.

4.1 Sortirae prebrojavaem

Pretpostavimo da niz 𝐴 sadri 𝑛 celobrojnih vrednosti od kojih je svakaiz opsega [0, 𝑘], za neki prirodni broj 𝑘. Za poqetak pretpostavimo da susvi elementi niza 𝐴 meusobno razliqiti. Ideja algoritma sortiraaprebrojavaem (eng. counting sort) je da se za svaki element 𝑥 niza𝐴 odredi broj elemenata niza 𝐴 koji su mai od 𝑥. Ova informacijaomoguava postavae elementa 𝑥 direktno na svoju poziciju u sortiranomredosledu. Na primer, ako je 17 elemenata niza 𝐴 mae od 𝑥, onda jepozicija elementa 𝑥 u sortiranom redosledu 18 (pretpostavamo da vrednostiindeksa u nizu kreu od 1). Da bismo mogli da obradimo sluqaj kadavixe elemenata ima istu vrednost, potrebno je da malo modifikujemopredloenu xemu.

Pored ulaznog niza𝐴[1..𝑛] u okviru algoritma sortiraa prebrojavaemkoriste se jox dva niza: niz 𝐵[1..𝑛] koji na kraju izvrxavaa algoritmasadri sortirani niz elemenata i pomoni niz brojaqa 𝐶[0..𝑘] (posleprolaska kroz algoritam 𝐶[𝑖] jednako je broju pojavivaa broja 𝑖 u nizu𝐴).

S obzirom na to da elementi niza𝐴 ne moraju biti razliqiti, dekrementiramovrednost 𝐶[𝐴[𝑖]] svaki put kada smestimo vrednost 𝐴[𝑖] u niz 𝐵. Time se

61

Page 62: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

4.1. Sortirae prebrojavaem 62

Slika 4.1: Primer sortiraa prebrojavaem niza 𝐴[1..8], pri qemu susvi elementi niza 𝐴 nenegativni celi brojevi ne vei od 5. a) Niz 𝐴i niz 𝐶 nakon postavaa elemenata niza 𝐶 tako da 𝐶[𝑖] sadri brojelemenata jednakih 𝑖. b) Niz 𝐶 nakon izvrxavaa pete kojom se vrednost𝐶[𝑖] postava na broj elemenata maih ili jednakih 𝑖. c)-e) Nizovi 𝐵 i 𝐶nakon izvrxavaa redom 1, 2 i 3 iteracije pete. f) Sortirani niz 𝐵.

Algoritam Sortiranje prebrojavanjem(𝐴,𝑛);

Ulaz: prirodni broj 𝑘 i niz 𝐴[1..𝑛] celih brojeva takav da je 0 ≤ 𝐴[𝑖] ≤ 𝑘 za 1 ≤ 𝑖 ≤ 𝑛.

Izlaz: 𝐵 (sortirani niz).

begin

Neka je 𝐶[0..𝑘] novi niz

for 𝑖 := 0 to 𝑘 do

𝐶[𝑖] := 0

for 𝑖 := 1 to 𝑛 do

𝐶[𝐴[𝑖]] := 𝐶[𝐴[𝑖]] + 1

𝐶[𝑖] sada sadri broj elemenata jednakih 𝑖for 𝑖 := 1 to 𝑘 do

𝐶[𝑖] := 𝐶[𝑖] + 𝐶[𝑖− 1]

𝐶[𝑖] sada sadri broj elemenata mai ili jednak od 𝑖for 𝑖 := 𝑛 downto 1

𝐵[𝐶[𝐴[𝑖]]] := 𝐴[𝑖]

𝐶[𝐴[𝑖]] := 𝐶[𝐴[𝑖]]− 1

end

Slika 4.2: Sortirae prebrojavaem.

postie da ukoliko postoji jox neki element sa istom vrednoxu 𝐴[𝑗],jedan od takvih elemenata ide na poziciju neposredno pre 𝐴[𝑗].

Vano svojstvo algoritma sortiraa prebrojavaem je egova stabilnost:brojevi sa istom vrednoxu se na izlazu pojavuju u onom redosledu ukojem su bili na ulazu. Ovo se postie kretaem od poslede ka prvojvrednosti za indeks u posledoj peti u algoritmu. Kretae u suprotnomredosledu ne bi quvalo stabilnost. Jasno je, ovo svojstvo je vano jedino

Page 63: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

63 4. Sortirae linearne sloenosti

ako se uz vrednosti koje sortiramo quvaju i neki dodatni (satelitski)podaci. Ukoliko se ne quvaju nikakvi dodatni podaci, mogli bismo samoproi kroz niz 𝐶 dobijen nakon prve pete algoritma i za svaku vrednost𝐶[𝑖] > 0 iskopirati 𝐶[𝑖] kopija elementa 𝑖 u izlazni niz.

Ukupna sloenost algoritma je Θ(𝑘 + 𝑛). U sluqaju kada je 𝑘 = 𝑂(𝑛)sloenosti je linearna, Θ(𝑛). Meutim, ukoliko je 𝑘 = 𝑂(𝑛2), ovaj algoritambio bi kvadratne sloenosti i vixe bi se isplatilo primeniti neki odalgoritama zasnovanih na poreeu elemenata.

4.2 Sortirae razvrstavaem i sortirae vixestrukim razvrstavaem

Najjednostavniji postupak sortiraa niza prirodnih brojeva bi se sastojaou tome da se obezbedi dovoan broj lokacija, i da se onda svaki elementsmesti na svoju lokaciju. Taj postupak zove se sortirae razvrstavaem(eng. bucket sort). Ako se, na primer, sortiraju pisma prema odredixtima,onda je dovono obezbediti jednu pregradu za svako odredixte, i sortiraeje vrlo efikasno. Ali ako pisma treba sortirati prema petocifrenompoxtanskom broju, onda ovaj metod zahteva oko 100000 pregrada, xto postupakqini nepraktiqnim. Prema tome, sortirae razvrstavaem radi dobroako su elementi iz malog, jednostavnog opsega, koji je unapred poznat.Prelazimo na detaniji opis ovog algoritma.

Neka je dato 𝑛 razliqitih elemenata, koji su celi brojevi iz opsega od1 do 𝑚 ≥ 𝑛. Rezervixe se 𝑚 lokacija, a onda se za svako 𝑖 broj 𝑥𝑖 stava nalokaciju 𝑥𝑖 koja odgovara egovoj vrednosti. Posle toga se pregledaju svelokacije i iz ih se redom pokupe elementi. Sloenost ovog jednostavnogalgoritma je dakle 𝑂(𝑚 + 𝑛). Ako je 𝑚 = 𝑂(𝑛), dobijamo algoritam zasortirae linerne sloenosti. S druge strane, ako je 𝑚 veliko u odnosuna 𝑛 (kao u sluqaju poxtanskih brojeva), onda je i 𝑂(𝑚) takoe veliko.Pored toga, algoritam zahteva memoriju veliqine 𝑂(𝑚), xto je jox veiproblem za velike 𝑚.

Prirodno uopxtee ove ideje je sortirae vixestrukim razvrs-tavaem (engl. radix sort). Razmotrimo jox jednom primer sa poxtanskimbrojevima. Sortirae razvrstavaem u ovom sluqaju nije pogodno, jerje preveliki opseg moguih poxtanskih brojeva. Kako smaiti potrebanopseg? Primeniemo indukciju po opsegu na sledei naqin. Najpre koristimo10 pregrada i sortiramo pisma prema prvoj cifri poxtanskog broja.Svaka pregrada sada pokriva 10000 razliqitih poxtanskih brojeva (odreenihsa preostale qetiri cifre poxtanskog broja). Broj operacija za ovu etapuje 𝑂(𝑛). Na kraju prve etape imamo 10 pregrada, od kojih svaka odgovaramaem opsegu. Dae se problem za svaku pregradu rexava rekurzivno.Poxto se opseg posle svake etape smauje za faktor 10 i poxto poxtanskibrojevi imaju pet cifara, dovono je pet etapa. Kad se sadraji pregradasortiraju, lako ih je objediniti u sortiranu (ureenu) listu. Razmotrenaverzija sortiraa vixestrukim razvrstavaem (cifre se prolaze slevaudesno) poznata je kao sortirae obratnim vixestrukim razvrstavaem.

Napomenimo da se opseg moe podeliti na bilo koji odgovarajui naqin.U primeru sa poxtanskim brojevima podela je izvrxena u skladu sa dekadnimprikazom poxtanskih brojeva. Ako su elementi stringovi koje treba sortirati

Page 64: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

4.3. Sortirae proseqne linearne sloenosti 64

leksikografski, moemo ih uporeivati znak po znak, pa se dobija leksikografskosortirae.

Razmotrimo sada drugu varijantu iste ideje. Rekurzivna realizacijasortiraa obratnim vixestrukim razvrstavaem zahteva pomone lokacije(oko 50 pregrada u primeru sa poxtanskim brojevima; svaki nivo rekurzijeima svoje pregrade). Drugi naqin realizacije sortiraa vixestrukimrazvrstavaema zasniva se na primeni indukcije obrnutim redosledom:sortirae se radi zdesna ulevo, polazei od najniih umesto od najvixihcifara. Pretpostavamo da su elementi veliki brojevi, predstavenisa 𝑘 cifara u sistemu sa osnovom 𝑑 (cifre su iz opsega od 0 do 𝑑 − 1).Induktivna hipoteza je vrlo prirodna.

Induktivna hipoteza. Umemo da sortiramo brojeve sa mae od 𝑘 cifara.

Razlika izmeu ovog metoda i sortiraa obratnim vixestrukim raz-vrstavaem je u naqinu na koji se proxiruje hipoteza (ideja primeneinduktivne hipoteze obrnutim redosledom sliqna je kao kod Hornerovexeme). Kod datih brojeva sa 𝑘 cifara mi najpre ignorixemo najvixu(prvu) cifru i sortiramo brojeve prema ostatku cifara indukcijom. Takodobijamo listu brojeva sortiranih prema najniih 𝑘 − 1 cifara. Zatimprolazimo jox jednom kroz sve elemente, i razvrstavamo ih prema najvixojcifri u 𝑑 pregrada. Konaqno, objediujemo redom sadraje pregrada. Ovajalgoritam zove se sortirae direktnim vixestrukim razvrstavaem. Pokazaemoda su elementi na kraju sortirani po svih 𝑘 cifara.

Tvrdimo da su dva elementa svrstana u razliqite pregrade u ispravnomporetku. Za to nam nije potrebna induktivna hipoteza, jer je najvixacifra prvog od ih vea od najvixe cifre drugog. S druge strane, akodva elementa imaju iste najvixe cifre, onda su oni prema induktivnojhipotezi dovedeni u ispravan redosled pre posledeg koraka. Bitno jeda elementi staveni u istu pregradu ostaju u istom redosledu kao i prerazvrstavaa. Ovo se moe postii upotrebom liste za svaku pregradu iobjediavaem 𝑑 lista na kraju svake etape u jednu globalnu listu od svihelemenata (sortiranih prema 𝑖 najniih cifara). Algoritam je prikazanna slici 4.3.

Sloenost. Potrebno je 𝑛 koraka za kopirae elemenata u globalnulistu 𝐺𝐿 i 𝑑 koraka za inicijalizaciju lista 𝑄[𝑖]. U glavnoj petialgoritma, koja se izvrxava 𝑘 puta, svaki elemenat se vadi iz globalne istava u neku od lista 𝑄[𝑖]. Na kraju se sve liste 𝑄[𝑖] ponovo objediavajuu 𝐺𝐿. Ukupna vremenska sloenost algoritma je 𝑂(𝑘(𝑛 + 𝑑)).

Na primer, ukoliko je dat niz od 𝑛 elemenata qije su vrednosti izopsega od 0 do 𝑛2−1, moemo iskoristiti sortirae direktnim vixestrukimrazvrstavaem svaka vrednost bi bila razmatrana kao dvocifreni broj,gde je svaka cifra iz opsega [0, 𝑛− 1]. Ovaj algoritam bio bi sloenosti𝑂(2(𝑛 + 𝑛)) = 𝑂(𝑛).

4.3 Sortirae proseqne linearne sloenosti

Razmotriemo sada drugu varijantu algoritma. Prikazaemo algoritamsortiraa razvrstavaem, pri qemu se pretpostava da elementi ulaznogniza𝐴[1..𝑛] imaju ravnomernu raspodelu na poluotvorenom intervalu [0, 1).

Page 65: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

65 4. Sortirae linearne sloenosti

Algoritam DVR sort(𝑋,𝑛, 𝑘);

Ulaz: 𝑋 (niz od 𝑛 celih nenegativnih brojeva sa po 𝑘 cifara).

Izlaz: 𝑋 (sortirani niz).

begin

Pretpostavamo da su na poqetku svi elementi u globalnoj listi 𝐺𝐿

𝐺𝐿 se koristi zbog jednostavnosti; lista se moe realizovati u 𝑋for 𝑖 := 0 to 𝑑− 1 do

𝑑 je broj moguih cifara; 𝑑 = 10 u dekadnom sluqajuinicijalizovati listu 𝑄[𝑖] kao praznu listu;

for 𝑖 := 𝑘 downto 1 do

while 𝐺𝐿 nije prazna do razvrstavae po 𝑖-toj cifriskini 𝑥 iz 𝐺𝐿; 𝑥 je prvi element sa liste𝑐 := 𝑖ta cifra 𝑥; gledano sleva udesnoubaci 𝑥 u 𝑄[𝑐];

for 𝑡 := 0 to 𝑑− 1 do objediavae lokalnih listaukuqi 𝑄[𝑡] u 𝐺𝐿; dodavae na kraj liste

for 𝑖 := 1 to 𝑛 do prepisivae elemenata iz 𝐺𝐿 u niz 𝑥skini 𝑋[𝑖] iz 𝐺𝐿

end

Slika 4.3: Sortirae direktnim vixestrukim razvrstavaem.

Preciznije, pretpostavka je da je svaki element ulaznog niza generisannezavisno od ostalih elemenata nasumiqnim odabirom elementa iz intervala[0, 1).

Sortirae razvrstavaem razbija interval [0, 1) na taqno 𝑛 jednakihpodintervala (\pregrade"), a zatim 𝑛 ulaznih brojeva rasporeuje po pregradama.Kako elementi ulaznog niza imaju ravnomernu raspodelu na intervalu[0, 1), ne oqekujemo da mnogo brojeva upadne u istu pregradu. Da bismodobili izlaz, odnosno sortirani niz elemenata polaznog niza, sortiramobrojeve u svakoj pregradi (jednostavnim algoritmom, kao xto je na primersortirae umetaem), a zatim prolazimo kroz pregrade, listajui brojeveu svakoj od ih.

Algoritam za sortirae razvrstavaem pretpostava da je dat niz 𝐴duine 𝑛 i da za svaki element niza 𝐴 vai: 0 ≤ 𝐴[𝑖] < 1, 1 ≤ 𝑖 ≤ 𝑛.Algoritam zahteva dodatni niz 𝐵 veliqine 𝑛 koji sadri pokazivaqena povezane liste (pregrade); pretpostava se da postoji mehanizam zaodravae takvih listi. Algoritam je prikazan na slici 4.4. Primerizvrxavaa ovog algoritma prikazan je na slici 4.5.

Da bismo se uverili u korektnost algoritma, posmatrajmo dva elementa𝐴[𝑖] i 𝐴[𝑗]. Pretpostavimo bez gubitka na opxtosti da je 𝐴[𝑖] ≤ 𝐴[𝑗]. Sobzirom da vai ⌊𝑛 ·𝐴[𝑖]⌋ ≤ ⌊𝑛 ·𝐴[𝑗]⌋, onda je ili element 𝐴[𝑖] smexten uistu pregradu kao i 𝐴[𝑗], ili je smexten u pregradu sa maim indeksom.Ako se ta dva elementa smeste u istu pregradu, onda ih posleda peta ualgoritmu premexta u ispravan redosled. Ako se ta dva elementa smesteu razliqite pregrade, onda ih posleda naredba u algoritmu smexta uispravan redosled. Dakle, predloeni algoritam radi korektno.

Page 66: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

4.3. Sortirae proseqne linearne sloenosti 66

Algoritam Sortiranje razvrstavanjem(𝐴,𝑛);

Ulaz: 𝐴 (niz od 𝑛 brojeva pri qemu svaki element 𝐴[𝑖] zadovoava 0 ≤ 𝐴[𝑖] < 1).

Izlaz: 𝑋 (sortirani niz).

begin

Neka je 𝐵 inicijalno prazni niz veliqine 𝑛

for 𝑖 := 0 to 𝑛− 1 do

inicijalizovati listu 𝐵[𝑖] kao praznu listu;

for 𝑖 := 1 to 𝑛 do

ubaciti 𝐴[𝑖] u listu 𝐵[⌊𝑛 ·𝐴[𝑖]⌋]for 𝑖 := 0 to 𝑛− 1 do

sortirati listu 𝐵[𝑖] algoritmom sortirae umetaem

nadovezati liste 𝐵[0], 𝐵[1], . . . , 𝐵[𝑛− 1]

end

Slika 4.4: Sortirae razvrstavaem.

Slika 4.5: Primer primene algoritma 𝑆𝑜𝑟𝑡𝑖𝑟𝑎𝑛𝑗𝑒 𝑟𝑎𝑧𝑣𝑟𝑠𝑡𝑎𝑣𝑎𝑛𝑗𝑒𝑚 za 𝑛 =10. (a) Ulazni niz 𝐴. (b) Dodatni niz𝐵 sortiranih listi (pregrada) nakonizvrxea poslede pete u algoritmu. Pregrada 𝑖 sadri vrednostiiz poluotvorenog intervala [𝑖/10, (𝑖 + 1)/10). Sortirani izlaz dobija senadovezivaem redom sadraja svih pregrada.

Sloenost. Da bismo izvrxili analizu vremenske sloenosti algoritma,primetimo da svi koraci u algoritmu osim koraka kada se sadraj pregradasortira umetaem imaju sloenost 𝑂(𝑛) u najgorem sluqaju. Dakle, dabismo odredili vreme izvrxavaa algoritma u najgorem sluqaju, potrebnoje da odredimo ukupno vreme izvrxavaa 𝑛 poziva sortiraa umetaemsadraja pregrada.

Oznaqimo sa 𝑛𝑖 sluqajnu promenivu koja oznaqava broj elemenatau pregradi 𝐵[𝑖]. S obzirom na to da je vremenska sloenost algoritmasortiraa umetaem 𝑂(𝑛2) za niz veliqine 𝑛, jednaqina koja opisuje

Page 67: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

67 4. Sortirae linearne sloenosti

sloenost sortiraa razvrstavaem glasi

𝑇 (𝑛) = Θ(𝑛) +

𝑛−1∑𝑖=0

𝑂(𝑛2𝑖 ).

Proseqno trajae sortiraa razvrstavaem moemo odrediti izraqunavaemoqekivane vrednosti trajaa algoritma, razmatrajui oqekivae na datojraspodeli ulaznih elemenata. Primeujui operator oqekivaa na prethodnujednakost i korixeem svojstva linearnosti matematiqkog oqekivaa,dobijamo

𝐸[𝑇 (𝑛)] = 𝐸[Θ(𝑛) +∑𝑛−1

𝑖=0 𝑂(𝑛2𝑖 )]

= Θ(𝑛) +∑𝑛−1

𝑖=0 𝐸[𝑂(𝑛2𝑖 )]

= Θ(𝑛) +∑𝑛−1

𝑖=0 𝑂(𝐸[𝑛2𝑖 ]).

Pokaimo dae da je

𝐸[𝑛2𝑖 ] = 2− 1/𝑛, (4.1)

za svako 𝑖 = 0, 1, . . . , 𝑛−1. Nije iznanaujue xto svaka pregrada 𝑖 ima istuvrednost 𝐸[𝑛2

𝑖 ] s obzirom na to da svaka vrednost u nizu 𝐴 ima jednakuverovatnou da upadne u bilo koju pregradu.

Da bismo dokazali ovu jednakost, definixemo indikatorske sluqajnepromenive:

𝑋𝑖𝑗 = 𝐼𝐴[𝑗] upada u pregradu 𝑖 =

1, ako 𝐴[𝑗] upada u pregradu 𝑖

0, ako 𝐴[𝑗] ne upada u pregradu 𝑖

za svako 𝑖 = 0, 1, . . . , 𝑛− 1 i 𝑗 = 1, 2, . . . , 𝑛. Preko ovih promenivih moguse izraziti brojevi 𝑛𝑖:

𝑛𝑖 =

𝑛∑𝑗=1

𝑋𝑖𝑗

Kvadriraem i pregrupisavaem elemenata, na osnovu linearnostioqekivaa dobijamo:

𝐸[𝑛2𝑖 ] = 𝐸

[( 𝑛∑𝑗=1

𝑋𝑖𝑗

)2]= 𝐸

[ 𝑛∑𝑗=1

𝑛∑𝑘=1

𝑋𝑖𝑗 ·𝑋𝑖𝑘

]= 𝐸

[ 𝑛∑𝑗=1

𝑋2𝑖𝑗 +

∑1≤𝑗≤𝑛

∑1≤𝑘≤𝑛𝑘 =𝑗

𝑋𝑖𝑗 ·𝑋𝑖𝑘

]

=

𝑛∑𝑗=1

𝐸[𝑋2𝑖𝑗 ] +

∑1≤𝑗≤𝑛

∑1≤𝑘≤𝑛𝑘 =𝑗

𝐸[𝑋𝑖𝑗 ·𝑋𝑖𝑘] (4.2)

Page 68: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

4.3. Sortirae proseqne linearne sloenosti 68

Ocenimo posebno svaku od dve dobijene sume. Indikatorska sluqajnapromeniva 𝑋𝑖𝑗 ima vrednost 1 sa verovatnoom 1/𝑛, a 0 inaqe, te stogavai:

𝐸[𝑋2𝑖𝑗 ] = 12 · 1

𝑛+ 02 ·

(1− 1

𝑛

)=

1

𝑛(4.3)

Kada je 𝑘 = 𝑗, promenive 𝑋𝑖𝑗 i 𝑋𝑖𝑘 su nezavisne i stoga vai:

𝐸[𝑋𝑖𝑗 ·𝑋𝑖𝑘] = 𝐸[𝑋𝑖𝑗 ]𝐸[𝑋𝑖𝑘] =1

𝑛· 1

𝑛=

1

𝑛2(4.4)

Zamenom ove dve vrednosti u jednaqinu 4.2, dobijamo:

𝐸[𝑛2𝑖 ] =

𝑛∑𝑗=1

1

𝑛+

∑1≤𝑗≤𝑛

∑1≤𝑘≤𝑛𝑘 =𝑗

1

𝑛2

= 𝑛 · 1

𝑛+ 𝑛(𝑛− 1) · 1

𝑛2

= 1 +𝑛− 1

𝑛

= 2− 1

𝑛

qime je dokazana jednakost 4.1.Korixeem dobijenog oqekivaa iz jednaqine 4.1, zakuqujemo da

je vremenska sloenost algoritma sortiraa razvrstavaem u prosekujednaka:

𝑇 (𝑛) = Θ(𝑛) + 𝑛 ·𝑂(2− 1/𝑛) = Θ(𝑛)

Jasno je da se algoritam moe primeniti na proizvoni interval [𝑎, 𝑏)ukoliko su elementi niza sa ravnomernom raspodelom na ovom intervalu.Qak iako elementi ulaznog niza nemaju ravnomernu raspodelu, sortiraerazvrstavaem i dae moe da se izvrxi sa linearno vreme. Sve dokulazni niz ispuava uslov da je suma kvadrata veliqina pregrada linearnau odnosu na ukupni broj elemenata, jednaqina 4.1 nam govori da e sortiraerazvrstavaem u proseku biti linearne vremenske sloenosti.

Opxtije, proizvonih 𝑛 realnih brojeva mogu se sortirati ovim algoritmomza vreme𝑂(𝑛) ako su dobijeni nezavisno i iz jedne iste raspodele verovatnoa.To se postie na sledei naqin: kumulativna funkcija raspodele verovatnoa𝐹 (𝑥) = 𝑃𝑋 ≤ 𝑥 preslikava dati skup realnih brojeva na interval[0, 1), koji se deli na 𝑛 jednakih intervala. Ta podela se direktno prenosina odgovarajue realne intervale koji imaju jednake verovatnoe. Daklevrednosti 𝐹 (𝑥1), 𝐹 (𝑥2), . . . , 𝐹 (𝑥𝑛) rasporeujemo redom po intervalima [𝑖/𝑛, (𝑖+1)/𝑛), 𝑖 = 0, . . . , 𝑛−1, a s obzirom da je funkcija 𝐹 invertibilna, moemona osnovu vrednosti funkcije da rekonstruixemo ene argumente. Alternativno,moemo brojeve 𝑥1, 𝑥2, . . . , 𝑥𝑛 rasporediti po intervalima [𝐹−1(𝑖/𝑛), 𝐹−1((𝑖+1)/𝑛)), 𝑖 = 0, . . . , 𝑛−1 i oqekivani broj elemenata u svakom od ovih podintervalaje 1.

Page 69: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

Glava 5

Probabilistiqki algoritmi

Algoritmi koje smo do sada razmatrali bili su deterministiqki | svakinaredni korak je unapred odreen. Kad se deterministiqki algoritamizvrxava dva puta sa istim ulazom, naqin izvrxavaa je oba puta isti,kao i dobijeni izlazi. Probabilistiqki algoritmi su drugaqiji. Onisadre korake koji zavise ne samo od ulaza, nego i od nekih sluqajnihdogaaja. Postoji mnogo varijacija probabilistiqkih algoritama. Ovdeemo razmotriti dve od ih.

5.1 Odreivae broja iz gore polovine

Pretpostavimo da je dat skup brojeva 𝑥1, 𝑥2, . . . , 𝑥𝑛 i da meu ima trebaizabrati neki broj iz "gore polovine", odnosno broj koji je vei ilijednak od bar 𝑛/2 ostalih. Na primer, potrebno je izabrati "dobrog"studenta, pri qemu je kriterijum proseqna ocena. Jedna mogunost je uzetinajvei broj (koji je uvek u goroj polovini). Ve smo videli da je zaodreivae maksimuma potrebno 𝑛 − 1 uporeivaa. Druga mogunost jezapoqeti sa izvrxavaem algoritma za nalaee maksimuma, i zaustavitise kad se proe polovina brojeva. Broj koji je vei ili jednak od jednepolovine brojeva je sigurno u goroj polovini. Algoritam zahteva oko𝑛/2 uporeivaa. Moe li se ovaj posao obaviti efikasnije? Nije texkopokazati da je nemogue garantovati da broj pripada goroj polovini akoje izvrxeno mae od 𝑛/2 uporeivaa. Prema tome, opisani algoritam jeoptimalan.

Ovaj algoritam je, meutim, optimalan samo ako insistiramo na garan-ciji. U mnogo sluqajeva garancija nije neophodna, dovona je pristojnaverovatnoa da je rexee taqno. Na primer, kod hex tabela nije moguegarantovati da do kolizija nee doi, ali postoji naqin za rexavaeproblema izazvanih pojavom kolizija (operacije sa hex tabelama se takoemogu smatrati probabilistiqkim algoritmima). Ako odustanemo od ga-rancije, onda postoji boi algoritam za nalaee elementa iz gorepolovine. Izaberimo na sluqajan naqin dva broja 𝑥𝑖 i 𝑥𝑗 iz skupa, tako daje 𝑖 = 𝑗. Pretpostavimo da je 𝑥𝑖 ≥ 𝑥𝑗 . Verovatnoa da sluqajno izabranibroj iz skupa pripada goroj polovini je bar 1/2 (ona e biti vea od1/2 ako je vixe brojeva jednako medijani). Verovatnoa da ni jedan od

69

Page 70: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

5.2. Sluqajni brojevi 70

brojeva 𝑥𝑖, 𝑥𝑗 ne pripada goroj polovini je najvixe 1/4. Zbog 𝑥𝑖 ≥ 𝑥𝑗

ova verovatnoa jednaka je verovatnoi da 𝑥𝑖 ne pripada goroj polovini.Prema tome, verovatnoa da 𝑥𝑖 pripada goroj polovini je bar 3/4.

Verovatnoa 3/4 da je dobijeni rezultat taqan obiqno nije dovona.Meutim, opisani pristup moe se uopxtiti. Na sluqajan naqin biramo𝑘 brojeva iz skupa i odreujemo najvei od ih. Na isti naqin kao uspecijalnom sluqaju, zakuqujemo da najvei od 𝑘 elemenata pripada gorojpolovini sa verovatnoom najmae 1−2−𝑘 (on ne pripada goroj poloviniakko goroj polovini ne pripada ni jedan od izabranih brojeva, xto jedogaaj sa verovatnoom najvixe 2−𝑘). Na primer, ako je 𝑘 = 10, verovatnoauspeha je priblino 0.999, a za 𝑘 = 20 ta verovatnoa je oko 0.999999.Ako je pak 𝑘 = 100, onda je verovatnoa grexke za sve praktiqne svrhezanemariva. Imamo dakle algoritam koji bira broj iz gore polovine saproizvono velikom verovatnoom, a koji izvrxava mali broj uporeivaanezavisno od veliqine ulaza. Pri tome se pretpostava da se sluqajniizbor jednog broja moe izvrxiti za konstantno vreme; generisae sluqajnihbrojeva bie razmotreno u odeku 5.2.

Za ovakav algoritam obiqno se kae da je Monte Karlo algoritam.Netaqan rezultat moe se dobiti sa jako malom verovatnoom, ali jevreme izvrxavaa ovog Monte Karlo algoritma boe nego za najboideterministiqki algoritam. Drugi tip probabilistiqkog algoritma jeonaj koji nikad ne daje pogrexan rezultat, ali mu vreme izvrxavaanije garantovano. Ovakav algoritam se moe izvrxiti brzo, ali se moeizvrxavati i proizvono dugo. Ovaj tip algoritma, koji sa obiqno zoveLas Vegas, koristan je ako mu je oqekivano vreme izvrxavaa malo. Uodeku 5.3 bie razmotren Las Vegas algoritam koji rexava jedan problembojea elemenata skupa.

Ideja probabilistiqkih algoritama tesno je povezana sa izvoeemdokaza. Korixee verovatnoe za dokazivae kombinatornih tvrea jemona tehnika. U osnovi, ako se dokae da neki objekat iz skupa objekataima verovatnou veu od nule, onda je to indirektan dokaz da postojiobjekat sa tim osobinama. Ova ideja moe se iskoristiti za konstrukcijuprobabilistiqkog algoritma. Pretpostavimo da traimo objekat sa nekimosobinama, a znamo da ako generixemo sluqajni objekat, on e zadovoavatieeni uslov sa verovatnoom veom od nule (xto je probabilistiqkidokaz da traeni objekat postoji). Mi zatim pratimo probabilistiqkidokaz, generixui sluqajne dogaaje kad je potrebno, i na kraju nalazimoeeni objekat se nekom pozitivnom verovatnoom. Ovaj postupak moese ponavati vixe puta, sve do uspexnog pronalaea eenog objekta.

5.2 Sluqajni brojevi

Bitan element probabilistiqkih algoritama je generisae sluqajnih brojeva.Potrebno je imati efikasne metode za rexavae ovog problema. Deterministiqkaprocedura generixe brojeve na fiksirani naqin, pa tako dobijeni brojevine mogu biti sluqajni u pravom smislu te reqi. Ti brojevi su meusobnopovezani na sasvim odreeni naqin. Na sreu, to u praksi nije velikiproblem: dovono je koristiti tzv. pseudosluqajne brojeve. Ti brojevigenerixu se deterministiqkom procedurom (pa dakle nisu pravi sluqajni

Page 71: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

71 5. Probabilistiqki algoritmi

brojevi), ali procedura generisaa je dovono sloena, da druge aplikacijene "oseaju" meuzavisnosti izmeu tih brojeva.

Ovde neemo detanije razmatrati dobijae sluqajnih brojeva. Jedanod naqina za dobijae pseudosluqajnih brojeva je linearni kongruentnimetod. Prvi korak je izbor celog broja 𝑋0 kao prvog qlana niza, sluqaj-nog broja izabranog na neki nezavisan naqin (na primer, tekue vreme umikrosekundama). Ostali brojevi izraqunavaju se na osnovu diferencnejednaqine 𝑋𝑛 = 𝑎𝑋𝑛−1 + 𝑏 (mod 𝑚), gde su 𝑎, 𝑏 i 𝑚 konstante, koje semoraju paivo izabrati. I pored paivog izbora, ovakvi nizovi nisudovono kvalitetni ("sluqajni"). Alternativa su diferencne jednaqinevixeg reda (sa zavisnoxu od vixe prethodnih qlanova). Na ovaj naqindobija se niz brojeva iz opsega od 0 do 𝑚 − 1. Ako su potrebni sluqajnibrojevi iz opsega od 0 do 1, onda se qlanovi ovog niza mogu podeliti sa 𝑚.

5.3 Jedan problem sa bojeem

Problem. Neka je 𝑆 skup od 𝑛 elemenata, i neka je 𝑆1, 𝑆2, . . . 𝑆𝑘 kolekcijasaqiena od 𝑘 egovih razliqitih podskupova, od kojih svaki sadritaqno 𝑟 elemenata, 𝑟 ≥ 2, pri qemu je 𝑘 ≤ 2𝑟−2. Obojiti svaki elementskupa 𝑆 jednom od dve boje, crvenom ili plavom, tako da svaki podskup 𝑆𝑖

sadri bar jedan plavi i bar jedan crveni element.

Bojee koje zadovoava taj uslov zvaemo ispravnim bojeem. Ispos-tava se da pod navedenim uslovima ispravno bojee uvek postoji. Jednos-tavan probabilistiqki algoritam dobija se prepravkom probabilistiqkogdokaza postojaa takvog bojea:

Obojiti svaki elemenat 𝑆 sluqajno izabranom bojom, plavomili crvenom, nezavisno od bojea ostalih elemenata.

Jasno je da ovaj algoritam ne daje uvek ispravno bojee. Izraqunaemoverovatnou neuspeha. Verovatnoa da su svi elementi 𝑆𝑖 obojeni crveno je2−𝑟, a verovatnoa da su svi obojeni istom bojom (crvenom ili plavom) je2 · 2−𝑟 = 21−𝑟. Sluqajni dogaaj (podskup skupa svih 2𝑛 sluqajnih bojea| elementarnih dogaaja) 𝐴: "neki od skupova 𝑆𝑖 je neispravno obojen"je unija svih sluqajnih dogaaja 𝐴𝑖: "skup 𝑆𝑖 je neispravno obojen", za𝑖 = 1, 2, . . . , 𝑘, pa vai nejednakost

𝑃 (𝐴) ≤𝑘∑

𝑖=1

𝑃 (𝐴𝑖) =

𝑘∑𝑖=1

21−𝑟 = 𝑘21−𝑟 ≤ 2𝑟−221−𝑟 =1

2.

Time je dokazano da ispravno bojee postoji (u protivnom bi verovatnoaneispravnog bojea bila taqno 1). Pored toga, vidi se da je ovaj probabi-listiqki algoritam dobar. Ispravnost zadatog bojea lako se proverava:proveravaju se elementi svakog podskupa dok se ne pronau dva razliqitoobojena elementa. Verovatnoa uspexnog bojea 𝑝 = 1 − 𝑃 (𝐴) je bar 1/2.Ako se u jednom pokuxaju ne dobije neispravno bojee, postupak (bojee)se ponava. Oqekivani broj pokuxaja bojea je mai ili jednak od dva.Zaista, verovatnoa da se ispravno bojee pronae u 𝑗-tom pokuxaju je

Page 72: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

5.3. Jedan problem sa bojeem 72

(1− 𝑝)𝑗−1𝑝, pa je matematiqko oqekivae broja pokuxaja

∞∑𝑗=1

𝑗(1− 𝑝)𝑗−1𝑝 = 𝑝

∞∑𝑗=1

((1− 𝑝)𝑗

)′= −𝑝(𝑝−1)′ =

1

𝑝≤ 2.

Opisani algoritam bojea je oqigledno Las Vegas algoritam, jer se bojeaproveravaju jedno za drugim, a sa traeem se zavrxava kad se naiena ispravno bojee. Ne postoji garancija uspexnog bojea u bilo komfiksiranom broju pokuxaja, ali je ovaj algoritam u praksi ipak vrloefikasan.

Page 73: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

Glava 6

Grafovi

U ovom poglavu razmotriemo nekoliko novih algoritama nad grafovima.Grafovski algoritmi o kojima e biti reqi bave se problemom konstrukcijeoptimalnog uparivaa u grafu, problemom konstrukcije optimalnog tokau transportnim mreama i odreivaem Hamiltonovih ciklusa za odreeneklase grafova.

6.1 Uparivae

Za zadati neusmereni graf 𝐺 = (𝑉,𝐸) uparivae je skup disjunktnihgrana (grana bez zajedniqkih qvorova). Ovo ime potiqe od qienice da segrane mogu shvatiti kao parovi qvorova. Bitno je da svaki qvor pripadanajvixe jednoj grani | to je monogamno uparivae. Qvor koji nije susedanni jednoj grani iz uparivaa zove se neupareni qvor; kae se takoeda qvor ne pripada uparivau. Savrxeno uparivae je uparivae ukome su svi qvorovi upareni. Optimalno uparivae je uparivae samaksimalnim brojem grana. Maksimalno uparivae je pak uparivaekoje se ne moe proxiriti dodavaem nove grane. Problemi koji se svodena uparivae pojavuju se u mnogim situacijama, ne samo socijalnim.Mogu se uparivati radnici sa radnim mestima, maxine sa delovima, grupestudenata sa uqionicama, itd.

Problem nalaea optimalnog uparivaa za proizvoan graf je teakproblem. U ovom odeku ograniqiemo se na dva specijalna sluqaja. Prviod ih nije tako vaan | radi se o uparivau u vrlo gustim grafovima.Meutim, rexee tog problema ilustruje interesantan pristup, koji semoe uopxtiti da bi se doxlo do rexea problema uparivaa za bipartitnegrafove.

6.1.1 Savrxeno uparivae u vrlo gustim grafovima

Neka je 𝐺 = (𝑉,𝐸) neusmereni graf kod koga je |𝑉 | = 2𝑛 i stepensvakog qvora je bar 𝑛. Prikazaemo algoritam za nalaee savrxenoguparivaa u ovakvim grafovima. Posledica ovog algoritma je da akograf zadovoava navedene uslove, onda u emu uvek postoji savrxenouparivae. Koristiemo indukciju po veliqini𝑚 uparivaa. Bazni sluqaj

73

Page 74: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

6.1. Uparivae 74

𝑚 = 1 rexava se formiraem uparivaa veliqine jedan od proizvonegrane grafa. Pokazaemo da se proizvono uparivae koje nije savrxenomoe proxiriti ili dodavaem jedne grane ili zamenom jedne granedvema novim granama. U oba sluqaja poveava se veliqina uparivaa zajedan.

Posmatrajmo uparivae 𝑀 sa 𝑚 grana u grafu 𝐺, pri qemu je 𝑚 <𝑛. Najpre proveravamo sve grane van uparivaa 𝑀 da ustanovimo da lise neka od ih moe dodati u 𝑀 . Ako pronaemo takvu granu, problemje rexen | naeno je vee uparivae. U protivnom, 𝑀 je maksimalnouparivae. Ako 𝑀 nije savrxeno uparivae, postoje bar dva neuparenaqvora 𝑣1 i 𝑣2. Iz ta dva qvora po pretpostavci izlazi najmae 2𝑛 grana.Sve te grane vode ka uparenim qvorovima (u protivnom bi se u uparivaemogla dodati nova grana, suprotno pretpostavci da je ono maksimalno).Poxto u uparivau 𝑀 ima mae od 𝑛 grana, a iz 𝑣1 i 𝑣2 izlazi bar 2𝑛grana, u uparivau 𝑀 postoji grana (𝑢1, 𝑢2) koja je susedna sa ("pokriva")bar tri grane iz 𝑣1 i 𝑣2. Pretpostavimo, bez smaea opxtosti, da su tograne (𝑢1, 𝑣1), (𝑢1, 𝑣2) i (𝑢2, 𝑣1), videti sliku 6.1(a). Lako je videti da seuklaaem grane (𝑢1, 𝑢2) iz 𝑀 , i dodavaem dveju novih grana (𝑢1, 𝑣2) i(𝑢2, 𝑣1) dobija vee uparivae, slika 6.1(b).

d ddd 𝑣1 𝑣2

𝑢1 𝑢2

(a)

d ddd 𝑣1 𝑣2

𝑢1 𝑢2

(b)

Slika 6.1: Proxirivae uparivaa.

Opisani algoritam je primer pohlepnog pristupa. U svakom korakuproxirivaa uparivaa za jednu granu razmotraju se qetiri qvora inekoliko grana koje ih povezuju. U ovoj situaciji je to bilo dovono;meutim, u opxtem sluqaju je nalaee dobrog uparivaa tei problem.Ukuqivae jedne grane u uparivae utiqe na izbor drugih grana qak iu udaenim delovima grafa. Pokazaemo sada kako se ovaj pristup moeprimeniti na drugi specijalni sluqaj problema uparivaa.

6.1.2 Bipartitno uparivae

Bipartitni graf je graf qiji se qvorovi mogu podeliti na dvadisjunktna podskupa tako da u grafu postoje samo grane izmeu qvorovaiz razliqitih podskupova.

Neka je 𝐺 = (𝑉,𝐸,𝑈) bipartitni graf u kome su 𝑉 i 𝑈 disjunktniskupovi qvorova, a 𝐸 je skup grana koje povezuju neke qvorove iz 𝑉 sanekim qvorovima iz 𝑈 .

Problem. Pronai uparivae sa maksimalnim brojem grana u bipartitnomgrafu 𝐺.

Page 75: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

75 6. Grafovi

Jedan od naqina da se formulixe problem je sledei: 𝑉 je skup devojaka,𝑈 je skup mladia, a 𝐸 je skup "potencijalnih" parova. Ci je pod ovimuslovima oformiti xto vei broj parova mladia i devojaka.

Direktan pristup je formirati parove u skladu sa nekom strategijom,do trenutka kad daa uparivaa vixe nisu mogua | u nadi da e namstrategija obezbediti optimalno ili rexee blisko optimalnom. Moese, na primer, pokuxati sa pohlepnim pristupom, uparujui najpre qvorovemalog stepena, u nadi da e preostali qvorovi i u kasnijim fazama imatineuparene partnere. Drugim reqima, najpre uparujemo stidive osobe, onesa mae poznanstava, a o ostalima brinemo kasnije. Umesto da se bavimoanalizama ovakvih strategija (xto nije jednostavan problem), pokuxaemosa pristupom korixenim kod prethodnog problema. Pretpostavimo da sepolazi od maksimalnog uparivaa, koje ne mora biti optimalno. Moemoli ga nekako popraviti? Pogledajmo primer na slici 6.2(a), na kome jeuparivae prikazano podebanim granama. Jasno je da se uparivae moepoveati zamenom grane 2𝐴 sa dve grane 1𝐴 i 2𝐵. Ovo je transformacijasliqna onoj koju smo primenili u prethodnom problemu. Meutim, nemoramo se ograniqiti zamenama jedne grane dvema granama. Ako pronaemosliqnu situaciju u kojoj se nekih 𝑘 grana mogu zameniti sa 𝑘 + 1 grana,dobijamo algoritam veih mogunosti. Na primer, uparivae se moedae poveati zamenom grana 3𝐷 i 4𝐸 sa tri grane 3𝐶, 4𝐷 i 5𝐸, slika 6.2(b).

dd1

𝐴

d d d d dd d d d d2 3 4 5 6

𝐵 𝐶 𝐷 𝐸 𝐹

(a)

dd1

𝐴

d d d d dd d d d d2 3 4 5 6

𝐵 𝐶 𝐷 𝐸 𝐹

(b)

Slika 6.2: Proxirivae bipartitnog uparivaa.

Razmotrimo detanije ove transformacije. Ci je poveati broj upa-renih qvorova. Polazimo od neuparenog qvora 𝑣 i pokuxavamo da ga uparimo.Poxto polazimo od maksimalnog uparivaa, svi susedi qvora 𝑣 su ve upa-reni; zbog toga smo prinueni da iz uparivaa uklonimo neku od granakoje "pokrivaju" susede 𝑣. Pretpostavimo da smo izabrali qvor 𝑢, susedansa 𝑣, koji je prethodno bio uparen sa qvorom 𝑤, na primer. Raskidamouparivae 𝑢 sa 𝑤, i uparujemo 𝑣 sa 𝑢. Sada preostaje da pronaemo paraza qvor 𝑤. Ako je 𝑤 povezan granom sa nekim neuparenim qvorom, ondasmo postigli ci; takav je bio prvi od gorih sluqajeva. Ako to nijesluqaj, onda nastavamo dae sa raskidaem parova i formiraem novihparova. Da bismo na osnovu ove ideje konstruisali algoritam, potrebnoje da uradimo dve stvari: da obezbedimo da se procedura uvek zavrxava, ida pokaemo da ako je poboxae mogue, onda e ga procedura sigurnopronai. Najpre emo formalizovati navedenu ideju.

Alternirajui put 𝑃 za dato uparivae 𝑀 je put od neuparenogqvora 𝑣 ∈ 𝑉 do neuparenog qvora 𝑢 ∈ 𝑈 , pri qemu su grane puta 𝑃naizmeniqno u 𝐸 ∖𝑀 , odnosno 𝑀 . Drugim reqima, prva grana (𝑣, 𝑤) puta𝑃 ne pripada 𝑀 (jer je 𝑣 neuparen), druga grana (𝑤, 𝑥) pripada 𝑀 , i

Page 76: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

6.1. Uparivae 76

tako dae do poslede grane (𝑧, 𝑢) puta 𝑃 koja ne pripada 𝑀 . Zapazimoda su upravo alternirajui putevi u gorim primerima omoguavalipoveavae uparivaa. Specijalno, ako je put duine jedan, onda je tograna koja povezuje dva neuparena qvora; takve grane ne postoje u odnosuna maksimalno uparivae. Broj grana na putu 𝑃 mora biti neparan, jer 𝑃polazi iz 𝑉 i zavrxava u 𝑈 . Pored toga, meu granama puta 𝑃 grana u 𝐸∖𝑀ima za jednu vixe od grana u 𝑀 . Prema tome, ako iz uparivaa izbacimosve grane 𝑃 koje su u 𝑀 , a ukuqimo sve grane 𝑃 koje su u 𝐸 ∖𝑀 , dobiemonovo uparivae sa jednom granom vixe. Na primer, prvi alternirajuiput korixen za poveae uparivaa na slici 6.2(a)) je put (1𝐴,𝐴2, 2𝐵),i on omoguuje zamenu grane 𝐴2 granama 1𝐴 i 2𝐵; drugi alternirajuiput (𝐶3, 3𝐷,𝐷4, 4𝐸,𝐸5) omoguuje zamenu grana 3𝐷 i 4𝐸 granama 𝐶3, 𝐷4i 𝐸5.

Jasno je da ako za dato uparivae𝑀 postoji alternirajui put, onda𝑀nije optimalno uparivae. Ispostava se da je taqno i obrnuto tvree.

Teorema 7 (Teorema o alternirajuem putu). Uparivae je optimalnoako i samo u odnosu na ega ne postoji alternirajui put.

Dokaz e biti dat kao posledica opxtijeg tvrea u sledeem odeku.Teorema o alternirajuem putu direktno sugerixe algoritam, jer pro-

izvono uparivae koje nije optimalno ima alternirajui put, a alterni-rajui put daje poveano uparivae. Zapoqiemo sa pohlepnim algoritmom,dodajui grane u uparivae sve dok je to mogue. Onda prelazimo natraee alternirajuih puteva i poveavae uparivaa, sve do trenutkakad vixe nema alternirajuih puteva u odnosu na poslede uparivae.Dobijeno uparivae je tada optimalno. Poxto alternirajui put poveavauparivae za jednu granu, a u uparivau ima najvixe 𝑛/2 grana (gde je 𝑛broj qvorova), broj iteracija je najvixe 𝑛/2. Preostaje jox jedan problem| kako pronalaziti alternirajue puteve? Problem se moe rexiti nasledei naqin. Transformixemo neusmereni graf 𝐺 u usmereni graf 𝐺′

usmeravajui grane iz𝑀 od 𝑈 ka 𝑉 , a grane iz 𝐸∖𝑀 od 𝑉 ka 𝑈 . Slika 6.3(a)prikazuje polazno maksimalno uparivae za graf sa slike 6.2(a), a slika 6.3(b)prikazuje odgovarajui usmereni graf 𝐺′. Alternirajui put u 𝐺 tadaodgovara usmerenom putu od neuparenog qvora u 𝑉 do neuparenog qvora u𝑈 u grafu 𝐺′. Takav usmereni put moe se pronai bilo kojim postupkomobilaska grafa, npr. pomou DFS. Sloenost obilaska (pretrage) je𝑂(|𝑉 |+|𝐸|), pa je sloenost algoritma 𝑂(|𝑉 |(|𝑉 |+ |𝐸|)).

dd1

𝐴

d d d d dd d d d d2 3 4 5 6

𝐵 𝐶 𝐷 𝐸 𝐹𝑉

dd1

𝐴

d d d d dd d d d d2 3 4 5 6

𝐵 𝐶 𝐷 𝐸 𝐹𝑉

(a) (b)

𝑈 𝑈tt t

t?

U U

6 6 6 6 6

Slika 6.3: Nalaee alternirajuih puteva

Page 77: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

77 6. Grafovi

Poboxae

Poxto kompletan obilazak grafa u najgorem sluqaju moe da traje kolikoi nalaee jednog puta, moe se pokuxati sa nalaeem vixe alternirajuihputeva jednom pretragom. Potrebno je, meutim, da budemo sigurni da suovi putevi nezavisni, odnosno da ihovi skupovi qvorova budu disjunktni.Ako su putevi disjunktni, onda utiqu na uparivae razliqitih qvorova,pa se mogu istovremeno iskoristiti. Novi, poboxani algoritam za nalaeealternirajuih puteva je sledei. Najpre primeujemo BFS na graf 𝐺′ odskupa neuparenih qvorova u 𝑉 , sloj po sloj, do sloja u kome su pronaenineupareni qvorovi iz 𝑈 . Zatim iz grafa indukovanog pretragom u xirinuvadimomaksimalni skup disjunktnih puteva u𝐺′, kojima odgovaraju alternirajuiputevi u 𝐺. To se izvodi pronalaeem prvog puta, uklaaem egovihqvorova, pronalaeem narednog puta, uklaaem egovih qvorova, itd.(rezultat nije optimalni, nego samo maksimalni skup). Biramo maksimalniskup, da bismo posle pretrage dobili xto vee uparivae; svaki novidisjunktni put poveava uparivae za jednu granu. Na kraju poveavamouparivae korixeem pronaenog skupa disjunktnih puteva. Proces senastava sve dok je mogue pronai alternirajue puteve, odnosno dok jeu grafu 𝐺′ neki neupareni qvor iz 𝑉 dostian iz nekog neuparenog qvoraiz 𝑈 .

Sloenost. Ispostava se da je u poboxanom algoritmu broj iteracija𝑂(

√|𝑉 |) u najgorem sluqaju (Hopkroft i Karp 1973, Hopcroft, Karp; ovo

tvree dajemo bez dokaza). Ukupna vremenska sloenost algoritma jedakle 𝑂((|𝑉 |+ |𝐸|)

√|𝑉 |).

6.2 Optimizacija transportne mree

Problem optimizacije transportne mree je jedan od osnovnih problema uteoriji grafova i kombinatornoj optimizaciji. Intenzivno je prouqavanvixe od 40 godina, pa su za ega razvijeni mnogi algoritmi i strukturepodataka. Problem ima mnogo varijanti i uopxtea. Osnovna varijantamree moe se formulisati na sledei naqin. Neka je𝐺 = (𝑉,𝐸) usmerenigraf sa dva posebno izdvojena qvora: 𝑠 (izvor), sa ulaznim stepenom 0,i 𝑡 (ponor) sa izlaznim stepenom 0. Svakoj grani 𝑒 ∈ 𝐸 pridruenaje pozitivna teina 𝑐(𝑒), kapacitet grane 𝑒. Kapacitet grane je meratoka koji moe biti propuxten kroz granu. Za ovakav graf kaemo daje transportna mrea (ili jednostavnije mrea). Tok je funkcija 𝑓definisana na 𝐸 koja zadovoava sledee uslove:

(1) 0 ≤ 𝑓(𝑒) ≤ 𝑐(𝑒): tok kroz proizvonu granu ne moe da premaxi enkapacitet;

(2) za sve qvorove 𝑣 ∈ 𝑉 ∖ 𝑠, 𝑡 je∑

𝑢 𝑓(𝑢, 𝑣) =∑

𝑤 𝑓(𝑣, 𝑤): ukupan tokkoji ulazi u proizvoni qvor 𝑣 razliqit od 𝑠, 𝑡 jednak je ukupnomtoku koji izlazi iz ega ("nestixivost", zakon oquvaa, odnosnokonzervacije toka).

Ova dva uslova imaju za posledicu da je ukupan tok koji izlazi iz 𝑠jednak ukupnom toku koji ulazi u 𝑡. U to se moemo uveriti na sledeinaqin. Uvexemo najpre pojam preseka. Neka je 𝐴 proizvoan podskup 𝑉

Page 78: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

6.2. Optimizacija transportne mree 78

takav da sadri 𝑠, a ne sadri 𝑡. Oznaqimo sa 𝐵 = 𝑉 ∖𝐴 skup preostalihqvorova. Presek odreen skupom 𝐴 je skup grana (𝑣, 𝑢) ∈ 𝐸 takvih da𝑣 ∈ 𝐴 i 𝑢 ∈ 𝐵. Intuitivno, presek je skup grana koje razdvajaju 𝑠 od 𝑡.Indukcijom po broju qvorova u 𝐴 lako se pokazuje da ukupan tok krozpresek ne zavisi od 𝐴. Specijalno, za 𝐴 = 𝑠 presek obuhvata grane kojeizlaze iz 𝑠, a za 𝐴 = 𝑉 ∖ 𝑡 presek qine grane koje ulaze u 𝑡. Prema tome,ukupan tok koji izlazi iz 𝑠 jednak je ukupnom toku koji ulazi u 𝑡. Problemkoji nas zanima je maksimizirae toka. Jedan naqin da se opisani problemshvati kao realan fiziqki problem, je da zamislimo da mreu qine ceviza vodu. Svaka cev ima svoj kapacitet, a uslovi koje tok treba da zadovoisu prirodni. Ci je "proterati" kroz mreu xto veu koliqinu vode ujedinici vremena.

Pokazaemo najpre da se problem bipartitnog uparivaa moe svestina problem optimizacije transportne mree. To moe na prvi pogledda izgleda beskorisno, poxto ve znamo da reximo problem bipartitnoguparivaa, a ne znamo rexee problema optimizacije transportne mree| redukcija je dakle u pogrexnom smeru. Meutim, za rexavae problemaoptimizacije transportne mree moe se primeniti postupak sliqan postupkuza nalaee optimalnog bipartitnog uparivaa.

Zadatom bipartitnom grafu𝐺 = (𝑉,𝐸,𝑈) u kome treba pronai uparivaesa najveim moguim brojem grana (optimalno uparivae) dodajemo dvanova qvora 𝑠 i 𝑡, povezujemo 𝑠 granama sa svim qvorovima iz 𝑉 , a sve qoroveiz 𝑈 povezujemo sa 𝑡. Oznaqimo dobijeni graf sa 𝐺′ (videti sliku 6.4, nakojoj su sve grane usmerene sleva udesno). Poxto svim granama dodelimokapacitet 1, dobijamo regularan problem optimizacije transportne mreena grafu 𝐺′. Neka je 𝑀 neko uparivae u 𝐺. Uparivau 𝑀 moe se naprirodan naqin pridruiti tok u 𝐺′. Dodeujemo tok 1 svim granamaiz 𝑀 i svim granama koje 𝑠 ili 𝑡 povezuju sa uparenim qvorovima. Svimostalim granama dodeujemo tok 0. Ukupan tok jednak je tada broju granau uparivau 𝑀 . Moe se pokazati da je 𝑀 optimalno uparivae ako isamo ako je odgovarajui celobrojni tok u 𝐺′ optimalan. U jednom smerudokaz je jednostavan: ako je tok optimalan i odgovara uparivau, onda sene moe nai vee uparivae, jer bi mu odgovarao vei tok. Da bismoizveli dokaz u drugom smeru, potrebno je da nekako primenimo idejualternirajuih puteva na tok u transportnoj mrei, i da pokaemo daako nema alternirajuih puteva, onda je odgovarajui tok optimalan.

Poveavajui put u odnosu na zadati tok 𝑓 je usmereni put od 𝑠 do𝑡, koji se sastoji od grana iz 𝐺, ne obavezno u istom smeru; svaka od tihgrana (𝑣, 𝑢) treba da zadovoi taqno jedan od sledea dva uslova:

(1) (𝑣, 𝑢) ima isti smer kao i u 𝐺, i 𝑓(𝑣, 𝑢) < 𝑐(𝑣, 𝑢). U tom sluqaju grana(𝑣, 𝑢) je direktna grana Direktna grana ima kapacitet vei odtoka, pa se moe poveati tok kroz u. Razlika 𝑐(𝑣, 𝑢)− 𝑓(𝑣, 𝑢) zovese slek te grane.

(2) (𝑣, 𝑢) ima suprotan smer u 𝐺, i 𝑓(𝑣, 𝑢) > 0. U ovom sluqaju grana (𝑣, 𝑢)je povratna grana. Deo toka iz povratne grane moe se "pozajmiti".

Poveavajui put je uopxtee alternirajueg puta, i ima isti smisaoza transportne mree kao alternirajui put za bipartitno uparivae.Ako postoji poveavajui put u odnosu na tok 𝑓 , onda 𝑓 nije optimalni

Page 79: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

79 6. Grafovi

𝑠 𝑡

t tttttt

ttttt

tt

Slika 6.4: Svoee bipartitnog uparivaa na optimizaciju transportnemree (sve grane usmerene su sleva udesno).

tok. Tok 𝑓 moe se poveati poveavaem toka kroz poveavajui put nasledei naqin. Ako su sve grane poveavajueg puta direktne grane, ondase kroz ih moe poveati tok, tako da sva ograniqea i dae ostanuzadovoena. Najvee mogue poveae toka je u ovom sluqaju taqno jednakominimalnom sleku meu granama puta. Sluqaj povratnih grana je nextosloeniji, videti primer na slici 6.5. Svaka grana oznaqena je sa dvabroja 𝑎/𝑏, pri qemu je 𝑎 kapacitet, a 𝑏 trenutni tok. Jasno je da se ukupantok ne moe direktno poveati, jer ne postoji put od 𝑠 do 𝑡 koji se sastojisamo od direktnih grana. Ipak, postoji naqin da se ukupan tok povea.

u

u

u

u

u

u

u

u-

R

-

-

-

R-

R

R

6𝑠 𝑡

5/5

7/3

6/5

4/3

3/2

4/2

1/1

5/5

3/3

7/7

4/3

6/3

𝑤

𝑢𝑣

Slika 6.5: Primer mree sa poveavajuim putem.

Put 𝑠 − 𝑣 − 𝑢 − 𝑤 − 𝑡 je poveavajui put. Dopunski tok 2 moe sesprovesti do 𝑢 od 𝑠 (2 je minimalni slek na direktnim granama do 𝑢). Tok2 moe se oduzeti (pozajmiti) od 𝑓(𝑤, 𝑢). Time se postie zadovoeeuslova (2) (zakona oquvaa toka) za qvor 𝑢, jer je 𝑢 imao poveae toka za2 iz poveavajueg puta, a zatim smaee dotoka za 2 iz povratne grane.U qvoru 𝑤 je sada izlazni tok smaen za 2, pa ga treba poveati krozneku izlaznu granu. Sa "proterivaem" toka moe se nastaviti na istinaqin od 𝑤, poveavaem toka kroz direktne grane i smaivaem tokakroz povratne grane. U ovom sluqaju postoji samo jox jedna direktna grana(𝑤, 𝑡) koja dostie 𝑡, i problem je rexen. Poxto samo direktne grane mogu

Page 80: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

6.2. Optimizacija transportne mree 80

da izlaze iz 𝑠, odnosno da ulaze u 𝑡, ukupan tok je povean. Poveae jejednako maem od sledea dva broja: minimalnog sleka direktnih grana,odnosno minimalnog toka povratnih grana. Na slici 6.6 prikazana jeista mrea sa promeenim tokom; ispostava se da je novi tok u stvarioptimalan.

u

u

u

u

u

u

u

u-

R

-

-

-

R-

R

R

6𝑠 𝑡

5/5

7/5

6/5

4/3

3/2

4/4

1/1

5/5

3/3

7/7

4/1

6/5

𝑤

𝑢𝑣

Slika 6.6: Rezultat poveavaa toka u mrei sa slike 6.5.

Iz reqenog sledi da ako u mrei postoji poveavajui put, onda toknije optimalan. Obrnuto je takoe taqno.

Teorema 8 (Teorema o poveavajuem putu). Tok kroz transportnu mreuje optimalan ako i samo ako u odnosu na ega ne postoji poveavajuiput.

Dokaz. Dokaz u jednom smeru smo ve videli | ako u mrei postoji po-veavajui put, onda tok nije optimalan. Pretpostavimo sada da u odnosuna tok 𝑓 ne postoji ni jedan poveavajui put, i dokaimo da je tada 𝑓optimalni tok. Za proizvoan presek (odreen skupom 𝐴, 𝑠 ∈ 𝐴, 𝑡 ∈ 𝐵 ≡𝑉 ∖ 𝐴) definixemo kapacitet, kao zbir kapaciteta egovih grana kojevode iz nekog qvora 𝐴 u neki qvor 𝐵. Jasno je da ni jedan tok ne moebiti vei od kapaciteta proizvonog preseka. Zaista, ukupan tok iz 𝑠jednak je zbiru tokova kroz grane preseka od 𝐴 ka 𝐵, umaenom za tokkroz grane preseka od 𝐵 ka 𝐴, pa je mai ili jednak od zbira kapacitetagrana koje vode od 𝐴 ka 𝐵, odnosno od kapaciteta preseka. Prema tome, akopronaemo tok sa vrednoxu jednakom kapacitetu nekog preseka, onda jetaj tok optimalan. Sa dokazom nastavamo u tom pravcu: pokazaemo daako u odnosu na tok ne postoji poveavajui put, onda je ukupan tok jednakkapacitetu nekog preseka, pa dakle optimalan.

Neka je 𝑓 tok u odnosu na koji ne postoji poveavajui put. Neka je𝐴 ⊂ 𝑉 skup qvorova 𝑣 takvih da u odnosu na tok 𝑓 postoji poveavajui putod 𝑠 do 𝑣 (preciznije, postoji put od 𝑠 do 𝑣 takav da na emu za sve direktnegrane 𝑒 vai 𝑓(𝑒) < 𝑐(𝑒), a za sve povratne grane 𝑒′ vai 𝑓(𝑒′) > 0). Jasnoje da 𝑠 ∈ 𝐴 i 𝑡 /∈ 𝐴, jer po pretpostavci za 𝑓 ne postoji poveavajui put.Prema tome, 𝐴 definixe presek. Tvrdimo da za sve grane (𝑣, 𝑤) tog presekavai 𝑓(𝑣, 𝑤) = 𝑐(𝑣, 𝑤) ako je 𝑣 ∈ 𝐴, 𝑤 ∈ 𝐵 ("direktne" grane), odnosno𝑓(𝑣, 𝑤) = 0 ako je 𝑣 ∈ 𝐵, 𝑤 ∈ 𝐴 ("povratne grane"). Zaista, u protivnombi direktna grana (𝑣, 𝑤) produavala poveavajui put do qvora 𝑤 /∈ 𝐴,

Page 81: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

81 6. Grafovi

suprotno pretpostavci da takav put postoji samo do qvorova iz 𝐴. Sliqno,povratna grana (𝑣, 𝑤) produavala bi poveavajui put do qvora 𝑣 /∈ 𝐴.Dakle, ukupan tok jednak je kapacitetu preseka odreenog skupom 𝐴, pa jetok 𝑓 optimalan.

Dokazali smo sledeu vanu teoremu.

Teorema 9 (Teorema o maksimalnom toku i minimalnom preseku). Opti-malni tok u mrei jednak je minimalnom kapacitetu preseka.

Teorema o poveavajuem putu ima za posledicu i sledeu teoremu.

Teorema 10 (Teorema o celobrojnom toku). Ako su kapaciteti svihgrana u mrei celobrojni, onda postoji optimalni tok sa celobrojnomvrednoxu.

Dokaz. Tvree je posledica teoreme o poveavajuem putu. Svaki algoritamkoji koristi samo poveavajue puteve dovodi do celobrojnog toka ako susvi kapaciteti grana celobrojni. Ovo je oqigledno, jer se moe krenutiod toka 0, a onda se ukupan tok posle svake upotrebe poveavajueg putapoveava za celi broj. Do istog zakuqka dolazi se i na drugi naqin:kapacitet svakog preseka je celobrojan, pa i minimalnog.

Vratimo se sada na problem bipartitnog uparivaa. Jasno je da svakialternirajui put u𝐺 odgovara poveavajuem putu u𝐺′, i obrnuto. Posledicateoreme o poveavajuem putu je teorema o alternirajuem putu iz prethodnogodeka. Ako je𝑀 optimalno uparivae, onda za ega ne postoji alternirajuiput, pa u 𝐺′ ne postoji poveavajui put, a odgovarajui tok je optimalan.S druge strane, postoji optimalni celobrojni tok, i on mora da odgovarauparivau, jer je svaki qvor u 𝑉 povezan samo jednom granom (sa kapacitetom1) sa 𝑠; zbog toga, ukupan tok kroz svaki qvor iz 𝑉 moe da bude najvixe 1.Isto vai i za qvorove iz skupa 𝑈 . Ovo uparivae mora biti optimalno,jer ako bi se moglo poveati, onda bi postojao vei ukupni tok.

Teorema o poveavajuem putu neposredno se transformixe u algoritam.Polazi se od toka 0, trae se poveavajui putevi, i na osnovu ihpoveava se tok, sve do trenutka kad poveavajui putevi vixe ne postoje.Traee poveavajuih puteva moe se izvesti na sledei naqin. Definixemorezidualni graf u odnosu na mreu 𝐺 = (𝑉,𝐸) i tok 𝑓 , kao mreu𝑅 = (𝑉, 𝐹 ) sa istim qvorovima, istim izvorom i ponorom, ali promeenimskupom grana i ihovih teina. Svaku granu 𝑒 = (𝑣, 𝑤) sa tokom 𝑓(𝑒)zameujemo sa najvixe dve grane 𝑒′ = (𝑣, 𝑤) (ako je 𝑓(𝑒) < 𝑐(𝑒); kapacitet𝑒′ jednak je sleku grane 𝑒: 𝑐(𝑒′) = 𝑐(𝑒) − 𝑓(𝑒)), odnosno 𝑒′′ = (𝑤, 𝑣) (akoje 𝑓(𝑒) > 0; kapacitet 𝑒′′ je 𝑐(𝑒′′) = 𝑓(𝑒)). Ako se na ovaj naqin dobijudve paralelne grane, zameuju se jednom, sa kapacitetom jednakom zbirukapaciteta paralelnih grana. Na slici 6.7 prikazan je rezidualni graf zamreu sa slike 6.5, u odnosu na tok zadat na toj slici. Grane rezidualnoggrafa odgovaraju moguim granama poveavajueg puta. ihovi kapacitetiodgovaraju moguem poveau toka kroz te grane. Prema tome, poveavajuiput je obiqan usmereni put od 𝑠 do 𝑡 u rezidualnom grafu. Konstrukcijarezidualnog grafa zahteva 𝑂(|𝐸|) koraka, jer se svaka grana proveravataqno jednom.

Page 82: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

6.2. Optimizacija transportne mree 82

u

u

u

u

u

u

u

u-

R

-

-

R

6𝑠 𝑡

5

4 2

5

3

7

I

I

iO

=y

i

)

3

1

5

3

1

21

2

1 1

33

3

Slika 6.7: Rezidualni graf mree sa slike 6.5 u odnosu na tok definisanna toj slici.

Na nesreu, izbor poveavajueg puta na proizvoan naqin moe se po-kazati vrlo neefikasnim. Vreme izvrxea takvog algoritma u najgoremsluqaju moe da qak i ne zavisi od veliqine grafa. Posmatrajmo mreuna slici 6.8. Optimalni tok je oqigledno 2𝑀 . Meutim, mogli bismo dakrenemo od poveavajueg puta 𝑠−𝑎− 𝑏− 𝑡 kroz koji se tok moe poveatisamo za 1. Zatim bismo mogli da izaberemo poveavajui put 𝑠−𝑏−𝑎−𝑡 kojiopet poveava tok samo za 1. Proces moe da se ponovi ukupno 2𝑀 puta, gde𝑀 moe biti vrlo veliko, bez obzira xto graf ima samo qetiri qvorai pet grana. Poxto se vrednost 𝑀 moe predstaviti sa 𝑂(log𝑀) bita,sloenost ovog algoritma je u najgorem sluqaju eksponencijalna funkcijaveliqine ulaza (broj 𝑀 je deo ulaza).

e

ee e

R

R

?

𝑠 1 𝑡

𝑎

𝑏

𝑀

𝑀 𝑀

𝑀

Slika 6.8: Primer mree na kojoj traee poveavajuih puteva moebiti neograniqeno neefikasno.

Gore navedena mogunost je vrlo nepoena, ali se moe izbei. Edmondsi Karp (Edmonds, Carp) su 1972. godine pokazali da ako se meu moguimpoveavajuim putevima uvek bira onaj sa najmaim brojem grana, ondaje broj poveavaa najvixe (|𝑉 |3 − |𝑉 |)/4. To vodi algoritmu koji je unajgorem sluqaju polinomijalan u odnosu na veliqinu ulaza. Od tog vremenapredloeno je vixe razliqitih algoritama, sloenijih i mae sloenih,a vixe ih dostie goru granicu sloenosti 𝑂(|𝑉 |3) u najgorem sluqaju.

Page 83: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

83 6. Grafovi

Ovde ih neemo opisivati.

6.3 Hamiltonovi ciklusi

Problem. Zadat je graf 𝐺 = (𝑉,𝐸). Pronai u 𝐺 prosti ciklus kojisvaki qvor iz 𝑉 sadri taqno jednom.

Takav ciklus zove seHamiltonov ciklus. Graf koji sadri Hamiltonovciklus zove se Hamiltonov graf. Problem ima usmerenu i neusmerenuverziju; mi emo se baviti samo neusmerenom varijantom.

Za razliku od problema Ojlerovih ciklusa, problem nalaea Ha-miltonovih ciklusa (odnosno karakterizacije Hamiltonovih grafova) jevrlo teak. Da bi se proverilo da li je graf Ojlerov, dovono je znatistepene egovih qvorova. Za utvrivae da li je graf Hamiltonov, to nijedovono. Zaista, dva grafa prikazana na slici 6.9 imaju po 16 qvorovastepena 3 (dakle imaju iste stepene qvorova), ali je prvi Hamiltonov, adrugi oqigledno nije. Ovaj problem spada u klasu NP-kompletnih problema.U ovom odeku prikazaemo jednostavan postupak nalaea Hamiltonovogciklusa u specijalnoj klasi vrlo gustih grafova.

ee

ee

ee

ee

ee

e e

ee

e eee ee

e e

eeee

e e ee e

e

Slika 6.9: Dva grafa sa po 16 qvorova stepena 3, od kojih je prviHamiltonov, a drugi nije.

Neka je 𝐺 = (𝑉,𝐸) povezan neusmeren graf i neka za proizvoan qvor𝑣 ∈ 𝑉 𝑑(𝑣) oznaqava egov stepen. Sledei problem je specijalni sluqajtraea Hamiltonovog ciklusa u vrlo gustim grafovima. Pokazaemo dauslovi problema garantuju da je graf Hamiltonov.

Problem. Dat je povezan neusmeren graf 𝐺 = (𝑉,𝐸) sa 𝑛 ≥ 3 qvorova,takav da svaki par nesusednih qvorova 𝑣 i 𝑤 zadovoava uslov 𝑑(𝑣)+𝑑(𝑤) ≥𝑛. Pronai u 𝐺 Hamiltonov ciklus.

Algoritam se zasniva na indukciji po broju grana koje treba uklonitiiz kompletnog grafa da bi se dobio zadati graf. Baza indukcije je kompletangraf. Svaki kompletan graf sa bar tri qvora sadri Hamiltonov ciklus,koji je lako pronai.

Induktivna hipoteza. Umemo da pronaemo Hamiltonov ciklus u gra-fovima koji zadovoavaju navedene uslove ako imaju bar 𝑛(𝑛 − 1)/2 −𝑚grana.

Page 84: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

6.3. Hamiltonovi ciklusi 84

Sada treba da pokaemo kako pronai Hamiltonov ciklus u grafusa 𝑛(𝑛 − 1)/2 − (𝑚 + 1) grana koji zadovoava uslove problema. Neka je𝐺 = (𝑉,𝐸) takav graf. Izaberimo proizvona dva nesusedna qvora 𝑣 i 𝑤 u𝐺 (to je mogue ako graf nije kompletan), i posmatrajmo graf 𝐺′ koji se od𝐺 dobija dodavaem grane (𝑣, 𝑤). Prema induktivnoj hipotezi mi umemoda pronaemo Hamiltonov ciklus u grafu 𝐺′. Neka je 𝑥1, 𝑥2, . . . , 𝑥𝑛, 𝑥1

takav ciklus u 𝐺′ (videti sliku 6.10). Ako grana (𝑣, 𝑤) nije deo ciklusa,onda je isti ciklus deo grafa 𝐺, pa je problem rexen. U protivnom, bezsmaea opxtosti moe se pretpostaviti da je 𝑣 = 𝑥1 i 𝑤 = 𝑥𝑛. Premadatim uslovima je 𝑑(𝑣) + 𝑑(𝑤) ≥ 𝑛. Potrebno je u grafu pronai noviHamiltonov ciklus.

ee

ee

ee

ee

ee

e e

ee

e e

𝑤

𝑥𝑛−1

𝑥𝑖+1 𝑥𝑖

𝑣𝑥2

𝑥3

W 6

Slika 6.10: Modifikacija Hamiltonovog ciklusa posle izbacivaa grane(𝑣, 𝑤).

Posmatrajmo sve grane grafa 𝐺 susedne sa qvorovima 𝑣 ili 𝑤. Tvrdimoda pod zadatim uslovima postoje dva qvora 𝑥𝑖 i 𝑥𝑖+1 takva da u 𝐺 postojegrane (𝑤, 𝑥𝑖) i (𝑣, 𝑥𝑖+1). Da bismo to dokazali, pretpostavimo suprotno,da ni za jedno 𝑖, 2 ≤ 𝑖 ≤ 𝑛 − 2, ne postoje istovremeno obe grane (𝑤, 𝑥𝑖) i(𝑣, 𝑥𝑖+1). Neka je qvor 𝑤 vezan sa qvorom 𝑥𝑛−1 i 𝑘 qvorova 𝑥𝑖1 , 𝑥𝑖2 , . . . , 𝑥𝑖𝑘 ,pri qemu je 2 ≤ 𝑖1 < 𝑖2 < · · · < 𝑖𝑘 ≤ 𝑛−2. Tada po pretpostavci qvor 𝑣 nijevezan ni sa jednim od qvorova 𝑥𝑖1+1, 𝑥𝑖2+1, . . . , 𝑥𝑖𝑘+1, pa je 𝑑(𝑣) ≤ 𝑛−2−𝑘 (odukupno 𝑛−1 moguih grana iz 𝑣 ne postoje grane ka 𝑤, niti ka 𝑘 navedenihqvorova, razliqitih od 𝑤). Zbog toga je 𝑑(𝑤) + 𝑑(𝑣) ≤ (𝑘 + 1) + (𝑛 − 2 −𝑘) = 𝑛 − 1; ovo je u kontradikciji sa pretpostavkom da je 𝑑(𝑤) + 𝑑(𝑣) ≥𝑛. Dakle, za neko 𝑖 postoje grane (𝑤, 𝑥𝑖) i (𝑣, 𝑥𝑖+1). Od ovih dveju granamoe se formirati novi Hamiltonov ciklus 𝑣(= 𝑥1), 𝑥𝑖+1, 𝑥𝑖+2, . . . , 𝑤(=𝑥𝑛), 𝑥𝑖, 𝑥𝑖−1, . . . , 𝑣, koji ne sadri granu (𝑣, 𝑤), videti sliku 6.10.

Realizacija. Direktna primena ovog dokaza polazi od kompletnog gra-fa, iz koga se jedna za drugom izbacuju grane koje ne pripadaju zadatomgrafu. Boe je rexee poqeti sa mnogo maim grafom, na sledei naqin.U datom grafu 𝐺 najpre pronalazimo dugaqak put (na primer, pomouDFS), a onda dodajemo nove grane tako da put produimo do Hamiltonovogciklusa. Tako je dobijen vei graf 𝐺′. Obiqno je dovono dodati samonekoliko grana. Meutim, qak i u najgorem sluqaju bie dodata najvixe𝑛−1 grana. Polazei od 𝐺′, dokaz teoreme se zatim primeuje iterativno,sve dok se ne pronae Hamiltonov ciklus u 𝐺. Ukupan broj koraka za

Page 85: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

85 6. Grafovi

zamenu jedne grane je 𝑂(𝑛). Potrebno je zameniti najvixe 𝑛− 1 grana, paje vremenska sloenost algoritma 𝑂(𝑛2).

Page 86: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj
Page 87: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

Glava 7

Redukcije

7.1 Uvod

Zapoqeemo ovo poglave jednom anegdotom. Matematiqaru je objaxenokako moe da skuva qaj: treba da uzme qajnik, napuni ga vodom iz slavine,stavi qajnik na xtedak, saqeka da voda provri, i na kraju stavi qaj uvodu. A onda su ga pitali: kako moe da skuva qaj ako ima qajnik, punvrele vode? Jednostavno, kae on; prosue vodu i tako svesti problem nave rexen.

U ovom poglavu pozabaviemo se idejom redukcije, odnosno svoeajednog problema na drugi. Pokazaemo da redukcije, iako ponekad nera-cionalne, mogu biti i vrlo korisne. Na primer, ako ubacite u sanduqepoxte na Novom Beogradu pismo za qoveka koji stanuje odmah pored tepoxte, pismo e, bez obzira na blizinu odredixta, prei put do Glavnepoxte u Beogradu, pa nazad do poxte na Novom Beogradu, i tek onda e gapoxtar odneti vaxem poznaniku. U mnogo sluqajeva nije lako prepoznatispecijalni sluqaj i za ega skrojiti efikasnije specijalno rexee. Upraksi je qesto efikasnije sve specijalne sluqajeve tretirati na istinaqin. Na takvu situaciju redovno se nailazi i pri konstrukciji algoritama.Kad naiemo na problem koji se moe shvatiti kao specijalni sluqajdrugog problema, koristimo poznato rexee. To rexee ponekad moebiti previxe opxte ili previxe skupo. Meutim, u mnogim sluqajevimaje korixee opxteg rexea najlakxi, najbri i najelegantniji naqinda se problem rexi. Ovaj princip se qesto koristi. Za neke raqunarskeprobleme, na primer rad sa nekom bazom podataka, obiqno nije neophodnonapisati program koji rexava samo taj problem. Opxte rexee ne morabiti najefikasnije, ali je mnogo jednostavnije iskoristiti upravo ega.

Pretpostavimo da je dat problem 𝑃 , koji izgleda komplikovano, aliliqi na poznati problem 𝑄. Moe se nezavisno (od poqetka) rexavatiproblem 𝑃 , ili se moe iskoristiti neki od metoda za rexavae 𝑄 iprimeniti na 𝑃 . Postoji, meutim, i trea mogunost. Moe se pokuxatisa nalaeem redukcije, odnosno svoea jednog problema na drugi.Neformalno, redukcija je rexavae jednog problema korixeem "crnekutije" koja rexava drugi problem. Redukcijom se moe postii jedanod dva cia, zavisno od smera. Rexee 𝑃 , koje koristi crnu kutiju za

87

Page 88: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

7.2. Primeri redukcija 88

rexavae 𝑄, moe se transformisati u algoritam za rexavae 𝑃 , ako sezna algoritam za rexavae 𝑄. S druge strane, ako se za 𝑃 zna da je teakproblem, i zna se doa granica sloenosti za algoritme koji rexavaju𝑃 , onda je to istovremeno i doa granica sloenosti za problem 𝑄. Uprvom sluqaju je redukcija iskorixena za dobijae informacije o 𝑃 , au drugom | o 𝑄.

Na primer, u odeku 7.4.2 razmatraju se problemi mnoea i kvadriraamatrica. Jasno je da se kvadrirae moe izvesti primenom algoritma zamnoee; prema tome, kvadrirae matrice moe se svesti na mnoeematrica. U odeku 7.4.2 se pokazuje da je mogue pomnoiti dve matriceprimenom algoritma za kvadrirae; drugim reqima, mnoee matricasvodi se na kvadrirae. Svrha ove druge redukcije je izvoee dokaza da sekvadrirae matrice ne moe izvesti asimptotski bre od izraqunavaaproizvoda dve proizvone matrice (pod uslovima koji su razmotreni uodeku 7.4.2).

U ovom poglavu videemo nekoliko primera redukcija. Nalaeeredukcije jednog problema na drugi moe biti korisno qak i ako ne dajenovu dou ili goru granicu sloenosti problema. Redukcija omoguujeboe razumevae oba problema. Ona se moe iskoristiti za nalaeenovih tehnika za napad na problem ili egove varijante. Na primer,redukcija se moe iskoristiti za konstrukciju paralelnog algoritma zarexavae problema.

Jedan od efikasnih naqina za upotrebu redukcija je definisae vrloopxteg problema, na koga se mogu svesti mnogi drugi problemi. Takavproblem treba da bude dovono opxti, da pokrije xiroku klasu problema,dok sa druge strane treba da bude dovono jednostavan, da bi imao efikasnorexee. Linearno programirae, jedan od takvih problema, razmotriemou odeku 7.3.

Pomenimo i to da smo se i ranije ve sretali sa primerima redukcija| na primer, sa redukcijom problema nalaea tranzitivnog zatvoreana problem nalaea svih najkraih puteva.

7.2 Primeri redukcija

U ovom odeku razmotriemo nekoliko primera upotrebe redukcija kaometoda za konstrukciju efikasnih algoritama.

7.2.1 Cikliqko uporeivae stringova

Poqiemo sa jednostavnom varijantom problema pronalaea uzorkau tekstu.

Problem. Neka su 𝐴 = 𝑎0𝑎1 . . . 𝑎𝑛−1 i 𝐵 = 𝑏0𝑏1 . . . 𝑏𝑛−1 dva stringaduine 𝑛. Ustanoviti da li je string 𝐵 cikliqki pomeraj stringa 𝐴.

Problem je ustanoviti da li postoji indeks 𝑘, 0 ≤ 𝑘 ≤ 𝑛− 1, takav daje 𝑎𝑖 = 𝑏(𝑘+𝑖)mod𝑛 za sve 𝑖, 0 ≤ 𝑖 ≤ 𝑛 − 1. Oznaqimo ovaj problem sa CUS,a osnovni problem traea reqi u tekstu sa TUT. Problem CUS moe serexiti, na primer, izmenom algoritma KMP. Postoji boi naqin da sedoe do rexea. Ideja je formulisati CUS kao regularni primer ulaza za

Page 89: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

89 7. Redukcije

problem TUT. Drugim reqima, traimo neki tekst 𝑇 i req 𝑃 , tako da jepronalaee 𝑃 u 𝑇 ekvivalentno utvrivau da je 𝐵 cikliqki pomeraj𝐴. Ako nam to poe za rukom, onda se rexee TUT sa stringovima 𝑇 i𝑃 moe iskoristiti za rexavae CUS sa stringovima 𝐴 i 𝐵. Kad seproblem razmotri na ovaj naqin, lako je videti rexee: za 𝑇 treba uzeti𝐴𝐴 (odnosno string 𝐴 nadovezan na samog sebe). Jasno je da je 𝐵 cikliqkipomeraj 𝐴 ako i samo ako je 𝐵 podstring stringa 𝐴𝐴. Poxto problem TUTumemo da reximo za linearno vreme, doxli smo do algoritma za rexavaeCUS linearne sloenosti.

7.2.2 Redukcije sa uporeivaem nizova

Razmotrimo problem odreivaa edit rastojaa dve niske: dati sunizovi znakova 𝐴 = 𝑎1𝑎2 . . . 𝑎𝑛, 𝐵 = 𝑏1𝑏2 . . . 𝑏𝑚, a zadatak je promeniti𝐴 znak po znak, i tako ga uqiniti jednakim nizu 𝐵. Dozvoene su triedit operacije | umetae, brisae i zamena znaka. Znaju se cene svakeoperacije, a ci je minimizacija cene editovaa. Rexee koje smo ranijerazmatrali zasniva se na popuavau tabele dimenzija 𝑛×𝑚, u kojoj svakielement odgovara parcijalnom editovau: element tabele u preseku 𝑖-tevrste i 𝑗-te kolone je najmaa cena transformisaa prvih 𝑖 znakova niske𝐴 u 𝑗 prvih znakova niske 𝐵. Ci se postie izraqunavaem elementa udoem desnom uglu tabele. Videli smo da se svaki element moe izraqunatina osnovu samo tri "prethodna" elementa, xto odgovara trima moguimvarijantama za posledu edit operaciju.

Isti problem moe se posmatrati na drugi naqin ako tabeli pridru-imo usmereni graf. Svaki element tabele odgovara qvoru grafa, odnosnoparcijalnom editovau. Grana (𝑣, 𝑤) u grafu postoji ako se editovaekoje odgovara qvoru 𝑤 dobija dodavaem jedne edit operacije editovaukoje odgovara qvoru 𝑣. Primer takvog grafa dat je na slici 7.1, gde je𝐴 = 𝑐𝑎𝑎 i 𝐵 = 𝑎𝑏𝑎. Horizontalne grane odgovaraju umetaima, vertikalnebrisaima, a dijagonalne zamenama znakova. Tako, na primer, put istaknutna slici 7.1 odgovara brisau 𝑐, zameni 𝑎 sa 𝑎, umetau 𝑏 i jox jednojzameni 𝑎 sa 𝑎. U osnovnoj varijanti problema cene grana su 1, izuzevdijagonalnih grana koje odgovaraju zameni znaka istim znakom, qija jecena 0. Problem se na taj naqin transformixe u obiqan problem nalaeasvih rastojaa od zadatog qvora u grafu. Svakoj grani dodeena je teina,i mi traimo najkrai put od qvora (0, 0) do qvora (𝑛,𝑚). Dakle, problemnalaea edit rastojaa sveden je na problem nalaea najkraih rastojaaod zadatog qvora u grafu.

Nalaee svih rastojaa od zadatog qvora u opxtem sluqaju nijelakxe od direktnog rexavaa problema (algoritam za nalaee najkraihrastojaa od zadatog qvora je sloenosti 𝑂((|𝐸| + |𝑉 |) log |𝑉 |), gde je sa|𝑉 | oznaqen broj qvorova koji je ovde jednak (𝑚 + 1) · (𝑛 + 1)), dok je brojgrana proporcionalan broju qvorova (iz svih qvorova osim onih na dooji desnoj ivici kreu po tri grane). Ova redukcija ipak nije beskorisna.Razmotrimo, na primer, sledeu varijantu problema uporeivaa nizova.Cene edit operacija ne moraju da zavise samo od pojedinaqnih znakova.Cena umetaa bloka znakova unutar drugog niza moe biti razliqita odumetaa istog broja znakova jednog po jednog, na razliqitim mestima.

Page 90: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

7.2. Primeri redukcija 90

6u

6 6u u u∅ 𝑎 𝑏 𝑎

∅ - - -

? ? ? ?R R R6

6

u

u6

6

6

6

u

u

u

u

u

u

𝑐

𝑎

-

-

-

-

-

-?

?

?

?

?

?

?

?

R

R

R

R

R

R6

u6 6

u u u- - -𝑎

0

0

0

0

Slika 7.1: Graf koji odgovara nizovima 𝐴 = 𝑐𝑎𝑎 i 𝐵 = 𝑎𝑏𝑎.

Isto moe da bude sluqaj i sa brisaima. Drugim reqima, umesto dacene dodeujemo pojedinaqnim umetaima, brisaima i zamenama, cene semogu dodeliti blokovima umetaa, brisaa i zamena, nezavisno od ihoveveliqine. Ili drugaqije, umetau bloka od 𝑘 znakova moe se dodeliticena 𝑐1 + 𝑐2𝑘, gde je 𝑐1 "poqetna cena", a 𝑐2 cena za svaki naredni znak.Postoji mnogo drugih korisnih metrika. One se mnogo lakxe modelirajukorixeem formulacije u vidu problema najkraih puteva, nego pri-lagoavaem polaznog problema. Isto tako, mogu se dodati nove grane sapogodno izabranim cenama, ne meajui suxtinu problema.

7.2.3 Nalaee trouglova u neusmerenom grafu

Postoji tesna veza izmeu grafova i matrica. Graf 𝐺 = (𝑉,𝐸) sa 𝑛qvorova 𝑣1, 𝑣2, . . . 𝑣𝑛, moe se predstaviti svojom matricom povezanosti |kvadratnom matricom 𝐴 = (𝑎𝑖𝑗) reda 𝑛, takvom da je 𝑎𝑖𝑗 = 1 ako (𝑣𝑖, 𝑣𝑗) ∈𝐸, odnosno 𝑎𝑖𝑗 = 0 u ostalim sluqajevima. Ako je 𝐺 neusmereni graf,matrica 𝐴 je simetriqna. Ako je 𝐺 teinski graf, onda se on takoemoe predstaviti kvadratnom matricom 𝐴 = (𝑎𝑖𝑗) reda 𝑛, pri qemu jeelement 𝑎𝑖𝑗 jednak teini grane (𝑣𝑖, 𝑣𝑗), odnosno ∞, ako te grane nema ugrafu. Postoje i drugi naqini da se matrica pridrui grafu. Tako segrafu 𝐺 = (𝑉,𝐸) sa 𝑛 qvorova i 𝑚 grana moe pridruiti 𝑛×𝑚 matricau kojoj je (𝑖, 𝑗)-ti element jednak 1 ako i samo ako je 𝑖-ti qvor susedan sa𝑗-tom granom.

Veze grafova i matrica ne zadravaju se samo na reprezentaciji. Mnogeosobine grafova mogu se boe razumeti analizom odgovarajuih matrica.Sliqno, mnoge osobine matrica otkrivaju se posmatraem odgovarajuihgrafova. Nije iznenaujue da se mnogi algoritamski problemi mogu rexitikorixeem ove analogije. To emo ilustrovati jednim primerom.

Problem. Neka je 𝐺 = (𝑉,𝐸) neusmereni povezani graf sa 𝑛 qvorova i 𝑚

Page 91: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

91 7. Redukcije

grana. Potrebno je ustanoviti da li u 𝐺 postoji trougao, odnosno takvatri qvora da izmeu svaka dva od ih postoji grana.

Direktno rexee obuhvata proveru svih troqlanih podskupova skupaqvorova. Podskupova ima

(𝑛3

)= 𝑛(𝑛 − 1)(𝑛 − 2)/6, a poxto se svaki od

ih moe proveriti za konstantno vreme, vremenska sloenost ovakvogalgoritma je 𝑂(𝑛3). Moe se konstruisati i algoritam sloenosti 𝑂(𝑚𝑛)(zasnovan na proveri svih parova (𝑔𝑟𝑎𝑛𝑎, 𝑐𝑣𝑜𝑟) | da li grade trougao),koji je boi ako graf nije gust. Moe li se ovo dae poboxati? Prikaza-emo sada algoritam koji je asimptotski bri, i suxtinski je drugaqiji.Svrha primera je da ilustruje vezu izmeu grafovskih i matriqnih algo-ritama.

Neka je 𝐴 matrica povezanosti grafa 𝐺. Poxto je graf 𝐺 neusmeren,matrica 𝐴 je simetriqna. Razmotrimo vezu elemenata matrice 𝐵 = 𝐴2 =𝐴𝐴 (proizvod je obiqan proizvod matrica) i grafa 𝐺. Prema definicijiproizvoda matrica je

𝐵[𝑖, 𝑗] =

𝑛∑𝑘=1

𝐴[𝑖, 𝑘] ·𝐴[𝑘, 𝑗].

Iz ove jednakosti sledi da je uslov 𝐵[𝑖, 𝑗] > 0 ispuen ako i samo akopostoji indeks 𝑘, takav da su oba elementa 𝐴[𝑖, 𝑘] i 𝐴[𝑘, 𝑗] jedinice. Drugimreqima, 𝐵[𝑖, 𝑗] > 0 je ispueno ako i samo ako postoji qvor 𝑣𝑘, takav daje 𝑘 = 𝑖, 𝑘 = 𝑗 i da su oba qvora 𝑣𝑖 i 𝑣𝑗 povezana sa 𝑣𝑘 (pretpostavamoda graf nema peti, odnosno 𝐴[𝑖, 𝑖] = 0 za 𝑖 = 1, 2, . . . , 𝑛). Prema tome,u grafu postoji trougao koji sadri temena 𝑣𝑖 i 𝑣𝑗 ako i samo ako je 𝑣𝑖povezan sa 𝑣𝑗 i 𝐵[𝑖, 𝑗] > 0. Konaqno, u 𝐺 postoji trougao ako i samo akopostoje takvi indeksi 𝑖, 𝑗 da je 𝐴[𝑖, 𝑗] = 1 i 𝐵[𝑖, 𝑗] > 0.

Navedena analiza sugerixe algoritam. Treba izraqunati matricu 𝐵 =𝐴2 i proveriti ispuenost uslova 𝐴[𝑖, 𝑗] = 1, 𝐵[𝑖, 𝑗] > 0 za svih 𝑛2

parova (𝑖, 𝑗). Sloenost provere ovog uslova je 𝑂(𝑛2), pa preovlaujuideo vremenske sloenosti algoritma potiqe od mnoea matrica. Time jeproblem nalaea trougla u grafu sveden na problem mnoea matrica(preciznije, kvadriraa matrice, ali kao xto emo videti u odeku 7.4.2,ta dva problema su ekvivalentna). Za mnoee matrica moe se iskoristitiXtrasenov algoritam i tako dobiti algoritam za nalaee trougla ugrafu sloenosti 𝑂(𝑛2.81). Preciznije, opisana redukcija pokazuje daje sloenost ovog grafovskog problema 𝑂(𝑀(𝑛)), gde je 𝑀(𝑛) sloenostmnoea Bulovih matrica reda 𝑛.

7.3 Redukcije na problem linearnog programiraa

Prethodni odeak sadri primere redukcija izmeu algoritama u raz-liqitim oblastima. Pokuxali smo da transformixemo jedan problem udrugi, da bismo mogli da iskoristimo poznati algoritam. U ovom odekutakoe se razmatraju redukcije, ali je pristup drugaqiji. Umesto da tra-imo kandidata za redukciju svaki put kad naiemo na novi problem,razmatramo "superprobleme", na koje se mogu svesti mnogi drugi problemi.Jedan takav superproblem (moda najvaniji) je linearno programirae.

Page 92: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

7.3. Redukcije na problem linearnog programiraa 92

7.3.1 Uvod i definicije

Sadraj mnogih problema je maksimizirae ili minimizirae nekefunkcije, koja zadovoava zadate uslove. Na primer, kod optimizacijetransportne mree ci je maksimizirae fukcije toka, pod uslovom dasu zadovoeni uslovi kapaciteta grana i konzervacije toka. Linearnoprogramirae je opxta formulacija problema kod kojih su funkcija iograniqea linearni. Neka je x = (𝑥1, 𝑥2, . . . , 𝑥𝑛)𝑇 vektor promenivih.Cina funkcija je linearna funkcija promenivih | komponentivektora x:

𝑐(x) =

𝑛∑𝑖=1

𝑐𝑖𝑥𝑖, (7.1)

gde su 𝑐𝑖 konstante. Ci linearnog programiraa je pronai vrednost xkoja zadovoava zadata ograniqea (koja e biti navedena) i maksimiziracinu funkciju. Kasnije emo videti da je lako zameniti minimiziraecine funkcije enim maksimiziraem. Prethodno navodimo opxti oblikzadatka linearnog programiraa sa tri tipa ograniqea, pri qemu se ukonkretnim problemima ne moraju pojavivati sva tri tipa ograniqea.Pokazaemo da se opxti problem moe svesti na problem sa samo dva tipaograniqea.

Neka su a1,a2, . . . ,a𝑘 realni vektori vrste jednake duine 𝑛, i neka su𝑏1, 𝑏2, . . . , 𝑏𝑘 realni brojevi. Nejednakosna ograniqea su ograniqeaoblika

a𝑗 · x ≤ 𝑏𝑗 , 1 ≤ 𝑗 ≤ 𝑘, (7.2)

pri qemu su svi simboli sem komponenti x konstante, a · je oznaka zamatriqni proizvod. Sliqna su jednakosna ograniqea

e𝑗 · x = 𝑑𝑗 , 1 ≤ 𝑗 ≤ 𝑚, (7.3)

pri qemu su e1, e2, . . . , e𝑚 takoe vektori vrste duine 𝑛, a 𝑑1, 𝑑2, . . . , 𝑑𝑚su realni brojevi.

Obiqno se dodaju i posebna nenegativna ograniqea (iako se onamogu shvatiti kao specijalni sluqaj nejednakosnih ograniqea)

𝑥𝑗 ≥ 0 za sve 𝑗 ∈ 𝑃, (7.4)

gde je 𝑃 zadati podskup skupa 1, 2, . . . , 𝑛.Problem linearnog programiraa moe se formulisati na sledei

naqin: maksimizirati funkciju 𝑐(x) (7.1), pod uslovom da su zadovoenanejednakosna (7.2), jednakosna (7.3) i nenegativna ograniqea (7.4). Razumese da konkretni problemi ne moraju da sadre ograniqea svih tipova.

Za ovako definisan problem u opxtem sluqaju postoji vixe ekvivalentnihformulacija. Na primer, jednakosna ograniqea tipa e𝑗 · x = 𝑑𝑗 moguse ekvivalentno zameniti sa dva nejednakosna ograniqea e𝑗 · x ≤ 𝑑𝑗 ie𝑗 · x ≥ 𝑑𝑗 . Sliqno, nejednakosno ograniqee a𝑖 · x ≤ 𝑏𝑖 moe se zamenitisa dva ekvivalentna, a𝑖 ·x+𝑦𝑖 = 𝑏𝑖 i 𝑦𝑖 ≥ 0, pri qemu je 𝑦𝑖 nova promeniva.U oba sluqaja zamena jednog skupa ograniqea drugim moe da povea brojograniqea.

Na ovom mestu neemo se baviti algoritmom za rexavae problemalinearnog programiraa. Vano je znati da je ovaj problem iz klase 𝑃 ,

Page 93: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

93 7. Redukcije

odnosno da se za egovo rexavae zna algoritam polinomijalne sloenosti.Napomenimo i to da su postojei algoritmi za rexavae problema linearnogprogramiraa u praksi dovono efikasni, i da svoee nekog problemana linearno programirae nije samo uvebavae redukcija, nego moe dabude i dobar naqin da se taj problem rexi.

7.3.2 Primeri redukcije na linearno programirae

U praksi su problemi retko direktno zadati kao problemi linearnogprogramiraa. Obiqno je neophodno uvesti odgovarajue definicije da bise problem uklopio u ovu formulaciju.

Transportni problem

Ovaj problem razmatran je u odeku 6.2. Neka promenive 𝑥1, 𝑥2, . . . , 𝑥𝑛

predstavaju vrednosti toka za svih 𝑛 grana 𝑒1, 𝑒2, . . . , 𝑒𝑛, Cina funkcijaje vrednost ukupnog toka

𝑐(x) =∑𝑗∈𝑆

𝑥𝑗 ,

gde je 𝑆 skup grana koje izlaze iz izvora 𝑠. Nejednakosna ograniqeaodgovaraju ograniqeima kapaciteta

𝑥𝑖 ≤ 𝑐𝑖, 1 ≤ 𝑖 ≤ 𝑛,

gde je 𝑐𝑖 kapacitet grane 𝑒𝑖. Jednakosna ograniqea odgovaraju uslovimaodraa toka ∑

𝑒𝑖 izlazi iz 𝑣

𝑥𝑖 =∑

𝑒𝑗 ulazi u 𝑣

𝑥𝑗 , za sve 𝑣 ∈ 𝑉 ∖ 𝑠, 𝑡.

Na kraju, sve promenive treba da zadovoe nenegativna ograniqea 𝑥𝑖 ≥0 za 𝑖 ∈ 1, 2, . . . , 𝑛. Vrednosti x koje maksimiziraju cinu funkciju uzova ograniqea odgovaraju oqigledno optimalnom toku.

Dobrotvorni problem

Pretpostavimo da 𝑛 osoba ele da upute pomo u 𝑘 ustanova. Osoba 𝑖 imaograniqee 𝑠𝑖 na ukupan prilog u toku godine, kao i ograniqee 𝑎𝑖𝑗 naiznos priloga ustanovi 𝑗 (na primer, 𝑎𝑖𝑗 moe da bude 0 za neke ustanove).

U opxtem sluqaju 𝑠𝑖 je mae od∑𝑘

𝑗=1 𝑎𝑖𝑗 , pa svaka osoba treba da doneseodluku o tome kome da uputi koliki prilog. Pretpostavimo dae da svakaustanova 𝑗 ima ograniqee 𝑡𝑗 na ukupan iznos koji moe da primi (ovoograniqee ne mora uvek da bude prisutno, ali je ipak interesantno).Ci je napraviti algoritam koji maksimizira zbir priloga.

Ovaj problem je uopxtee problema uparivaa iz odeka 6.1.2. Problemse moe rexiti postupkom sliqnim postupcima za nalaee optimalnoguparivaa, a moe se formulisati i kao problem linearnog programiraa.Ukupno ima 𝑛𝑘 promenivih 𝑥𝑖𝑗 , 1 ≤ 𝑖 ≤ 𝑛, 1 ≤ 𝑗 ≤ 𝑘, gde je 𝑥𝑖𝑗 iznos kojiosoba 𝑖 uplauje ustanovi 𝑗. Cina funkcija je

𝑐(x) =∑𝑖,𝑗

𝑥𝑖𝑗 .

Page 94: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

7.3. Redukcije na problem linearnog programiraa 94

Ograniqea su sledea:

𝑥𝑖𝑗 ≤ 𝑎𝑖𝑗 za sve 𝑖, 𝑗,

𝑘∑𝑗=1

𝑥𝑖𝑗 ≤ 𝑠𝑖 za sve 𝑖,

𝑛∑𝑖=1

𝑥𝑖𝑗 ≤ 𝑡𝑗 za sve 𝑗.

Pored toga, sve promenive naravno moraju biti nenegativne: 𝑥𝑖𝑗 ≥ 0 zasve 𝑖, 𝑗.

Problem pridruivaa

Promenimo malo dobrotvorni problem tako da svaka osoba moe da uplatiprilog samo jednoj ustanovi, i da svaka ustanova moe da primi prilogod samo jedne osobe. Tako dobijamo standardni problem uparivaa, alisa teinama. Svakom moguem uparivau pridruen je zbir priloga, aci je ne samo pronai optimalno uparivae, nego i maksimizirati sumupriloga. Ovo je teinski problem bipartitnog uparivaa, ili problempridruivaa.

Promenive u ovom problemu ne mogu biti iste kao u prethodnom. Po-trebno je na neki naqin okarakterisati uparivae. Treba obezbediti da jesa svakim qvorom povezana taqno jedna izabrana grana. To se moe postiidodeivaem po jedne promenive 𝑥𝑖𝑗 svakoj grani (𝑖, 𝑗), tako da je 𝑥𝑖𝑗 = 1ako je grana izabrana, odnosno 𝑥𝑖𝑗 = 0 u protivnom. Cina funkcija je

𝑐(x) =∑𝑖,𝑗

𝑎𝑖𝑗𝑥𝑖𝑗 ,

a ograniqea su𝑘∑

𝑗=1

𝑥𝑖𝑗 = 1 za sve 𝑖,

𝑛∑𝑖=1

𝑥𝑖𝑗 = 1 za sve 𝑗.

Pored toga, sve promenive 𝑥𝑖𝑗 treba da budu nenegativne. Navedena ogra-niqea obezbeuju da je za svaki qvor izabrana najvixe jedna grana.

Sa ovakvom formulacijom postoji jedan ozbian problem. Promenivetreba da predstavaju izbor tipa "da""ne", a ihove optimalne vrednostimogu da budu realni (dakle ne celi) brojevi! Potrebno je dodati ograniqeeda promenive mogu uzimati samo vrednosti 0 ili 1. U opxtem sluqajutakav problem je texko rexiti. Linearni programi qije promenive morajubiti celi brojevi zovu se celobrojni linearni programi, a ihovorexavae je celobrojno linearno programirae. Meutim, iako selinearni programi mogu efikasno rexavati, celobrojni linearni programisu obiqno (ali ne uvek) vrlo texki.Xta vixe, vai da je problem celobrojnoglinearnog programiraa NP-kompletan.

Page 95: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

95 7. Redukcije

Traee maksimalne klike

Klika je podskup 𝐶 skupa qvorova 𝑉 grafa𝐺 = (𝑉,𝐸) takav da za svaka dvaqvora 𝑥 i 𝑦 iz 𝐶 vai (𝑥, 𝑦) ∈ 𝐸. Zadatak je odrediti maksimalnu klikuu datom grafu, odnosno kliku sa najveim brojem qvorova. Pokazaemosada kako se problem klika moe formulisati kao problem celobrojnoglinearnog programiraa.

Svakom qvoru grafa 𝐺 pridruujemo po jednu promenivu 𝑥𝑖, tako daje 𝑥𝑖 = 1 ako qvor 𝑣𝑖 pripada kliki, odnosno 𝑥𝑖 = 0 u suprotnom. Cinafunkcija je:

𝑐(x) =

𝑛∑𝑖=1

𝑥𝑖

i zadatak je maksimizirati je, jer je potrebno ukuqiti u kliku xto veibroj qvorova. Postoji po jedno ograniqee za svaki qvor:

0 ≤ 𝑥𝑖 ≤ 1, 𝑖 = 1, 2, . . . , 𝑛

Ograniqee koje nam obezbeuje da izabrani skup qvorova bude klikaekvivalentno je ograniqeu da od svaka dva nesusedna qvora najvixe jedanqvor moe da pripada skupu. Ovo ograniqee kodiramo narednim uslovom:

𝑥𝑖 + 𝑥𝑗 ≤ 1 za svaki par qvorova (𝑣𝑖, 𝑣𝑗) /∈ 𝐸, 𝑖 < 𝑗

Dodatno ograniqee je da za svaki qvor vai da je vrednost 𝑥𝑖 iz skupa0, 1.

Ovakav problem celobrojnog linearnog programiraa moe se rexitialgoritmom granaa sa odsecaem, korixeem odgovarajueg linearnogprograma (koji rexava isti problem, ali bez ograniqea celobrojnosti)za izraqunavae gorih granica. Rexee linearnog programa moe sesastojati samo od celih brojeva; u tom sluqaju polazni problem je rexen.Meutim, verovatnije je da e u rexeu neke promenive imati necelobrojnevrednosti. Pretpostavimo, na primer, da je rexee linearnog programapridruenog problemu klika (0.1, 1, . . . , 0.5) i 𝑧 = 7.8. Poxto linearniprogram maksimizira cinu funkciju sa mae ograniqea od celobrojnoglinearnog programa, maksimum koji on pronae je gora granica za maksimumkoji moe da pronae celobrojni linearni program. Prema tome, ne moese oqekivati pronalaee klike veliqine vee od 7. Ova informacijamoe biti korisna prilikom pretrage. Kao i kod obiqne pretrage, biramoneke vrednosti promenivih i napredujemo niz stablo, pri qemu ako jeteme 𝑏 u stablu sin temena 𝑎, onda je problem koji odgovara temenu 𝑏potproblem problema iz temena 𝑎, koji se dobija fiksiraem vrednostineke promenive na vrednost 0 ili 1; time je potproblem koji odgovaraproizvonom qvoru potproblem polaznog problema. Na primer, potproblemmoe da odgovara prikuqivau qvorova 𝑣, 𝑤 kliki, i eliminisau ize qvorova 𝑢, 𝑥, tj. pokuxava se sa nalaeem najvee klike sa 𝑣, 𝑤, a bez𝑢, 𝑥. Ako se tom prilikom dobije rexee linearnog programa koje je maeod veliqine ve pronaene klike, onda qinimo korak nazad, i napuxtamotu varijantu. To je suxtina metoda granaa i odsecaa. Pokuxavamo danaemo gore granice (ili doe, ako se cina funkcija minimizira) koje

Page 96: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

7.3. Redukcije na problem linearnog programiraa 96

e omoguiti odsecae neperspektivnih podstabala na xto niem nivou(xto blie korenu stabla).

Rezultat linearnog programa moe se iskoristiti i pri izboru redosledapretrage. Na primer, ako je 𝑥2 = 1 u necelobrojnom rexeu, moe sepretpostaviti da je 𝑥2 = 1 i u celobrojnom rexeu. Ta pretpostavka nemora biti taqna, ali je primer vrste heuristika koje traimo. Pokuxavamoda poveamo \verovatnou" brzog nalaea optimalnog rexea; pri tomeje jasno da ne mogu sve takve odluke da budu "ispravne", jer je problemNP-kompletan. Moemo da stavimo 𝑥2 = 1, izmenimo u skladu sa timograniqea (npr. promenimo vrednosti promenivih za sve qvorove nesusednesa 𝑣2 na 0), i reximo rezultujui linearni program. Ako u nekom trenutkumodifikovani linearni program ima maksimalnu vrednost 𝑧 = 𝑎, priqemu je 𝑎 mae od veliqine najvee pronaene klike, ta grana u stablupretrage se moe napustiti.

Prema tome, linearni program koristi se na dva naqina: za dobijaegorih granica i time za napuxtae neperspektivinih podstabala (odsecae),odnosno za donoxea odluka o usmeravau pretrage. Oqekuje se da rexavaepotproblema koji "najvixe obeava", uqini nepotrebnim rexavae velikogdela drugih potproblema. Uqestalost odsecaa, odnosno efikasnost celogalgoritma, zavisi od heuristike za formirae potproblema i izboranarednog potproblema za ispitivae. Heuristika zavisi od konkretnogproblema koji se rexava, i u ovoj oblasti sprovode se xiroka istraivaa.

Algoritmi sa granaem i odsecaem garantuju pronalaee optimalnogrexea ako se svi potproblemi istrae ili "odseku". Ako izvrxavaetraje predugo, moe se prekinuti, i tako dobiti aproksimacija | najboerexee pronaeno do tog trenutka.

Minimalni pokrivaq grana

Za dati neusmereni graf 𝐺 = (𝑉,𝐸) pokrivaq grana je podskup qvorova𝑉 takav da za svaku granu iz 𝐸 vai da je susedna bar jednom od qvorovaiz ovog skupa. Razmatra se problem pronalaea minimalnog pokrivaqagrana za dati graf 𝐺.

Ovaj problem se jednostavno moe preformulisati u problem celobrojnoglinearnog programiraa. Svakom qvoru iz 𝑉 dodeujemo po jednu promenivu𝑥𝑖. Cina funkcija koju treba minimizovati je

𝑐(x) =

𝑛∑𝑖=1

𝑥𝑖

a ograniqea su oblika

𝑥𝑖 + 𝑥𝑗 ≥ 1 za svaku granu 𝑒𝑖𝑗 = (𝑣𝑖, 𝑣𝑗) ∈ 𝐸

Ova ograniqea odgovaraju uslovu da je bar jedan od krajeva svake graneukuqen u pokrivaq. Dodatno, svaki qvor moe biti ukuqen ili ne upokrivaq, te dodajemo uslov 𝑥𝑖 ∈ 0, 1 za sve 𝑖 = 1, 2, . . . , 𝑛 xto namsugerixe da je ovo problem celobrojnog linearnog programiraa.

Page 97: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

97 7. Redukcije

Bojee grafa

Razmotrimo problem bojea qvorova datog grafa minimalnim brojem bojatako da nikoja dva susedna qvora nisu obojena istom bojom. S obzirom nato da je maksimalan potreban broj boja jednak 𝑛 (ako je graf kompletan),uvodimo 𝑛 promenivih 𝑦𝑘, 𝑘 = 1, 2, . . . , 𝑛 kojima kodiramo uslov da li seboja 𝑘 koristi (𝑦𝑘 = 1) ili ne (𝑦𝑘 = 0). Uvodimo i 𝑛2 promenivih 𝑥𝑖𝑘

koje oznaqavaju da li je qvor 𝑖 obojen bojom 𝑘. Cina funkcija koju trebaminimizirati je:

𝑐(x) =

𝑛∑𝑘=1

𝑦𝑘

a skup uslova je:

𝑛∑𝑘=1

𝑥𝑖𝑘 = 1, 𝑖 = 1, 2, . . . , 𝑛,

𝑥𝑖𝑘 − 𝑦𝑘 ≤ 0, 𝑖, 𝑘 = 1, 2, . . . , 𝑛,

𝑥𝑖𝑘 + 𝑥𝑗𝑘 ≤ 1 za svaku granu (𝑖, 𝑗) ∈ 𝐸 i 𝑘 = 1, 2, . . . , 𝑛,

𝑥𝑖𝑘, 𝑦𝑘 ∈ 0, 1.

Prvo ograniqee odgovara uslovu da se svaki qvor mora obojiti taqnojednom od 𝑛 moguih boja. Drugo ograniqee ekvivalentno je uslovu da seqvor 𝑖 moe obojiti bojom 𝑘 samo ako se boja 𝑘 koristi u bojeu. Treeograniqee kodira uslov da se bilo koja dva susedna qvora ne mogu obojitiistom bojom, a poslede ograniqee da su u pitau celobrojne vrednosti.

7.4 Primena redukcija na nalaee doih granica

Ako pokaemo da se proizvoan algoritam za rexavae problema 𝐴 moemodifikovati (ne poveavajui mu pri tome znaqajno vremensku sloenost)tako da rexava problem 𝐵, onda je doa granica za problem 𝐵 istovremenoi doa granica za problem 𝐴. Zaista, svaki algoritam za 𝐴 je istovremenoi algoritam za 𝐵, pa je doa granica za 𝐵 vea ili jednaka od doegranice za 𝐴. Prikazaemo tri primera dokaza doe granice sloenostizasnovana na redukciji.

7.4.1 Doa granica za konstrukciju prostog mnogougla

Posmatrajmo problem povezivaa skupa taqaka u ravni prostim mnogouglom(videti odeak 2.3). Videli smo kako se taj problem moe rexiti korixeemsortiraa. Ispostava se da, pod odreenim pretpostavkama, ovaj problemne moe da se rexi bre od sortiraa. Zbog toga se algoritam koji smovideli za nalaee prostog mnogougla ne moe poboxati ako se nepoboxa sortirae (pod "poboxaem" se podrazumeva poboxae zavixe od konstantnog faktora).

Teorema 11. Neka je poznat algoritam za konstrukciju prostog mnogouglavremenske sloenosti 𝑂(𝑇 (𝑛)). Tada postoji algoritam za sortiraesloenosti 𝑂(𝑇 (𝑛) + 𝑛).

Page 98: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

7.4. Primena redukcija na nalaee doih granica 98

Dokaz. Razmotrimo 𝑛 taqaka na krunici, slika 7.2. Jedini naqin dase te taqke poveu prostim mnogouglom je da se svaka taqka povee sasvojim susedima na krunici. U protivnom, ako dve taqke koje su susedine bi bile povezane, du koja sadri jednu od te dve taqke razdvajala bipreostale taqke na dve grupe, koje se ne mogu povezati ne presecajui ovudu. Posmatrajmo sada instancu 𝑥1, 𝑥2, . . . , 𝑥𝑛 problema sortiraa. Akobismo imali algoritam ("crnu kutiju") za rexavae problema prostogmnogougla, brojeve bismo mogli da sortiramo na sledei naqin. Ulaz 𝑥1, 𝑥2, . . . , 𝑥𝑛

najpre preslikavamo u uglove 𝑦1, 𝑦2, . . . , 𝑦𝑛, iz opsega od 0 do 2𝜋, sa istimmeusobnim odnosima kao i 𝑥1, 𝑥2, . . . , 𝑥𝑛. To se moe postii linearnomfunkcijom 𝑦 = 2𝜋(𝑥𝑖 − 𝑥𝑚𝑖𝑛)/(𝑥𝑚𝑎𝑥 − 𝑥𝑚𝑖𝑛) koja interval (𝑥𝑚𝑖𝑛, 𝑥𝑚𝑎𝑥)preslikava na interval (0, 2𝜋); ovde je (𝑥𝑚𝑖𝑛, 𝑥𝑚𝑎𝑥) proizvoan intervalkoji sadri sve taqke 𝑥𝑖. Uglovi se zatim na prirodan naqin preslikavajuu taqke na jediniqnoj krunici: broju 𝑥𝑖 odgovara taqka na krunici,qiji en polupreqnik sa fiksnom polupravom zaklapa ugao 𝑦𝑖. Ovo preslikavaebrojeva u taqke izvodi se za linearno vreme. Sada se moe iskoristiticrna kutija za povezivae ovog skupa taqaka prostim mnogouglom, za vreme𝑂(𝑇 (𝑛)). Kao xto smo ve videli, mnogougao mora da spaja svaku taqkusa enim susedima na krunici. Zbog toga, prolazei taqke onim redomkojim su one sloene da bi qinile temena mnogougla, dobijamo niz taqakasortiran po uglovima, a time i sortiran polazni niz brojeva. Sloenostovakvog sortiraa je 𝑂(𝑇 (𝑛) + 𝑛).

uuu

uu

𝑦5

𝑦1𝑦3

𝑦4

𝑦2

Slika 7.2: Pridruivae taqaka na krunici brojevima.

Da bismo dobili dou granicu za problem nalaea prostog mnogougla,moramo biti paivi u pogledu podrazumevanog modela raqunaa. Doagranica Ω(𝑛 log 𝑛) za problem sortiraa dokazana je pod pretpostavkomda se radi o modelu stabla odluqivaa. Da bi ova granica mogla da seiskoristi za problem nalaea prostog mnogougla, mora se koristitiisti model. Drugim reqima, mora se pretpostaviti da crna kutija kojarexava problem nalaea prostog mnogougla koristi𝑂(𝑇 (𝑛)) uporeivaa,na naqin koji je u skladu sa modelom stabla odluqivaa. Teorema daklemora da sadri tu pretpostavku. Zatim se mora pokazati da je i redukcijau skladu sa modelom stabla odluqivaa. U ovom sluqaju redukcija jeregularna jer prilikom dokaza doe granice za sortirae nije bilo nikakvih

Page 99: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

99 7. Redukcije

ograniqea na tip pitaa dozvoenih u okviru stabla odluqivaa. Dakle,uporeivae koje radi sa 𝑥 i 𝑦 koordinatama koje odgovaraju uglu 𝑦𝑖raquna se kao jedno uporeivae u stablu odluqivaa. Stablo odluqivaakoje rexava problem nalaea prostog mnogougla moe se transformisatiu stablo odluqivaa za sortirae, bez znaqajne promene visine.

Posledica 12. Ako se pretpostavi model stabla odluqivaa, konstrukcijaprostog mnogougla koji povezuje skup od zadatih 𝑛 taqaka u ravni zahtevau najgorem sluqaju Ω(𝑛 log 𝑛) uporeivaa.

Ova redukcija ustanovava qienicu da je sortirae centralni deorexavaa problema konstrukcije prostog mnogougla.

7.4.2 Jednostavne redukcije sa matricama

Na simetriqne matrice (one kojima je element (𝑖, 𝑗) jednak elementu(𝑗, 𝑖) za svaki par indeksa (𝑖, 𝑗)) qesto se nailazi u praksi. Prirodno jeupitati se da li je mogue na jednostavniji naqin mnoiti simetriqnematrice nego proizvone matrice. Nije nelogiqno da simetrija omoguujepronalaee boih izraza za mnoee npr. matrica reda 3. To bi mogloda proizvede asimptotski boi algoritam za mnoee simetriqnih matrica.Pokazaemo da to ipak nije mogue, odnosno da je mnoee dve simetriqnematrice, sa taqnoxu do na konstantni faktor, iste sloenosti kao imnoee dve proizvone matrice.

Oznaqimo problem izraqunavaa proizvoda dve proizvone matrice saPrM, a problem izraqunavaa proizvoda dve simetriqne matrice sa SimM.Jasno je da problem SimM nije tei od PrM, jer je SimM specijalnisluqaj PrM. Pretpostavimo sada da imamo algoritam koji rexava SimM.Pokazaemo da se taj algoritam moe iskoristiti kao crna kutija zarexavae opxtijeg problema PrM. Neka su𝐴 i𝐵 dve proizvone kvadratnematrice reda 𝑛. Oznaqimo sa𝐴𝑇 transponovanu matricu matrice𝐴. Neposrednose proverava da je taqan sledei izraz u kome se pojavuje proizvod dvesimetriqne 2𝑛× 2𝑛 matrice(

0 𝐴𝐴𝑇 0

)(0 𝐵𝑇

𝐵 0

)=

(𝐴𝐵 00 𝐴𝑇𝐵𝑇

). (7.5)

Ovde 0 oznaqava 𝑛 × 𝑛 matricu qiji su svi elementi nule. Redukcija jeposledica qienice da su matrice sa leve strane simetriqne. ihovproizvod moe se izraqunati korixeem algoritma za rexavae problemaSimM. Meutim, gori levi blok ovog proizvoda je upravo proizvod 𝐴𝐵.Prema tome, problem PrM moe se rexiti primenom algoritma za rexavaeSimM na matrice dvostruko vee dimenzije. Tako dolazimo do sledeegtvrea.

Teorema 13. Ako postoji algoritam za mnoee dve realne simetriqne𝑛 × 𝑛 matrice za vreme 𝑂(𝑇 (𝑛)), pri qemu je 𝑇 (2𝑛) = 𝑂(𝑇 (𝑛)), ondapostoji algoritam za mnoee dve proizvone realne 𝑛 × 𝑛 matriceza vreme 𝑂(𝑇 (𝑛) + 𝑛2).

Dokaz. Ako su date dve proizvone 𝑛× 𝑛 matrice 𝐴 i 𝐵, ihov proizvodnalazimo korixeem algoritma za mnoee simetriqnih matrica na

Page 100: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

7.5. Uobiqajene grexke 100

osnovu jednakosti (7.5). Potrebno je izvrxiti𝑂(𝑛2) operacija za izraqunavae𝐴𝑇 i 𝐵𝑇 i formirae dve simetriqne matrice, i 𝑇 (2𝑛) operacija dase pomnoe dve dobijene simetriqne matrice, iz qega neposredno sleditvree teoreme.

Pretpostavka da je 𝑇 (2𝑛) = 𝑂(𝑇 (𝑛)) nije prejaka, jer je, na primer,svaka polinomijalna funkcija zadovoava. Navedena redukcija je interesantnasamo u okviru dokaza doe granice. Teorema tvrdi da je nemogue iskoristitisimetriju prilikom mnoea matrica, i tako dobiti asimptotski brialgoritam. Navodimo jox jednu sliqnu redukciju.

Teorema 14. Ako postoji algoritam koji izraqunava kvadrat realne 𝑛×𝑛 matrice za vreme 𝑂(𝑇 (𝑛)), pri qemu je 𝑇 (2𝑛) = 𝑂(𝑇 (𝑛)), onda postojialgoritam za mnoee dve proizvone realne 𝑛 × 𝑛 matrice za vreme𝑂(𝑇 (𝑛) + 𝑛2).

Dokaz. Kao i u dokazu teoreme 13, treba pronai matricu qiji kvadratsadri dovono informacija za izraqunavae proizvoda dve zadate matrice.Rexee se zasniva na sledeem izrazu:(

0 𝐴𝐵 0

)2

=

(𝐴𝐵 00 𝐵𝐴

).

Iz ega neposredno sledi tvree teoreme.

7.5 Uobiqajene grexke

Sa redukcijama treba biti oprezan. Navexemo primere uobiqajenih grexakakoje se mogu napraviti pri pokuxaju redukcije. Najqexa grexka je dase redukcija izvede u pogrexnom smeru, a do e dolazi uglavnom priredukcijama za dobijae doih granica. Neka je potrebno redukcijomdokazati da je neki problem 𝑃 teak bar koliko drugi problem 𝑄, qijusloenost znamo. Tada treba poi od proizvonog ulaza za problem 𝑄, ipokazati da se on moe rexiti crnom kutijom za rexavae problema 𝑃 .Razmotrimo, na primer, sledei pokuxaj redukcije problema sortiraana problem kompresije podataka Hafmanovim kodom (optimalnim prefiksnimkodom). Ci je pokazati da je Ω(𝑛 log 𝑛) doa granica sloenosti zaHafmanovo kodirae.

Polazi se od zapaaa da, ako su uqestanosti znakova jako razliqite,onda kodno stablo postaje toliko neuravnoteeno da se moe iskoristitiza sortirae uqestanosti, videti primer na slici 7.3. U tom sluqajusu znakovi u kodnom stablu poreani po opadajuim uqestanostima (sanajqexim znakom najbliim korenu stabla). To upravo znaqi da se Hafmanovokodirae moe iskoristiti za sortirae uqestanosti. Prema tome, formiraekodnog stabla je texko bar toliko koliko i sortirae, pa je time izgledadokazana doa granica sloenosti Ω(𝑛 log 𝑛).

Grexka u dokazu krije se u qienici da smo poxli od specijalnogulaza za problem sortiraa: razmatrali smo samo takve uqestanosti, kojesu znaqajno razdvojene. Da bi se doxlo do doe granice sloenosti zaproblem kodiraa, mora se poi od proizvonog ulaza za problem sortiraa:

Page 101: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

101 7. Redukcije

uu u16 u

uu

uu

u

uu

u

8

4

2 1

Slika 7.3: Hafmanovo kodno stablo kad se uqestanosti znakova drastiqnorazlikuju.

treba dokazati da se proizvoni brojevi mogu sortirati pomou algoritmaza Hafmanovo kodirae.

Ispostava se da se u ovom sluqaju grexka moe ispraviti. Ideja jeda se utroxi jox malo vremena da bi se promenio (proizvoni!) ulaz zaproblem sortiraa, tako da se on moe iskoristiti kao ulaz za kodirae.Neka je ulaz niz razliqitih prirodnih brojeva 𝑋 = 𝑥1, 𝑥2, . . . , 𝑥𝑛. Moese pretpostaviti da su brojevi razliqiti, jer doa granica za sortiraevai i za instance koje se sastoje od razliqitih brojeva (xta vixe,doa granica je dokazana za razliqite brojeve). Kodno stablo Hafmanovogkoda za ove uqestanosti moe biti proizvonog oblika, pa je prethodnorazmatrae neprimenivo. Meutim, svaki broj 𝑥𝑖 moe se zameniti uqestanoxu𝑦𝑖 = 2𝑥𝑖 . Poxto za svaki prirodni broj 𝑚 vai 2𝑚 >

∑𝑖<𝑚 2𝑖, kodno

stablo imae oblik kao na slici 7.3 (svaka uqestanost u nizu vea je odzbira svih uqestanosti maih od e). Prema tome, algoritam za Hafmanovokodirae moe se iskoristiti za sortirae brojeva 𝑦𝑖. Potrebno je joxuveriti se da broj operacija izvedenih pri redukciji nije nedozvoenoveliki. Stepenovae moe da sadri veliki broj operacija, ali to ovdenije bitno, jer doa granica za sortirae obuhvata samo uporeivaa.Prema tome, dokazano je da, ako se pretpostavi model stabla odluqivaa,formirae Hafmanovog kodnog stabla u najgorem sluqaju zahteva Ω(𝑛 log 𝑛)uporeivaa (potencijalno je mogue bre formirati stablo algoritmomkoji nije obuhvaen modelom stabla odluqivaa).

Kod algoritama dobijenih redukcijom vano je da sama redukcija neunese znaqajnu neefikasnost. Razmotrimo problem ranca i egovo uopxteekad se kopije svakog od predmeta mogu u ranac staviti neograniqeni brojputa. Direktna redukcija uopxtenog problema na polazni (u kome se svakipredmet moe iskoristiti samo jednom) je sledea. Neka je veliqina ranca𝐾. U ranac moe da stane najvixe 𝐾/𝑠𝑖 kopija predmeta veliqine 𝑠𝑖.Prema tome, u polaznom problemu moe se svaki predmet zameniti sa𝐾/𝑠𝑖 predmeta iste veliqine u polaznom problemu. Iako je ova redukcijakorektna, ona nije efikasna, jer je veliqina problema znaqajno poveana.

Page 102: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

7.6. Rezime 102

7.6 Rezime

Uvek je korisno razmatrati sliqnosti izmeu problema. Analizom razlikai sliqnosti izmeu dva problema, obiqno se stiqe boa predstava o obaproblema. Kad se naie na novi problem, u veini sluqajeva je korisnoupitati se da li je on sliqan nekom ve poznatom problemu. Ponekadsliqnost izmeu dva problema postaje vidiva tek po izvrxeu komplikovaneredukcije. Posebno su interesantne redukcije izmeu matriqnih i grafovskihalgoritama. U ovom poglavu videli smo vixe primera redukcija.

Linearno i celobrojno programirae su ovde izloeni vrlo kratko.To su veoma vani problemi, i korisno je da se sa ima detanije upoznasvako koga interesuju algoritmi.

Page 103: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

Glava 8

Granae sa odsecaem

8.1 Minimizirae maksimalne sume uzastopna tri broja na krugu

Posmatrajmo narednu kombinatornu zagonetku koja ukuquje dvanaest brojevana satu: mogu li se brojevi razmestiti na krugu tako da nijedna trojkauzastopnih brojeva nema sumu veu od 21? Vrednost 21 predstava najmauvrednost koju maksimalna suma uzastopnih trojki moe da ima. Jedannaqin da se to ustanovi je da se nae maksimalna suma uzastopna tri brojaza svih 11! = 39916800 suxtinski razliqitih rasporeda ovih 12 brojevana krugu (poloaj jednog od ih se moe fiksirati, xto ne utiqe narezultat); od tih maksimalnih suma treba izabrati najmau. U nastavkuemo videti kako se prostor pretrage prilikom rexavaa ovog problemau opxtem sluqaju, sa 𝑛 brojeva na krugu, moe bitno smaiti primenomgranaa sa odsecaem.

Program moe biti koristan za razmatrae tehnike granae sa odsecaemprikazujui snagu, ali i ograniqea pristupa qiste pretrage [7]. Ovajproblem moe se rexiti generisaem svih permutacija, a zatim sistematiqnomproverom da li pojedine permutacije zadovoavaju traene uslove. Permutacijese mogu generisati rekurzivnim algoritmom i u algoritam se moe ugraditimehanizam odsecaa. Ovakva implementacija bi mogla da detektuje trenutakkada se u parcijalnoj permutaciji pojavila trojka uzastopnih elemenatasa sumom veom od zadate, na osnovu qega bi se izvrxilo odsecae (jer nijedna od permutacija izvedenih iz ove parcijalne permutacije ne zadovoavauslov). Ovim bi se znaqajno ubrzala pretraga. Ipak, nedostatak ovog pristupabi bio taj xto bi se u stablu odluqivaa pretraga spuxtala dubokoniz stablo za granu koja ne moe da generixe rexee jer su brojevi napoqetku permutacije premali (pa ne postoji permutacija koja bi sadralapreostale velike brojeve i koja bi zadovoavala uslov problema).

Posmatrajmo sada nexto opxtiji problem odreivaa permutacije brojevaod 1 do 𝑛 sa najmaim maksimalnim zbirom tri uzastopna qlana. Pretpostavimoda su pozicijama od 0 do 𝑘 u nizu 𝑥 pridrueni brojevi elementipermutacije, a pozicijama od 𝑘 + 1 do 𝑛 − 1 jox uvek ne (videti sliku8.1). Suma svake uzastopne trojke ne sme da bude vea od𝑀𝑎𝑥𝑆𝑢𝑚. Postoji𝑛− 𝑘 + 1 grupa nepoznatih suma trojki.

103

Page 104: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

8.1. Minimizirae maksimalne sume uzastopna tri broja na

krugu 104

· · · 𝑥𝑘−1 𝑥𝑘 𝑥𝑘+1 · · · 𝑥𝑛−1 𝑥0 𝑥1 · · ·· · · poznato poznato nepoznato · · · nepoznato poznato poznato · · ·

Slika 8.1: Grafiqki prikaz krune liste pozicija i elemenatapermutacija koji su im dodeeni: za pozicije od 0 do 𝑘 znamo, a za pozicijeod 𝑘 + 1 do 𝑛− 1 ne znamo dodeene elemente permutacije.

Neka 𝑅 oznaqava sumu brojeva koji jox uvek nisu dodeeni nijednojpoziciji. Tada vai sledee: 𝑥𝑘−1 se pojavuje u jednoj trojci, 𝑥𝑘 u dvetrojke, svaka od vrednosti 𝑥𝑖, 𝑖 = 𝑘+1, . . . , 𝑛−1, pojavuje se u tri trojke,𝑥0 se pojavuje u dve, a 𝑥1 u jednoj trojci. Zbir nepoznatih suma uzastopnihtrojki je 𝑥𝑘−1 + 2𝑥𝑘 + 3𝑅 + 2𝑥0 + 𝑥1. Ni jedna uzastopna trojka ne sme daima zbir vei od 𝑀𝑎𝑥𝑆𝑢𝑚, pa proseqna vrednost (𝑥𝑘−1 + 2𝑥𝑘 + 3𝑅+ 2𝑥0 +𝑥1)/(𝑛− 𝑘 + 1) nepoznatih suma uzastopnih trojki mora da bude maa ilijednaka od𝑀𝑎𝑥𝑆𝑢𝑚. Dakle, mogue je dobiti rexee sa zadatim poqetkompremutacije ako vai uslov

(𝑛− 𝑘 + 1)𝑀𝑎𝑥𝑆𝑢𝑚 ≥ 𝑥𝑘−1 + 2𝑥𝑘 + 3𝑅 + 2𝑥0 + 𝑥1.

Ovakvo ograniqee je posebno efikasno u problemima u kojima postojimalo validnih rexea.

Page 105: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

Glava 9

NP kompletnost

9.1 Dokaz nepostojaa priblinog algoritma za rexavae (opxteg) problema trgovaqkog putnika

O problemu trgovaqkog putnika (traveling salesman problem, skraeno, 𝑇𝑆𝑃 )je bilo reqi ranije. Neka je 𝐺 = (𝑉,𝐸) kompletni neusmereni teinskigraf, pri qemu je teina (cena) grane (𝑢, 𝑣) ∈ 𝐸 oznaqena sa 𝑐(𝑢, 𝑣) ≥ 0.Problem je pronai Hamiltonov ciklus sa najmaom cenom.

U mnogim praktiqnim problemima najjeftiniji naqin da se posetiqvor 𝑣 iz qvora 𝑢 je upravo kroz granu od 𝑢 do 𝑣, umesto preko nekih drugihgrana koji qine put izmeu ta dva qvora. Ovaj pojam moemo formalizovatitako xto kaemo da funkcija cene 𝑐 zadovoava nejednakost trougla akoza svaka tri qvora 𝑢, 𝑣, 𝑤 ∈ 𝑉 vai

𝑐(𝑢,𝑤) ≤ 𝑐(𝑢, 𝑣) + 𝑐(𝑣, 𝑤).

Specijalno, ovaj uslov je ispuen ako su qvorovi grafa taqke u ravni,a duine grana su euklidska rastojaa krajeva grana (tzv. euklidskiproblem trgovaqkog putnika). Kao xto smo videli, postoje priblinialgoritmi polinomijalne sloenosti za rexavae euklidskog problematrgovaqkog putnika, takvi da pronalaze Hamiltonov ciklus duine najvixe𝜌 ·𝑜𝑝𝑡, gde je 𝜌 jednako 2 ili 3/2, a 𝑜𝑝𝑡 je minimalna duina Hamiltonovogciklusa. U opxtem sluqaju za rexavae 𝑇𝑆𝑃 ne postoji priblini algoritampolinomijalne sloenosti za bilo koje 𝜌 > 1, osim ako nije 𝑃 = 𝑁𝑃 . Ovotvree predmet je teoreme 9.1.

Teorema 9.1 (Nepostojae priblinog algoritma za rexavae 𝑇𝑆𝑃 ).Ako je 𝑃 = 𝑁𝑃 , onda za bilo koju konstantu 𝜌 ≥ 1 vai da ne postojipriblini algoritam polinomijalne vremenske sloenosti za rexavae(opxteg) problema trgovaqkog putnika u polinomijalnoj vremenskoj sloenostisa aproksimacijom do na faktor 𝜌 (odnosno, da je ciklus koji priblinialgoritam vraa najvixe 𝜌 puta dui od duine optimalnog Hamiltonovogciklusa).

Dokaz. Dokaz emo izvesti izvoeem kontradikcije. Pretpostavimo suprotno,odnosno, da za neki broj 𝜌 ≥ 1, postoji priblini algoritam𝐴 polinomijalnevremenske sloenosti sa aproksimacijom do na faktor 𝜌. Bez gubitka na

105

Page 106: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

9.2. Dokaz NP-kompletnosti problema \zbir podskupa" 106

opxtosti, pretpostavimo da je 𝜌 celobrojna vrednost, uz zaokruivaeukoliko je to neophodno. Sada emo pokazati kako je mogue iskoristitialgoritam𝐴 za rexavae instanci problema Hamiltonovog ciklusa algoritmompolinomijalne vremenske sloenosti. Kako znamo da je problem pronalaeaHamiltonovog ciklusa NP-kompletan problem, sledi da ako moemo da gareximo algoritmom polinomijalne vremenske sloenosti, onda je 𝑃 =𝑁𝑃 .

Neka je 𝐺 = (𝑉,𝐸) zadati graf instanca problema pronalaeaHamiltonovog ciklusa; ci je utvrditi da li 𝐺 sadri Hamiltonovciklus koristei hipotetiqki priblini algoritam𝐴. Polazei od grafa𝐺 moe se formirati instanca problema 𝑇𝑆𝑃 na sledei naqin. Neka je𝑔′ = (𝑉,𝐸′) kompletan graf sa skupom qvorova 𝑉 , odnosno,

𝐸′ = (𝑢, 𝑣) | 𝑢, 𝑣 ∈ 𝑉 i 𝑢 = 𝑣.

Pridruujemo cenu svakoj grani iz 𝐸′ na sledei naqin:

𝑐(𝑢, 𝑣) =

1, ako (𝑢, 𝑣) ∈ 𝐸,𝜌|𝑉 |+ 1, inaqe.

Jasno je da je sloenost formiraa teinskog grafa 𝐺′ od polaznoggrafa 𝐺 polinom od |𝑉 | i |𝐸|.

Razmotrimo problem trgovaqkog putnika (𝐺′, 𝑐). Ako poqetni graf 𝐺ima Hamiltonov ciklus 𝐻, onda funkcija cene 𝑐 pridruuje svakoj graniiz 𝐻 cenu 1, odakle se dobija da (𝐺′, 𝑐) sadri Hamiltonov ciklus cene|𝑉 |. Sa druge strane, ako 𝐺 ne sadri Hamiltonov ciklus, onda bilo kojiHamiltonov ciklus u 𝐺′ mora da sadri neku granu koja se ne nalazi u𝐸. Meutim, proizvoan takav ciklus koji sadri neku granu koja se nenalazi u 𝐸 ima cenu barem

(𝜌|𝑉 |+ 1) + (|𝑉 | − 1) = 𝜌|𝑉 |+ |𝑉 |= (𝜌 + 1)|𝑉 |.

Dakle, cena Hamiltonovog ciklusa u 𝐺′ je barem za faktor 𝜌 + 1 vea odcene Hamiltonovog ciklusa u 𝐺′ koji jeste Hamiltonov ciklus u 𝐺.

Primenimo priblini algoritam 𝐴 polinomijalne sloenosti (zakoji smo pretpostavili da postoji) na instancu (𝐺′, 𝑐) problema 𝑇𝑆𝑃 . Sobzirom da algoritam 𝐴 daje kao rezultat Hamiltonov ciklus cene ne veeod 𝜌 puta cene optimalnog puta, ako 𝐺 sadri Hamiltonov ciklus, onda𝐴 mora da ga vrati. Ako 𝐺 nema Hamiltonov ciklus, onda 𝐴 pronalaziu 𝐺′ Hamiltonov ciklus duine bar (𝜌 + 1)𝑉 > 𝜌𝑉 . Dakle, algoritam𝐴 polinomijalne sloenosti moe se iskoristiti za utvrivae da liu 𝐺 postoji Hamiltonov ciklus. Iz ovog zakuqka sledi da je 𝑃 = 𝑁𝑃 ,suprotno pretpostavci teoreme.

9.2 Dokaz NP-kompletnosti problema \zbir podskupa"

Sada emo razmotriti jedan aritmetiqki NP-kompletan problem pod nazivomzbir podskupa. Pretpostava se da je dat konaqan skup 𝑆 pozitivnihcelih brojeva i celi broj 𝑡 > 0. Treba pronai da li postoji podskup

Page 107: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

107 9. NP kompletnost

𝑆′ ⊆ 𝑆 takav da je zbir egovih elemenata jednak broju 𝑡. Na primer, akoje 𝑆 = 1, 2, 7, 14, 49, 98, 343, 686, 2409, 2793, 16808, 17206, 117705, 117993 i𝑡 = 138457, onda podskup 𝑆′ = 1, 2, 7, 98, 343, 686, 2409, 17206, 117705 skupa𝑆 zadovoava traeni uslov.

Kao i u vezi sa bilo kojim aritmetiqkim problemom, trebalo bi sepodsetiti da naxe standardno kodirae pretpostava da su ulazni celibrojevi kodirani kao binarni. Sa ovom pretpostavkom na umu, moemopokazati da je problem zbira podskupa 𝑁𝑃 -kompletan.

Teorema 9.2 (NP-kompletnost problema zbir podskupa). Problem zbirpodskupa je NP-kompletan.

Dokaz. Prvo, jasno je da se u polinomijalnom vremenu moe proveriti dali je zbir elemenata podskupa 𝑆′ skupa 𝑆 jednak vrednosti 𝑡. Sada emopokazati da je problem 3𝑆𝐴𝑇 polinomijalno svodiv na problem zbirapodskupa. Neka je data Bulov izraz u kouktivnoj normalnoj formi 𝐹 nadpromenivim 𝑥1, 𝑥2, . . . , 𝑥𝑛 sa klauzama 𝐶1, 𝐶2, . . . , 𝐶𝑘, gde svaka klauzasadri taqno tri razliqita literala. Redukcioni algoritam konstruixeinstancu (𝑆, 𝑡) problema zbira podskupa takvu da je izraz 𝐹 zadovoivako i samo ako postoji podskup skupa 𝑆 qija je suma elemenata jednaka𝑡. Bez smaea opxtosti, pretpostaviemo sledee dve osobine izraza𝐹 . Prvo, nijedna klauza ne sadri promenivu i enu negaciju, jer jetakva klauza automatski zadovoena u bilo kojoj valuaciji promenivih.Drugo, svaka promeniva se pojavuje u barem jednoj klauzi, jer nijevano koja vrednost je dodeena promenivim koje se ne nalaze u klauzama.

Redukcija dodaje dva broja u skup 𝑆 za svaku promenivu 𝑥𝑖 i dva brojau skup 𝑆 za svaku klauzu 𝐶𝑗 . Brojevi se konstruixu u osnovi 10, gde svakibroj ima 𝑛 + 𝑘 cifara i svaka cifra odgovara ili jednoj promenivojili jednoj klauzi. Osnova 10 ima svojstvo koje je neophodno za spreqavaeprenosa sa nie pozicije na vixu.

Konstruixemo skup 𝑆 i cinu vrednost 𝑡 na sledei naqin (vidi sliku9.1). Oznaqiemo svaku poziciju cifre ili promenivom ili klauzom.Taqno 𝑘 najmae znaqajnih cifara su oznaqene klauzama i taqno 𝑛 najznaqajnihcifara su oznaqene promenivima.

∙ Ci 𝑡 ima broj 1 u svakoj cifri oznaqenoj promenivom i ima broj4 u svakoj cifri oznaqenoj klauzom.

∙ Za svaku promenivu 𝑥𝑖, skup 𝑆 sadri dva cela broja 𝑣𝑖 i 𝑣′𝑖. Svakiod brojeva 𝑣𝑖 i 𝑣′𝑖 ima 1 kao cifru oznaqenu sa 𝑥𝑖 i broj 0 u ciframaoznaqenih ostalim promenivama. Ako se literal 𝑥𝑖 pojavuje uklauzi 𝐶𝑗 , onda cifra oznaqena klauzom 𝐶𝑗 u 𝑣𝑖 sadri broj 1. Akose literal ¬𝑥𝑖 pojavuje u klauzi 𝐶𝑗 , onda cifra oznaqena klauzom𝐶𝑗 u 𝑣′𝑖 sadri broj 1. Sve ostale cifre oznaqene klauzama u 𝑣𝑖 i 𝑣′𝑖imaju broj 0.

Tvrdimo da su sve vrednosti 𝑣𝑖 i 𝑣′𝑖 u skupu 𝑆 jedinstvene. Za 𝑙 =𝑖, nijedna od vrednosti 𝑣𝑙 i 𝑣′𝑙 ne moe biti jednaka ni jednoj odvrednosti 𝑣𝑖 i 𝑣′𝑖, xto se vidi ako se posmatra ihovih najvixih 𝑛cifara. Dae, iz pretpostavki sledi da je 𝑣𝑖 = 𝑣′𝑖. Ova dva broja sene razlikuju ako se posmatra samo gorih 𝑛 cifara, ali se ova dvabroja uvek razlikuju bar po jednoj od doih 𝑘 najniih cifara. Ako

Page 108: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

9.2. Dokaz NP-kompletnosti problema \zbir podskupa" 108

Slika 9.1: Primer redukcije problema 3𝑆𝐴𝑇 na problem zbir podskupa.Formula 𝐹 je 𝐶1∧𝐶2∧𝐶3∧𝐶4, gde je 𝐶1 = (𝑥1∨¬𝑥2∨¬𝑥3), 𝐶2 = (¬𝑥1∨¬𝑥2∨¬𝑥3), 𝐶3 = (¬𝑥1 ∨ ¬𝑥2 ∨ 𝑥3) i 𝐶4 = (𝑥1 ∨ 𝑥2 ∨ 𝑥3). Za 𝑥1 = 0, 𝑥2 = 0, 𝑥3 = 1vrednost izraza je 1, pa je izraz 𝐹 zadovoiv. Brojevi koji ulaze u podskup𝑆′ su oznaqeni tamno sivom bojom.

bi vrednost 𝑣𝑖 i 𝑣′𝑖 bile jednake, onda bi promenive 𝑥𝑖 i ¬𝑥𝑖 moraleda se pojave u istom skupu klauza. Meutim, mi pretpostavamo danijedna klauza ne sadri obe promenive 𝑥𝑖 i ¬𝑥𝑖, ali i da se ili𝑥𝑖 ili ¬𝑥𝑖 pojavuju u nekoj klauzi, tako da mora da postoji klauza𝐶𝑗 za koju se odgovarajue cifre brojeva 𝑣𝑖 i 𝑣′𝑖 razlikuju.

∙ Za svaku klauzu 𝐶𝑗 , skup 𝑆 sadri dva cela broja 𝑠𝑗 i 𝑠′𝑗 . Svaka odvrednosti 𝑠𝑗 i 𝑠′𝑗 ima sve cifre 0, sem cifre koja odgovara klauzi𝐶𝑗 . Isto vai i za brojeve 0, 𝑠𝑗 , 𝑠

′𝑗 , 𝑠𝑗 + 𝑠′𝑗 , qija cifra koja odgovara

klauzi 𝐶𝑗 je redom 0, 1, 2, 3.

Sliqno kao u prethodnom sluqaju, moe se pokazati da su sve vrednosti𝑠𝑗 i 𝑠′𝑗 jedinstvene u 𝑆.

Primetimo da suma cifara na bilo kojoj poziciji moe da bude najvixe6, xto se moe desiti na pozicijama oznaqenim klauzama (tri jedinicekoje odgovaraju vrednosti 𝑣𝑖 i 𝑣′𝑖, i dodatna jedinica i dvojka koje odgovarajuvrednostima 𝑠𝑗 i 𝑠′𝑗 , redom). Odavde sledi da, interpretiraem ovihcifara u osnovi 10, nije mogue da se pojavi prenos sa neke pozicije navixu poziciju.

Sloenost opisane redukcije je polinomijalna. Skup 𝑆 sadri 2𝑛+2𝑘vrednosti, od kojih svaka ima 𝑛 + 𝑘 cifara; svaka cifra se izraqunavaza vreme 𝑂(𝑛+ 𝑘). Ci 𝑡 ima 𝑛+ 𝑘 cifara i redukcija formira svaku odovih cifara za vreme 𝑂(1).

Sada emo pokazati da je formula 𝐹 zadovoiva ako i samo ako postojipodskup 𝑆′ skupa 𝑆 qija suma iznosi 𝑡. Prvo, pretpostavimo da je formula

Page 109: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

109 9. NP kompletnost

𝐹 zadovoiva u nekoj valuaciji 𝑣. Za svako 𝑖 = 1, 2, . . . , 𝑛 ako je 𝑣𝐹 (𝑥𝑖) = 1,onda treba ukuqiti 𝑣𝑖 u 𝑆′. U protivnom, ukuqiti 𝑣′𝑖. Drugim reqima,u skup 𝑆′ ukuqujemo taqno vrednosti 𝑣𝑖 i 𝑣′𝑖 koje odgovaraju literalimasa vrednoxu 1 u zadovoavajuoj valuaciji. Ukuqivaem ili 𝑣𝑖 ili 𝑣′𝑖,ali ne i obe, za svako 𝑖, i stavajui cifru 0 na sve pozicije oznaqenepromenivima u svim 𝑠𝑗 i 𝑠′𝑗 , vidimo da za svaku poziciju oznaqenu promenivom,zbir vrednosti u 𝑆′ mora biti 1, xto se poklapa sa odgovarajuim ciframau 𝑡. S obzirom da je proizvona klauza zadovoena, ona sadri bar jedanliteral sa vrednoxu 1. Dakle, svaka cifra oznaqena klauzom ima baremjednu jedinicu koja doprinosi sumi u okviru 𝑣𝑖 ili 𝑣′𝑖 u 𝑆′. Preciznije,jedan, dva ili tri literala mogu biti 1 u svakoj klauzi, pa tako svakapozicija oznaqena klauzom ima sumu 1, 2 ili 3 od vrednosti 𝑣𝑖 i 𝑣′𝑖 u𝑆′. Ci 4 se dobija na svakoj poziciji oznaqenoj klauzom 𝐶𝑗 tako xtose u skup 𝑆′ ukuquje odgovarajui neprazan podskup slek promenivih𝑠𝑗 , 𝑠′𝑗. Kako smo poklopili ci po svim ciframa zbira, i ne postojiprenos, vrednosti skupa 𝑆′ se sumiraju na 𝑡.

Sada pretpostavimo da postoji podskup 𝑆′ skupa 𝑆 sa sumom jednakom𝑡. Podskup 𝑆′ mora da ukuqi taqno jednu od vrednosti 𝑣𝑖 i 𝑣′𝑖 za svako𝑖 = 1, 2, . . . , 𝑛; u protivnom zbir cifara brojeva iz 𝑆′ ne bi bio jednak1. Ako 𝑣𝑖 ∈ 𝑆′, onda postavamo 𝑣𝐹 (𝑥𝑖) = 1. Inaqe je 𝑣′𝑖 ∈ 𝑆′, odnosno,𝑣𝐹 (𝑥𝑖) = 0. Tvrdimo da za svaku klauzu 𝐶𝑗 , za 𝑗 = 1, 2, . . . , 𝑘, vai da jezadovoena ovakvom valuacijom. Da bismo ovo pokazali, primetimo da,s obzirom da je suma cifara na poziciji oznaqenoj klauzom 𝐶𝑗 jednaka4, podskup 𝑆′ mora da sadri bar jedan od brojeva 𝑣𝑖 ili 𝑣′𝑖, koji imajucifre 1 na poziciji oznaqenoj klauzom 𝐶𝑗 , jer se zajedniqki doprinos slekpromenivih 𝑠𝑗 i 𝑠′𝑗 toj cifri zbira najvixe 3. Ako skup 𝑆′ sadri 𝑣𝑖koja ima cifru 1 na poziciji oznaqenoj 𝐶𝑗 , onda se literal 𝑥𝑖 pojavuje uklauzi 𝐶𝑗 . Ako skup 𝑆′ sadri 𝑣′𝑖 koja ima cifru 1 na poziciji oznaqenoj𝐶𝑗 , onda se literal ¬𝑥𝑖 pojavuje u klauzi 𝐶𝑗 . S obzirom da smo postavili𝑣𝐹 (𝑥𝑖) = 0 kada je 𝑣′𝑖 ∈ 𝑆′, klauza 𝐶𝑗 je svakako taqna. Dakle, sve klauzeizraza 𝐹 su taqne, xto znaqi da je izraz 𝐹 zadovoiv.

9.3 Priblini algoritmi za rexavae problema minimalnog pokrivaa skupa

Problem minimalnog pokrivaa skupa (set covering problem, skraeno,𝑆𝐶𝑃 ) predstava optimizacioni problem koji modeluje mnoge problemeu vezi sa alokacijom resursa. egov odgovarajui problem odluqivaageneralizuje NP-kompletan problem pokrivaa skupa qvorova grafa, isam je takoe NP-kompletan. Priblini algoritmi za rexavae problemapokrivaa skupa qvorova grafa se ne mogu primeniti na ovaj opxtisluqaj, pa je neophodno pokuxati drugim aproksimacijama. U nastavkuemo analizirati jednostavnu pohlepnu heuristiku sa logaritamskim faktoromaproksimacije. Drugim reqima, kako se veliqina instance poveava, veliqinapriblinog rexea moe da raste, relativno u odnosu na optimalnorexee. Ipak, s obzirom da logaritamska funkcija sporo raste, priblinialgoritam moe da da korisne rezultate.

Instanca (𝑋,ℱ) problema minimalnog pokrivaa skupa sastoji se odkonaqnog skupa𝑋 i familije ℱ podskupova skupa𝑋, tako da svaki element

Page 110: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

9.3. Priblini algoritmi za rexavae problema minimalnog

pokrivaa skupa 110

Slika 9.2: Instanca (𝑋,ℱ) problema minimalnog pokrivaqa skupa,gde se skup 𝑆 sastoji od 12 elemenata oznaqenih crnim taqkama iℱ = 𝑆1, 𝑆2, . . . , 𝑆6. Minimalni pokrivaq skupa 𝑋 je 𝒞 = 𝑆3, 𝑆4, 𝑆5,kardinalnosti 3. Opisani pohlepni algoritam pronalazi pokrivaqkardinalnosti 4 koji se sastoji od skupova 𝑆1, 𝑆4, 𝑆5 i 𝑆3 ili skupova𝑆1, 𝑆4, 𝑆5 i 𝑆6, u tom redosledu.

skupa 𝑋 pripada barem jednom podskupu iz ℱ :

𝑋 =⋃𝑆∈ℱ

𝑆.

Kaemo da podskup 𝐶 ⊆ 𝑋 pokriva svoje elemente. Problem je pronaipodskup 𝒞 ⊆ ℱ najmae kardinalnosti qiji elementi pokrivaju ceo skup𝑋:

𝑋 =⋃𝑆∈𝒞

𝑆. (9.1)

Ako neka familija 𝒞 zadovoava jednakost 9.1, onda kaemo da onapokriva skup 𝑋. Na slici 9.2 prikazan je primer problema minimalnogpokrivaqa skupa. Na slici 9.2 minimalni pokrivaq skupa je kardinalnosti3.

Pohlepni pristup rexavau ovog problema moe se opisati na sledeinaqin: u svakoj fazi treba odabrati skup 𝑆 koji pokriva najvei broj dosada nepokrivenih elemenata. Ovaj algoritam moe se opisati sledeimkodom.

U primeru na slici 9.2, pohlepni algoritam dodaje redom u 𝒞 skupove𝑆1, 𝑆4, 𝑆5, a zatim bira jedan od skupova 𝑆3 ili 𝑆6.

Sloenost. Mogue je jednostavno implementirati algoritam tako damu sloenost bude polinom od |𝑋| i |ℱ|. S obzirom na to da je brojiteracija pete ograniqen vrednoxu min|𝑋|, |ℱ| i je sloenost telapete𝑂(|𝑋||ℱ|), ukupna sloenost jednostavne implementacije je𝑂(|𝑋||ℱ|min|𝑋|, |ℱ|).Napomenimo da se algoritam moe implementirati tako da mu sloenostbude 𝑂(

∑𝑆∈ℱ |𝑆|).

Analiza. Sada emo pokazati da pohlepni algoritam vraa pokrivaqskupa koji nije mnogo vei od minimalnog pokrivaqa skupa. Neka je𝐻(𝑑) 𝑑-

ta parcijalna suma harmonijskog reda, 𝐻(𝑑) =∑𝑑

𝑖=1 1/𝑖 i neka je 𝐻(0) = 0

Page 111: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

111 9. NP kompletnost

Algoritam Pohlepni pokrivac skupa(𝑋,ℱ);

Ulaz: skup 𝑋 qiji minimalni pokrivaq traimo i familija ℱ podskupova skupa 𝑋.

Izlaz: 𝐶 (priblini minimalni pokrivaq skupa 𝑋).

begin

𝑈 := 𝑋

𝒞 := ∅while 𝑈 je neprazan do

Odaberi skup 𝑆 ∈ ℱ koji maksimizuje vrednost |𝑆 ∩ 𝑈 |𝑈 := 𝑈 ∖ 𝑆

𝒞 := 𝒞 ∪ 𝑆end

Slika 9.3: Pohlepni algoritam za pokrivae skupa.

Teorema 9.3 (Aproksimativna mo pohlepnog algoritma za rexavae𝑆𝐶𝑃 ). Prikazani pohlepni algoritam je priblini algoritam polinomijalnevremenske sloenosti sa faktorom aproksimacije

𝜌(𝑛) = 𝐻

(max𝑆∈ℱ|𝑆|

).

Dokaz. Ve smo pokazali da je prikazani algoritam polinomijalne vremenskesloenosti. Da bismo pokazali da je algoritam priblini algoritamsa faktorom aproksimacije 𝜌(𝑛), dodeujemo cenu 1 svakom skupu kojije odabran od strane algoritma i ravnomerno raspodeujemo ovu cenusvim elementima koji se ovim skupom pokrivaju prvi put. Ove cene bieiskorixene za izvoee eenog odnosa izmeu kardinalnosti minimalnogskupa pokrivaqa 𝒞* i kardinalnosti pokrivaqa 𝒞 dobijenog kao izlazalgoritma. Preciznije, neka 𝑆𝑖 oznaqava 𝑖-ti izabrani skup od stranealgoritma; algoritam zaduuje cenu 1 kada dodaje skup 𝑆𝑖 u 𝒞. Ovu cenupreraspodeujemo po elementima koji se pokrivaju po prvi put skupom 𝑆𝑖.Oznaqimo sa 𝑐𝑥 cenu raspodeenu elementu 𝑥 ∈ 𝑋. Svakom elementu secena dodeuje taqno jednom, onda kada se on pokriva po prvi put. Ako je𝑥 pokriven po prvi put skupom 𝑆𝑖, onda je

𝑐𝑥 =1

|𝑆𝑖 ∖ (𝑆1 ∪ 𝑆2 ∪ . . . ∪ 𝑆𝑖−1)|.

Svaki korak u algoritmu dodeuje cenu 1, te je stoga ukupna cena |𝒞|familije 𝒞 jednaka

|𝒞| =∑𝑥∈𝑋

𝑐𝑥. (9.2)

Svaki element 𝑥 ∈ 𝑋 je u barem jednom skupu minimalnog pokrivaqa𝒞*, te je stoga ∑

𝑆∈𝒞*

∑𝑥∈𝑆

𝑐𝑥 ≥∑𝑥∈𝑋

𝑐𝑥. (9.3)

Kombinovaem jednakosti 9.2 i nejednakosti 9.3 dobijamo nejednakost

|𝒞| ≤∑𝑆∈𝒞*

∑𝑥∈𝑆

𝑐𝑥. (9.4)

Page 112: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

9.3. Priblini algoritmi za rexavae problema minimalnog

pokrivaa skupa 112

Ostatak dokaza teoreme zasniva se na narednoj kuqnoj nejednakosti,koju emo dokazati u nastavku. Za proizvoan skup 𝑆 ∈ ℱ vai nejednakost

∑𝑥∈𝑆

𝑐𝑥 ≤ 𝐻(|𝑆|). (9.5)

Kombinovaem nejednakosti 9.4 i 9.5 dobija se

|𝒞| ≤∑𝑆∈𝒞*

𝐻(|𝑆|)

≤ |𝒞*| ·𝐻(

max𝑆∈ℱ|𝑆|

),

xto je i trebalo dokazati.

Ostalo je da dokaemo nejednakost 9.5. Neka je 𝑆 ∈ ℱ proizvoan skupi neka za proizvono 𝑖 = 1, 2, . . . , |𝒞|

𝑢𝑖 = |𝑆 ∖ (𝑆1 ∪ 𝑆2 ∪ . . . ∪ 𝑆𝑖)|

oznaqava broj elemenata skupa 𝑆 koji su ostali nepokriveni nakon xto jealgoritam odabrao skupove 𝑆1, 𝑆2, . . . , 𝑆𝑖. Definixemo 𝑢0 = |𝑆| kao brojelemenata skupa 𝑆, s obzirom da su na poqetku algoritma svi elementinepokriveni. Neka je 𝑘 najmai indeks 𝑖 takav da je 𝑢𝑖 = 0, odnosno takavindeks da je svaki element skupa 𝑆 pokriven barem jednim od skupova𝑆1, 𝑆2, . . . , 𝑆𝑖 i da je barem neki element skupa 𝑆 nepokriven unijom 𝑆1 ∪𝑆2 ∪ . . . ∪ 𝑆𝑖−1. Jasno je da je 𝑢𝑖−1 − 𝑢𝑖 ≥ 0 elemenata skupa 𝑆 po prvi putpokriveno skupom 𝑆𝑖, zbog qega je 𝑢𝑖−1 ≥ 𝑢𝑖, za svako 𝑖 = 1, 2, . . . , 𝑘. Dakle,

∑𝑥∈𝑆

𝑐𝑥 =

𝑘∑𝑖=1

(𝑢𝑖−1 − 𝑢𝑖) ·1

|𝑆𝑖 ∖ (𝑆1 ∪ 𝑆2 ∪ . . . ∪ 𝑆𝑖−1)|.

Primetimo da je

|𝑆𝑖 ∖ (𝑆1 ∪ 𝑆2 ∪ . . . ∪ 𝑆𝑖−1)| ≥ |𝑆 ∖ (𝑆1 ∪ 𝑆2 ∪ . . . ∪ 𝑆𝑖−1)|= 𝑢𝑖−1,

s ozbirom da pohlepan izbor skupa 𝑆𝑖 garantuje da 𝑆 ne moe da pokrijevixe novih elemenata nego xto to qini skup 𝑆𝑖 (u suprotnom, algoritambi izabrao 𝑆 umesto 𝑆𝑖). Kao posledicu dobijamo

∑𝑥∈𝑆

𝑐𝑥 ≤𝑘∑

𝑖=1

(𝑢𝑖−1 − 𝑢𝑖) ·1

𝑢𝑖−1.

Page 113: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

113 9. NP kompletnost

Gora granica za ovu sumu moe se dobiti na sledei naqin:

∑𝑥∈𝑆

𝑐𝑥 ≤𝑘∑

𝑖=1

(𝑢𝑖−1 − 𝑢𝑖) ·1

𝑢𝑖−1=

𝑘∑𝑖=1

𝑢𝑖−1∑𝑗=𝑢𝑖+1

1

𝑢𝑖−1

≤𝑘∑

𝑖=1

𝑢𝑖−1∑𝑗=𝑢𝑖+1

1

𝑗(jer je 𝑗 ≤ 𝑢𝑖−1)

=

𝑘∑𝑖=1

⎛⎝𝑢𝑖−1∑𝑗=1

1

𝑗−

𝑢𝑖∑𝑗=1

1

𝑗

⎞⎠ =

𝑘∑𝑖=1

(𝐻(𝑢𝑖−1)−𝐻(𝑢𝑖))

= 𝐻(𝑢0)−𝐻(𝑢𝑘) (jer je ovaj red \teleskopski")

= 𝐻(𝑢0)−𝐻(0) = 𝐻(𝑢0) = 𝐻(|𝑆|),

qime je zavrxen dokaz nejednakosti 9.5.

Qienica da je faktor aproksimacije algoritma 𝑃𝑜ℎ𝑙𝑒𝑝𝑛𝑖 𝑝𝑜𝑘𝑟𝑖𝑣𝑎𝑐 𝑠𝑘𝑢𝑝𝑎logaritamska funkcija od broja elemenata skupa 𝑋 sledi iz teoreme 9.3i ranije izvedene nejednakosti

𝐻(𝑛) =

𝑛∑𝑘=1

1

𝑘≤ ln𝑛 + 1. (9.6)

Teorema 9.4 (Logaritamska aproksimativna mo algoritma za priblinorexavae 𝑆𝐶𝑃 ). Faktor aproksimacije algoritma 𝑃𝑜ℎ𝑙𝑒𝑝𝑛𝑖 𝑝𝑜𝑘𝑟𝑖𝑣𝑎𝑐 𝑠𝑘𝑢𝑝𝑎iznosi 𝑂(log |𝑋|).

Page 114: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj
Page 115: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

Glava 10

Paralelni algoritmi

10.1 Uvod

Paralelno izraqunavae vixe nije egzotiqna oblast, i ve due vremeje na glavnom pravcu razvoja raqunarstva. Razvija se vrlo brzo, qak i uodnosu na druge raqunarske oblasti. U upotrebi je vixe tipova paralelnihraqunara, sa brojem procesora u opsegu od 2 do 65536, i veim. Razlikeizmeu razliqitih postojeih raqunara, qak i sa aspekta neobavextenogkorisnika, vrlo su velike. Nemogue je usvojiti jedan opxti model izraqunavaakoji bi obuhvatao sve paralelne raqunare

U ovom poglavu nisu pokrivene sve (pa qak ni veina) oblasti povezanihsa paralelnim izraqunavaem. Prikazani su primeri korixea pojedinihmodela izraqunavaa i razliqite tehnike. Ci je sticae predstave o pa-ralelnim algoritmima i upoznavae sa potexkoama vezanim za ihovukonstrukciju. Poqie se sa zajedniqkim karakteristikama paralelnihalgoritama. Zatim se ukratko opisuju neki osnovni modeli paralelnogizraqunavaa, a na kraju se navode primeri algoritama i tehnika.

Osnovne mere sloenosti za sekvencijalne algoritme su vreme izvrxavaai veliqina korixene memorije. Ove mere su vane i kod paralelnihalgoritama, ali se mora voditi raquna i o drugim resursima, posebno obroju procesora. Postoje problemi koji su suxtinski sekvencijalni, kojise ne mogu "paralelizovati" qak ni ako je na raspolagau neograniqenibroj procesora. Ipak, veina ostalih problema moe se do nekog stepenaparalelizovati. Xto vixe procesora se koristi | do neke granice |algoritam se bre izvrxava. Vano je prouqavati ograniqea paralelnihalgoritama, i biti u stau okarakterisati probleme za koje postoje vrlobrza paralelna rexea. Poxto je broj procesora ograniqen, isto takoje vano da se procesori efikasno koriste. Sledei vaan elemenat jekomunikacija izmeu procesora. Qesto je vixe vremena potrebno da dvaprocesora razmene podatke, nego da se izvrxe jednostavne operacije sapodacima. Pored toga, trajae razmene podataka moe da zavisi od "udaenosti"dva procesora u raqunaru. Prema tome, vano je minimizirati komunikacijui organizovati je na efikasni naqin. Sledee vano pitae je sinhronizacija,koja je veliki problem kod paralelnih algoritama kad se izvrxavaju nanezavisnim maxinama, povezanim nekom mreom za komunikaciju. Takvi

115

Page 116: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

10.2. Modeli paralelnog izraqunavaa 116

algoritmi se obiqno zovu distribuirani algoritmi. ih ovde neemorazmatrati; ograniqiemo se na modele sa potpunom sinhronizacijom.

Neki modeli paralelnog izraqunavaa sadre ograniqee da svi procesoriu jednom koraku izvrxavaju jednu istu instrukciju (nad eventualno razliqitimpodacima). Paralelni raqunari sa ovakvim ograniqeem zovu se SIMD(skraenica od Single–Instruction Multiple–Data) raqunari. Paralelni raqunarikod kojih svaki procesor moe da izvrxava razliqiti program zovu seMIMD (skraenica od Multiple–Instruction Multiple–Data) raqunari. Ukolikose ne naglasi drugaqije, pretpostava se da su raqunari o kojima je reqMIMD raqunari.

10.2 Modeli paralelnog izraqunavaa

Detaan pregled modela paralelnih raqunara zahtevao bi vixe prostora.Spomenuemo samo osnovne modele, sa naglaskom na one koji se koristeu ovom poglavu. U ovom odeku izloiemo neka opxta razmatraa idefinicije koji se odnose na mnoge modele. Svaki od sledeih odeakapokriva jedan od tipova modela, sadri egov detaniji opis i primerealgoritama.

Vreme izvrxavaa algoritma oznaqavaemo sa 𝑇 (𝑛, 𝑝), gde je 𝑛 veliqinaulaza, a 𝑝 broj procesora. Odnos

𝑆(𝑝) = 𝑇 (𝑛, 1)/𝑇 (𝑛, 𝑝)

zove se ubrzae algoritma. Paralelni algoritam je najefikasniji kadje 𝑆(𝑝) = 𝑝, tj. kad algoritam dostie savrxeno ubrzae. Za vrednost𝑇 (𝑛, 1) treba uzeti najboi poznati sekvencijalni algoritam. Vana meraiskorixenosti procesora je efikasnost paralelnog algoritma, koja sedefinixe izrazom

𝐸(𝑛, 𝑝) =𝑆(𝑝)

𝑝=

𝑇 (𝑛, 1)

𝑝𝑇 (𝑛, 𝑝).

Efikasnost je odnos vremena izvrxavaa na jednom procesoru (kad izvrxavasekvencijalni algoritam) i ukupnog vremena izvrxavaa na 𝑝 procesora(ukupno vreme je stvarno proteklo vreme pomnoeno brojem procesora).Efikasnost ukazuje na udeo procesorskog vremena, koje se efektivno koristiu odnosu na sekvencijalni algoritam. Ako je 𝐸(𝑛, 𝑝) = 1, onda je koliqinaraqunaa obavenog na svim procesorima u toku izvrxavaa algoritmajednaka koliqini raqunaa koju zahteva sekvencijalni algoritam. U tomsluqaju postignuto je optimalno iskorixee procesora. Postizae optimalneefikasnosti je retko, jer se u paralelnim algoritmima moraju izvrxitineka dopunska izraqunavaa, koja nisu potrebna kod sekvencijalnog algoritma.Jedan od osnovnih cieva je maksimizirae efikasnosti.

Pri konstrukciji paralelnog algoritma moglo bi se fiksirati 𝑝, uskladu sa brojem procesora na raspolagau, i pokuxati sa minimiziraem𝑇 (𝑛, 𝑝). Ali nedostatak ovakvog pristupa je u tome xto bi on mogao dazahteva novi algoritam, kad god se promeni broj procesora. Zgodnije bibilo konstruisati algoritam koji radi za xto je mogue vixe razliqitihvrednosti 𝑝. Razmotriemo sada kako transformisati algoritam koji radiza neku vrednost 𝑝, u algoritam za mau vrednost 𝑝, bez znaqajne promeneefikasnosti. U opxtem sluqaju, algoritam sa 𝑇 (𝑛, 𝑝) = 𝑋 moe se transformisati

Page 117: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

117 10. Paralelni algoritmi

u algoritam sa 𝑇 (𝑛, 𝑝/𝑘) ≃ 𝑘𝑋, za proizvonu konstantu 𝑘 > 1. Drugimreqima, moe se koristiti za faktor 𝑘 mae procesora, qije je vreme radaonda due za faktor 𝑘. Modifikovani algoritam moe se konstruisatizamenom svakog koraka polaznog algoritma sa 𝑘 koraka, u kojima jedanprocesor emulira (paralelno) izvrxavae jednog koraka na 𝑘 procesora.Ovaj princip nije uvek primeniv. Na primer, mogue je da 𝑝 nije deivosa 𝑘, ili da algoritam zavisi od naqina povezivaa procesora (o qemu ebiti reqi u odeku 10.4), ili da donoxee odluke o tome koje procesoreemulirati zahteva takoe utroxak nekog vremena. Ipak, ovaj princip,takozvani princip imitiraa paralelizma, vrlo je opxti i koristan.On pokazuje da se moe smaiti broj procesora, ne meajui bitno efikasnost.Ako polazni algoritam (koji je konstruisan za velike 𝑝) ima veliko ubrzae,onda se mogu dobiti algoritmi koji postiu priblino isto ubrzae zabilo koju mau vrednost 𝑝. Prema tome, treba konstruisati algoritam saxto boim ubrzaem za maksimalni broj procesora, pri qemu efikasnosttreba da bude dobra (tj. bliska jedinici). Zatim, ako je na raspolagaumai broj procesora, i dae se moe koristiti isti algoritam. S drugestrane, paralelni algoritmi sa malom efikasnoxu su korisni samo akoje na raspolagau veliki broj procesora. Pretpostavimo, na primer, daimamo algoritam sa 𝑇 (𝑛, 1) = 𝑛 i 𝑇 (𝑛, 𝑛) = log2 𝑛, odnosno sa ubrzaem𝑆(𝑛) = 𝑛/log2 𝑛 i efikasnoxu 𝐸(𝑛) = 1/log2 𝑛. Pretpostavimo da nam jena raspolagau 𝑝 = 256 procesora i da je 𝑛 = 1024. Vreme izvrxavaaparalelnog algoritma je 𝑇 (1024, 256) = 4 log2 1024 = 40 (uz pretpostavkuda je mogue imitirae paralelizma bie 𝑇 (𝑛, 𝑝) = (𝑛 log2 𝑛)/𝑝), xto jeubrzae za faktor oko 25 u odnosu na sekvencijalni algoritam. S drugestrane, za 𝑝 = 16 vreme izvrxavaa je 640, xto daje nedovono ubrzae(mae od 2 sa 16 procesora).

Modeli paralelnog izraqunavaa razlikuju se meusobno uglavnompo naqinu komunikacije i sinhronizacije procesora. Razmatraemo samomodele koji podrazumevaju potpunu sinhronizaciju i razliqite naqinepovezivaa. Modeli sa zajedniqkom memorijom pretpostavaju da postojizajedniqka memorija sa ravnomernim pristupom, tako da svaki procesormoe da pristupi svakoj promenivoj za jediniqno vreme. Ova pretpostavkao vremenu pristupa nezavisnom od broja procesora i veliqine memorijenije bax realna, ali je dobra aproksimacija. Modeli sa zajedniqkom memorijomrazlikuju se po naqinu na koji obrauju konflikte prilikom pristupamemoriji. Pojedine alternative razmotriemo u odeku 10.3.

Zajedniqka memorija je obiqno najjednostavniji naqin za modeliraekomunikacije, ali naqin koji je najtee hardverski realizovati. Drugimodeli pretpostavaju da su procesori meusobno povezani posredstvommree. Mrea raqunara se moe predstaviti grafom, pri qemu qvoroviodgovaraju procesorima, a dva qvora su povezana ako izmeu odgovarajuihprocesora postoji direktna veza. Svaki procesor obiqno ima lokalnumemoriju, kojoj moe da pristupa brzo. Komunikacija se ostvaruje porukama,koje moraju da prou vixe direktnih veza da bi doxle do odredixta.Prema tome, brzina komunikacije zavisi od rastojaa izmeu procesorakoji razmeuju poruke. Nekoliko razliqitih grafova je analizirano uulozi skeleta mree raqunara. Vixe popularnih konfiguracija navedenoje u odeku 10.4.

Sledei model koji emo razmotriti je model sistoliqkog raqunaa.

Page 118: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

10.3. Algoritmi za raqunare sa zajedniqkom memorijom 118

Sistoliqka arhitektura podsea na pokretnu traku u fabrici. Podacise kreu kroz procesore ravnomerno, i tom prilikom se nad ima izvodejednostavne operacije. Umesto da pristupaju zajedniqkoj (ili lokalnoj)memoriji, procesori dobijaju ulazne podatke od svojih suseda, obrauju ih,i prosleuju dae. Neki sistoliqki algoritmi navedeni su u odeku 10.5.

Kolo je osnovni teorijski model, koji e biti korixen samo za potrebeilustracije. Kolo je usmereni acikliqki graf, u kome qvorovi odgovarajujednostavnim operacijama, a grane pokazuju kretae operanada. Na primer,Bulovo kolo je ono u kome su ulazni stepeni qvorova najvixe dva, a sveoperacije su Bulove operacije (disjunkcija, konjunkcija ili negacija).Posebno su izdvojeni ulazni (sa ulaznim stepenom nula) i izlazni qvorovi(sa izlaznim stepenom nula). Dubina kola je duina najdueg puta odnekog ulaznog do nekog izlaznog qvora. Dubina odgovara vremenu izvrxavaaparalelnog algoritma.

10.3 Algoritmi za raqunare sa zajedniqkom memorijom

Raqunar sa zajedniqkom memorijom sastoji se od vixe procesora i zajedniqkememorije. U ovom odeku baviemo se samo potpuno sinhronizovanimalgoritmima. Pretpostavamo da se izraqunavae sastoji od koraka. Usvakom koraku svaki procesor izvrxava neku operaciju nad podacimakojima raspolae, qita iz zajedniqke memorije ili pixe u zajedniqkumemoriju (u praksi svaki procesor moe da ima i lokalnu memoriju).Modeli sa zajedniqkom memorijom razlikuju se po tome kako obrauju me-morijske konflikte. Model EREW (Exclusive–Read Exclusive–Write) nedozvoava da dva procesora istovremeno pristupaju istoj memorijskojlokaciji. Model CREW (Concurent–Read Exclusive–Write) dozvoava davixe procesora istovremeno qitaju sa iste memorijske lokacije, ali nedozvoava da dva procesora istovremeno pixu na istu lokaciju. Na kraju,model (Concurent–Read Concurent–Write) ne namee nikakva ograniqea napristup procesora memoriji.

Modeli EREW i CREW su dobro definisani, ali nije jasno xtaje rezultat istovremenog pisaa od strane dva procesora na jednu istumemorijsku lokaciju. Ima vixe naqina za obradu istovremenih pisaa.Najslabiji CRCW model, jedini koji e biti ovde razmatran, dozvoavada vixe procesora istovremeno pixu na istu lokaciju samo ako zapisujuistu vrednost. Ako dva procesora pokuxaju da upixu istovremeno razliqitevrednosti na istu lokaciju, prekida se sa izvrxavaem algoritma. Iakoje to moda neoqekivano, videemo u odeku 10.3.2 da je ovakav model vrlomoan. Druga mogunost je pretpostaviti da su procesori numerisani,i da, ako vixe procesora pokuxaju istovremeni upis na istu lokaciju,realizuje se upis procesora sa najveim rednim brojem.

10.3.1 Paralelno sabirae

Zapoqiemo sa jednostavnim primerom paralelnog algoritma za rexavaeproblema, koji je na prvi pogled suxtinski sekvencijalan.

Problem. Izraqunati sumu dva 𝑛-bitna binarna broja.

Page 119: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

119 10. Paralelni algoritmi

Obiqan sekvencijalni algoritam najpre sabira dva bita najmae teine,a onda u svakom koraku sabira po dva bita, i zbiru eventualno dodajeprenos sa nie pozicije. Na prvi pogled nemogue je predvideti ishod 𝑖-tog koraka, sve dok se ne saberu 𝑖−1 bita najmae teine, jer prenos moe,a ne mora da postoji. Ipak, mogue je konstruisati paralelni algoritam.

Koristimo indukciju po 𝑛. Prelaz sa 𝑛 − 1 na 𝑛 ne moe da bude odvelike koristi, jer vodi iterativnom sekvencijalnom algoritmu. Pristupzasnovan na razlagau qesto daje dobre rezultate kod paralelnih algoritama,pa i u ovom sluqaju, jer moe da rexi sve mae potprobleme paralelno.Pretpostavimo da smo podelili problem na dva potproblema veliqine𝑛/2, tj. na sabirae levih i desnih sabiraka od po 𝑛/2 bita (zbog jednostavnostipretpostavamo da je 𝑛 stepen dvojke). Sume dva para brojeva mogu seizraqunati paralelno. Ipak, jox uvek ostaje problem prenosa. Ako sumadelova mae teine ima prenos, mora se promeniti suma delova veeteine.

Problem rexava zapaae da postoje samo dve mogunosti | prenospostoji ili ne. Zahvaujui tome, moe se pojaqati induktivna hipoteza,tako da obuhvati oba sluqaja. Modifikovani problem glasi: pronai sumudva broja, sa i bez prenosa na najniu poziciju. Pretpostavimo da smorexili modifikovani problem za oba para sabiraka, i tako dobili qetiribroja 𝑁 , 𝑁𝑃 , 𝑉 i 𝑉𝑃 , koji predstavaju sumu nieg para bez prenosa,istu sumu sa prenosom, i odgovarajue sume za vixi par brojeva, redom.Za svaku od tih suma takoe znamo da li je pri enom izraqunavau doxlodo prenosa. Ukupnu sumu 𝑆 (bez prenosa na najnii bit) qine 𝑁 sa 𝑉 ili𝑉𝑃 , zavisno od toga da li je suma 𝑁 proizvela prenos. Ukupna suma 𝑆𝑃

sa prenosom dobija se na isti naqin, samo se 𝑁 zameuje sa 𝑁𝑃 . Prenosukupne sume je prenos 𝑉𝑃 .

Problem veliqine 𝑛 svodi se na rexavae dva potproblema veliqine𝑛/2 i na izvrxavae konstantnog broja koraka za objediavae dva rezultata.Poxto se oba potproblema mogu rexiti paralelno | pretpostavka je daprocesori mogu da pristupe razliqitim bitovima nezavisno | dobijase diferencna jednaqina 𝑇 (𝑛, 𝑛) = 𝑇 (𝑛/2, 𝑛/2) + 𝑂(1), qije je rexee𝑇 (𝑛, 𝑛) = 𝑂(log 𝑛). Pored toga, poxto su dva potproblema potpuno nezavisna,ovaj algoritam podrazumeva samo model EREW. Ovaj algoritam nije najboiza paralelno sabirae ali je dobar primer jednostavne paralelizacijealgoritma. Kad za neki problem postane jasno da se moe efikasno rexitiparalelno, rexee se moe dae poboxavati.

10.3.2 Algoritmi za nalaee maksimuma

Problem. Pronai najvei od 𝑛 razliqitih brojeva, zadatih u nizu uzajedniqkoj memoriji.

Ovaj problem rexiemo za dva razliqita modela sa zajedniqkom memorijom,EREW i CRCW. Algoritmi za oba modela koriste tehnike koje se koristepri rexavau mnogih drugih problema.

Page 120: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

10.3. Algoritmi za raqunare sa zajedniqkom memorijom 120

Model EREW

Direktni sekvencijalni algoritam za nalaee maksimuma zahteva 𝑛 −1 uporeivae. Uporeivae se moe shvatiti kao partija koju igrajudva broja, u kojoj pobeuje vei. Problem nalaea maksimuma je tadaekvivalentan organizovau turnira, u kome je pobednik najvei broj ucelom skupu. Efikasan naqin da se turnir organizuje paralelno je dase iskoristi stablo. Igraqi se dele u parove za prvo kolo (pri qemueventualno jedan igraq ne uqestvuje, ako je ukupan broj igraqa neparan),pobednici se ponovo dele u parove, i tako dae do finala. Broj kola je⌈log2 𝑛⌉. Turnir se moe transformisati u paralelni algoritam tako xtose svakoj partiji dodeli procesor (procesor igra ulogu sudije u partiji).Meutim, treba odbezbediti da svaki procesor zna brojeve takmiqare.To se moe postii kopiraem pobednika u partiji na poziciju sa veimindeksom od pozicija dva uqesnika partije. Preciznije, ako partiju igraju𝑥𝑖 i 𝑥𝑗 , 𝑗 > 𝑖, onda se vei od brojeva 𝑥𝑖, 𝑥𝑗 kopira na poziciju 𝑗. Uprvom kolu procesor 𝑃𝑖 uporeuje 𝑥2𝑖−1 sa 𝑥2𝑖 (1 ≤ 𝑖 ≤ 𝑛/2), i zameujeih ako je potrebno, tako da na veu poziciju ode vei broj. U drugomkolu procesor 𝑃𝑖 uporeuje 𝑥4𝑖−2 sa 𝑥4𝑖 (1 ≤ 𝑖 ≤ 𝑛/4), i tako dae. Akoje na primer 𝑛 = 2𝑘, onda u posledem, 𝑘-tom kolu, 𝑃1 uporeuje 𝑥𝑛/2

sa 𝑥𝑛, i eventualno ih zameuje. Najvei broj nalazie se na poziciji𝑛. Poxto svaki broj u jednom trenutku uqestvuje samo u jednoj partiji,dovoan je model EREW. Vreme izvrxavaa ovog jednostavnog algoritmaje oqigledno𝑂(log 𝑛). Pokuxaemo sada da smaimo broj korixenih procesora.

Algoritam koji smo upravo razmotrili zahteva ⌊𝑛/2⌋ procesora, a brojkoraka je 𝑇 (𝑛, ⌊𝑛/2⌋) = ⌈log2 𝑛⌉. Poxto je za sekvencijalni algoritam𝑇 (𝑛, 1) = 𝑛 − 1, efikasnost ovog paralelnog algoritma je 𝐸(𝑛, 𝑛/2) ≃2/log2 𝑛. Ako nam je ionako na raspolagau ⌊𝑛/2⌋ procesora (na primer,ako je algoritam za nalaee maksimuma deo drugog algoritma, kome jeneophodno toliko procesora), onda je ovaj algoritam jednostavan i efikasan.Meutim, uz mali napor moe se doi do algoritma sa vremenom izvrxavaa𝑂(log 𝑛) i efikasnoxu 𝑂(1).

Ukupan broj uporeivaa potrebnih za ovaj algoritam je 𝑛−1, isti kaoi za sekvencijalni algoritam. Razlog male efikasnosti lei u tome xtose veina procesora ne koristi u kasnijim kolima. Efikasnost se moepoboxati smaivaem broja procesora i uravnoteavaem ihovog optereeana sledei naqin. Pretpostavimo da koristimo samo oko 𝑛/log2 𝑛 procesora.Ulaz se moe podeliti u 𝑛/log2 𝑛 grupa (sa priblino log2 𝑛 elemenata usvakoj grupi) i zatim svakoj grupi dodeliti po jedan procesor. U prvojfazi svaki procesor pronalazi maksimum u svojoj grupi koristei sekvencijalnialgoritam, koji se sastoji od oko log2 𝑛 koraka. Posle toga ostaje da seodredi maksimum otprilike 𝑛/log2 𝑛 maksimuma, pri qemu sad ima dovonoprocesora da se iskoristi turnirski algoritam. Vreme izvrxavaa turniraje 𝑇 (𝑛, ⌈𝑛/log2 𝑛⌉) ≃ 2 log2 𝑛. Odgovarajua efikasnost je 𝐸(𝑛) ≃ 1/2.Pokuxaemo sada da formalizujemo ovu ideju, koja omoguuje uxtedu nabroju procesora.

Za algoritam kaemo da je statiqki ako se unapred zna pridruivaeprocesora operacijama. Dakle, unapred znamo za svaki korak 𝑖 algoritmai za svaki procesor 𝑃𝑗 operaciju i argumente koje 𝑃𝑗 koristi u koraku 𝑖.Algoritam za nalaee maksimuma je primer statiqkog algoritma, jer se

Page 121: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

121 10. Paralelni algoritmi

unapred znaju indeksi uqesnika u svakoj partiji.

Lema 10.1 (Brentova lema). Ako postoji statiqki EREW algoritam sa𝑇 (𝑛, 𝑝) = 𝑂(𝑡(𝑛)), takav da je ukupan broj koraka (na svim procesorima)𝑠(𝑛), onda postoji statiqki EREW algoritam sa 𝑇 (𝑛, 𝑠(𝑛)/𝑡(𝑛)) = 𝑂(𝑡(𝑛)).

Primetimo da ako je 𝑠(𝑛) jednako sekvencijalnoj sloenosti algoritma,onda modifikovani algoritam ima efikasnost 𝑂(1).

Dokaz. Neka je 𝑇 (𝑛, 𝑝) ≤ 𝑡(𝑛) za sve dovono velike 𝑛, i neka je 𝑎𝑖 ukupanbroj koraka koje izvrxavaju svi procesori u 𝑖-tom koraku algoritma, 𝑖 =

1, 2, . . . , 𝑡(𝑛). Tada je∑𝑡(𝑛)

𝑖=1 𝑎𝑖 = 𝑠(𝑛). Ako je 𝑎𝑖 ≤ 𝑠(𝑛)/𝑡(𝑛), onda imadovono procesora za paralelno izvrxavae koraka 𝑖. U protivnom sekorak 𝑖 zameuje sa ⌈𝑎𝑖/(𝑠(𝑛)/𝑡(𝑛))⌉ koraka u kojima raspoloivih 𝑠(𝑛)/𝑡(𝑛)procesora emuliraju korake, koje u originalnom algoritmu izvrxava 𝑝procesora (koristei princip imitiraa paralelizma). Ukupan broj korakaje sada

𝑡(𝑛)∑𝑖=1

⌈𝑎𝑖

𝑠(𝑛)/𝑡(𝑛)

⌉≤

𝑡(𝑛)∑𝑖=1

(𝑎𝑖𝑡(𝑛)

𝑠(𝑛)+ 1

)= 𝑡(𝑛) +

𝑡(𝑛)

𝑠(𝑛)

𝑡(𝑛)∑𝑖=1

𝑎𝑖 = 2𝑡(𝑛).

Prema tome, vreme izvrxavaa modifikovanog algoritma je takoe𝑂(𝑡(𝑛)).

Ovo tvree poznato je kao Brentova lema. Brentova lema pokazujeda je pod odreenim pretpostavkama efikasnost paralelnog algoritmaodreena odnosom ukupnog broja operacija (operacija koje izvrxavaju sviprocesori) i vremena izvrxavaa sekvencijalnog algoritma.

Ograniqee da algoritam bude statiqki je potrebno, jer se mora znatikoje procesore treba emulirati. Brentova lema je taqna i za algoritmekoji nisu statiqki, pod uslovom da se emulacija moe lako izvesti. Primergde se ova lema ne moe primeniti je sledei. Pretpostavimo da imamo𝑛 procesora i 𝑛 elemenata. Posle prvog koraka neki procesori odluquju(na osnovu rezultata prvog koraka) da prestanu sa radom. Isto se dexava idrugom, treem koraku, itd. Ovaj algoritam je sliqan turnirskom algoritmu,izuzev xto se u ovom sluqaju ne zna koji procesori odustaju od daeg rada.Ako pokuxamo da emuliramo preostale procesore posle na primer prvogkoraka, potrebno je da znamo koji su jox aktivni. Da bi se to ustanovilo,potrebno je izvrxiti neka izraqunavaa.

Model CRCW

Namee se utisak da paralelni algoritam ne moe da nae maksimum zamae od log2 𝑛 koraka, ako se koriste samo uporeivaa. Meutim, tonije taqno. Sledei algoritam sa vremenom izvrxavaa 𝑂(1) ilustrujemogunosti istovremenih upisa. Podrazumeva se varijanta istovremenihupisa, u kojoj dva ili vixe procesora mogu da pixu istovremeno na istulokaciju samo ako zapisuju isti podatak. Zbog jednostavnosti pretpostaviemoda su svi elementi razliqiti.

Koristi se 𝑛(𝑛 − 1)/2 procesora, tako da se procesor 𝑃𝑖𝑗 dodeujeparu elemenata 𝑥𝑖, 𝑥𝑗. Pored toga, svakom elementu 𝑥𝑖 pridruuje se

Page 122: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

10.3. Algoritmi za raqunare sa zajedniqkom memorijom 122

zajedniqka (deena) promeniva 𝑣𝑖, sa poqetnom vrednoxu 1. U prvomkoraku svaki procesor uporeuje svoja dva elementa i zapisuje 0 u promenivupridruenu maem elementu. Poxto je samo jedan elemenat vei od svihostalih, samo jedna od promenivih 𝑣𝑖 zadrava vrednost 1. U drugomkoraku procesori pridrueni pobedniku mogu da ustanove da je on pobedniki da objave tu qienicu (na primer, upisivaem egovog indeksa u posebnuzajedniqku promenivu, rezultat). Ovaj algoritam zahteva samo dva koraka,nezavisno od 𝑛. Meutim, egova efikasnost je vrlo mala, jer on zahteva𝑂(𝑛2) procesora. Ovo je takozvani dvokoraqni algoritam.

Efikasnost dvokoraqnog algoritma moe se poboxati kao i algoritmaza model EREW. Ulazni podaci dele se u male grupe, tako da se svakojgrupi moe dodeliti dovono procesora, da bi se maksimum grupe mogaoodrediti dvokoraqnim algoritmom. Sa opadaem broja kandidata rastebroj raspoloivih procesora po kandidatu, pa se moe poveati veliqinagrupe. Dvokoraqni algoritam omoguuje odreivae maksimuma u grupiveliqine 𝑘 sa 𝑘(𝑘 − 1)/2 procesora, za konstantno vreme. Pretpostavimoda imamo ukupno 𝑛 procesora i da je 𝑛 stepen dvojke. U prvom ciklusuveliqina svake grupe je 2 i maksimum u svakoj grupi moe se odrediti ujednom koraku. U drugi ciklus ulazi se sa 𝑛/2 elemenata, i 𝑛 procesora.Ako formiramo grupe od po 4 elementa, imaemo 𝑛/8 grupa, xto namomoguuje da svakoj grupi dodelimo 8 procesora. Ovo je dovono, jer je4 · (4− 1)/2 = 6. U trei ciklus ulazi se sa 𝑛/8 elemenata. Pokuxajmo daodredimo najveu moguu veliqinu grupe koja se moe obraditi na ovajnaqin. Ako je veliqina grupe 𝑔, onda je broj grupa 𝑛/8𝑔, i za svaku grupuimamo na raspolagau 8𝑔 procesora. Za primenu dvokoraqnog algoritmana grupu veliqine 𝑔 potrebno je 𝑔(𝑔 − 1)/2 procesora, pa mora da bude𝑔(𝑔 − 1)/2 ≤ 8𝑔, odnosno 𝑔 ≤ 17; jednostavnije je uzeti vrednost 𝑔 = 16.

Uopxte, u 𝑖-ti ciklus se ulazi sa 𝑛/22𝑖−1−1 elemenata, koji se dele na

𝑛/22𝑖−1 grupa po 𝑔 = 22

𝑖−1

elemenata, 𝑖 ≥ 1. Za nalaee maksimuma

u grupi dvokoraqnim algoritmom dovono je 𝑔(𝑔 − 1)/2 ≤ 𝑔2/2 = 22𝑖−1

procesora, pa je za nalaee maksimuma u svim grupama dovono

𝑛

22𝑖−1· 22

𝑖−1 = 𝑛

procesora. U naredni ciklus ulazi se sa po jednim elementom iz svakegrupe, dakle sa 𝑛/22

𝑖−1 elemenata, xto indukcijom dokazuje ispravnostove konstrukcije. Ukupan broj ciklusa do zavrxetka algoritma ograniqenje uslovom da je broj elemenata na poqetku 𝑖-tog ciklusa mai od jedan:𝑛/22

𝑖−1−1 ≤ 1, ili 𝑖 ≥ log2(log2 𝑛 + 1) + 1. Dakle broj ciklusa, a time ibroj koraka prilikom izvrxea ovog algoritma je 𝑂(log log 𝑛).

Iako je ovaj algoritam nexto sporiji od dvokoraqnog (𝑂(log log 𝑛) uodnosu na𝑂(1)), egova efikasnost je mnogo boa. Ona iznosi𝑂(1/ log log 𝑛)u odnosu na 𝑂(1/𝑛) kod dvokoraqnog algoritma. Opisana tehnika moe senazvati podeli i smrvi (eng. divide-and-crush), jer se ulaz deli u grupe,koje su dovono male da se mogu "smrviti" mnoxtvom procesora. Primenaove tehnike nije ograniqena na model CRCW.

Page 123: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

123 10. Paralelni algoritmi

10.3.3 Paralelni problem prefiksa

Paralelni problem prefiksa je vaan jer se koristi kao osnovnielemenat pri konstrukciji mnogih paralelnih algoritama. Neka je ⋆ proizvonaasocijativna binarna operacija (operacija koja zadovoava uslov 𝑥 ⋆ (𝑦 ⋆𝑧) = (𝑥 ⋆ 𝑦) ⋆ 𝑧) za proizvone 𝑥, 𝑦 i 𝑧), koju emo oznaqavati imenomproizvod. Na primer, ⋆ moe da oznaqava sabirae, mnoee ili maksimumdva broja.

Problem. Dat je niz brojeva 𝑥1, 𝑥2, . . . , 𝑥𝑛. Izraqunati proizvode 𝑥1⋆𝑥2⋆· · · ⋆ 𝑥𝑘 za 𝑘 = 1, 2, . . . , 𝑛.

Oznaqimo sa 𝑃𝑅(𝑖, 𝑗) proizvod 𝑥𝑖⋆𝑥𝑖+1⋆· · ·⋆𝑥𝑗 . Potrebno je izraqunati𝑃𝑅(1, 𝑘) za 𝑘 = 1, 2, . . . , 𝑛. Sekvencijalna verzija problema prefiksa jetrivijalna | prefiksi se jednostavno izraqunavaju redom. Paralelniproblem prefiksa nije tako lako rexiti. Iskoristiemo metod razlagaa,uz uobiqajenu pretpostavku da je 𝑛 stepen dvojke.

Induktivna hipoteza. Umemo da reximo paralelni problem prefiksaza 𝑛/2 elemenata.

Sluqaj jednog elementa je trivijalan. Algoritam zapoqie podelomulaza na dve polovine, koje se rexavaju indukcijom. Na taj naqin dobijamovrednosti 𝑃𝑅(1, 𝑘) i 𝑃𝑅(𝑛/2+1, 𝑛/2+𝑘) za 𝑘 = 1, 2, . . . , 𝑛/2. Prva polovinaovih vrednosti deo je konaqnog rezultata. Vrednosti 𝑃𝑅(1,𝑚) za 𝑚 =𝑛/2 + 1, 𝑛/2 + 2, . . . , 𝑛 dobijaju se izraqunavaem proizvoda 𝑃𝑅(1, 𝑛/2) ⋆𝑃𝑅(𝑛/2+1,𝑚). Oba ova qlana poznata su po indukciji (ve su izraqunata;primetimo da je iskorixena asocijativnost operacije ⋆). Algoritamje prikazan na slici 10.1. Qienica da se prolasci kroz do petuizvrxavaju paralelno (istovremeno, na razliqitim skupovima procesora)u kodu je naznaqena dodatkom “in parallel”.

Sloenost. Ulaz je podeen u dva disjunktna skupa u svakom rekurziv-nom pozivu algoritma. Oba potproblema se mogu dakle rexiti paralelnou modelu EREW. Ako imamo 𝑛 procesora za problem veliqine 𝑛, onda sepolovina ih moe dodeliti svakom potproblemu. Kombinovae rexeapotproblema sastoji se od 𝑛/2 mnoea, koja se mogu izvrxiti paralelno,ali je potreban model CREW, jer se u svakom mnoeu koristi 𝑃𝑅(1, 𝑛/2),odnosno 𝑥[𝑆𝑟𝑒𝑑𝑛𝑗𝑖]. Iako vixe procesora istovremeno qitaju 𝑥[𝑆𝑟𝑒𝑑𝑛𝑗𝑖],oni pixu na razliqite lokacije, pa model CRCW nije neophodan (ako sealgoritam promeni tako da svaki procesor ima svoju kopiju 𝑥[𝑆𝑟𝑒𝑑𝑛𝑗𝑖]).Ukupan broj koraka je 𝑇 (𝑛, 𝑛) = 𝑂(log 𝑛), pa je efikasnost algoritma𝐸(𝑛, 𝑛) = 𝑂(1/ log 𝑛) (vreme izvrxavaa sekvencijalnog algoritma je𝑂(𝑛)).

Na alost, efikasnost ovog algoritma ne moe se poboxati korixeemBrentove leme, jer je ukupan broj koraka na svim procesorima 𝑂(𝑛 log 𝑛).Prema tome, da bi se poboxala efikasnost, mora se smaiti ukupan brojkoraka.

Poboxae efikasnosti paralelnog prefiksa

Ideja koja omoguuje efikasnije rexavae ovog problema je korixeeiste induktivne hipoteze, ali uz podelu ulaza na drugaqiji naqin. Pretpostavimo

Page 124: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

10.3. Algoritmi za raqunare sa zajedniqkom memorijom 124

Algoritam Paralelni Prefiks 1(𝑥, 𝑛);

Ulaz: 𝑥 (niz sa 𝑛 elemenata).

pretpostava se da je 𝑛 stepen dvojkeIzlaz: 𝑥 (qiji 𝑖-ti elemenat sadri 𝑖-ti prefiks).

begin

𝑃𝑃 1(1, 𝑛)

end

procedure PP 1(𝐿𝑒𝑣𝑖,𝐷𝑒𝑠𝑛𝑖);

begin

if 𝐷𝑒𝑠𝑛𝑖− 𝐿𝑒𝑣𝑖 = 1 then

𝑥[𝐷𝑒𝑠𝑛𝑖] := 𝑥[𝐿𝑒𝑣𝑖] ⋆ 𝑥[𝐷𝑒𝑠𝑛𝑖] ⋆ je asocijativna binarna operacijaelse

𝑆𝑟𝑒𝑑𝑛𝑗𝑖 := (𝐿𝑒𝑣𝑖+𝐷𝑒𝑠𝑛𝑖− 1)/2;

do in parallel

𝑃𝑃 1(𝐿𝑒𝑣𝑖, 𝑆𝑟𝑒𝑑𝑛𝑗𝑖); dodeeno procesorima od 1 do 𝑛/2𝑃𝑃 1(𝑆𝑟𝑒𝑑𝑛𝑗𝑖+ 1, 𝐷𝑒𝑠𝑛𝑖); dodeeno procesorima od 𝑛/2 + 1 do 𝑛

for 𝑖 := 𝑆𝑟𝑒𝑑𝑛𝑗𝑖+ 1 to 𝐷𝑒𝑠𝑛𝑖 do in parallel

𝑥[𝑖] := 𝑥[𝑆𝑟𝑒𝑑𝑛𝑗𝑖] ⋆ 𝑥[𝑖]

end

Slika 10.1: Algoritam 𝑃𝑎𝑟𝑎𝑙𝑒𝑙𝑛𝑖 𝑝𝑟𝑒𝑓𝑖𝑘𝑠 1.

ponovo da je 𝑛 stepen dvojke i da imamo 𝑛 procesora. Neka 𝐸 oznaqava skupsvih 𝑥𝑖 sa parnim indeksima 𝑖. Ako izraqunamo prefikse svih elemenataiz 𝐸, onda je izraqunavae ostalih prefiksa (onih sa neparnim indeksima)lako: ako je poznato 𝑃𝑅(1, 2𝑖), onda se neparni prefiks 𝑃𝑅(1, 2𝑖 + 1)dobija izraqunavaem samo jox jednog proizvoda 𝑃𝑅(1, 2𝑖) ⋆ 𝑥2𝑖+1, 𝑖 =1, 2, . . . , 𝑛/2 − 1, Prefiksi elemenata iz 𝐸 mogu se odrediti u dve faze.Najpre se (paralelno) izraqunavaju proizvodi 𝑥2𝑖−1 ⋆ 𝑥2𝑖, koji se zatimsmextaju u 𝑥2𝑖, 𝑖 = 1, 2, . . . , 𝑛/2. Drugim reqima, izraqunavaju se proizvodisvih elemenata iz 𝐸 sa svojim levim susedima. Zatim se rexava (indukcijom)problem paralelnog prefiksa za 𝑛/2 elemenata iz 𝐸. Rezultat za svako𝑥2𝑖 je taqan konaqni prefiks, jer je svako 𝑥2𝑖 ve zameeno proizvodomsa 𝑥2𝑖−1. Poxto se znaju prefiksi za sve elemente sa parnim indeksima,preostali prefiksi se mogu izraqunati u jednom paralelnom koraku nave spomenuti naqin. Lako se proverava da se ovaj algoritam moe izvrxavatiu modelu EREW. Algoritam je prikazan na slici 10.2.

Sloenost. Obe pete u algoritmu 𝑃𝑎𝑟𝑎𝑙𝑒𝑙𝑛𝑖 𝑝𝑟𝑒𝑓𝑖𝑘𝑠 2 mogu se izvrxitiparalelno za vreme 𝑂(1) sa 𝑛/2 procesora. Rekurzivni poziv primeuje sena problem dvostruko mae veliqine, pa je vreme izvrxavaa algoritma𝑂(log 𝑛). Ukupan broj koraka 𝑠(𝑛) zadovoava diferencnu jednaqinu 𝑠(𝑛) =𝑠(𝑛/2) + 𝑛 − 1, 𝑠(2) = 1, iz qega sledi da je 𝑠(𝑛) = 𝑂(𝑛) (preciznije,𝑠(2𝑘) = 2𝑘+1 − 𝑘 − 2). Zbog toga se sada moe iskoristiti Brentova lemaza poboxae efikasnosti: algoritam se moe promeniti tako da se zavreme 𝑂(log 𝑛) izvrxava na samo 𝑂(𝑛/ log 𝑛) procesora, odnosno da muefikasnost bude 𝑂(1). Kuqna ideja poboxaa je korixee samo jednogrekurzivnog poziva (umesto dva), pri qemu se korak objediavaa i dae

Page 125: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

125 10. Paralelni algoritmi

Algoritam Paralelni Prefiks 2(𝑥, 𝑛);

Ulaz: 𝑥 (niz sa 𝑛 elemenata).

pretpostava se da je 𝑛 stepen dvojkeIzlaz: 𝑥 (qiji 𝑖-ti elemenat sadri 𝑖-ti prefiks).

begin

𝑃𝑃 2(1)

end

procedure PP 2(𝐾𝑜𝑟𝑎𝑘);

begin

if 𝐾𝑜𝑟𝑎𝑘 = 𝑛/2 then

𝑥[𝑛] := 𝑥[𝑛/2] ⋆ 𝑥[𝑛] ⋆ je asocijativna binarna operacijaelse

for 𝑖 := 1 to 𝑛/(2 ·𝐾𝑜𝑟𝑎𝑘) do in parallel

𝑥[2 · 𝑖 ·𝐾𝑜𝑟𝑎𝑘] := 𝑥[(2 · 𝑖− 1) ·𝐾𝑜𝑟𝑎𝑘] ⋆ 𝑥[2 · 𝑖 ·𝐾𝑜𝑟𝑎𝑘];

𝑃𝑃 2(2 ·𝐾𝑜𝑟𝑎𝑘);

for 𝑖 := 1 to 𝑛/(2 ·𝐾𝑜𝑟𝑎𝑘)− 1 do in parallel

𝑥[(2 · 𝑖+ 1) ·𝐾𝑜𝑟𝑎𝑘] := 𝑥[2 · 𝑖 ·𝐾𝑜𝑟𝑎𝑘] ⋆ 𝑥[(2 · 𝑖+ 1) ·𝐾𝑜𝑟𝑎𝑘]

end

Slika 10.2: Algoritam 𝑃𝑎𝑟𝑎𝑙𝑒𝑙𝑛𝑖 𝑝𝑟𝑒𝑓𝑖𝑘𝑠 2.

izvrxava paralelno.

10.3.4 Odreivae rangova u povezanoj listi

U paralelnim algoritmima mnogo je tee raditi sa povezanim listamanego sa nizovima, jer su liste suxtinski sekvencijalne. Povezanoj listimoe se pristupiti samo preko glave (prvog elementa), i lista se moraprolaziti element po element, bez mogunosti paralelizacije. U mnogimsluqajevima su, meutim, elementi liste (odnosno pokazivaqi na ih)smexteni u niz; redosled elemenata liste nezavisan je od redosleda unizu. U takvim sluqajevima, kad se listi pristupa paralelno, postojimogunost primene brzih paralelnih algoritama.

Rang elementa u povezanoj listi definixe se kao rastojae elementaod kraja liste. Tako, na primer, prvi elemenat ima rang 𝑛, drugi 𝑛 − 1,itd.

Problem. Data je povezana lista od 𝑛 elemenata koji su smexteni u niz𝐴 duine 𝑛. Izraqunati rangove svih elemenata liste.

Sekvencijalni problem se moe rexiti prostim prolaskom kroz listu.Metod koji emo iskoristiti za konstrukciju paralelnog algoritma zovese udvostruqavae. Svakom elementu dodeuje se po jedan procesor. Napoqetku svaki procesor zna samo adresu desnog (narednog) suseda svogelementa u listi. Posle prvog koraka svaki procesor zna elemenat narastojau dva (du liste) od svog elementa. Ako u koraku 𝑖 svaki procesorzna adresu elementa na rastojau 𝑘 od svog elementa, onda u narednomkoraku svaki procesor moe da pronae adresu elementa na rastojau 2𝑘.

Page 126: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

10.3. Algoritmi za raqunare sa zajedniqkom memorijom 126

Proces se nastava sve dok svi procesori ne dostignu kraj liste. Nekaje 𝑁 [𝑖] adresa elementa desno od elementa 𝑖 u listi, koju zna procesor 𝑃𝑖.Na poqetku je 𝑁 [𝑖] desni sused elementa 𝑖 (izuzev za posledi elemenatu listi, qiji je pokazivaq na desnog suseda nil). U suxtini, procesor𝑃𝑖 u svakom koraku zameuje 𝑁 [𝑖] vrednoxu 𝑁 [𝑁 [𝑖]], sve dok ne dostignekraj liste. Neka je 𝑅[𝑖] rang elementa 𝑖. Na poqetku se promenivoj 𝑅[𝑖]dodeuje vrednost 0, izuzev za posledi elemenat u listi, za koga seona postava na vrednost 1 (ovaj elemenat se od ostalih razlikuje popokazivaqu, koji ima vrednost nil). Kad procesor dobije adresu susedasa rangom 𝑅 razliqitim od nule, on moe da izraquna svoj rang (odnosnorang svog elementa). Na poqetku samo elemenat ranga 1 zna svoj rang. Posleprvog koraka elemenat ranga 2 otkriva da egov sused ima rang 1, pazakuquje da je egov sopstveni rang 2. Posle drugog koraka elementisa rangom 3 i 4 ustanovavaju svoje rangove, itd. Ako 𝑃𝑖 ustanovi da 𝑁 [𝑖]pokazuje na "rangirani" elemenat ranga 𝑅 posle 𝑑 koraka udvostruqavaa,onda je rang elementa 𝑖 jednak 2𝑑−1+𝑅. Ovaj algoritam (slika 10.3) se moelako prilagoditi modelu EREW, (dovono je da svaki procesor nezavisnoizraqunava svoju kopiju 𝐷[𝑖] promenive 𝐷).

Algoritam Rangovi(𝑁);

Ulaz: 𝑁 (niz od 𝑛 elemenata).

Izlaz: 𝑅 (rangovi svih elemenata u nizu).

begin

𝐷 := 1;

Svaki procesor moe imati svoju lokalnu promenivu 𝐷ovde je 𝐷 zajedniqka promenivado in parallel procesor 𝑃𝑖 je aktivan dok 𝑅[𝑖] ne postane razliqito od nule

𝑅[𝑖] := 0;

if 𝑁 [𝑖] = nil then 𝑅[𝑖] := 1;

while 𝑅[𝑖] = 0 do

if 𝑅[𝑁 [𝑖]] = 0 then

𝑅[𝑖] := 𝐷 +𝑅[𝑁 [𝑖]]

else

𝑁 [𝑖] := 𝑁 [𝑁 [𝑖]];

𝐷 := 2 ·𝐷end

Slika 10.3: Paralelni algoritam za odreivae rangova elemenatapovezane liste.

Sloenost. Proces udvostruqavaa omoguuje da svaki procesor dos-tigne kraj liste posle najvixe ⌈log2 𝑛⌉ koraka, pa je 𝑇 (𝑛, 𝑛) = 𝑂(log 𝑛).Efikasnost algoritma je 𝐸(𝑛, 𝑛) = 𝑂(1/ log 𝑛). Popravka efikasnostizahtevala bi temenu preradu algoritma, jer je ukupan broj koraka𝑂(𝑛 log 𝑛).

Poznavae rangova omoguuje transformaciju liste u niz za 𝑂(log 𝑛)paralelnih koraka. Posle izraqunavaa svih rangova, elementi se moguparalelno prekopirati na svoje lokacije u nizu, pa se ostatak izraqunavaa

Page 127: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

127 10. Paralelni algoritmi

moe izvrxiti direktno na nizu, posle qega je ihova obrada mnogojednostavnija.

10.3.5 Tehnika Ojlerovog obilaska

Mnogi algoritmi za rad sa stablima mogu se paralelizovati takoda se paralelno obrauje kompletna generacija qvorova (na primer, kodturnirskog algoritma za nalaee maksimuma). Vreme izvrxavaa takvogalgoritma je proporcionalno visini stabla. Ako je stablo sa 𝑛 qvorovadovono uravnoteeno i visina mu je 𝑂(log 𝑛), onda je ovaj pristup sasvimdobar. Meutim, ako stablo nije uravnoteeno, visina stabla moe da budeu najgorem sluqaju 𝑛−1, pa se mora traiti neki drugi pristup. TehnikaOjlerovog obilaska je alatka za konstrukciju paralelnih algoritama nastablima, pogodna i za neuravnoteena stabla.

Neka je 𝑇 stablo. Pretpostavimo da je 𝑇 predstaveno uobiqajenomlistom povezanosti, uz jednu dopunu. Kao i obiqno, postoji pokazivaq𝐸[𝑖] na poqetak liste grana susednih qvoru 𝑖 (ako je ova lista prazna,onda 𝐸[𝑖] ima vrednost nil). Ta lista sastoji se od slogova koji sadreodgovarajuu granu (𝑖, 𝑗) (pri tome je dovono smestiti samo 𝑗, jer je𝑖 poznato) i pokazivaq 𝑁𝑎𝑟𝑒𝑑𝑛𝑎(𝑖, 𝑗) na narednu granu u listi. Svakaneusmerena grana (𝑖, 𝑗) predstavena je sa dve usmerene kopije, (𝑖, 𝑗) i (𝑗, 𝑖).Slogovi liste sadre i dodatni pokazivaq: slog koji odgovara grani (𝑖, 𝑗)sadri pokazivaq na granu (𝑗, 𝑖). Ovo je potrebno da bi se grana (𝑗, 𝑖) moglabrzo pronai kad se zna adresa grane (𝑖, 𝑗). Primer ovako predstavenogstabla dat je na slici 10.4; pokazivaqi na kopije grana zbog preglednostinisu prikazani.

t

t

t

t

𝑐

𝑓

t

tO

W

𝑑

𝑔

t

t

𝑎

𝑒

t

tO

W

𝑏

1

25

3 4

𝐸1 - (1, 2) - (1, 5)

𝑎 𝑏

2

3

4

5

-

-

-

-

(2, 3)

(3, 2)

(4, 2)

(5, 1)

- (2, 1)𝑐

𝑓

𝑔

𝑒

- (2, 4)

𝑑

M

U

UK

Slika 10.4: Reprezentacija stabla.

Tehnika Ojlerovog obilaska zasniva se na ideji da se formira listagrana stabla, i to onim redom kojim se grane pojavuju u Ojlerovom ciklusuza usmerenu verziju stabla (u ciklusu se svaka neusmerena grana pojavujedva puta, po jednom u oba smera). Kad se zna ova lista, mnoge operacijesa stablom mogu se izvesti direktno na listi, kao da je lista linearna.Sekvencijalnim algoritmom lako se moe pregledati stablo i usput izvrxiti

Page 128: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

10.3. Algoritmi za raqunare sa zajedniqkom memorijom 128

potrebne operacije. Ovakva "linearizacija" omoguuje da se operacijesa stablom efikasno izvode paralelno. Videemo dva primera takvihoperacija, poxto prethodno razmotrimo formirae Ojlerovog ciklusa.

Sekvencijalno nalaee Ojlerovog obilaska stabla 𝑇 (u kome se svakagrana pojavuje dva puta) je jednostavno. Moe se izvesti obilazak stablakoristei pretragu u dubinu, vraajui se suprotno usmerenom granomprilikom svakog povratka nazad u toku pretrage. Sliqna stvar se moeizvesti i paralelno. Neka 𝑤(𝑖, 𝑗) oznaqava granu koja sledi iza grane(𝑖, 𝑗) u ciklusu. Ispostava se da se 𝑤(𝑖, 𝑗) moe definisati sledeomjednakoxu

𝑤(𝑖, 𝑗) =

𝑁𝑎𝑟𝑒𝑑𝑛𝑎(𝑗, 𝑖) ako 𝑁𝑎𝑟𝑒𝑑𝑛𝑎(𝑗, 𝑖) nije nil𝐸[𝑗] u ostalim sluqajevima

,

na osnovu koje se lako paralelno izraqunava. Drugim reqima, lista granasusednih qvoru 𝑗 prolazi se cikliqkim redosledom (ako je (𝑗, 𝑖) posledagrana u listi qvora 𝑗, onda se uzima prva grana iz te liste, ona na kojupokazuje 𝐸[𝑗]). Na primer, ako krenemo od grane 𝑎 na slici 10.4, onda seciklus sastoji od grana 𝑎, 𝑑, 𝑔, 𝑐, 𝑓 , 𝑒, 𝑏, ℎ, i ponovo 𝑎. Qienica da𝑁𝑎𝑟𝑒𝑑𝑛𝑎(𝑗, 𝑖) sledi iza (𝑖, 𝑗) u ciklusu obezbeuje da e grana (𝑗, 𝑖) doina red posle prolaska svih grana susednih qvoru 𝑗. Prema tome, podstablosa korenom u 𝑗 bie kompletno pregledano pre povratka u qvor 𝑖.

Kad je lista grana u Ojlerovom obilasku konstruisana, proizvonagrana (𝑟, 𝑡) bira se za polaznu, a grana koja joj prethodi oznaqava se kaokraj liste. Qvor 𝑟 se bira za koren stabla. Posle toga se grane algoritmom𝑅𝑎𝑛𝑔𝑜𝑣𝑖 sa slike 10.3 mogu numerisati, u skladu sa svojim poloajem ulisti. Neka 𝑅(𝑖, 𝑗) oznaqava rang grane (𝑖, 𝑗) u listi. Tako je, na primer,𝑅(𝑟, 𝑡) = 2(𝑛 − 1), gde je 𝑛 broj qvorova. Prikazaemo sada dva primeraoperacija sa stablom| dolaznu numeraciju qvorova, i izraqunavae brojapotomaka za sve qvorove.

Za granu (𝑖, 𝑗) u ciklusu kaemo da je direktna grana ako je usmerenaod korena, odnosno da je povratna grana u protivnom. Numeracija qvorovaomoguuje razlikovae direktnih od povratnih grana: grana (𝑖, 𝑗) je direktnagrana ako i samo ako je 𝑅(𝑖, 𝑗) > 𝑅(𝑗, 𝑖). Poxto su dve kopije grane (𝑖, 𝑗)povezane pokazivaqima, lako je ustanoviti koja je od ih direktna grana.Xta vixe, ova provera se moe obaviti paralelno za sve grane. Direktnegrane su interesantne, jer odreuju redosled qvorova pri dolaznoj numeraciji.Neka je (𝑖, 𝑗) direktna grana koja vodi do qvora 𝑗 (odnosno, qvor 𝑖 je otacqvora 𝑗 u stablu). Ako je 𝑓(𝑖, 𝑗) broj direktnih grana koje slede iza (𝑖, 𝑗)u listi, onda je redni broj qvora 𝑗 jednak 𝑛 − 𝑓(𝑖, 𝑗). Redni broj korena𝑟, jedinog qvora do koga ne vodi ni jedna direktna grana, je 1. Primenomvarijante algoritma sa udvostruqavaem moe se izraqunati vrednost𝑓(𝑖, 𝑗) za svaku direktnu granu (𝑖, 𝑗). Precizniju razradu algoritma ostavamoqitaocu kao vebae.

Drugi primer je izraqunavae broja potomaka svakog qvora u stablu.Neka je (𝑖, 𝑗) (jedinstvena) direktna grana koja vodi do zadatog qvora 𝑗.Posmatrajmo grane koje slede iza grane (𝑖, 𝑗) u listi. Broj qvorova ispod𝑗 u stablu jednak je broju direktnih grana ispod 𝑗 u stablu. Mi ve znamokako se paralelno izraqunavaju vrednosti 𝑓(𝑖, 𝑗), jednake broju direktnihgrana koje slede iza grane (𝑖, 𝑗) u listi. Na sliqan naqin 𝑓(𝑗, 𝑖) je broj

Page 129: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

129 10. Paralelni algoritmi

direktnih grana koje slede iza grane (𝑗, 𝑖) u listi. Lako je videti da jebroj potomaka qvora 𝑗 jednak 𝑓(𝑖, 𝑗)−𝑓(𝑗, 𝑖). Vreme izvrxavaa oba opisanaalgoritma na modelu EREW je 𝑇 (𝑛, 𝑛) = 𝑂(log 𝑛)

10.4 Algoritmi za mree raqunara

Mree raqunara mogu se modelirati grafovima, obiqno neusmerenim.Procesori odgovaraju qvorovima, a dva qvora su povezana granom akopostoji direktna veza izmeu odgovarajuih procesora. Svaki procesorima svoju lokalnu memoriju, a posredstvom mree moe da pristupi lokalnimmemorijama drugih procesora. Prema tome, sva memorija je na neki naqinzajedniqka, ali cena pristupa nekoj promenivoj zavisi od lokacija procesorai promenive. Pristup eenoj promenivoj moe biti brz koliko ilokalni pristup (ako je promeniva u istom procesoru), ili toliko sporkoliko i prolazak kroz celu mreu (u sluqaju kad graf ima oblik nizapovezanih qvorova). Trajae pristupa je negde izmeu ove dve krajnosti.Procesori komuniciraju razmenom poruka. Kad procesor treba da pristupipromenivoj smextenoj u lokalnoj memoriji drugog procesora, on xaeporuku sa zahtevom za promenivom. Poruka se usmerava kroz mreu.

Vixe razliqitih grafova koriste se za mree raqunara. Najjednostavnijimeu ima su linearni niz, prsten, binarno stablo, zvezda i dvodimenzi-onalna mrea. Efikasnost komunikacije raste sa brojem grana u mrei.Meutim, grane su skupe | to se moe objasniti poveaem povrxine kojuzauzimaju veze, a time poveaem dimenzija mree i vremena komunikacije.Zbog toga se obiqno trai kompromis. Ne postoji tip grafa koji je univerzalnodobar. Pogodnost odreenog grafa bitno zavisi od naqina komuniciraau okviru konkretnog algoritma. Meutim, postoje neke osobine grafova,koje mogu biti vrlo korisne za vixe razliqitih algoritama. U nastavkuemo ih navesti, kao i primere mrea raqunara.

Bitan parametar mree je dijametar odgovarajueg grafa, tj. najveerastojae neka dva qvora. Dijametar odreuje maksimalni broj grana naputu poruka do odredixta. Dvodimenzionalna mrea 𝑛×𝑛 ima dijametar2𝑛, a kompletno binarno stablo sa 𝑛 qvorova ima dijametar 2 log2(𝑛+1)−2.prema tome moe da isporuqi poruku mnogo bre nego dvodimenzionalnamrea. S druge strane, stablo ima usko grlo, jer sav saobraaj iz jedneu drugu polovinu stabla prolazi kroz koren. Dvodimenzionalna mreanema usko grlo i vrlo je simetriqna, xto je vano za algoritme u kojimaje komunikacija simetriqna.

Hiperkocka je popularna struktura koja kombinuje prednosti visokesimetrije, malog dijametra, mnoxtva alternativnih puteva izmeu dvaqvora i odsustva uskih grla. 𝑑-dimenzionalna hiperkocka sastoji se od𝑛 = 2𝑑 procesora. Adrese procesora su 𝑑-torke brojeva iz skupa 0, 1 (kojese mogu kodirati brojevima od 0 do 2𝑑 − 1). Prema tome, svaka adresa sesastoji od 𝑑 bita. Procesor 𝑃𝑖 je povezan sa procesorom 𝑃𝑗 ako i samo akose binarni zapis 𝑖 razlikuje od binarnog zapisa 𝑗 na taqno jednom bitu.Rastojae izmeu proizvona dva procesora je uvek mae ili jednako od 𝑑,jer se od 𝑃𝑖 do 𝑃𝑗 moe doi promenom najvixe 𝑑 bita, jednog po jednog. Naslici 10.5 prikazana je qetvorodimenzionalna hiperkocka. Hiperkockaobezbeuje bogatstvo veza, jer postoji mnogo razliqitih puteva izmeu

Page 130: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

10.4. Algoritmi za mree raqunara 130

svaka dva procesora (odgovarajui biti mogu se meati proizvonim redosledom).Hiperkocka se moe takoe kombinovati sa nekom drugom mreom, naprimer umeui mree umesto temena hiperkocke. U primeni se pojavujui druge strukture mrea.

u u

uu

u u

uuu u

uu

u u

uu

Slika 10.5: Qetvorodimenzionalna hiperkocka.

10.4.1 Sortirae na nizu

Razmotriemo najpre jednostavan problem sortiraa na nizu procesora.Na raspolagau je 𝑛 procesora 𝑃1, 𝑃2, . . . , 𝑃𝑛 i zadato je 𝑛 brojeva 𝑥1, 𝑥2, . . . , 𝑥𝑛.Svaki procesor quva jedan ulazni podatak. Ci je preraspodeliti brojevemeu procesorima tako da najmai od ih bude u 𝑃1, sledei u 𝑃2, itd.U opxtem sluqaju mogue je dodeivae vixe ulaznih podataka jednomprocesoru. Videemo da se algoritam moe prilagoditi i takvim uslovima.Procesori su povezani u linearni niz: procesor 𝑃𝑖 je povezan sa procesorom𝑃𝑖+1, 𝑖 = 1, 2, . . . , 𝑛−1. Poxto svaki procesor moe da komunicira samo sasusedima, uporeivae i razmenu podataka mogue je vrxiti samo izmeuelemenata koji su susedni u nizu. U najgorem sluqaju algoritam zahtevaizvrxavae 𝑛 − 1 koraka, koliko je potrebno da se podatak premesti sajednog na drugi kraj niza. Algoritam se u osnovi izvrxava na sledeinaqin. Svaki procesor uporeuje svoj broj sa brojem jednog od svojih suseda,razmeuje brojeve ako je ihov redosled pogrexan, a zatim isti posaoobava sa drugim susedom (susedi se moraju smeivati, jer bi se u protivnomuporeivali uvek isti brojevi). Isti proces nastava se sve dok brojevine budu poreani na eeni naqin. Koraci se dele na neparne i parne.U neparnim koracima procesori sa neparnim indeksom uporeuju svoje sabrojevima svojih desnih suseda; u parnim koracima procesori sa parnimindeksom uporeuju svoje sa brojevima svojih desnih suseda (slika 10.6).Na taj naqin su svi procesori sinhronizovani i uporeivae uvek vrxeprocesori koji to i treba da rade. Ako procesor nema odgovarajueg suseda(na primer prvi procesor u drugom koraku), on u toku tog koraka miruje.Ovaj algoritam se zove sortirae parno-neparnim transpozicijama,videti sliku 10.7. Primer rada algoritma prikazan je na slici 10.8.Primetimo da se u ovom primeru sortirae zavrxava posle samo xestkoraka. Ipak, raniji zavrxetak texko je otkriti u mrei. Prema tome,boe je ostaviti algoritam da se izvrxava do svog zavrxetka u najgoremsluqaju.

Page 131: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

131 10. Paralelni algoritmi

𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 𝑥6 𝑥7 𝑥8

Slika 10.6: Sortirae parno-neparnim transpozicijama.

Algoritam Sortiranje na nizu(𝑥, 𝑛);

Ulaz: 𝑥 (niz sa 𝑛 elemenata, pri qemu je 𝑥𝑖 u procesoru 𝑃𝑖).

Izlaz: 𝑥 (sortirani niz, tako da je 𝑖-ti najmai elemenat u 𝑃𝑖).

begin

do in parallel ⌈𝑛/2⌉ puta𝑃2𝑖−1 i 𝑃2𝑖 uporeuju svoje elemente i po potrebi ih razmeuju;

za sve 𝑖, takve da je 1 < 2𝑖 ≤ 𝑛𝑃2𝑖 i 𝑃2𝑖+1 uporeuju svoje elemente i po potrebi ih razmeuju;

za sve 𝑖, takve da je 1 ≤ 2𝑖 < 𝑛ako je 𝑛 neparno, ovaj korak se izvrxava samo ⌊𝑛/2⌋ puta

end

Slika 10.7: Algoritam za sortirae na nizu procesora.

7 3 6 5 8 1 4 2

3

3

3

3

1

1

1

1

7

5

5

1

3

2

2

2

5

7

1

5

2

3

3

3

6

1

7

2

5

4

4

4

1

6

2

7

4

5

5

5

8

2

6

4

7

6

6

6

2

8

4

6

6

7

7

7

4

4

8

8

8

8

8

8

Slika 10.8: Primer sortiraa parno-neparnim transpozicijama.

Page 132: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

10.4. Algoritmi za mree raqunara 132

Algoritam 𝑆𝑜𝑟𝑡𝑖𝑟𝑎𝑛𝑗𝑒 𝑛𝑎 𝑛𝑖𝑧𝑢 izgleda prirodno i jasno, ali dokazispravnosti egovog rada nije trivijalan. Na primer, elemenat se u nekimkoracima moe udaavati od svog konaqnog poloaja. U primeru na slici 10.8broj 5 se kree ulevo dva koraka pre nego xto poqne sa kretaem udesno,a 3 ide do levog kraja i ostaje tamo tri koraka pre nego xto krene nazadudesno. Dokaz ispravnosti rada paralelnih algoritama nije jednostavan,zbog meuzavisnosti delovaa razliqitih procesora. Ponaxae jednogprocesora utiqe na sve ostale procesore, pa je obiqno texko usredsreditise na jedan procesor i dokazati da je to xto on radi ispravno; moraju seposmatrati svi procesori zajedno.

Teorema 15. Na kraju izvrxavaa algoritma 𝑆𝑜𝑟𝑡𝑖𝑟𝑎𝑛𝑗𝑒 𝑛𝑎 𝑛𝑖𝑧𝑢 datibrojevi su sortirani.

Dokaz. Dokaz se izvodi indukcijom po broju elemenata. Pri tome se tvr-ee malo pojaqava: sortirae se zavrxava posle 𝑛 koraka, bez obzirada li je prvi korak paran ili neparan. Za 𝑛 = 2 sortirae se zavrxavaposle najvixe dva koraka; sortirae traje dva koraka ako je prvi korakneparan. Pretpostavimo da je teorema taqna za 𝑛 procesora, i posmatrajmosluqaj 𝑛+ 1 procesora. Skoncentriximo pau na maksimalni elemenat,i pretpostavimo da je to 𝑥𝑚 (u primeru na slici 10.8 to je 𝑥5). U prvomkoraku 𝑥𝑚 se uporeuje sa 𝑥𝑚−1 ili 𝑥𝑚+1, zavisno od toga da li je𝑚 parnoili neparno. Ako je 𝑚 parno, nema zamene jer je 𝑥𝑚 vee od 𝑥𝑚−1. Ishodje isti kao u sluqaju da je broj 𝑥𝑚 na poqetku bio u procesoru 𝑃𝑚−1, ida je zamena bila izvrxena. Prema tome, bez gubitka opxtosti moe sepretpostaviti da je𝑚 neparno. U tom sluqaju broj 𝑥𝑚 se uporeuje sa 𝑥𝑚+1,zameuje, i kao najvei se premexta korak po korak udesno (dijagonalno naslici 10.8), sve dok ne doe na mesto 𝑥𝑛+1, a onda ostaje tamo. To je pozicijakoju 𝑥𝑚 i treba da zauzme, pa sortirae ispravno tretira maksimalnielement.

Pokazaemo sada indukcijom da je i sortirae ostalih 𝑛 elemenatakorektno. Posmatrajmo dijagonalu nastalu kretaem maksimalnog elemenata(videti sliku 10.9). Uporeivaa u kojima uqestvuje maksimalni elemenatse ignorixu. Uporeivaa delimo na dve grupe, ona ispod, i ona iznaddijagonale. Zatim "transliramo" trougao iznad dijagonale za jedno poenanie i jedno poe ulevo. Drugim reqima, za uporeivaa u goremtrouglu korak 𝑖 se sada zove 𝑖+1. Na primer, posmatrajmo uporeivaa 1 sa8 i 4 sa 2 u prvom koraku na slici 10.8. Prvo uporeivae je na dijagonali,pa se ignorixe; drugo je iznad dijagonale, pa se smatra delom koraka 2,umesto koraka 1. Prema tome, korak 2 sastoji se od uporeivaa 7 sa 5, 6sa 1, i 4 sa 2. Meutim, ovo je regularni parni korak sa samo 𝑛 elemenata.Korak 1 i sva uporeivaa u kojima uqestvuje maksimalni elemenat sesada mogu prosto ignorisati, posle qega su preostala uporeivaa identiqnasa nizom uporeivaa koja se izvode pri izvrxavau algoritma sa 𝑛elemenata (pri qemu je prvi korak neparan). Prema induktivnoj hipotezisortirae 𝑛 elemenata se izvodi korektno; prema tome, i sortirae svih𝑛 + 1 elemenata je korektno, a zavrxava se posle 𝑛 + 1 koraka.

Do sada smo razmatrali sluqaj jednog elementa po procesoru. Pret-postavimo sada da svaki procesor pamti 𝑘 elemenata, i razmotrimo zapoqetak sluqaj samo dva procesora. Pretpostavimo da je ci da procesori

Page 133: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

133 10. Paralelni algoritmi

Slika 10.9: Korak indukcije u dokazu ispravnosti sortiraa parno-neparnim transpozicijama, Teorema 15.

meusobno razmene elemente, tako da 𝑘 najmaih elemenata dou u 𝑃1,a 𝑘 najveih u 𝑃2. Jasno je da u najgorem sluqaju svi elementi morajubiti razmeeni, pa je tada broj razmena elemenata 2𝑘. Sortirae se moeizvesti ponavaem sledeeg koraka sve dok je potrebno: 𝑃1 xae svojnajvei elemenat u 𝑃2, a 𝑃2 svoj najmai elemenat u 𝑃1. Proces se zavrxavau trenutku kad je najvei elemenat u 𝑃1 mai ili jednak od najmaegelementa u 𝑃2. Ovaj korak zove se objediavae-razdvajae. Koristei ovajkorak kao osnovni u sortirau parno-neparnim transpozicijama, dobijase uopxtee sortiraa na sluqaj vixe elemenata po procesoru.

Iako je ovakav algoritam sortiraa optimalan za niz procesora, egovaefikasnost je mala. Imamo 𝑛 procesora koji izvrxavaju 𝑛 koraka; prematome, ukupan broj koraka je 𝑛2. Mala efikasnost𝑂(log 𝑛/𝑛) nije iznenaujua,jer efikasan algoritam za sortirae mora imati mogunost da zameujemesta meusobno udaenim elementima. Niz procesora ne omoguuje takvezamene. U sledeem odeku prikazaemo specijalizovane mree za efikasnosortirae.

10.4.2 Mree za sortirae

Kad konstruixemo efikasan sekvencijalni algoritam, interesuje nassamo ukupan broj koraka. U sluqaju konstrukcije paralelnih algoritama,ci je uqiniti korake xto nezavisnijim. Posmatrajmo sortirae objediavaem.Dva rekurzivna poziva su potpuno nezavisna i mogu se izvrxiti paralelno.Meutim, objediavae kao deo algoritma izvrxava se na sekvencijalninaqin. U izlazni niz se 𝑖-ti elemenat stava tek kad je tamo ve stavenoprvih 𝑖−1 elemenata. Ako nam poe za rukom paralelizacija objediavaa,onda emo moi da paralelizujemo i sortirae objediavaem.

Opisaemo sada drugaqiji algoritam objediavaa, zasnovan na tehnicirazlagaa. Pretpostavimo zbog jednostavnosti da je 𝑛 stepen dvojke. Nekasu 𝑎1, 𝑎2, . . . , 𝑎𝑛; 𝑏1, 𝑏2, . . . , 𝑏𝑛 dva sortirana niza koje treba objediniti,i neka je 𝑥1, 𝑥2, . . . , 𝑥2𝑛 rezultat ihovog objediavaa. Specijalno je,na primer, 𝑥1 = min𝑎1, 𝑏1 i 𝑥2𝑛 = max𝑎𝑛, 𝑏𝑛. Potrebno je objedinitirazliqite delove ovih nizova paralelno, tako da ihovo kompletno objediavaebude jednostavno. Ci se moe postii podelom dva niza na po dva dela| sa neparnim, odnosno parnim indeksima. Svaki deo se objediava saodgovarajuim delom drugog niza, a onda se kompletira objediavae.Neka je 𝑜1, 𝑜2, . . . , 𝑜𝑛 objedieni redosled neparnih nizova 𝑎1, 𝑎3, . . . , 𝑎𝑛−1;𝑏1, 𝑏3, . . ., 𝑏𝑛−1, i neka je 𝑒1, 𝑒2, . . . , 𝑒𝑛 objedieni redosled parnih nizova

Page 134: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

10.4. Algoritmi za mree raqunara 134

𝑎2, 𝑎4, . . . , 𝑎𝑛; 𝑏2, 𝑏4, . . . , 𝑏𝑛. Oqigledno je 𝑥1 = 𝑜1 i 𝑥2𝑛 = 𝑒𝑛. Narednateorema pokazuje da se i ostatak objediavaa takoe lako izvodi.

Teorema 16. U skladu sa uvedenim oznakama, za 𝑖 = 1, 2, . . . , 𝑛 − 1 vai𝑥2𝑖 = min𝑜𝑖+1, 𝑒𝑖 i 𝑥2𝑖+1 = max𝑜𝑖+1, 𝑒𝑖.

Dokaz. Zbog jednostavnosti se pod parnim, odnosno neparnim elementimapodrazumevaju elementi nizova 𝑎𝑖, 𝑏𝑖 sa parnim, odnosno neparnim indeksom.Razmotrimo elemenat 𝑒𝑖. Poxto je 𝑒𝑖 𝑖-ti elemenat u sortiranom redosleduparnih nizova, 𝑒𝑖 je vee ili jednako od bar 𝑖 parnih elemenata u oba niza.Meutim, svakom parnom elementu koji je mai ili jednak od 𝑒𝑖 odgovarajox jedan neparni elemenat koji je takoe mai ili jednak od 𝑒𝑖 (jer smopoxli od dva sortirana niza). Prema tome, 𝑒𝑖 je vee ili jednako od bar2𝑖 elemenata iz oba niza. Drugim reqima, ustanovili smo da je 𝑒𝑖 ≥ 𝑥2𝑖.Na sliqan naqin, 𝑜𝑖+1 je vee ili jednako od bar 𝑖+1 neparnih elemenata,iz qega sledi da je vee ili jednako od bar 2𝑖 elemenata ukupno (za svakineparan elemenat sem prvog, koji je mai ili jednak od 𝑜𝑖+1, postoji joxjedan parni elemenat koji je mai ili jednak od 𝑜𝑖+1). Prema tome, vaii nejednakost 𝑜𝑖+1 ≥ 𝑥2𝑖. Specijalno, za 𝑖 = 𝑛 − 1 dobija se 𝑒𝑛−1 ≥ 𝑥2𝑛−2

i 𝑜𝑛 ≥ 𝑥2𝑛−2, pa poxto je 𝑒𝑛 = 𝑥2𝑛, tvree teoreme je taqno za 𝑖 = 𝑛− 1.Stavajui dae u gore nejednakosti redom 𝑖 = 𝑛−2, 𝑛−3, . . . , 1, dobijamoda je tvree teoreme taqno i za ostale vrednosti 𝑖, qime je zavrxen dokazteoreme.

Vana posledica Teoreme 16 je da se kompletno objediavae nizova𝑜1, 𝑜2, . . . , 𝑜𝑛 i 𝑒1, 𝑒2, . . . , 𝑒𝑛 moe izvrxiti u jednom paralelnom koraku.Ostatak posla izvrxavaju rekurzivni pozivi opisanog algoritma. Konstrukcijaparalelnog algoritma sledi direktno iz teoreme. Slika 10.10 ilustrujerekurzivnu konstrukciju objediavaa, a na slici 10.11 se vidi primerkompletnog sortiraa, koje se zove sortirae parno-neparnim objediavaem.Pravougaonici na levoj strani slike 10.11, oznaqeni sa "𝑛/2 sortirae",predstavaju rekurzivne kopije kompletne mree za sortirae, koje sortirajupo 𝑛/2 brojeva.

Sloenost. Diferencna jednaqina za ukupan broj koraka 𝑇𝑀 (𝑛) zaobjediavae je 𝑇𝑀 (2𝑛) = 2𝑇𝑀 (𝑛) + 𝑛 − 1, 𝑇𝑀 (1) = 1. Iz toga sledida je ukupan broj uporeivaa 𝑂(𝑛 log 𝑛), u poreeu sa sekvencijalnimalgoritmom koji zahteva samo𝑂(𝑛) koraka. Dubina rekurzije, koja odgovarabroju paralelnih koraka, je 𝑂(log 𝑛). Diferencna jednaqina za ukupan brojkoraka 𝑇𝑆(𝑛) za sortirae parnoneparnim objediavaem je 𝑇𝑆(2𝑛) =2𝑇𝑆(𝑛) +𝑂(𝑛 log 𝑛), 𝑇𝑆(2) = 1. eno rexee je 𝑇𝑆(𝑛) = 𝑂(𝑛 log2 𝑛). Mreasadri po 𝑛 procesora u svakoj "koloni", a ena dubina (tj. broj kolona)je 𝑂(log2 𝑛), pa je ukupan broj procesora u mrei 𝑂(𝑛 log2 𝑛). Primetimoda bi se istih 𝑛 procesora mogli koristiti u svim kolonama, ali oni bitada morali biti skoro potpuno ispovezivani. Jedini tip izraqunavaau mrei je uporeivae i eventualna zamena, pa su potrebni jednostavniprocesori koji se sastoje od komparatora sa dva ulaza i dva izlaza.

Page 135: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

135 10. Paralelni algoritmi

𝑎1

𝑎2

𝑎3

𝑎4

𝑎5

𝑎6

𝑎7

𝑎8

tttttttt𝑏1𝑏2𝑏3𝑏4𝑏5𝑏6𝑏7𝑏8

tttttttt

𝑛2= 4

ttttttttttttttt

𝑥1

𝑥2

𝑥3

𝑥4

𝑥5

𝑥6

𝑥7

𝑥8

𝑥9

𝑥10

𝑥11

𝑥12

𝑥13

𝑥14

𝑥15

𝑥16t

𝑜6𝑒5𝑜7𝑒6𝑜8𝑒7𝑒8

𝑜1𝑜2𝑒1𝑜3𝑒2𝑜4𝑒3𝑜5𝑒4

vae

dia-

obje-

𝑛2= 4

kolo za

vae

dia-

obje-

kolo za

Slika 10.10: Kolo za parnoneparno objediavae dva niza od po 𝑛 = 8elemenata.

tttttttttttttttt

ttttttttttttttt

𝑥𝑠(1)

𝑥𝑠(2)

𝑥𝑠(3)

𝑥𝑠(4)

𝑥𝑠(5)

𝑥𝑠(6)

𝑥𝑠(7)

𝑥𝑠(8)

𝑥𝑠(9)

𝑥𝑠(10)

𝑥𝑠(11)

𝑥𝑠(12)

𝑥𝑠(13)

𝑥𝑠(14)

𝑥𝑠(15)

𝑥𝑠(16)t

tttttttttttttttttttt

𝑥1

𝑥2

𝑥3

𝑥4

𝑥5

𝑥6

𝑥7

𝑥8

𝑥9

𝑥10

𝑥11

𝑥12

𝑥13

𝑥14

𝑥15

𝑥16

𝑛4= 4

vae

dia-

obje-

𝑛4= 4

𝑛2= 8

rae

sorti-

kolo za

𝑛2= 8

rae

sorti-

kolo za

kolo za

vae

dia-

obje-

kolo za

Slika 10.11: Primer sortiraa 16 brojeva pomou kola za sortiraeparno-neparnim objediavaem.

Page 136: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

10.4. Algoritmi za mree raqunara 136

10.4.3 Nalaee 𝑘-tog najmaeg elementa na stablu

Pretpostavimo sada da je mrea raqunara kompletno binarno stablovisine ℎ− 1 sa 𝑛 = 2ℎ−1 listova, odnosno 2ℎ − 1 procesora, pridruenihqvorovima stabla. Ulaz je niz 𝑥1, 𝑥2, . . . , 𝑥𝑛, pri qemu se u poqetnom trenutku𝑥𝑖 quva u listu 𝑖. Raqunari u obliku stabla koriste se npr. u vezi saobradom slika, pri qemu listovi odgovaraju elementima ulaznog nizaa algoritmi koji ih obrauju su hijerarhijski. Ovde emo razmotritiproblem nalaea 𝑘-tog najmaeg elementa.

Podsetimo se najpre sekvencijalnog algoritma za nalaee 𝑘-tog naj-maeg elementa. Zbog jednostavnosti pretpostavimo da su elementi nizarazliqiti. Algoritam je probabilistiqki. U svakom koraku bira se sluqajnielemenat 𝑥 kao pivot. Rang elementa 𝑥 izraqunava se uporeivaem 𝑥 sasvim ostalim elementima, a onda se eliminixu elementi koji su mai ilivei od 𝑥, zavisno od toga da li je rang mai ili vei od 𝑘. Izvrxavaealgoritma obustava se u trenutku kad je rang pivota 𝑘. Oqekivani brojiteracija je 𝑂(log 𝑛), a oqekivani broj uporeivaa je 𝑂(𝑛). Postoje trirazliqite faze u svakoj iteraciji algoritma: (1) izbor sluqajnog elementa,(2) izraqunavae egovog ranga, i (3) eliminacija. Opisaamo efikasnuparalelnu realizaciju svake od faza.

Izbor sluqajnog elementa moe se postii organizovaem turnira nastablu. Svaki list xae svoj broj ocu, gde se on "takmiqi" sa brojembrata. Pobednik u partiji odreuje se bacaem novqia. Broj koji jepobedio prelazi u drugo kolo takmiqea | ide uvis po stablu. Processe nastava sve dotle dok koren stabla ne izabere taqno jedan broj kaoukupnog pobednika (ovaj postupak je regularan samo u prvoj iteraciji;razmotriemo kasnije kako ga treba popraviti, da bi radio ispravno ikad su neki elementi eliminisani). Brojpobednik se zatim xae nizstablo do svih listova, nivo po nivo; u procesu slaa uqestvuje svakiqvor stabla, xaui dobijeni broj i levom i desnom sinu. Poxto svilistovi saznaju koji je broj pivot, oni svoje brojeve mogu da uporede sapivotom u jednom paralelnom koraku. Listovi zatim xau navixe, svomocu, jedinicu, ako je ihov broj mai ili jednak od pivota, odnosno nuluu protivnom. Rang pivota je broj jedinica poslatih navixe. Sabiraebrojeva koji se xau navixe lako se izvodi tako xto svaki qvor sabirabrojeve dobijene od sinova. Posle toga koren xae nanie rang pivota, isvaki list moe nezavisno da ustanovi da li treba eliminixe svoj broj.Ukupno postoje qetiri "talasa" komunikacije u svakoj iteraciji: (1) uzstablo da bi se izabrao pivot, (2) niz stablo, da bi se pivot poslao dolistova, (3) uz stablo, da bi se izraqunao rang pivota, i (4) niz stablo sexae rang pivota.

Posle prve iteracije pojavuje se jedan problem; poxto su neki elementieliminisani, takmiqari vixe nisu ravnopravni. Posmatrajmo, na primer,ekstremni sluqaj kad su u jednoj polovini stabla eliminisani svi listovisem jednog. Preostali elemenat u toj polovini stabla "provui" e se do"finala" bez ikakvog takmiqea, a onda e biti izabran sa verovatnoom1/2, dok je verovatnoa izbora ostalih elemenata mnogo maa. Volelibismo da oquvamo uniformnost raspodele verovatnoa prilikom izborapivota u svakoj iteraciji. Uniformnost se moe oquvati na sledei naqin.Procesori, qiji su brojevi eliminisani u prethodnim kolima, xau navixe

Page 137: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

137 10. Paralelni algoritmi

specijalnu vrednost nil, koju svaki elemenat pobeuje. Svakom elementukoji uqestvuje u takmiqeu pridruuje se brojaq, qija je poqetna vrednost1. Brojaq pokazuje koliko je stvarnih "protivnika" uqestvovalo u deluturnira, iz koga je elemenat izaxao kao pobednik (odnosno broj neeliminisanihelemenata u podstablu qvora, u kome se nalazi elemenat). Kad elemenatpobedi u partiji u nekom qvoru stabla, on se upuuje navixe, a vrednostegovog brojaqa poveava se za vrednost brojaqa egovog poraenog protivnika(kao u filmu "Gorxtak"). Partije se odigravaju sa "nesimetriqnim" novqiem,kod koga je odnos verovatnoa nule i jedinice jednak odnosu vrednostibrojaqa dva takmiqara. Ako su brojaqi igraqa 𝑝, odnosno 𝑞, onda prviigraq pobeuje sa verovatnoom 𝑝/(𝑝+𝑞), a drugi sa verovatnoom 𝑞/(𝑝+𝑞).Na primer, ako je u prvoj partiji 𝑥 pobedio igraqa 𝑦, a 𝑧 proxao dae bezborbe, onda brojaqi elemenata 𝑥, odnosno 𝑧 imaju vrednosti 2, odnosno 1. Uigri 𝑥 protiv 𝑧 koristi se novqi koji je nakloen elementu 𝑥, odnosnododeuje mu prednost u odnosu 2 : 1. Rezultat je da 𝑧 ima verovatnou1/3 pobede u ovoj partiji, a 𝑥 i 𝑦 sa verovatnoom (1/2) · (2/3) = 1/3pobeuju u obe svoje partije. Indukcijom se pokazuje da ovakav procesizbora obezbeuje da u svakom kolu svi elementi se jednakom verovatnoommogu biti izabrani za pivot.

Sloenost. Broj paralelnih koraka u svakoj iteraciji jednak je qet-vorostrukoj visini stabla. Poxto ovaj algoritam eliminixe elementena potpuno isti naqin kao i sekvencijalni algoritam, oqekivani brojiteracija je𝑂(log 𝑛). Prema tome, oqekivano vreme izvrxavaa je𝑂(log2 𝑛).

10.4.4 Mnoee matrica na dvodimenzionalnoj mrei

Mrea raqunara koju emo sada razmotriti je dvodimenzionalna mrea𝑛×𝑛. Procesor 𝑃 [𝑖, 𝑗] nalazi se u preseku 𝑖-te vrste i 𝑗-te kolone, i povezanje sa procesorima 𝑃 [𝑖, 𝑗+1], 𝑃 [𝑖+1, 𝑗], 𝑃 [𝑖, 𝑗−1] i 𝑃 [𝑖−1, 𝑗]. Pretpostavase da su suprotni krajevi mree meusobno povezani, odnosno da mrealiqi na torus. Tako, na primer, 𝑃 [0, 0] je povezan sa 𝑃 [0, 𝑛−1] i 𝑃 [𝑛−1, 0],pored 𝑃 [0, 1] 𝑃 [1, 0], videti sliku 10.12. Drugim reqima, sva sabiraa ioduzimaa indeksa vrxe se po modulu 𝑛 (opseg vrednosti za indekse 𝑖, 𝑗 je0, 1, . . . , 𝑛− 1). Algoritam koji prikazujemo je simetriqniji i elegantnijiuz ovu pretpostavku; egovo vreme izvrxavaa jednako je (do na konstantnifaktor) vremenu izvrxavaa na obiqnoj mrei (onoj koja nije presavijaempovezana kao torus).

Problem. Date su dve 𝑛× 𝑛 matrice 𝐴 i 𝐵, tako da su ihovi elementi𝐴[𝑖, 𝑗] i 𝐵[𝑖, 𝑗] u procesoru 𝑃 [𝑖, 𝑗]. Izraqunati 𝐶 = 𝐴𝐵, tako da elemenat𝐶[𝑖, 𝑗] bude u procesoru 𝑃 [𝑖, 𝑗].

Koristiemo obiqan algoritam za mnoee matrica. Problem je premestitipodatke tako da se pravi brojevi nau na pravom mestu u pravom trenutku.Posmatrajmo elemenat 𝐶[0, 0] =

∑𝑛−1𝑘=0 𝐴[0, 𝑘]·𝐵[𝑘, 0], koji je jednak proizvodu

prve vrste matrice 𝐴 i prve kolone matrice 𝐵; redni brojevi vrsta ikolona su pri ovakvom oznaqavau za jedan vei od ihovih indeksa.Voleli bismo da broj 𝐶[0, 0] bude izraqunat u procesoru 𝑃 [0, 0]. Ovo semoe postii cikliqkim pomeraem prve vrste 𝐴 ulevo, i istovremenimcikliqkim pomeraem prve kolone𝐵 uvis, korak po korak. U prvom koraku

Page 138: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

10.4. Algoritmi za mree raqunara 138

v v v vvvv

vvv

vvv

vvv

Slika 10.12: Dvodimenzionalna presavijena mrea.

𝑃 [0, 0] sadri 𝐴[0, 0] i 𝐵[0, 0] i izraqunava ihov proizvod; u drugomkoraku 𝑃 [0, 0] dobija 𝐴[0, 1] (od desnog suseda) i 𝐵[1, 0] (od suseda ispodsebe) i ihov proizvod dodaje parcijalnoj sumi, itd. Vrednost 𝐶[0, 0] setako izraqunava posle 𝑛 koraka.

Problem je obezbediti da svi procesori obavaju isti ovakav posao, asvi moraju da dele podatke meusobno. Potrebno je da podatke preuredimotako da ne samo 𝑃 [0, 0], nego i svi ostali procesori dobiju sve potrebnepodatke. Ideja je da se podaci u matricama ispremextaju na takav naqin,da svaki procesor u svakom koraku dobije dva broja qiji proizvod trebada izraquna. Bitan je dakle poqetni raspored podataka. Problem rexavapoqetni raspored takav da procesor 𝑃 [𝑖, 𝑗] ima elemente 𝐴[𝑖, 𝑖 + 𝑗] i 𝐵[𝑖 +𝑗, 𝑗], odnosno da drugi indeks elementa𝐴 bude jednak prvom indeksu elementa𝐵 (pri qemu se, kao xto je reqeno, indeksi raqunaju po modulu 𝑛). Poxto seformira ovakav raspored, svaki korak se sastoji od istovremenog cikliqkogpomeraa vrsta 𝐴 i kolona 𝐵, qime 𝑃 [𝑖, 𝑗] dobija elemente 𝐴[𝑖, 𝑖 + 𝑗 + 𝑘]i 𝐵[𝑖 + 𝑗 + 𝑘, 𝑗], 0 ≤ 𝑘 ≤ 𝑛 − 1, upravo one elemente koji su mu potrebni.Do poqetnog rasporeda moe se doi cikliqkim pomeraem vrste 𝐴 saindeksom 𝑖 za 𝑖 mesta ulevo, a kolone 𝐵 sa indeksom 𝑖 za 𝑖 mesta navixe,𝑖 = 0, 1, . . . , 𝑛 − 1. Algoritam je prikazan na slici 10.13. Na slici 10.1prikazano je formirae poqetnog rasporeda elemenata matrica za 𝑛 = 4.Leva strana pokazuje poqetno stae podataka, a desna ihov razmextajposle izvrxavaa poqetnih cikliqkih pomeraa.

Sloenost. Poqetna cikliqka pomeraa vrsta 𝐴 traju 𝑛/2 paralelnihkoraka (kad broj pomeraa postane vei od 𝑛/2, pomeraa se izvode usuprotnom smeru| udesno umesto ulevo); isto vai i za poqetna pomeraakolona 𝐵. U narednih 𝑛 koraka izvode se u svakom procesoru izraqunavaai pomeraa. Ti koraci mogu se izvrxiti paralelno. Ukupno vreme izvrxavaaje𝑂(𝑛). Efikasnost algoritma je𝑂(1), ako uporeujemo paralelni algoritamsa obiqnim sekvencijalnim mnoeem matrica sloenosti𝑂(𝑛3). Efikasnostje asimptotski maa, ako paralelni algoritam uporeujemo sa npr. Xtra-senovim algoritmom.

Page 139: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

139 10. Paralelni algoritmi

Algoritam Mnozenje matrica(𝐴,𝐵);

Ulaz: 𝐴 i 𝐵 (𝑛× 𝑛 matrice).

Izlaz: 𝐶 (proizvod 𝐴𝐵).

begin

for 𝑖 := 0 to 𝑛− 1 do in parallel

cikliqki pomeri ulevo vrstu 𝑖 matrice 𝐴 za 𝑖 mesta;

odnosno, izvrxi 𝐴[𝑖, 𝑗] := 𝐴[𝑖, (𝑗 + 1)mod𝑛] 𝑖 putafor 𝑗 := 0 to 𝑛− 1 do in parallel

cikliqki pomeri navixe kolonu 𝑗 matrice 𝐵 za 𝑗 mesta;

odnosno, izvrxi 𝐵[𝑖, 𝑗] := 𝐵[(𝑖+ 1)mod𝑛, 𝑗] 𝑗 putapodaci su sada na eenim poqetnim pozicijamafor sve parove 𝑖, 𝑗 do in parallel

𝐶[𝑖, 𝑗] := 𝐴[𝑖, 𝑗] ·𝐵[𝑖, 𝑗];

for 𝑘 := 1 to 𝑛− 1 do

for sve parove 𝑖, 𝑗 do in parallel

𝐴[𝑖, 𝑗] := 𝐴[𝑖, (𝑗 + 1)mod𝑛];

𝐵[𝑖, 𝑗] := 𝐵[(𝑖+ 1)mod𝑛, 𝑗];

𝐶[𝑖, 𝑗] := 𝐶[𝑖, 𝑗] +𝐴[𝑖, 𝑗] ·𝐵[𝑖, 𝑗]

end

Slika 10.13: Algoritam za paralelno mnoee matrica na mrei.

𝑎00 𝑎01 𝑎02 𝑎03 𝑎01 𝑎02 𝑎03 𝑎00𝑏00 𝑏01 𝑏02 𝑏03 𝑏10 𝑏21 𝑏32 𝑏03𝑎10 𝑎11 𝑎12 𝑎13 𝑎12 𝑎13 𝑎10 𝑎11𝑏10 𝑏11 𝑏12 𝑏13 𝑏20 𝑏31 𝑏02 𝑏13𝑎20 𝑎21 𝑎22 𝑎23 𝑎23 𝑎20 𝑎21 𝑎22𝑏20 𝑏21 𝑏22 𝑏23 𝑏30 𝑏01 𝑏12 𝑏23𝑎30 𝑎31 𝑎32 𝑎33 𝑎30 𝑎31 𝑎32 𝑎33𝑏30 𝑏31 𝑏32 𝑏33 𝑏00 𝑏11 𝑏22 𝑏33

Tabela 10.1: Poqetno razmextae elemenata matrica | priprema zaparalelno mnoee.

10.5 Sistoliqki algoritmi

Sistoliqka arhitektura liqi na pokretnu traku u fabrici. Procesori suobiqno rasporeeni na vrlo pravilan naqin (najqexe u obliku jednodimenzionalnogili dvodimenzionalnog poa), a podaci se kroz ih ritmiqki pomeraju.Svaki procesor izvrxava jednostavne operacije sa podacima koje je dobiou prethodnom koraku, a svoje rezultate dotura sledeoj "stanici". Svakiprocesor moe da sadri malu lokalnu memoriju. Ulazi se najqexe"utiskuju" u sistem jedan po jedan, umesto da se svi odjednom upixu u nekememorijske lokacije. Prednost sistoliqke arhitekture je efikasnost, iu hardverskom pogledu (procesori su specijalizovani i jednostavni) iu pogledu brzine (minimiziran je broj pristupa memoriji). Kao i napokretnoj traci, kuqno je da se izbegne potreba za dovlaqeem alata

Page 140: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

10.5. Sistoliqki algoritmi 140

i materijala za vreme rada. Sve xto je potrebno za izvrxavae operacije,dolazi pokretnom trakom. Ozbian nedostatak ovakvih raqunara je nedovonafleksibilnost. Sistoliqke arhitekture su efikasne samo za odreenealgoritme. Razmotriemo dva primera sistoliqkih algoritama.

10.5.1 Mnoee matrice i vektora

Zapoqiemo sa jednostavnim algoritmom, koji emo zatim koristitiza razvoj komplikovanijeg algoritma.

Problem. Izraqunati proizvod 𝑥 = 𝐴𝑏 matrice 𝐴 dimenzije 𝑚 × 𝑛 ivektora 𝑏 duine 𝑛.

Sistem se sastoji od 𝑛 procesora, tako da procesor 𝑃𝑖 dodaje parcijalnojsumi qlan u kome je qinilac 𝑏𝑖, 𝑖-ta komponenta vektora 𝑏. Kretae podatakai operacije koje izvrxava svaki od procesora prikazani su za 𝑛 = 𝑚 = 4na slici 10.14. Pretpostavamo da se vektor 𝑏 nalazi u odgovarajuimprocesorima (ili je u ih ubaqen korak po korak). Rezultati se akumulirajutokom kretaa sleva udesno kroz procesore. Izlazne promeive 𝑥𝑖 napoqetku imaju vrednost 0. U prvom koraku se 𝑥1 (= 0) zajedno sa 𝑎11 ubacujeu 𝑃1, a svi ostali ulazi napreduju jedan korak na putu ka procesorima.Procesor 𝑃1 izraqunava 𝑥1 + 𝑎11 · 𝑏1, i rezultat prosleuje udesno. Udrugom koraku 𝑃2 prima sleva 𝑥1 = 𝑎11 · 𝑏1 i odozgo 𝑎12, pa izraqunava𝑥1 +𝑎12 · 𝑏2, rezultat prosleuje udesno, itd. U 𝑖-tom koraku izraqunavaa𝑥1 procesor 𝑃𝑖 prima sleva parcijalni rezultat 𝑥1 =

∑𝑖−1𝑘=1 𝑎1𝑘𝑏𝑘, odozgo

odgovarajui elemenat matrice 𝑎1𝑖, a odgovarajuu koordinatu 𝑏𝑖 bilo izlokalne memorije (kao na slici), bilo odozdo. Procesor 𝑃𝑖 izraqunavavrednost izraza 𝑥1+𝑎1𝑖𝑏𝑖 i predaje je dae, udesno. U trenutku napuxtaaniza procesora, posle 𝑛 koraka, 𝑥1 oqigledno sadri eenu vrednost.Izraqunavae 𝑥2 prati " u stopu" izraqunavae 𝑥1 i zavrxava se u (𝑛+1)-om koraku. Drugim reqima, izraqunavaa 𝑥1 i 𝑥2 su vremenski skoropotpuno preklopena. Uopxte, izraqunati elemenat 𝑥𝑗 pojavuje se naizlazu posle 𝑛+𝑗−1 koraka, 𝑗 = 1, 2, . . . ,𝑚, a kompletan proizvod izraqunavase posle 𝑚 + 𝑛− 1 koraka.

- 𝑏1?- 𝑏2 𝑏3 𝑏4? ? ?- - -

IZLAZ

- 𝑏 -𝑥𝑢

𝑎

𝑥𝑖 = 𝑥𝑢 + 𝑎𝑏

𝑥1𝑥2

𝑎11

𝑎21

𝑎31

𝑎41

𝑎12

𝑎13

𝑎14𝑎22

𝑎23

𝑎24𝑎32

𝑎33

𝑎34𝑎42

𝑎43

𝑎44

𝑥3𝑥4

?

Slika 10.14: Mnoee vektora matricom.

Osnovni problem pri konstrukciji sistoliqkih algoritama je organizacijakretaa podataka. Svaki podatak mora se nai na pravom mestu u pravomtrenutku. U ovom primeru to je postignuto uvoeem kaxea, tako da

Page 141: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

141 10. Paralelni algoritmi

poqetak 𝑖-te kolone matrice 𝐴 stie u procesor 𝑃𝑖 u koraku 𝑖. Ovaj primerje jednostavan, jer se svaki elemenat matrice 𝐴 koristi samo jednom. Kadse ista vrednost koristi vixe puta, mnogo je komplikovanije organizovatieno kretae, xto emo videti u sledeem primeru.

10.5.2 Izraqunavae konvolucije

Neka su 𝑥 = (𝑥1, 𝑥2, . . . , 𝑥𝑛) i 𝑤 = (𝑤1, 𝑤2, . . . , 𝑤𝑘) dva realna vektora,pri qemu je 𝑘 < 𝑛.Konvolucija vektora 𝑥 i 𝑤 je vektor 𝑦 = (𝑦1, 𝑦2, . . . , 𝑦𝑛+1−𝑘),sa koordinatama

𝑦𝑖 = 𝑤1𝑥𝑖 + 𝑤2𝑥𝑖+1 + · · ·𝑤𝑘𝑥𝑖+𝑘−1, 𝑖 = 1, 2, . . . , 𝑛 + 1− 𝑘.

Problem. Izraqunati konvoluciju 𝑦 vektora 𝑥 i 𝑤.

Problem izraqunavaa konvolucije moe se svesti na problem izraqunavaaproizvoda matrice i vektora na sledei naqin:⎛⎜⎜⎜⎜⎝

𝑥1 𝑥2 𝑥3 · · · 𝑥𝑘

𝑥2 𝑥3 𝑥4 · · · 𝑥𝑘+1

𝑥3 𝑥4 𝑥5 · · · 𝑥𝑘+2

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .𝑥𝑛+1−𝑘 𝑥𝑛+2−𝑘 𝑥𝑛+3−𝑘 · · · 𝑥𝑛

⎞⎟⎟⎟⎟⎠⎛⎜⎜⎜⎜⎝𝑤1

𝑤2

𝑤3

· · ·𝑤𝑘

⎞⎟⎟⎟⎟⎠ =

⎛⎜⎜⎜⎜⎝𝑦1𝑦2𝑦3· · ·

𝑦𝑛+1−𝑘

⎞⎟⎟⎟⎟⎠Sistoliqki algoritam koji rexava ovaj problem moe se dobiti kao

specijalni sluqaj opxtijeg algoritma za izraqunavae proizvoda matricei vektora (videti prethodni problem, slika 10.14). Ovo je prikazano naslici 10.15. Primetimo da se 𝑥𝑖 istovremeno koristi du celog nizaprocesora (sem prvih 𝑘 − 1 vrednosti 𝑥𝑖, koje se koriste samo u poqetnomdelu niza). Zbog toga je potrebna linija za prostirae. Prikazaemo sadarexee problema konvolucije bez prostiraa.

- 𝑤1 - 𝑤2 𝑤3 𝑤4- - -IZLAZ

𝑦1𝑦2

𝑥1

𝑥2

𝑥3

𝑥4

𝑥2

𝑥3

𝑥4

𝑥3

𝑥4𝑥4

? ? ? ?

𝑥5 𝑥5𝑥5𝑥5

Slika 10.15: Konvolucija sa prostiraem.

Procesori na slici 10.15 primaju dva ulaza, a daju samo jedan izlaz.Upotrebiemo sada procesore koji primaju ulaze iz dva smera, i xauizlaz u dva smera. Ideja je pomerati vektor 𝑥 sleva udesno, a vektor 𝑤zdesna ulevo. Rezultat 𝑦 akumulira se u procesorima. Kretae podatakatreba tako podesiti da se odgovarajue koordinate 𝑤 i 𝑥 sretnu tamo gdetreba da budu pomnoene. Problem je u tome xto, kad se dva vektorakreu jedan prema drugom, onda je brzina jednog vektora u odnosu nadrugi dvostruko vea. Posledica ove qienice je da bi jedan elemenat

Page 142: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

10.6. Rezime 142

vektora 𝑥 propustio polovinu elemenata vektora 𝑤, i obrnuto. Rexeeje pomerati vektore dvostruko maom brzinom. Ulaz sleva je dakle "𝑥1,nixta, 𝑥2, nixta, . . . ", a zdesna isto to za vektor 𝑤. Rexee je prikazanona slici 10.16 (crne taqke odgovaraju odsutnim podacima).

𝑦4-

?

-

𝑦3 𝑦2 𝑦1- - -

? ? ?

𝑥2 ∙ 𝑥1

- - -

𝑤1 ∙ 𝑤2

𝑥3

IZLAZ

𝑦- -𝑤𝑖

𝑥𝑢 𝑥𝑖

𝑤𝑢

𝑦 = 𝑦 + 𝑤𝑢𝑥𝑢𝑥𝑖 = 𝑥𝑢𝑤𝑖 = 𝑤𝑢

Slika 10.16: Konvolucija pomou dvosmernog niza.

Prepuxtamo qitaocu da se uveri da svaki procesor 𝑃𝑖 na kraju izraqunavavrednost 𝑦𝑖. Kad 𝑤𝑘 napusti 𝑃𝑖, izraqunata je konaqna vrednost 𝑦𝑖, pa sepodaci mogu "izruqiti" iz niza procesora putem naznaqenim ispod nizaprocesora na slici 10.16. Nedostatak kretaa podataka dvostruko maombrzinom je u tome xto izraqunavae traje dvostruko due.

10.6 Rezime

Poxto je paralelne algoritme komplikovanije konstruisati od sekvencijalnih,korisno je xto vixe upotrebavati gotove blokove. Jedan od takvih monihblokova je algoritam za paralelno izraqunavae prefiksa, koji je qakpredlagan za primitivnu maxinsku instrukciju. Texko je u ovom trenutkuproceniti koje e od razmatranih paralelnih arhitektura (odnosno da lie neka od ih) dominirati u budunosti. Zbog toga je vano identifikovatitehnike projektovaa algoritama zajedniqke za vixe modela. Analiziralismo qetiri takve tehnike: udvostruqavae (odreivae rangova elemenataliste i druge operacije sa povezanim listama), paralelnu varijantu razlagaa(sabirae, paralelno izraqunavae prefiksa, sortirae), preklapae(kod sistoliqkih algoritama), itehniku Ojlerovog obilaska (koja je korisnakod mnoxtva algoritama za rad sa stablima, odnosno grafovima).

Page 143: Konstrukcija i analiza algoritama 2 - poincare.matf.bg.ac.rspoincare.matf.bg.ac.rs/~vesnap/kaa2/kaa2.pdf · uprostiti ako je du − paralelna jednoj od osa | na primer -osi. Broj

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] E. Horowitz, S. Sahni, S. Rajasekaran, Computer Algorithms, ComputerScience Press, 1997.

[4] I. Parberry, W. Gasarch, Problems on Algorithms, Second Edition, 2002.

[5] W. Pugh, Skip Lists: A Probabilistic Alternative to Balanced Trees, Com-munications of the ACM, vol. 33, issue 6, pp. 668–676, 1990.

[6] D. Gusfield, Algorithms on Strings, Trees, and Sequences: Computer Sci-ence and Computational Biology, Cambridge University Press, 1997.

[7] T. Rolfe, P. Purdom, An Alternative Problem for Backtracking and Bound-ing: The SIGCSE Bulletin 83, Volume 36, Number 4, 2004.

143