algoritmi-knjiga (miodrag zivkovic).pdf

405

Upload: bambinodoux

Post on 25-Oct-2015

1.083 views

Category:

Documents


243 download

TRANSCRIPT

Algoritmi

Miodrag ivkovi

Matematiqki fakultet, BeogradE-mail address: [email protected].

Predgovor

Kiga sadri uvodni kurs u konstrukciju i analizu algoritama. Namee-na je studentima smera Raqunarstvo i informatika na Matematiqkom fakul-tetu u Beogradu, za izborni predmet Primena raqunara. Kiga takoe moeda poslui sredoxkolcima za pripremu za takmiqea iz informatike. Zarazumevae i izvoee analize algoritama potrebno je osnovno predznae izanalize i verovatnoe. Naravno, kiga e sigurno koristiti i svima onimakoji se bave programiraem.

Materijal se uglavnom zasniva na kizi [1], odakle potiqe i najvei deozadataka. Redukovan je deo o grafovima, a deo o algebarskim algoritmimaproxiren je pojmovima iz kriptologije (prema [6]). Korixeni su takoe nekidelovi iz kiga [2, 3, 4, 5, 7, 8, 9]. Za qitaoca koga zanima ova oblast, mogubiti interesantne i kige [10, 11, 12, 13, 14, 15].

Poxto je ovo jedna od prvih kiga o algoritmima na naxem jeziku, termi-nologija se jox nije ustalila. Prilikom prevoda engleskih termina teilose da prevod bude blizak originalu. Neki engleski termini koji su praktiqnoprihvaeni u naxem jeziku, nisu prevoeni. Na kraju kige su dati reqnicitermina u oba smera. Tako se na jednom mestu moe stei uvid u predloenuterminologiju.

Namena ove kige je da qitalac ne samo upozna efikasne algoritme zarexavae nekih konkretnih problema, nego i da savlada "vextinu" konstruk-cije efikasnih algoritama za rexavae novih problema. Umesto da se izlaugotovi, zavrxeni algoritmi, prikazuje se ihov razvoj, polazei od najjednos-tavnije varijante (pristup preuzet iz [1]). Konaqni oblik algoritama pri-lagoen je pre svega razumevau principa na kojima se oni zasnivaju, a tekonda jednostavnosti programiraa.

Pri konstrukciji algoritama najvixe se koristi pristup zasnovan nadokazivau tvrea matematiqkom indukcijom. Iako su cievi konstrukcijealgoritma i dokazivaa teoreme razliqiti, sliqnost ove dve aktivnosti jeneoqekivano velika.

Efikasni nenumeriqki algoritmi vani su u mnogim oblastima, kao xtosu matematika, statistika, molekularna biologija, tehnika, . . .Mnogi struq-aci smatraju bavee algoritmima za dosadan, neinventivan posao (xto onponekad i jeste). Ali takav pristup problemu qesto kao rezultat daje trivi-jalna i neefikasna rexea | qak i tamo gde postoje elegantna, efikasnija

iii

iv PREDGOVOR

rexea. Ova kiga trebalo bi da prui argumente da su algoritmi elegantnai vana disciplina.

U prvom delu kige, u poglavima 1-4, dat je uvodni materijal o matema-tiqkoj indukciji, analizi algoritama, strukturama podataka, kao i primerikonstrukcije algoritama pomou matematiqke indukcije. Narednih qetiripoglava 5-8 bave se algoritmima za rexavae problema u pojedinim oblas-tima: u vezi sa nizovima i skupovima, grafovima, iz algebre i geometrije.Poglave 9 daje osnovne pojmove iz kriptografije, oblasti veoma znaqajnekroz celu udsku istoriju, u kojoj algoritmi imaju veliku primenu. Reduk-cijama, odnosno meusobnim svoeima algoritama, posveeno je poglave 10,a NP-kompletni problemi analizirani su u poglavu 11. Poslede poglavesadri uvod u paralelne algoritme.

Preliminarna verzija kige je ispravena i dopuena zadacima sa rexe-ima. Veliki broj grexaka otkrili su studenti, na qemu im se autor zahvau-je. Autor je unapred zahvalan i za sve budue primedbe i sugestije na sadrajkige. Poruke se mogu slati na adresu [email protected].. Tei zadacioznaqeni su zvezdicom. U rexavau zadataka uqestvovali su i studenti, xto jenastavu qinilo interesantnijom. Autor je zahvalan naroqito postdiplomcimaA. Samariu i M. Vugdeliji, koji su rexili vei broj zadataka.

Za korisne primedbe i sugestije autor posebnu zahvalnost duguje recen-zentima.

Miodrag ivkovi

Sadraj

Predgovor iii

Poglave 1. Matematiqka indukcija 11.1. Uvod 11.2. Dva jednostavna primera 21.3. Brojae oblasti na koje je podeena ravan 21.4. Problem sa bojeem ravni 31.5. Primer sa sumiraem 41.6. Ojlerova formula 41.7. Grejovi kodovi 51.8. Nalaee disjunktnih puteva u grafu 71.9. Nejednakost izmeu aritmetiqke i geometrijske sredine 91.10. Invarijanta pete | dokaz ispravnosti algoritma 101.11. Najqexe grexke 111.12. Rezime 12Zadaci 12

Glava 2. Analiza algoritama 152.1. Uvod 152.2. Asimptotska oznaka O 162.3. Vremenska i prostorna sloenost 182.4. Sumirae 182.5. Diferencne jednaqine 202.6. Rezime 27Zadaci 27

Glava 3. Strukture podataka 313.1. Elementarne strukture podataka 323.2. Stabla 343.3. Hip 363.4. Binarno stablo pretrage 383.5. AVL stabla 443.6. Hex tabele 473.7. Problem formiraa unija 503.8. Grafovi 523.9. Rezime 53

v

vi SADRAJ

Zadaci 54

Glava 4. Konstrukcija algoritama indukcijom 574.1. Uvod 574.2. Izraqunavae vrednosti polinoma 574.3. Maksimalni indukovani podgraf 594.4. Nalaee bijekcije 614.5. Problem pronalaea zvezde 644.6. Primer primene dekompozicije: maksimum skupa pravougaonika 664.7. Izraqunavae faktora ravnotee binarnog stabla 694.8. Nalaee maksimalnog uzastopnog podniza 704.9. Pojaqavae induktivne hipoteze 724.10. Dinamiqko programirae, problem ranca 724.11. Uobiqajene grexke 754.12. Rezime 76Zadaci 77

Glava 5. Algoritmi za rad sa nizovima i skupovima 795.1. Uvod 795.2. Binarna pretraga i varijacije 795.3. Sortirae 855.4. Rangovske statistike 1025.5. Kompresija podataka 1045.6. Traee uzorka u tekstu 1085.7. Uporeivae nizova 1155.8. Probabilistiqki algoritmi 1195.9. Rezime 122Zadaci 123

Glava 6. Grafovski algoritmi 1276.1. Uvod 1276.2. Ojlerovi grafovi 1296.3. Obilasci grafova 1306.4. Topoloxko sortirae 1426.5. Najkrai putevi iz zadatog qvora 1456.6. Minimalno povezujue stablo 1526.7. Svi najkrai putevi 1566.8. Tranzitivno zatvoree 1586.9. Uparivae 1606.10. Transportne mree 1646.11. Hamiltonovi ciklusi 1706.12. Rezime 172Zadaci 173

Glava 7. Geometrijski algoritmi 181

SADRAJ vii

7.1. Uvod 1817.2. Utvrivae da li zadata taqka pripada mnogouglu 1827.3. Konstrukcija prostog mnogougla 1857.4. Konveksni omotaq 1867.5. Najblii par taqaka 1927.6. Preseci horizontalnih i vertikalnih dui 1967.7. Rezime 200Zadaci 201

Glava 8. Algebarski algoritmi 2058.1. Uvod 2058.2. Stepenovae 2068.3. Euklidov algoritam 2078.4. Mnoee polinoma 2108.5. Mnoee matrica 2118.6. Brza Furijeova transformacija 2148.7. Rezime 219Zadaci 220

Glava 9. Primene u kriptografiji 2239.1. Uvod 2239.2. Klasiqna kriptografija 2279.3. Sluqajna xifra 2299.4. DES 2309.5. RSA 2409.6. Rezime 243Zadaci 243

Glava 10. Redukcije 24510.1. Uvod 24510.2. Primeri redukcija 24610.3. Redukcije na problem linearnog programiraa 24910.4. Primena redukcija na nalaee doih granica 25310.5. Uobiqajene grexke 25610.6. Rezime 258Zadaci 258

Glava 11. NP-kompletnost 26111.1. Uvod 26111.2. Redukcije polinomijalne vremenske sloenosti 26211.3. Nedeterminizam i Kukova teorema 26411.4. Primeri dokaza NP-kompletnosti 27211.5. Tehnike za rad sa NP-kompletnim problemima 28211.6. Rezime 293Zadaci 293

viii SADRAJ

Glava 12. Paralelni algoritmi 29512.1. Uvod 29512.2. Modeli paralelnog izraqunavaa 29612.3. Algoritmi za raqunare sa zajedniqkom memorijom 29812.4. Algoritmi za mree raqunara 30912.5. Sistoliqki algoritmi 32112.6. Rezime 323Zadaci 324

Glava 13. Uputstva i rexea zadataka 32713.1. Matematiqka indukcija 32713.2. Analiza algoritama 33213.3. Strukture podataka 33613.4. Konstrukcija algoritama indukcijom 34013.5. Algoritmi za rad sa nizovima i skupovima 34413.6. Grafovski algoritmi 35113.7. Geometrijski algoritmi 36213.8. Algebarski algoritmi 36813.9. Primene u kriptografiji 37213.10. Redukcije 37413.11. NP-kompletnost 37713.12. Paralelni algoritmi 380

Srpsko-engleski i englesko-srpski terminoloxki reqnik 385Srpsko-engleski reqnik 385Englesko-srpski reqnik 390

Literatura 397

POGLAVE 1

Matematiqka indukcija

1.1. UvodMatematiqka indukcija igra znaqajnu ulogu pri konstrukciji mnogih al-

goritama. Zbog toga se u ovom uvodnom poglavu analizira nekoliko karak-teristiqnih primera primene indukcije.

Neka je N = 1, 2, . . . skup prirodnih brojeva. Princip matematiqkeindukcije moe se formulisati na sledei naqin. Pretpostavimo da trebadokazati da je tvree T (n) taqno za svaki prirodan broj n ∈ N . Umesto dase ovo tvree "napada" direktno, dovono je dokazati sledea dva tvrea:

• T (n) je taqno za n = 1, i• za svako n > 1 vai: ako je taqno T (n− 1), onda je taqno i T (n).

Ova qienica je takozvani princip indukcije, i predstava ustvari aksiomu,koja definixe skup prirodnih brojeva.

U praksi se obiqno prvo tvree (baza indukcije) lako dokazuje. Dokazdrugog tvrea olakxan je pretpostavkom da je taqno T (n − 1), takozvanominduktivnom hipotezom. Drugim reqima, dovono je tvree svesti na sluqajkad je n umaeno za jedan. Ilustrovaemo to jednim jednostavnim primerom.

Teorema 1.1. Za svaka dva broja x, n ∈ N vai x− 1|xn − 1.

Dokaz. Dokaz se izvodi indukcijom po n. Za n = 1 tvree glasi x−1|x−1i oqigledno je taqno. Svoee sluqaja n na sluqaj n − 1 zasniva se na izrazuxn − 1 = (xn−1 − 1)x + (x − 1), jer on pokazuje da iz induktivne hipotezex− 1|xn−1 − 1 sledi da je taqno x− 1|xn − 1. ¤

Princip matematiqke indukcije qesto se koristi u nexto promeenimoblicima, koji su neposredna posledica osnovnog.

Teorema 1.2. Ako je taqno tvree P (1) i za svako n > 1 iz pret-postavke da je P (k) taqno za svako k < n sledi taqnost P (n), onda je P (n)taqno za svako n ∈ N .

Ovo je tzv. potpuna indukcija, a dobija se od osnovne varijante primenomna tvree T (n) =

∧nk=1 P (k).

Teorema 1.3 (Regresivna indukcija). Neka je a1, a2, . . . rastui niz pri-rodnih brojeva. Ako je tvree P (n) taqno za n = ak, k = 1, 2, . . . i za svako

1

2 1. MATEMATIQKA INDUKCIJA

n ≥ 2 iz pretpostavke da je taqno P (n) sledi da je taqno P (n − 1), tada jeP (n) taqno za svako n ∈ N .

Prvi deo pretpostavke, da je P (ak) taqno za k ≥ 1 dokazuje se indukcijom(P (1), i ako P (ak) onda P (ak+1), k ≥ 1). Dakle, najpre se dokazuje da postojeproizvono veliki brojevi n takvi da je P (n) taqno, a onda da je P (n) taqnoi za sve "izostavene" brojeve. Ovo je tzv. regresivna indukcija.

1.2. Dva jednostavna primeraPotrebno je izraqunati sumu S(n) = 1+2+ . . .+n. Odgovor na ovo pitae

daje sledea teorema.

Teorema 1.4. Neka je S(n) =∑n

i=1 i. Za svako n ∈ N je S(n) = 12n(n + 1).

Dokaz. Kako je 1 = 12 · 1 · 2, tvree je taqno za n = 1. Ako se pretpostavi

da je ono taqno za neko n, onda je

S(n+1) = 1+2+. . .+n+(n+1) = S(n)+n+1 =12n(n+1)+(n+1) =

12(n+1)(n+2),

odnosno zakuqujemo da je tvree taqno i za n + 1. ¤

Teorema 1.5. Ako je n ∈ N i 1 + x > 0 onda je (1 + x)n ≥ 1 + nx.

Dokaz. Za n = 1 tvree je oqigledno taqno. Ako je tvree teoreme taqnoza neko n (induktivna hipoteza), onda je

(1+x)n+1 = (1+x)(1+x)n ≥ (1+x)(1+nx) = 1+ (n+1)x+nx2 ≥ 1+ (n+1)x,

odnosno tvree teoreme je taqno i ako se u emu n zameni sa n + 1. ¤

1.3. Brojae oblasti na koje je podeena ravanZa nekoliko pravih u ravni kae se da su u opxtem poloaju ako nikoje

dve nisu paralelne, a nikoje tri se ne seku u istoj taqki. Treba odrediti brojoblasti na koje ravan deli n ≥ 1 pravih u opxtem poloaju (pretpostavka dasu prave u opxtem poloaju uvedena je da pojednostavi problem, jer tada nemapotrebe za analizom raznih moguih specijalnih sluqajeva).

Neposredno se vidi da jedna, dve, odnosno tri prave u opxtem poloa-ju dele ravan redom na dve, qetiri, odnosno sedam oblasti. Nasluuje se daukuqivae n-te prave poveava za n broj oblasti na koje je ravan podeena.Ako se pretpostavi da je to taqno, onda je broj oblasti na koje n pravih uopxtem poloaju deli ravan 2 + 2 + 3 + 4 + . . . + n = 1

2n(n + 1) + 1. Dakle,ostaje da se dokae

Hipoteza 1.6. Dodavae n-te prave u ravni (pri qemu su svih n pravihu opxtem poloaju) poveava broj oblasti na koje je ravan podeena za n.

1.4. PROBLEM SA BOJEEM RAVNI 3

Dokaz. Dokazaemo ovo tvree indukcijom po n. Tvree je oqiglednotaqno za n = 1, 2, 3. Pretpostavimo da je ono taqno za neko n; neka je dato n+1pravih u ravni u opxtem poloaju, i neka je p jedna od tih pravih. Zbog togaxto su prave u opxtem poloaju, prava p sa proizvonom oblaxu, od onih nakoju ravan dele ostalih n pravih, nema zajedniqkih taqaka, ili je seqe. Pravap seqe svih ostalih n pravih, tj. seqe n + 1 oblast, xto znaqi da se enimdodavaem broj oblasti poveava za n + 1. ¤

Primedba. Ovde je indukcija primeena dva puta: poveae broja oblas-ti dodavaem n-te prave, a zatim ukupan broj oblasti na koje ravan deli npravih. Ovakav postupak, ponekad i sa vixe nivoa, qesto se primeuje.

1.4. Problem sa bojeem ravniProizvonih n pravih u ravni, deli ravan na oblasti; za prave se ne

pretpostava da su u opxtem poloaju. Kaemo da je ravan obojena sa dveboje (na primer crnom i belom) ako je svaka oblast obojena jednom od te dveboje, a svake dve susedne oblasti (one koje imaju deo prave ili celu pravu kaogranicu) su obojene razliqitim bojama.

Teorema 1.7. Ravan podeena sa proizvonih n pravih moe se obojitisa dve boje.

Dokaz. Tvree teoreme dokazuje se indukcijom po broju pravih n. Zan = 1 tvree je oqigledno taqno (ravan je podeena na dve oblasti, jednaod ih boji se crno, druga belo). Pretpostavimo da se ravan, izdeena saproizvonih n − 1 pravih, moe obojiti sa dve boje. Dodavae n-te prave naproizvoan naqin deli neke oblasti na dva susedna dela obojena istom bo-jom. Meutim, ako se svim oblastima sa jedne strane n-te prave boja promeniu suprotnu, dobija se ispravno bojee ravni. Zaista, granice izmeu sused-nih oblasti mogu se podeliti na tri vrste: granice sa jedne, odnosno drugestrane n-te prave, i granice na n-toj pravoj. Granice sve tri vrste odvajajuoblasti obojene razliqitim bojama. Dakle, polazei od induktivne hipotezeda se moe obojiti ravan podeena se n− 1 pravih, pokazano je kako se dobijabojee ravni podeene sa n proizvonih pravih. ¤

Primedba. Ovaj primer je ilustracija maksimalnog, elastiqnog korix-ea induktivne hipoteze: od bojea oblasti u jednoj poluravni napravenoje drugo ispravno bojee zamenom bele i crne boje.

4 1. MATEMATIQKA INDUKCIJA

1.5. Primer sa sumiraemPretpostavimo da su svi neparni brojevi ispisani u oviru xeme u obliku

trougla, tako da u i-toj vrsti ima i brojeva, i = 1, 2, . . .:i suma1 1 12 3 5 83 7 9 11 274 13 15 17 19 64

. . .

Potrebno je izraqunati sumu brojeva u i-toj vrsti.Izraqunavxi sume u prvih nekoliko vrsta, zapaamo da je suma jednaka

kubu rednog broja vrste. Da se ovo tvree dokae indukcijom, dovono jedokazati da je razlika zbirova u (i+1)-oj i i-toj vrsti jednaka (i+1)3−i3 = 3i2+3i + 1. Dae, ako sa ai oznaqimo posledi broj u i-toj vrsti, razlika zbirovau (i + 1)-oj i i-toj vrsti jednaka je i · 2i + ai+1 jer je svaki od prvih i brojeva u(i + 1)-oj vrsti vei od odgovarajueg u i-toj vrsti za 2i (poxto u i-toj vrstiima i uzastopnih neparnih brojeva, razlika prvog u (i + 1)-oj vrsti i prvog ui-toj vrsti je 2i). Dakle, da bi se dokazalo drugo tvree, dovono je dokazatida je 2i2 + ai+1 = 3i2 + 3i + 1, odnosno ai+1 = i2 + 3i + 1 = (i + 1)2 + (i + 1)− 1,ili ai = i2 + i− 1. Ovo poslede tvree emo naravno dokazati indukcijom.Za i = 1 je a1 = 1 = 12 + 1 − 1, tj. tvree je taqno. Iz pretpostavke da je zaneko i ai = i2 + i− 1 sledi (jer u (i+1)-oj vrsti ima i+1 uzastopnih neparnihbrojeva) da je ai+1 = ai + 2(i + 1) = i2 + 3i − 1 = (i + 1)2 + (i + 1) − 1, qime jedokazano poslede pomono tvree, a samim tim i polazno tvree.

U sledeem primeru videemo da se u dokazu induktivna hipoteza morakoristiti elastiqno, a ne onako kako bi na prvi pogled izgledalo da trebauqiniti.

Teorema 1.8. Za svaki prirodan broj n je 12 + 1

4 + . . . + 12n < 1.

Dokaz. Za n = 1 je ovo oqigledno taqno. Nejednakost

(12

+14

+ . . . +12n

) +1

2n+1< 1

ne sledi iz prethodne, jer ako je zbir u zagradi mai od 1, on posle poveavaaza 1

2n+1 ne mora da ostane mai od 1. Problemi se izbegavaju ako se induktivnahipoteza primeni na posledih n sabiraka u ovoj nejednakosti:

12

+ (14

+ . . . +12n

+1

2n+1) =

12

+12(12

+14

+ . . . +12n

) <12

+12· 1 = 1.

¤

1.6. Ojlerova formulaSada emo dokazati tvree poznato kao Ojlerova formula (L. Euler ,

1707-1783.). Posmatrajmo povezanu planarnu mapu sa V qvorova (temena), E

1.7. GREJOVI KODOVI 5

grana (ivica) i F broj oblasti na koje je ravan podeena ivicama; jedna odoblasti je i spoaxa, neograniqena oblast. Intuitivno, mapa je povezanaako se sastoji od jednog dela. Specijalno, povezana planarna mapa sa jednomoblaxu (F = 1) zove se stablo Na slici 1 prikazani su primeri mape (saV = 4 qvora, E = 5 grana i F = 3 oblasti), odnosno stabla.

h

h

h

h h

h

h

hh¡¡

¡

QQQ

h h

hh@

@@

@@

@@

Ris. 1. Primer planarne mape, odnosno stabla.

Teorema 1.9 (Ojlerova formula). Za povezanu planarnu mapu vai jed-nakost V + F = E + 2.

Dokazatel~stvo. Dokaz e biti izveden dvostrukom indukcijom: najprepo broju oblasti F , a u okviru toga po broju qvorova V . Posmatrajmo najpresluqaj F = 1. Tada mapa (u ovom sluqaju stablo) ne sadri ni jednu zatvorenuoblast, jer bi u protivnom zbog postojaa spoaxe beskonaqne oblasti biloF ≥ 2. Treba dokazati da tada vai V = E + 1. Ovo tvree dokazaemoindukcijom po broju qvorova V = n. Ako je n = 1 onda nema grana i tvreeje taqno. Neka je tvree taqno za V = n. Posmatrajmo proizvono stablo san+1 qvorova. To stablo mora da ima bar jedan qvor v sa samo jednim susednimqvorom, jer bi u protivnom mapa sadrala zatvorenu oblast. Mapa, koja se odove dobija uklaaem qvora v i grane e koja ga povezuje sa susednim qvorom,povezana je i nema zatvorenih oblasti, a broj qvorova u oj je n. Za tu mapuvai induktivna hipoteza: (V − 1) = (E − 1) + 1, pa je V = E + 1, qime jezavrxen dokaz teoreme za sluqaj F = 1.

Pretpostavimo da je tvree teoreme taqno za planarne mape sa n oblasti,V + n = E + 2. Proizvona mapa sa n + 1 oblasti ima bar jednu oblast kojaje susedna sa spoaxom oblaxu. Izbacivaem iz mape neke od grana kojeodvajaju tu oblast od spoaxe, dobija se mapa koja je i dae povezana iplanarna, pri qemu su broj oblasti F i grana E smaene u odnosu na polaznevrednosti za po jedan. Na osnovu induktivne hipoteze za novu mapu vaiV + (F − 1) = (E − 1) + 2, iz qega neposredno sledi da za polaznu mapu vaitvree teoreme. ¤

1.7. Grejovi kodoviGrejov kod duine n > 1 je niz k-torki bita (k ≥ 1) s1, s2, . . . , sn takvih

da se u tom nizu svaka dva uzastopna qlana, kao i s1, sn, razlikuju na taqno

6 1. MATEMATIQKA INDUKCIJA

jednoj poziciji. Na primer, 00, 01, 11, 10 je Grejov kod duine 4. Zbog ove svojeosobine Grejovi kodovi imaju xiroku primenu. Lako je videti da ne postojeGrejovi kodovi neparne duine. Zaista, s1 i si se za i > 1 razlikuju na parnom,odnosno neparnom broju pozicija ako je i neparno, odnosno parno. Zbog toga ses1 i sn za neparno n razlikuju na parnom, (dakle razliqitom od jedan) brojupozicija.

Teorema 1.10. Za svaki paran broj n postoji Grejov kod duine n.Dokazatel~stvo. Grejov kod duine dva je, na primer, niz 0, 1. Ako pos-

toji Grejov kod s1, s2, . . . , sn duine n = 2k za neko k ∈ N (odnosno si, si+1,i = 1, 2, . . . , n − 1, kao i sn, s1, razlikuju se na taqno jednoj poziciji), ondase neposredno proverava da je 0s1, 1s1, 1s2, 0s2, 0s3, . . . , 0sn Grejov kod duinen+2, videti sliku 2. Ovde su sa 0si odnosno 1si oznaqeni blokovi bita dobijeniod si dodavaem nule, odnosno jedinice sa leve strane. ¤

d

d

d

d

d

d

0s2k

0s3

0s11s1

0s2 1s2

XXX»»»XXX»»»

Ris. 2. Produavae Grejovog koda za dva

Opisana konstrukcija Grejovih kodova parne duine ima vaan nedos-tatak: za kod duine 2k koriste se k-torke bita, tj. duine blokova bitapoveavaju se za jedan svaki put kad se duina koda povea za dva. S drugestrane, ako ne bi postojao zahtev o odnosu susednih qlanova niza, niz duinen mogao bi se kodirati k-torkama bita, gde je k = dlog2 ne; sa dxe oznaqennajmai ceo broj vei ili jednak od realnog broja x. Neracionalnost opisanekonstrukcije moe se ispraviti tako xto bi se poveavaem duine blokovaza jedan konstruisao dva puta dui, a ne Grejov kod dui za dva:(1.1) 0s1, 0s2, . . . , 0sn, 1sn, 1sn−1, . . . , 1s1,

videti sliku 3.Nazovimo niz blokova bita s1, s2, . . . , sn | kod koga se susedni blokovi

bita si, si+1 za svako i = 1, 2, . . . , n − 1 razlikuju na taqno jednoj poziciji |zatvorenim, odnosno otvorenim Grejovim kodom ako jeste, odnosno nije ispuenuslov da se blokovi s1, sn razlikuju na taqno jednoj poziciji. Dokaz sledeeteoreme daje konstrukciju Grejovog koda sa minimalnom duinom blokova bi-ta.

1.8. NALAEE DISJUNKTNIH PUTEVA U GRAFU 7

d

d

d

d

d

d

0s2

0sn−1

0s1

0sn

XXX»»»XXX»»»

d

d

d

d

1s2

1sn−1

1s1

1sn

»»»XXX»»»XXX

Ris. 3. Udvostruqavae duine Grejovog koda

Teorema 1.11. Za svako n > 1 postoji Grejov kod duine n sa dlog2 nebita, i to zatvoren ako je n parno, odnosno otvoren ako je n neparno.

Dokazatel~stvo. Oqigledno je da postoje Grejovi kodovi duine jedani dva sa blokovima duine jedan. Pretpostavimo da postoje otvoreni, odnosnozatvoreni Grejovi kodovi svih duina k < n, sa veliqinom bloka blog2 kc. Akoje n parno, onda se primenom konstrukcije (1.1) (slika 3) na kod duine n/2sa dlog2(n/2)e bita (koji po induktivnoj hipotezi postoji), dobija kod duinen sa 1 + dlog2(n/2)e = dlog2 ne bita.

Neka je sad n = 2m + 1 neparno. Prema induktivnoj hipotezi postojiGrejov kod duine m sa dlog2 me bita. Od ega se na isti naqin dobija kodduine 2m sa d = 1 + dlog2 me = dlog2(2m)e bita. Ako 2m nije stepen dvojke,onda postoje neiskorixeni blokovi (tj. blokovi koji ne pripadaju kodu) odd bita. Bar jedan od ih (neka je to kod s′) susedan je nekom od blokova 1si

(odnosno razlikuje se od ega na taqno jednoj poziciji). Zbog toga se moe(videti sliku 4) konstruisati otvoreni kod duine

d = dlog2(2m)e = dlog2(2m + 1)e = dlog2 ne.U protivnom, ako 2k jeste stepen dvojke, onda su svi kodovi duine d iskor-ixeni, pa se mogu najpre sve kodne reqi produiti dopisivaem nule spre-da. Tako se pojavuju neiskorixeni kodovi (oni koji poqiu jedinicom), isluqaj je sveden na prethodni, pri qemu je broj bita u kodnim reqima

dlog2(2m)e+ 1 = log2(2m) + 1 = dlog2(2m + 1)e = dlog2 ne.¤

1.8. Nalaee disjunktnih puteva u grafuNeka je G = (V, E) neusmereni (graf za koga kod grana kao parova qvorova

nije bitan redosled) povezan graf. Stepen qvora je broj grana koje su mususedne. Ovi pojmovi objaxeni su u uvodnom odeku poglava 6 o grafovima,a koriste se u ovom interesantnom primeru. Neka je O skup qvorova neparnog

8 1. MATEMATIQKA INDUKCIJA

d

d

d

d

d

d

0s2

0sn−1

0s1

0sn

XXX»»»XXX»»»

d

d

d

d

1s2

1sn−1

1s1

1sn

»»»XXX»»»XXX

d

d

dÃÃÃÃ1si s′

1si+1

¾

´´

6

Ris. 4. Konstrukcija otvorenog Grejovog koda

stepena; lako je videti da je broj takvih qvorova uvek paran. Zaista, sabiraestepena qvorova je isto xto i brojae grana, pri qemu se svaka grana brojitaqno dva puta. Poxto je dakle zbir stepena svih qvorova, pa i qvorova izskupa O, paran broj, broj qvorova u O mora biti paran. Za skup O vai sledeetvree.

Teorema 1.12. Qvorovi iz skupa O qvorova neparnog stepena u neusmere-nom povezanom grafu G = (V,E) mogu se podeliti na parove, tako da se mogunai disjunktni (bez zajedniqkih grana) putevi koji povezuju prvi i drugiqvor u svakom paru.

Dokazatel~stvo. Da bi se ovo tvree dokazalo indukcijom, moemo dapretpostavimo (induktivna hipoteza) da je ono taqno za grafove sa mae od mgrana. Ako u skupu O ima vixe od dva qvora, izaberu se meu ima proizvonadva. Poxto je graf povezan, u emu postoji put (niz grana) koji povezuje dvaizabrana qvora. Uklaaem ovih grana iz grafa dobija se graf sa mae grana.Na ovaj graf se meutim ne moe primeniti induktivna hipoteza. Problem jeu tome xto je mogue da se vaeem ovih grana dobije nepovezan graf (videtiprimer na slici 5).

w w

h

g

h

g

QQ

QQ

´´

´

""

""

QQ

QQ

Ris. 5. Primer grafa koji uklaaem grane postaje nepovezan.

Rexee problema na koji smo naixli je na prvi pogled neobiqno. Sastojise u pojaqau tvrea teoreme (pojaqavae induktivne hipoteze): pokuxae-mo da dokaemo da tvree vai ne samo za povezane, nego i za proizvone

1.9. NEJEDNAKOST IZMEU ARITMETIQKE I GEOMETRIJSKE SREDINE 9

neusmerene grafove. Izloeni dokaz treba promeniti samo u delu koji seodnosi na izbor dva qvora neparnog stepena: ih treba birati tako da pri-padaju jednoj istoj komponenti povezanosti (povezanom delu, "ostrvu") grafa(xto je mogue, jer je broj qvorova neparnog stepena u svakoj komponentipovezanosti paran broj), xto obezbeuje postojae puta u grafu izmeu tadva qvora. Graf koji se dobija udaavaem grana puta, bez obzira na eventu-alno poveae broja komponenti povezanosti, ima mai broj grana od m, pa zaega vai (pojaqana) induktivna hipoteza, tj. preostali qvorovi iz O moguse podeliti na parove, koji se mogu povezati disjunktnim putevima. ¤

Ideja koja je ovde primeena, pojaqae induktivne hipoteze, qesto se ko-risti. Zasnovana je na prividnom paradoksu da se (vrlo qesto) jaqe tvreelakxe dokazuje.

1.9. Nejednakost izmeu aritmetiqke i geometrijskesredine

Kao primer tvrea koje se moe dokazati primenom regresivne indukcijeiskoristiemo nejednakost izmeu aritmetiqke i geometrijske sredine.

Teorema 1.13. Neka su x1, x2, . . . , xn pozitivni realni brojevi. Tada je

(1.2) n√

x1x2 . . . xn ≤ x1 + x2 + · · ·+ xn

n

Dokazatel~stvo. Tvree emo dokazati primenom regresivne induk-cije. Najpre emo dokazati da ono vai za brojeve oblika n = 2k, dakle zaproizvono velike brojeve, a zatim da iz pretpostavke da ono vai za neko nsledi da ono vai za n− 1.

U prvom delu dokaza baza indukcije (n = 21) je nejednakost√

x1 + x2 ≤ 12(x1 + x2),

koja je posledica oqigledne nejednakosti (x1 − x2)2 ≥ 0 (odakle se dobijax2

1 + 2x1x2 + x22 ≥ 4x1x2, odnosno 1

4 (x1 + x2)2 ≥ x1x2). Iz pretpostavke da (1.2)vai za n = 2k sledi da za 2n = 2k+1 brojeva x1, x2, . . . , x2n vai

2n

√√√√2n∏

i=1

xi =

√√√√√ n

√√√√n∏

i=1

xin

√√√√2n∏

i=n+1

xi ≤√√√√( 1

n

n∑

i=1

xi

)( 1n

2n∑

i=n+1

xi

)≤

≤ 12

( 1n

n∑

i=1

xi +1n

2n∑

i=n+1

xi

)=

12n

2n∑

i=1

xi,

odnosno tvree (1.2) vai za dvostruko vei broj brojeva xi. Time je zavrxenprvi deo dokaza.

Sada emo pokazati da ako jednakost (1.2) vai za proizvonih n broje-va, onda ona vai i za proizvonih n − 1 brojeva. Da bi se u (1.2) smaiobroj promenivih, jednu od ih treba vezati za ostale, odnosno izraziti je

10 1. MATEMATIQKA INDUKCIJA

preko ih. Neka je dakle xn = 1n−1

∑n−1i=1 xi, tj. xn biramo tako da bude jed-

nako aritmetiqkoj sredini ostale n− 1 promenive. Tada desna strana nejed-nakosti (1.2) postaje jednaka xn:

1n

n∑

i=1

xi =n− 1

n

( 1n− 1

n−1∑

i=1

xi

)+

1n

xn =n− 1

nxn +

1n

xn = xn,

pa (1.2) prelazi u xn

∏n−1i=1 xi ≤ xn

n, odnosno

n−1

√√√√n−1∏

i=1

xi ≤ xn =1

n− 1

n−1∑

i=1

xi.

Prema tome, zavrxetkom drugog dela dokaza dokazano je da nejednakost (1.2)izmeu aritmetiqke i geometrijske sredine vai za svako n ∈ N . ¤

1.10. Invarijanta pete | dokaz ispravnosti algoritmaMatematiqka indukcija qesto se koristi za dokazivae korektnosti algo-

ritma, posebno u sluqaju kad se algoritam sastoji od vixestrukog izvrxavaaiste grupe naredbi. Ideja je da se pokae da je neko tvree (invarijantapete) taqno pre ulaska u petu i posle svakog prolaska kroz petu, a da izegove taqnosti na kraju izvrxea algoritma sledi korektnost algoritma.

Ovaj metod ilustrovaemo dokazom korektnosti algoritma koji za zadatiprirodni broj n izraqunava egove binarne cifre, komponente vektora b, tj.vrxi egovu konverziju u binarni oblik (slika 6). Algoritam se sastoji odpete u kojoj su tri naredbe: poveavae k (indeksa za vektor b), izraqunavaeostatka i celog dela koliqnika pri deeu pomone promenive t sa dva.

Algoritam Bin cifre(n);

Ulaz: n (prirodan broj)Izlaz: b (niz binarnih cifara broja n)begin

t := n; pomona promeniva t sa poqetnom vrednoxu nk := 0;

while t > 0 do

k := k + 1;

b[k] := t mod2;

t := t div 2;

end

Ris. 6. Algoritam za izraqunavae binarnih cifara broja.

Teorema 1.14. Po zavrxetku algoritma Bin cifre u vektoru b nalazese binarne cifre broja n.

1.11. NAJQEXE GREXKE 11

Dokazatel~stvo. Dokaz ispravnosti algoritma bie sproveden pomouinvarijante pete. Razmotrimo sledeu induktivnu hipotezu.

Induktivna hipoteza. Neka je m broj qije su binarne cifre biti do-bijeni u k prvih prolazaka kroz petu, pri qemu je b[1] najnii bit. Tadaje

t · 2k + m = n.

Za k = 0 je t = n i m = 0, pa je ovo tvree taqno. Neka je induktivnahipoteza taqna za neko k ≥ 0. U narednom prolasku kroz petu dobijaju se novevrednosti b[k +1] = t mod 2, t′ = t div 2, i m′ = b[k +1]2k +m = (t mod 2)2k +m,pa je

t′2k+1 + m′ = (t div 2)2k+1 + (t mod 2)2k + m =

= 2k(2 · (t div 2) + (t mod 2)

)+ m = 2k · t + m = n,

zbog induktivne hipoteze. Time je dokazano da izraz t2k +m ne mea vrednostod prolaska do prolaska kroz petu, odnosno da je on invarijanta pete. Kakoje posle posledeg prolaska kroz petu t = 0, u tom trenutku e biti m = n,qime je ispravnost algoritma dokazana. ¤

1.11. Najqexe grexkePrilikom izvoea dokaza indukcijom qesta je grexka da se kao oqigled-

na qienica iskoristi tvree koje je blisko ili ekvivalentno dokazivanom.Time se faktiqki pojaqava induktivna hipoteza, ali se ne dokazuje da iztaqnosti pojaqane hipoteze za n sledi ena taqnost za n + 1.

Vano je da se pri prelasku sa sluqaja n na n + 1 dokaz izvede polazeiod proizvonog sluqaja n+1. Kao primer mogue grexke, razmotrimo sledei"dokaz" Ojlerove formule V + F = E + 2 indukcijom po F . Polazei odpovezane planarne mape sa F = n koja ima bar jednu unutraxu oblast (n ≥ 2),u toj oblasti se na dve iviqne grane izaberu dva nova qvora i poveu granom.U novoj mapi F , V i E su poveani redom za jedan, dva i tri, pa dakle iza u vai Ojlerova formula. Problem sa ovim "dokazom" je u tome xto seopisanom konstrukcijom ne mogu dobiti sve mogue mape za koje je F = n + 1:mogui su i sluqajevi da se jedna unutraxa oblast podeli na dve granom kojapovezuje jedan novi i jedan postojei qvor, odnosno granom koja povezuje dvapostojea qvora. Prethodno opisanom konstrukcijom se ustvari mogu dobitisamo grafovi kojima svi novododati qvorovi imaju stepen tri.

Razmotrimo jox jedan primer "dokaza" indukcijom.Teorema 1.15 (netaqna). Dato je n pravih u ravni tako da nikoje dve med-

ju ima nisu paralelne. Dokazati da svih n pravih imaju zajedniqku taqku.Dokazatel~stvo. (pogrexan) Za n = 1 tvree je taqno. Xta vixe, ono

je taqno i za n = 2. Neka ono vai za neko n i neka je dato proizvonih n + 1pravih u ravni takvih da nikoje dve meu ima nisu paralelne. Tada prema

12 1. MATEMATIQKA INDUKCIJA

induktivnoj hipotezi prvih n pravih imaju zajedniqku taqku. Isto vai i zaposledih n pravih. Ove dve taqke se moraju poklapati, xto znaqi da svihn + 1 pravih imaju zajedniqku taqku. ¤

Grexka u ovom dokazu prikrivena je u qienici da prelaz sa n na n + 1ne vai za n = 2: od tri razmatrane prave a, b i c preseqna taqka prvih dveju,a i b, ne mora da se poklapa sa preseqnom taqkom posledih dveju, b i c.

1.12. RezimeMatematiqka indukcija je moan metod za dokazivae teorema. Najpre se

formulixe induktivna hipoteza i bira se promeniva po kojoj e dokaz in-dukcijom biti izveden. Ponekad se induktivna hipoteza moe formulisatina vixe naqina | neki vode kraem, a neki duem dokazu; ponekad se uvodipotpuno nova promeniva, potrebna samo za izvoee dokaza. Dokaz se ponekadizvodi indukcijom na vixe nivoa, od kojih svaki vodi sve blie ciu. Pojaqa-vae induktivne hipoteze je qest postupak, kojim se dokazuje tvree opxtijeod zadatog.

Dokaz indukcijom sastoji se od dva dela | baze i koraka indukcije (re-dukcije, svoea). Bazu ponekad nije lako dokazati, ali je to ipak rei sluqaj.Zbog toga se ovaj deo dokaza ponekad grexkom ignorixe. Sr dokaza je u re-dukciji: najqexe se tvree sa parametrom n svodi na analogno tvree saparametrom n−1. Druga mogua varijanta je potpuna indukcija, kad se sluqajn svodi na nekoliko drugih za vrednosti k < n. Takoe se koristi i postupaksvoea sa 2n na n, a zatim sa n na n + 1, tzv. regresivna indukcija. U svimvarijantama je vano da se o dokazivanom tvreu ne pretpostavi nixta vixeod induktivne hipoteze.

ZadaciU nekim zadacima o grafovima koriste se pojmovi iz uvodnog odeka poglava 6.

1.1. Dokazati da je za proizvone prirodne brojeve n, x, y, takve da je x 6= y, xn − yn

deivo sa x− y.

1.2. Odrediti izraz za sumu 1 · 2 + 2 · 3 + · · ·+ n · (n + 1) i dokazati taqnost tog izrazaindukcijom.

1.3. Dokazati da je 12 − 22 + 32 − 42 + · · ·+ (−1)k−1k2 = (−1)k−1k(k + 1)/2.

1.4. Neka je A podskup skupa 1, 2, . . . , 2n koji ima n+1 elemenat. Dokazati da postojebrojevi a, b ∈ A takvi da a|b.

1.5. Neka su a, b i n prirodni brojevi. Dokazati da je 2n−1(an + bn) ≥ (a + b)n.

1.6. Odrediti zbir elemenata i-te vrste Paskalovog trougla (videti sliku 7) i dokaza-ti taqnost tog tvrea indukcijom. Na ivicama trougla su jedinice, a u unutraxosti jesvaki broj jednak zbiru dva broja iznad ega.

1.7. Dokazati da za svako n > 1 vai nejednakost∑2n

i=n+11i

> 1324

1.8. ∗ Dokazati da za svako n > 1 iz jednakosti∑n

i=1 1/i = k/m (pri qemu su k i m suuzajamno prosti brojevi), sledi da je k neparan, a m paran prirodan broj.

ZADACI 13

11 1

1 2 11 3 3 1

· · ·

Ris. 7. Uz zadatak 1.6.

1.9. Posmatrajmo niz 1, 2, 3, 4, 5, 10, 20, 40, . . ., koji poqie kao aritmetiqka progresija,a posle prvih pet qlanova postaje geometrijska progresija. Dokazati da se svaki prirodanbroj moe predstaviti u obliku zbira razliqitih brojeva iz ovog niza.

1.10. Dato je n ≥ 3 pravih u ravni u opxtem poloaju. Dokazati da je bar jedna odoblasti koje one formiraju | trougao.

1.11. Dato je n taqaka u ravni, takvih da za svake tri meu ima postoji krug polupreq-nika 1 koji ih sadri. Dokazati da postoji krug polupreqnika 1 koji sadri svih n taqaka.

1.12. Dokazati da oblasti na koje ravan deli n krunica sa po jednom povuqenomtetivom (slika 8) mogu biti obojene sa tri boje, tako da su susedne oblasti uvek obojenerazliqitim bojama.

Ris. 8. Uz zadatak 1.12.

1.13. Data je planarna mapa qiji su svi qvorovi parnog stepena (odnosno svi qvorovisu povezani ivicom sa parnim brojem drugih qvorova). Dokazati da se oblasti na koje deliravan ova mapa mogu obojiti sa dve boje tako da su susedne oblasti uvek obojene razliqitombojom.

1.14. Neka su d1, d2, . . . , dn prirodni brojevi, n ≥ 2. Dokazati da ako je∑n

i=1 di = 2n−2onda postoji stablo sa n qvorova qiji su stepeni brojevi d1, d2, . . . , dn.

1.15. Neka je dato n taqaka na krunici i neka su svake dve od ih spojene dui, priqemu se nikoje tri dui ne seku u istoj taqki. Na koliko oblasti ove dui dele krug?

1.16. Neka je G = (V, E) neusmereno stablo i neka je f : V → V preslikavae qvorovatog stabla koje zadovoava sledei uslov: krajeve svake grane stabla preslikava ili u jedanisti qvor ili u dva qvora koji su takoe krajevi grane stabla ("kontrakcija"). Pokazatida u G postoji "nepokretni qvor" (takav da ga f preslikava u samog sebe) ili "nepokretnagrana" (grana koju f "obre", odnosno f preslikava jedan kraj grane u drugi i obrnuto).

1.17. Dirihleov princip glasi: ako je u n urni ubaqena n + 1 kuglica, onda nekaurna sadri vixe od jedne kuglice. Dokazati ovaj princip indukcijom.

14 1. MATEMATIQKA INDUKCIJA

1.18. Kompletno binarno stablo (KBS) se induktivno definixe na sledei naqin.KBS visine 0 sastoji se od samo jednog qvora, korena. KBS visine h + 1 sastoji se od dvaKBS visine h, qiji su koreni sinovi istog qvora | koji je novi koren. Neka je T KBSvisine h. Visina qvora u T je h umaeno za rastojae qvora od korena; tako npr. korenima visinu h, a listovi visinu 0. Dokazati da je suma visina svih qvorova u T jednaka2h+1 − h− 2.

1.19. Dokazati da qlanovi Fibonaqijevog niza (F1 = F2 = 1, Fn = Fn−1 + Fn−2 zan ≥ 3) zadovoavaju jednakost F 2

n + F 2n+1 = F2n+1 za n ≥ 1.

1.20. ∗ Neka je Kn kompletan neusmereni graf sa n qvorova (graf u kome su svakadva qvora povezana granom), i neka je n paran broj. Dokazati da se grane Kn mogu izdelitina taqno n/2 povezujuih stabala (povezujue stablo grafa je egov podgraf stablo, kojisadri sve qvorove grafa).

1.21. ∗ U neusmerenom grafu G = (V, E) uparivae je skup grana u kome nikoje dvegrane nemaju zajedniqki qvor. Savrxeno uparivae je takvo uparivae koje "pokriva"sve qvorove grafa. Konstruisati primer familije grafova Gn, sa 2n qvorova i n2 grana,n = 1, 2, . . . tako da Gn ima taqno jedno savrxeno uparivae.

1.22. Neka su a1, a2, . . . , an pozitivni realni brojevi takvi da je ihov proizvod 1.Dokazati, ne koristei nejednakost izmeu aritmetiqke i geometrijske sredine, da je

(1 + a1)(1 + a2) . . . (1 + an) ≥ 2n.

1.23. Konstruisati algoritam za konverziju binarnog broja u dekadni. Ulaz je niz bitab duine k, a izlaz je broj n. Dokazati korektnost algoritma pomou invarijante pete.

Glava 2

Analiza algoritama

2.1. UvodCi analize algoritma je da se predvidi egovo ponaxae, posebno br-

zina izvrxavaa, ne realizujui ga na (nekom konkretnom) raqunaru. Idejaje dakle da se proceni brzina rada bez realizacije algoritma, i to tako daprocena vai za svaki raqunar. Uostalom, napor da se algoritam ispita nasvakom raqunaru je preambiciozan, izmeu ostalog i zbog toga xto bi trebalouzeti u obzir sve mogue realizacije "podalgoritama" (npr. mnogi algoritmisadre sortirae, koje se moe izvrxiti razliqitim postupcima).

Taqno ponaxae algoritma je nemogue predvideti, sem u najjednostavni-jim sluqajevima. Na ponaxae utiqe mnogo faktora, pa se u obzir uzimajusamo glavne karakteristike, a zanemaruju se detai vezani za taqnu reali-zaciju. Prema tome | analiza algoritma mora da bude priblina. Ipak sena taj naqin dobijaju znaqajne informacije o algoritmu, koje npr. omoguujuuporeivae razliqitih algoritama za rexavae istog problema.

Logiqan pristup prilikom analize brzine izvrxavaa algoritma je dase zanemaruju konstantni faktori, jer se brzine izvrxavaa algoritma narazliqitim raqunarima razlikuju se priblino za konstantni faktor. In-teresantno je oceniti ponaxae brzine izvrxavaa algoritma kad veliqinaulaza tei beskonaqnosti. Ako je, na primer, ulaz u algoritam vektor duinen, a algoritam se sastoji od 100n koraka, onda se kae da je sloenost algo-ritma n; ili za sloenost 2n2 + 50 koraka kae se da je n2. Za drugi od ovadva algoritma kae se da je sporiji, iako za n = 5 vai 100n > 2n2+50; nejed-nakost 2n2 +50 > 100n taqna je npr. za svako n > 100. Na sreu, obiqno su kon-stante u izrazima za sloenost algoritama male. Zbog toga, iako asimptotskipristup oceivau sloenosti ponekad moe da dovede do zabune, u praksise dobro pokazuje i dovoan je za prvu aproksimaciju efikasnosti.

Ci analize, odreivae vremena izvrxavaa algoritma za odreeni ulaz| praktiqno je neostvariv (sem za najjednostavnije algoritme), jer je texkouzeti u obzir sve mogue ulaze. Zbog toga se za svaki mogui ulaz najpredefinixe egova veliqina (dimenzija) n, posle qega se u analizi koristisamo ovaj podatak. Veliqinu ulaza neemo ovde strogo definisati; obiqno jeto mera veliqine memorijskog prostora potrebnog za smextae opisa ulazakad se upotrebi bilo koje razumno kodirae npr. bitima. Nepostojae opxte

15

16 2. ANALIZA ALGORITAMA

definicije veliqine problema nee ovde izazivati potexkoe, jer se obiqnouporeuju razliqiti algoritmi za rexavae istog problema.

Dakle, analiza algoritma treba da kao rezultat da izraz za utroxenovreme u zavisnosti od n. Meutim, postava se pitae | koji meu ulazimaveliqine n izabrati kao reprezentativan? Qesto se za ovu svrhu bira najgorisluqaj. Najboi ulaz je qesto trivijalan. Dae, sredi (proseqan) ulaz samona prvi pogled izgleda kao dobar izbor. Meutim, analiza je tada kompliko-vana, a potexkou predstava i definisae raspodele verovatnoa na skupusvih ulaza veliqine n, i to tako da ona odgovara situacijama koje se pojavu-ju u praksi. Zbog toga je korisno analizu vrxiti za najgori sluqaj. Dobijenirezultati najqexe su bliski proseqnim, odnosno eksperimentalnim rezulta-tima; ili, ako je qak najgori sluqaj u pogledu sloenosti bitno drugaqijiod "proseqnog", algoritam koji dobro radi u najgorem sluqaju obiqno dobroradi i u proseku. Izneseni razlozi opravdavaju praksu da se najqexe vrxianaliza najgoreg sluqaja.

Analiza asimptotskog ponaxaa sloenosti algoritma, i to u najgoremsluqaju meu ulazima odreene veliqine | to je dakle aproksimacija vreme-na rada odreenog algoritma na odreenom ulazu, koja ipak najqexe dobrokarakterixe osobine algoritma.

2.2. Asimptotska oznaka O

Definicija 2.1. Neka su f i g pozitivne funkcije od argumenta n izskupa N prirodnih brojeva. Kae se da je g(n) = O(f(n)) ako postoje pozitivnekonstante c i N , takve da za svako n > N vai g(n) ≤ cf(n).

Oznaka O(f(n)) se ustvari odnosi na klasu funkcija, a jednakost g(n) =O(f(n)) je uobiqajena oznaka za inkluziju g(n) ∈ O(f(n)). Jasno je da je funkci-ja f samo neka vrsta gore granice za funkciju g. Na primer, pored jed-nakosti 5n2 + 15 = O(n2) (jer je 5n2 + 15 ≤ 6n2 za n ≥ 4) vai i jednakost5n2 + 15 = O(n3) (jer je 5n2 + 15 ≤ n3 za n ≥ 6). Ova notacija omoguujeignorisae multiplikativnih konstanti: umesto O(5n + 4) moe se pisatiO(n). Sliqno, u izrazu O(log n) osnova logaritma nije bitna, jer se logaritmiza razliqite osnove razlikuju za multiplikativnu konstantu:

loga n = loga(blogb n) = logb n · loga b.

Specijalno, O(1) je oznaka za klasu ograniqenih funkcija.Poznato je da svaka eksponencijalna funkcija sa osnovom > 1 raste bre

od svakog polinoma. Dakle, ako je f(n) monotono rastua funkcija koja nijeograniqena, a > 1 i c > 0, onda je(2.1) f(n)c = O

(af(n)

).

Specijalno, za f(n) = n dobija se nc = O(an), a za f(n) = loga n dobija sejednakost (loga n)c = O

(alogan) = O(n), tj. proizvoan stepen logaritamske

funkcije raste sporije od linearne funkcije.

2.2. ASIMPTOTSKA OZNAKA O 17

Lako se pokazuje da se O-izrazi mogu sabirati i mnoiti:O(f(n)) + O(g(n)) = O(f(n) + g(n)),

O(f(n))O(g(n)) = O(f(n)g(n)).

Na primer, druga od ovih jednakosti moe se iskazati na sledei naqin: akoje neka funkcija h(n) jednaka proizvodu proizvone funkcije r(n) iz klaseO(f(n)) i proizvone funkcije s(n) iz klase O(g(n)), onda h(n) = r(n)s(n)pripada klasi O(f(n)g(n))). Zaista, ako je r(n) = O(f(n)) i s(n) = O(g(n))onda postoje pozitivni N1, N2, c1 i c2 takvi da za n > N1 vai r(n) <c1f(n) i za n > N2 vai s(n) < c2g(n). Meutim, za N = maxN1, N2 ic = maxc1, c2, c1c2 vai r(n) + s(n) < c

(f(n) + g(n)

)i r(n)s(n) < cf(n)g(n),

tj. r(n) + s(n) = O(f(n) + g(n)

)i r(n)s(n) = O

(f(n)g(n)

). Meutim, O-izrazi

odgovaraju relaciji ≤, pa se ne mogu oduzimati i deliti. Tako npr. iz f(n) =O(r(n)) i g(n) = O(s(n)) ne sledi da je f(n) − g(n) = O

(r(n) − s(n)

)(videti

zadatke 2.13 i 2.14).Sledei primer ilustruje zaxto treba skoncentrisati pau na asimp-

totsko ponaxae. Neka je f(n) ukupan broj operacija pri izvrxavau nekogalgoritma na ulazu veliqine n, pri qemu je f(n) neka od funkcija log2 n, n,n log2 n, n1.5, n2, n3, 1.1n. Pretpostavimo da se algoritam izvrxava na raqu-naru koji izvrxava m operacija u sekundi, m ∈ 103, 104, 105, 106. U tabeli 1prikazana su vremena izvrxavaa algoritma na ulazu fiksirane veliqinen = 1000, na raqunarima razliqite brzine. Vidi se kakav je uticaj konstant-nih faktora: kod algoritama koji se mogu izvrxiti za prihvativo vremeuticaj zamene raqunara brim je primetan. Meutim, kod algoritma u posled-oj koloni, sa eksponencijalnom funkcijom f(n), zamena raqunara brim neqini problem rexivim.

f(n) log2 n n n log2 n n1.5 n2 n3 1.1n

m

103 0.01 1.0 10.0 32.0 1000 106 1039

104 0.001 0.1 1. 3.2 100 105 1038

105 0.0001 0.01 0.1 0.32 10 104 1037

106 0.00001 0.001 0.01 0.032 1 103 1036

Tablica 1. Trajae izvrxavaa f(n) operacija na raqunarukoji izvrxava m operacija u sekundi, za n = 1000.

Drugi problem u vezi sa sloenoxu algoritma je pitae doe granice zapotreban broj raqunskih operacija. Dok se gora granica odnosi na konkretanalgoritam, doa granica sloenosti odnosi se na proizvoan algoritam izneke odreene klase. Zbog toga ocena doe granice zahteva posebne postupkeanalize. Za funkciju g(n) kae se da je asimptotska doa granica funkcijeT (n) i pixe se T (n) = Ω(g(n)), ako postoje pozitivni c i N , takvi da za svako

18 2. ANALIZA ALGORITAMA

n > N vai T (n) > cg(n). Tako je na primer n2 = Ω(n2 − 100), i n = Ω(n0.9).Vidi se da simbol Ω odgovara relaciji ≥. Ako za dve funkcije f(n) i g(n)istovremeno vai i f(n) = O(g(n)) i f(n) = Ω(g(n)), onda one imaju isteasimptotske brzine rasta, xto se oznaqava sa f(n) = Θ(g(n)). Tako je na primer5n log2 n − 10 = Θ(n log n), pri qemu je u posledem izrazu osnova logaritmanebitna.

Na kraju, qienica da je limn→∞f(n)g(n) = 0 oznaqava se sa f(n) = o(g(n)).

Na primer, oqigledno je nlog2 n = o(n), a jednakost n

10 = o(n) nije taqna. Odnosizmeu stepene i eksponencijalne funkcije (2.1) moe se precizirati: ako jef(n) monotono rastua funkcija koja nije ograniqena, a > 1 i c > 0, onda je

f(n)c = o(af(n)

).

2.3. Vremenska i prostorna sloenostOcena (vremenske) sloenosti algoritma sastoji se u brojau raqunskih

koraka koje treba izvrxiti. Meutim, termin raqunska operacija moe dapodrazumeva razliqite operacije, na primer sabirae i mnoee, qije izvr-xavae traje razliqito vreme. Razliqite operacije se mogu posebno brojati,ali je to obiqno komplikovano. Pored toga, vreme izvrxavaa zavisi i odkonkretnog raqunara, izabranog programskog jezika, odnosno prevodioca. Za-to se obiqno u okviru algoritma izdvaja neki osnovni korak, onaj koji se naj-qexe ponava. Tako, ako se radi o sortirau, osnovni korak je uporeivae.Ako je broj uporeivaa O(f(n)), a broj ostalih operacija je proporcionalanbroju uporeivaa, onda je O(f(n)) granica vremenske sloenosti algoritma.

Pod prostornom sloenoxu algoritma podrazumeva se veliqina memori-je potrebne za za izvrxavae algoritma, pri qemu se prostor za smextaeulaznih podataka najqexe ne raquna To omoguuje uporeivae razliqitihalgoritama za rexavae istog problema. Kao i kod vremenske sloenosti,i za prostornu sloenost se najqexe trai eno asimptotsko ponaxae unajgorem sluqaju, za velike veliqine problema. Prostorna sloenost O(n)znaqi da je za izvrxavae algoritma potrebna memorija proporcionalna onojza smextae ulaznih podataka. Ako je pak prostorna sloenost algoritmaO(1), onda to znaqi da je potreban memorijski prostor za egovo izvrxavaeograniqen konstantom, bez obzira na veliqinu ulaza.

Brojae osnovnih koraka u algoritmu najqexe nije jednostavan posao.Razmotriemo nekoliko tipiqnih situacija na koje se nailazi.

2.4. SumiraeAko se algoritam sastoji od delova koji se izvrxavaju jedan za drugim, on-

da je egova sloenost jednaka zbiru sloenosti delova. Meutim, ovo sabi-rae nije uvek jednostavno. Na primer, ako je osnovni deo algoritma petau kojoj indeks i uzima vrednosti 1, 2, . . . , n, a izvrxavae i-tog prolaska krozpetu troxi f(i) koraka, onda je vremenska sloenost algoritma

∑ni=1 f(i).

Razmotriemo neke primere sumiraa.

2.4. SUMIRAE 19

Primer 2.1. Ako je f(i) = i, odnosno u i-tom prolasku kroz petu izvr-xava se i koraka, onda je ukupan broj koraka S(n) =

∑ni=1 i = 1

2n(n + 1), xtosmo videli u poglavu 1 (teorema 1.4). Ako ovo uporedimo sa situacijom ukojoj se u svakom prolasku kroz petu izvrxava n koraka, odnosno ukupno n2

koraka, vidimo da je u prvom sluqaju sloenost priblino dva puta maa.Primer 2.2 (Stepene sume). Ako sa Sk(n) oznaqimo opxtiju sumu k-tih

stepena prvih n prirodnih brojeva,∑n

i=1 ik, za izraqunavae suma Sk(n) moese iskoristiti rekurentna relacija

(2.2) Sk(n) = − 1k + 1

k−1∑

j=0

(k + 1

j

)Sj(n) +

1k + 1

((n + 1)k+1 − 1

).

Ova jednakost dobija se sumiraem oqigledne jednakosti

ik = − 1k + 1

k−1∑

j=0

(k + 1

j

)ij +

1k + 1

((i + 1)k+1 − ik+1

), i = 1, 2, . . . , n.

Polazei od S0(n) = n, S1(n) = n(n + 1)/2, za k = 2 se dobija

S2(n) =n∑

i=1

i2 = −13(S0(n) + 3S1(n)

)+

13((n + 1)3 − 1

)=

=13

(n3 + 3n2 + 3n− n− 3

n(n + 1)2

)=

16(n3 + 3n2 + n) =

=16n(n + 1)(2n + 1).

Primer 2.3. Suma geometrijske progresije

F (n) =n∑

i=0

qi =qn+1 − 1

q − 1

dobija se oduzimaem jednakosti F (n) =∑n

i=0 qi od qF (n) =∑n

i=0 qi+1 =∑n+1i=1 qi:

(q − 1)F (n) =n+1∑

i=1

qi −n∑

i=0

qi = qn+1 − 1.

Primer 2.4. Polazei od izraza za sumu geometrijske progresije moese izraqunati suma G(n) =

∑ni=1 i2i. Diferenciraem, pa mnoeem sa x

jednakostin∑

i=0

xi = (xn+1 − 1)/(x− 1)

dobija sen∑

i=1

ixi = x(n + 1)xn(x− 1)− (xn+1 − 1)

(x− 1)2.

Odatle se za x = 2 dobija G(n) = (n− 1)2n+1 + 2.

20 2. ANALIZA ALGORITAMA

Primer 2.5. Svoeem na prethodnu moe se izraqunati suma

H(n) =n∑

i=1

i2n−i.

Zaista, smenom indeksa sumiraa j = n− i, i = n− j, pri qemu j prolazi skupvrednosti n− 1, n− 2, . . . , n− n = 0, dobija se

H(n) =n−1∑

j=0

(n− j)2j = n

n−1∑

j=0

2j −n−1∑

j=0

j2j = nF (n− 1)−G(n− 1) =

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

2.5. Diferencne jednaqineAko za qlanove niza Fn, n = 1, 2, . . ., vai jednakost

(2.3) Fn = f(Fn−1, Fn−2, . . . , F1, n),

onda se kae da niz Fn zadovoava diferencnu jednaqinu (ili rekurentnurelaciju) (2.3). Specijalno, ako se za neko k ≥ 1 qlan Fn izraava preko kprethodnih qlanova niza,(2.4) Fn = f(Fn−1, Fn−2, . . . , Fn−k, n),

onda je k red te diferencne jednaqine. Matematiqkom indukcijom se neposred-no dokazuje da je diferencnom jednaqinom 2.4 i sa prvih k qlanova F1, F2, . . . ,Fk niz Fn jednoznaqno odreen. Ako neki niz Gn zadovoava istu diferencnujednaqinu Gn = f(Gn−1, Gn−2, . . . , Gn−k, n), i vai Fi = Gi za i = 1, 2, . . . , k,onda za svako n ≥ 1 vai Fn = Gn.

Jedna od najpoznatijih diferencnih jednaqina je ona koja definixe Fi-bonaqijev niz,(2.5) Fn = Fn−1 + Fn−2, F1 = F2 = 1.

Da bi se na osnovu e izraqunala vrednost Fn potrebno je izvrxiti n− 2 ko-raka (sabiraa), pa je ovakav naqin izraqunavaa Fn nepraktiqan za veliken. Taj problem je zajedniqki za sve nizove zadate diferencnim jednaqinama.Izraz koji omoguuje direktno izraqunavae proizvonog qlana niza (daklene preko prethodnih) zove se rexee diferencne jednaqine. Na diferencnejednaqine se qesto nailazi pri analizi algoritama. Zbog toga emo razmotri-ti nekoliko metoda za ihovo rexavae.

2.5.1. Dokazivae pretpostavenog rexea diferencne jedna-qine. Qesto se diferencne jednaqine rexavaju tako da se pretpostavi oblikrexea, ili qak taqno rexee, posle qega se posle eventualnog preciziraarexea indukcijom dokazuje da to jeste rexee. Pri tome je qesto drugi deoposla, dokazivae, lakxi od prvog | pogaaa oblika rexea.

2.5. DIFERENCNE JEDNAQINE 21

Primer 2.6. Posmatrajmo diferencnu jednaqinu(2.6) T (2n) = 2T (n) + 2n− 1, T (2) = 1.

Ova diferencna jednaqina definixe vrednosti T (n) samo za indekse oblikan = 2m, m = 1, 2, . . .. Postavimo sebi skromniji ci | pronalaee nekegore granice za T (n), odnosno funkcije f(n) koja zadovoava uslov T (n) ≤f(n) (za indekse n koji su stepen dvojke, xto e se na dae podrazumevati),ali tako da procena bude dovono dobra. Pokuxajmo najpre sa funkcijomf(n) = n2. Oqigledno je T (2) = 1 < f(2) = 4. Ako pretpostavimo da je T (i) ≤ i2

za i ≤ n (induktivna hipoteza), onda jeT (2n) = 2T (n) + 2n− 1 ≤ 2n2 + 2n− 1 = 4n2 − (

2n(n− 1) + 1)

< 4n2,

pa je f(n) gora granica za T (n) za sve (dozvoene) vrednosti n. Meutim, izdokaza se vidi da je dobijena granica gruba: u odnosu na qlan 4n2 odbaqen jeqlan priblino jednak 2n2 za velike n. S druge strane, ako se pretpostavida je gora granica linearna funkcija f(i) = ci za i ≤ n, onda bi trebalodokazati da ona vai i za i = 2n:

T (2n) = 2T (n) + 2n− 1 ≤ 2cn + 2n− 1.

Da bi posledi izraz bio mai od c · 2n, moralo bi da vai 2n− 1 ≤ 0, xto jenemogue za n ≥ 1. Zakuqujemo da f(n) = cn ne moe da bude gora granicaza T (n), bez obzira na vrednost konstante c. Trebalo bi nai izraz koji je poasimptotskoj brzini rasta izmeu n i n2. Ispostava se da je dobra granicazadata funkcijom f(n) = n log2 n: T (2) = 1 ≤ f(2) = 2 log2 2 = 2, a ako jeT (i) ≤ f(i) taqno za i ≤ n, onda je

T (2n) = 2T (n) + 2n− 1 ≤ 2n log2 n + 2n− 1 = 2n log2(2n)− 1 < 2n log2(2n).

Dakle, T (n) ≤ n log2 n je taqno za svako n oblika 2k. Na osnovu qienice da jeu ovom dokazu pri prelasku sa n na 2n zanemaren qlan 1 u odnosu na 2n log2(2n),zakuquje se da je procena ovog puta dovono dobra.

"Diferencna nejednaqina"T (2n) ≤ 2T (n) + 2n− 1, T (2) = 1

definixe samo gore granice za T (n), ako je n stepen dvojke. Svaka goragranica rexea (2.6) je rexee ove diferencne nejednaqine | dokazi in-dukcijom su praktiqno identiqni. Ova diferencna nejednaqina moe se, kaoi (2.6), proxiriti tako da odreuje goru granicu za T (n) za svaki prirodanbroj n:

T (n) ≤ 2T

(⌊n

2

⌋)+ n− 1, T (1) = 0.

Moe pokazati da za niz T (n), koji zadovoava ovaj uslov, nejednakost T (n) ≤n log2 n vai za svako n ≥ 1. Zaista, ona je taqna za n = 1, a iz pretpostavke daje ona taqna za brojeve mae od nekog prirodnog broja m sledi da je za m = 2k

T (2k) ≤ 2T (k) + 2k − 1 ≤ 2k log2 k + 2k − 1 = 2k log2(2k)− 1 < (2k) log2(2k)

22 2. ANALIZA ALGORITAMA

odnosno za m = 2k + 1

T (2k + 1) ≤ 2T (k) + 2k ≤ 2k log2 k + 2k = 2k log2(2k) < (2k + 1) log2(2k + 1),

tj. ta nejednakost je tada taqna i za n = m. Dakle, ta nejednakost je dokazanaindukcijom.

2.5.2. Linearne diferencne jednaqine. Razmotriemo sada homogenelinearne diferencne jednaqine oblika

(2.7) F (n) = a1F (n− 1) + a2F (n− 2) + · · ·+ akF (n− k).

Rexea se mogu traiti u obliku

(2.8) F (n) = rn,

gde je r pogodno izabrani (kompleksni) broj. Zamenom u (2.7) dobija se uslovkoji r treba da zadovoi:

rk − a1rk−1 − a2r

k−2 − · · · − ak = 0,

takozvana karakteristiqna jednaqina linearne diferencne jednaqine (2.7);polinom sa leve strane ove jednaqine je karakteristiqni polinom ove li-nearne diferencne jednaqine. U sluqaju kad su svi koreni karakteristiqnogpolinoma r1, r2, . . . , rk razliqiti, dobijamo k rexea (2.7) oblika (2.8). Tadase svako rexee moe predstaviti u obliku

F (n) =k∑

i=1

cirni

(ovo tvree navodimo bez dokaza). Ako je prvih k qlanova niza F (n) zadato,rexavaem sistema od k linearnih jednaqina dobijaju se koeficijenti ci,i = 1, 2, . . . , k, a time i traeno rexee.

Primer 2.7. Opxti qlan niza zadatog diferencnom jednaqinom Fn =Fn−1 + Fn−2, i poqetnim uslovima F1 = F2 = 1 (Fibonaqijevog niza) moe seodrediti na opisani naqin. Koreni karakteristiqne jednaqine r2−r−1 = 0 sur1 = (1+

√5)/2 i r2 = (1−√5)/2, pa je rexee ove diferencne jednaqine oblika

Fn = c1rn1 + c2r

n2 . Koeficijenti c1 i c2 odreuju se iz uslova F1 = F2 = 1, ili

nexto jednostavnije iz uslova F0 = F2 − F1 = 0 i F1 = 1:

c1 +c2 = 0c1r1 +c2r2 = 1.

Rexee ovog sistema jednaqina je c1 = −c2 = 1√5, pa je opxti qlan Fibonaqi-

jevog niza zadat sa

(2.9) Fn =1√5

((1 +√

52

)n

−(1−√5

2

)n).

2.5. DIFERENCNE JEDNAQINE 23

U opxtem sluqaju, ako su koreni karakteristiqne jednaqine r1, r2, . . . , rs

vixestrukosti redom m1,m2, . . . , ms (∑

mi = k), onda se svako rexee jedna-qine (2.7) moe predstaviti u obliku

F (n) =s∑

i=1

hi(n),

gde jehi(n) =

(Ci0 + Ci1n + Ci2n

2 + · · ·+ Ci,mi−1nmi−1

)rni

(ovo tvree takoe navodimo bez dokaza).

Primer 2.8. Karakteristiqni polinom diferencne jednaqineF (n) = 6F (n− 1)− 12F (n− 2) + 8F (n− 3)

je r3 − 6r2 + 12r− 8 = (r− 1)3, sa trostrukim korenom r1 = 2. Zbog toga su svarexea ove diferencne jednaqine oblika F (n) = (c0 + c1n+ c2n

2)2n, gde su c0,c1, c2 konstante koje se mogu odrediti ako se znaju npr. tri prva qlana nizaF (1), F (2) i F (3).

2.5.3. Diferencne jednaqine koje se rexavaju sumiraem. Qestose nailazi na linearnu nehomogenu diferencnu jednaqinu oblika(2.10) F (n + 1)− F (n) = f(n),

pri qemu F (0) ima zadatu vrednost. Drugim reqima, razlika dva uzastopnaqlana traenog niza jednaka je datoj funkciji od indeksa n. Rexavae ovakvediferencne jednaqine svodi se na izraqunavae sume

∑n−1i=0 f(i). Zaista, ako

u goroj jednakosti n zamenimo sa i i izvrximo sumirae ene leve i desnestrane po i u granicama od 0 do n− 1, dobijamo

n−1∑

i=0

f(i) =n−1∑

i=0

F (i + 1)−n−1∑

i=0

F (i) =n∑

i=1

F (i)−n−1∑

i=0

F (i) = F (n)− F (0).

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

(2.11) F (n) =n−1∑

i=0

f(i) + F (0).

Primer 2.9. Razmotrimo diferencnu jednaqinu F (n+1) = F (n)+2n+1sa poqetnim uslovom F (0) = 0. eno rexee je

F (n) =n−1∑

i=0

(2i + 1) = 2n−1∑

i=0

i +n−1∑

i=0

1 = n(n− 1) + n = n2

U sluqaju kad je texko izraqunati sumu∑n−1

i=0 f(i) preko koje se izraavarexee diferencne jednaqine (2.10), a funkcija f(x) od realnog argumenta je

24 2. ANALIZA ALGORITAMA

monotono nerastua neprekidna funkcija za x ≥ 0, tada se sabiraem nejed-nakosti

f(i) ≥∫ i+1

i

f(x) dx ≥ f(i + 1), 0 ≤ i ≤ n− 1,

dobijaju nejednakostin−1∑

i=0

f(i) ≥∫ n

0

f(x) dx ≥n∑

i=1

f(i),

a time i granice intervala u kome lei suma∑n−1

i=0 f(i):∫ n

0

f(x) dx + f(0)− f(n) ≥n−1∑

i=0

f(i) ≥∫ n

0

f(x) dx.

Ako je pak funkcija f(x) monotono neopadajua, u ovim nejednakostima samotreba promeniti znake "≥" u "≤".

2.5.4. Diferencne jednaqine za algoritme zasnovane na dekom-poziciji. Pretpostavimo da nam je ci analiza algoritma A, pri qemu brojoperacija T (n) pri primeni algoritma A na ulaz veliqine n (vremenska sloenost)zadovoava diferencnu jednaqinu tipa

(2.12) T (n) = aT(n

b

)+ cnk,

pri qemu je a, b, c, k ≥ 0, b 6= 0, i zadata je vrednost T (1). Ovakva jednaqinadobija se za algoritam kod koga se obrada ulaza veliqine n svodi na obradua ulaza veliqine n/b, posle qega je potrebno izvrxiti jox cnk koraka da bise od parcijalnih rexea konstruisalo rexee kompletnog ulaza veliqinen. Jasno je zaxto se za ovakve algoritme kae da su tipa "zavadi pa vladaj",(engleski divide–and–conquer ), kako se jox zovu algoritmi zasnovanina dekompoziciji. Obiqno je dakle u ovakvim diferencnim jednaqinama bprirodan broj.

Teorema 2.1. Asimptotsko ponaxae niza T (n), rexea diferencne jed-naqine (2.12) dato je jednakoxu

(2.13) T (n) =

O(nlogb a) za a > bk

O(nk log n) za a = bk

O(nk) za a < bk

.

Dokazatel~stvo. Dokaz teoreme bie sproveden samo za podniz n = bm,gde je m celi nenegativni broj. Pomnoivxi obe strane jednakosti (2.12) saa−m/c, dobijamo diferencnu jednaqinu tipa (2.10)

tm = tm−1 + qm, t0 =1c

T (1),

2.5. DIFERENCNE JEDNAQINE 25

gde su uvedene oznake tm = 1ca−mT (bm) i q = bk/a. eno rexee je

tm = t0 +m∑

i=1

qi

(videti 2.5.3). Za q 6= 1 je∑m

i=1 qi = (1 − qm+1)/(1 − q) − 1, pa se asimptotskoponaxae niza tm opisuje sledeim jednakostima

tm =

O(m), za q = 1O(1), za 0 < q < 1O(qm), za q > 1

.

Poxto je T (bm) = camtm, n = bm, odnosno m = logb n, redom se za 0 < q < 1(bk < a), q = 1 (bk = a, odnosno logb a = k) i q > 1 (bk > a) dobija

T (n) =

O(am) = O(bm logb a) = O(nlogb a) za a > bk

O(mam) = O(logb n · nlogb a) = O(nk log n) za a = bk

O((aq)m) = O(bmk) = O(nk) za a < bk

,

qime je tvree teoreme dokazano. ¤

Algoritmi ovog tipa imaju xiroku primenu zbog svoje efikasnosti, pa jekorisno znati asimptotsko ponaxae rexea diferencne jednaqine (2.12).

2.5.5. Potpuna rekurzija. Diferencna jednaqina najopxtijeg oblika(2.3) zove se potpuna rekurzija ili diferencna jednaqina sa potpunom is-torijom. Razmotriemo dva primera ovakvih diferencnih jednaqina.

Primer 2.10. Neka za n ≥ 2 vai T (n) = c +∑n−1

i=1 T (i), pri qemu su c iT (1) zadati. Osnovna ideja za rexavae ovakvih problema je tzv. "elimina-cija istorije" nalaeem ekvivalentne diferencne jednaqine sa "konaqnomistorijom" (takve kod koje se qlan niza izraava preko ograniqenog brojaprethodnih). Zamenom n sa n + 1 u ovoj jednaqini dobija se T (n + 1) = c +∑n

i=1 T (i). Oduzimaem prve od druge jednakosti postie se eeni efekat:

T (n + 1)− T (n) = c +n∑

i=1

T (i)− (c +

n−1∑

i=1

T (i))

= T (n)

(za n ≥ 2), i konaqnoT (n + 1) = 2T (n) = 22T (n− 1) = · · · = 2n−1T (2) = 2n−1

(c + T (1)

).

Primetimo da se jednakost T (n + 1) = 2T (n) logaritmovaem i smenom tn =log T (n) svodi na tn+1 = tn + log 2, odnosno diferencnu jednaqinu tipa (2.10).

Primer 2.11. Razmotriemo sada sloeniji primer. Diferencna jed-naqina

(2.14) T (n) = n− 1 +2n

n−1∑

i=1

T (i), n ≥ 2, T (1) = 0,

26 2. ANALIZA ALGORITAMA

je vana, jer se do e dolazi pri analizi proseqne sloenosti sortiraarazdvajaem, algoritma za ureivae zadatog skupa brojeva po veliqini (sor-tirae, videti 5.3.4). Ideja o "eliminaciji istorije" moe se i ovde pri-meniti | zbog toga je zgodno prepisati zadatu jednaqinu tako da se u oj uzsumu

∑n−1i=1 T (i) ne pojavuje promenivi qinilac n:

nT (n) = n(n− 1) + 2n−1∑

i=1

T (i).

Zatim ovu jednakost treba oduzeti od one koja se od e dobija zamenom n san + 1:

(n+1)T (n+1)−nT (n) = (n+1)n+2n∑

i=1

T (i)−n(n−1)−2n−1∑

i=1

T (i) = 2n+2T (n),

odnosnoT (n + 1) =

2n

n + 1+

n + 2n + 1

T (n), n ≥ 2.

Ovim je prvi ci postignut: dobijena diferencna jednaqina povezuje samodva uzastopna qlana niza. Rexavae ove diferencne jednaqine moe se svestipoznat problem (2.10) deeem sa n + 2 i smenom tn = T (n)/(n + 1):

T (n + 1)n + 2

− T (n)n + 1

=2n

(n + 1)(n + 2),

odnosnotn+1 − tn =

2n

(n + 1)(n + 2).

Zamenom n sa i i sumiraem po i u granicama od 1 do n dobija se (t1 = 0)

(2.15) tn+1 − t1 =n∑

i=1

2i

(i + 1)(i + 2).

Da bi se izraqunala suma sa desne strane ove jednakosti, moe se en opxtiqlan razloiti na parcijalne razlomke

2i

(i + 1)(i + 2)=

A

i + 1+

B

i + 2,

gde se nepoznati koeficijenti A i B dobijaju tako xto se u identitetu 2i =A(i+2)+B(i+1) stavi najpre i = −1 (dobija se A = −2), a onda i = −2 (odakleje B = 4). Sada je traena suma jednaka

n∑

i=1

2i

(i + 1)(i + 2)= −2

n∑

i=1

1i + 1

+ 4n∑

i=1

1i + 2

= −2n+1∑

i=2

1i

+ 4n+2∑

i=3

1i

=

= 2n+1∑

i=3

1i− 2 · 1

2+

4n + 2

= 2H(n + 1)− 4 +4

n + 2,

ZADACI 27

gde je sa

(2.16) H(n) =n∑

i=1

1i

= ln n + γ + O(1n

),

oznaqena parcijalna suma harmonijskog reda; γ ' 0.577 je Ojlerova konstanta.Zamenom vrednosti sume u (2.15) dobija se rexee diferencne jednaqine (2.14)

T (n + 1) =(2H(n + 1)− 4 +

4n + 2

)(n + 2) = 2(n + 1)H(n + 1)− 4(n + 1),

odnosno(2.17) T (n) = 2nH(n)− 4n = 2n ln n + (2γ − 4)n + O(1) = O(n ln n).

U toku izvoea korixen je poznati asimptotski razvoj (2.16). Qesto jekorisno znati i asimptotski razvoj za n!, Stirlingovu formulu

n! =√

2πn(n

e

)n(1 + O(

1n

)),

odnosno(2.18) log(n!) = O(n log n).

2.6. RezimeCi analize algoritma je predvideti egovo ponaxae, xto nije lako.

Osnovni metod koji se koristi je aproksimacija. Zanemaruju se mnogi detai,a ci je izdvojiti samo najvanije karakteristike algoritma. Asimptotskaoznaka O je korisna za takva izraqunavaa. Teina analize kao pratiocaprocesa konstrukcije algoritma ne bi trebalo da bude izgovor za odustajaeod e. Bitno je dobiti bar nekakvu predstavu o efikasnosti algoritma.

U mnogim sluqajevima, naroqito kad se koristi rekurzija, nailazi se nadiferencne jednaqine. Tada obiqno treba izraqunati nekoliko prvih qlanovaniza, xto moe da prui neki uvid u ponaxae niza, odnosno da sugerixemogui oblik opxteg qlana. Postoje i drugi metodi za rexavae diferencnihjednaqina. Na sreu, veina algoritama na koje se u praksi nailazi, dovodido diferencnih jednaqina razmotrenih u ovom poglavu.

Zadaci2.1. Dokazati da ako je f(n) = o(g(n)), onda je f(n) = O(g(n)). Da li je taqna obrnuta

implikacija?

2.2. Polazei od (2.1) dokazati da za proizvone konstante a i b vai (log2 n)a =

O(nb).

2.3. Odrediti taqno rexee sledee diferencne jednaqine

T (n) = T (n− 1) +n

2, T (1) = 1.

2.4. Rexiti diferencnu jednaqinuT (n) = 8T (n− 1)− 15T (n− 2), T (1) = 1, T (2) = 4.

28 2. ANALIZA ALGORITAMA

2.5. Rexiti diferencnu jednaqinuT (n + 3) = 4T (n + 2)− 5T (n + 1) + 2T (n), T (1) = 1, T (2) = 2, T (3) = 3.

2.6. Rexiti diferencnu jednaqinu

T (2n) = 2n∑

i=1

T (2i− 1), T (2n + 1) = 2n∑

i=1

T (2i), T (1) = 1.

2.7. Problem Pn sa parametrom n (n je prirodan broj) rexava se primenom algoritamaA i B. Algoritam A rexava Pn (n > 1) primenom algoritma B na Pn−1, pri qemu se zasvoee problema troxi n vremenskih jedinica. Algoritam B rexava Pn (n > 1) primenomalgoritma A na Pn−1, pri qemu se za svoee problema troxi n vremenskih jedinica.Problem P1 algoritam A rexava direktno za jednu, a algoritam B za dve vremenske jedinice.Izraqunati vreme izvrxavaa algoritma A pri rexavau problema Pn.

2.8. Dokazati da niz T (n), rexee diferencne jednaqine T (n) = 2T (bn/2c)+2n log2 n,T (1) = 0, zadovoava jednakost T (n) = O(n log2 n).

2.9. Rexiti diferencnu jednaqinuT (n) = 2T (n/2) + c log2 n, T (1) = 0;

moe se pretpostaviti da je n oblika 2k.

2.10. (a) Pokazati da rexee diferencne jednaqine T (n) ≤ T (bn/2c) + 1, T (1) = 1,zadovoava uslov T (n) ≤ blog2 nc+ 1.

(b) Dokazati da rexee iste diferencne jednaqine sa promeenim poqetnim uslovomT (1) = 0 zadovoava nejednakost T (n) ≤ dlog2 ne+ 1.

2.11. Rexiti sledeu potpunu rekurziju

T (n) = n +

n−1∑

i=1

T (i) (n ≤ 2), T (1) = 1.

2.12. Ograniqavajui sa gore strane qlanove sume odreenim integralima, dokazatida za svaki prirodni broj k vai

∑ni=1 ik log2 i = O(nk+1 log n).

2.13. Pokazati kontraprimerom da sledee tvree nije taqno: ako je f(n) = O(s(n))i g(n) = O(r(n)), onda je f(n)− g(n) = O(s(n)− r(n)).

2.14. Nai kontraprimer za sledee tvree ako je f(n) = O(s(n)) i g(n) = O(r(n)),onda je f(n)/g(n) = O(s(n)/r(n)).

2.15. Navesti primer dve monotono rastue funkcije (niza) f(n) i g(n), takve da nijeni f(n) = O(g(n)) ni g(n) = O(f(n)).

2.16. Razmotrimo diferencnu jednaqinu T (n) = 2T (n/2) + 1, T (2) = 1. Pokuxava-jui da dokaemo da je T (n) = O(n) (ograniqavamo se na sluqaj kad je n stepen dvojke),pretpostavamo da za k < n vai T (k) ≤ ck za neku (za sada nepoznatu) konstantu c, izameujemo T (n) i T (n/2) u diferencnoj jednaqini redom sa cn i cn/2. Za uspexan dokazkoraka indukcije morala bi da vai nejednakost cn ≥ 2c(n/2)+1, koja, meutim, oqiglednonije taqna. Nai taqno rexee ove diferencne jednaqine (moe se pretpostaviti da je nstepen dvojke) i objasniti razlog neuspeha opisanog pokuxaja.

2.17. Odrediti asimptotsko ponaxae niza S(n), rexea diferencne jednaqineS(mn) ≤ cm log2 mS(n) + O(mn), S(2) = 1,

pri qemu su m i c konstante.

2.18. Dokazati da rexee diferencne jednaqine T (n) = 2T (n − c) + k, gde su c i kcelobrojne konstante, ima oblik T (n) = O(dn) za neku konstantu d.

ZADACI 29

2.19. Sledea diferencna jednaqina se pojavuje pri analizi nekih algoritama zas-novanih na dekompoziciji ulaza na delove razliqite veliqine:

T (n) =k∑

i=1

aiT (n/bi) + cn,

pri qemu konstante ai, bi zadovoavaju uslov∑k

i=1 ai/bi < 1. Odrediti asimptotsko pona-xae niza T (n).

2.20. Odrediti asimptotsko ponaxae rexea diferencne jednaqine(a) T (n) = 4T

(d√ne) + 1, T (2) = 1;(b) T (n) = 2T

(d√ne) + 2n, T (2) = 1.

2.21. Dokazati da diferencna jednaqina T (n) = kT (n/2) + f(n), T (1) = c, ima rexeeT (n) = nlog2 k (c + g(2) + g(4) + . . . + g(n)) ,

gde je g(m) = f(m)m− log2 k. Moe se pretpostaviti da je n stepen dvojke.

2.22. Odrediti asimptotsko ponaxae rexea T (n) diferencne jednaqineT (n) = T (n/2) +

√n, T (1) = 1.

Moe se smatrati da n uzima samo vrednosti jednake stepenima dvojke.

2.23. Odrediti asimptotsko ponaxae rexea diferencne jednaqine

T (n) = 2T

(⌊n

log2 n

⌋)+ 3n (n > 2), T (1) = 1, T (2) = 2,

tj. odrediti funkciju f(n) takvu da je T (n) = Θ(f(n)).

2.24. Oceujui sa gore strane qlanove sume odreenim integralima, dokazati da zaniz S(n) =

∑ni=1dlog2(n/i)e vai S(n) = O(n).

2.25. Izraqunati taqno sumu∑n

i=1blog2nic ako je n stepen dvojke.

2.26. Fibonaqijevi brojevi F (n) mogu se definisati i za negativne vrednosti n ko-ristei istu definiciju F (n + 2) = F (n + 1) + F (n) i F (1) = 1, F (0) = 0 (tako je npr.F (−1) = 1, F (−2) = −1, itd.). Neka je G(n) = F (−n) za n ≥ 0. Napisati diferencnujednaqinu za niz G(n). Pokazati da je eno rexee G(n) = (−1)n+1F (n).

Glava 3

Strukture podataka

Strukture podataka mogu se shvatiti kao elementi nad kojima se gradealgoritmi. Zbog toga je ihovo poznavae (odnosno poznavae tehnika radasa ima i poznavae sloenosti operacija sa ima) neophodno za savladavaetehnika konstrukcije algoritama. Strukture podataka su xiroko prouqavanaoblast. Ovde e biti dat samo uvod u osnovne strukture podataka.

Koristan pojam koji emo u vezi sa strukturama podataka koristiti jeapstraktni tip podataka. U programima se obiqno taqno specificira tipsvakog podatka (celi, realni, logiqki, i sliqno). Meutim, u nekim sluqa-jevima pri konstrukciji algoritama konkretan tip podataka nije bitan. Naprimer, ako se radi sa FIFO listom (skraeno od first–in–first–out ,odnosno prviunutraprvinapoe) od interesa su operacije upisa na listui skidaa sa e. Elementi se sa liste skidaju istim redom kojim su u uupisivani; primer FIFO liste je red za karte ispred bioskopa. Korisno je dase u ovom sluqaju ne precizira tip podataka, nego samo operacije sa ima.Apstraktni tip podataka nad kojim se mogu izvoditi ove dve operacije gra-di strukturu podataka koju zovemo FIFO lista. Najvanija karakteristikaapstraktnog tipa podataka je dakle spisak operacija koje se nad im moguizvrxavati.

Drugi primer apstraktnog tipa podataka je lista u kojoj su qlanovimapridrueni brojevi prioriteti. Skidae elemenata sa liste vrxi se re-dom prema prioritetu qlanova liste, a ne prema redosledom upisivaa. Ovastruktura podataka zove se lista sa prioritetom. I u ovom sluqaju nepotrebnoje specificirati tip samih podataka qlanova liste; xta vixe, ni tip po-dataka prioriteta dovono je da su prioriteti elementi potpuno ureenogskupa.

Koncentrixui pau na prirodu struktura podataka sa aspekta potreb-nih operacija, a zanemarujui preciznu realizaciju, dobija se opxtiji algo-ritam. Tako, na primer, tehnike realizacije liste sa prioritetom malo zaviseod konkretno izabranog tipa podataka. Dakle, ako uoqimo da nam je potrebanneki apstraktni tip podataka, moemo odmah da ga primenimo. Time kon-strukcija algoritama postaje modularnija | sastoji se od meusobno malozavisnih celina.

31

32 3. STRUKTURE PODATAKA

3.1. Elementarne strukture podatakaPod elementom podrazumevamo podatak kome tip nije preciziran (na primer

celi broj, skup celih brojeva, fajl i sliqno). Tako, na primer, kad se radi osortirau (ureivau elemenata linearno ureenog skupa po veliqini), akosu jedine operacije uporeivae i kopirae, onda se isti algoritam moeprimeniti i na cele brojeve i na imena | razlika je samo u realizaciji, aideje na kojima se zasniva algoritam su iste. Ako nas prvenstveno interesujuideje za konstrukciju algoritama, razumno je ignorisati konkretne tipove po-dataka elemenata. Ako se npr. radi o sortirau, za elemente se pretpostavada se mogu uporeivati na jednakost, da su iz potpuno ureenog skupa, i da semogu kopirati. Pored toga, pretpostavka je se da se sve operacije nad elemen-tima izvode u jediniqnom vremenskom intervalu.

Vektor. Vektor (niz) je niz elemenata istog tipa. Veliqina vektora jebroj elemenata u emu. Veliqina vektora se mora unapred zadati (odnosnofiksirana je), jer se unapred zna veliqina dodeene memorije. Na primer,vektor od 100 elemenata imena, od kojih se svako zapisuje u 8 bajtova, zauz-ima u memoriji 800 bajtova. Ako je prvi elemenat na lokaciji x, a veliqinaelementa je a bajtova, onda je k-ti elemenat vektora na lokaciji x + (k − 1)a,xto se lako izraqunava | nezavisno od rednog broja elementa. Ovo je efikas-na i zbog toga qesto korixena struktura podataka. ena osnovna osobina jeda je jednako vreme pristupa svim elementima. Na vixem programskom jezikuse o poziciji elementa i ne razmixa, jer taj deo posla obava prevodilac(kompajler). Zakuqak je da vektor treba koristiti kad god je to mogue. Ne-dostaci ove strukture podataka su da su svi eni elementi istog tipa i da seena veliqina ne moe meati dinamiqki, u toku izvrxavaa algoritma.

Slog. Slog (rekord) je takoe niz elemenata, koji meutim ne moraju bitiistog tipa | jedino se fiksira kombinacija tipova elemenata. Veliqina slo-ga takoe mora unapred biti definisana. Elementima sloga moe se kao ielementima vektora pristupiti za konstantno vreme: za ovu svrhu koristi seposeban vektor sa poqetnim adresama elemenata sloga, duine jednake brojuelemenata sloga. Tako, na primer, ako je slog definisan (kao u paskalu) naslici 1, onda je adresa elementa Int6 jednaka 2·4+3·20·4+3·4+1 = 261. Adreseovog i ostalih elemenata prevodilac izraqunava samo jednom, prilikom pro-laska kroz definiciju sloga, i smexta ih u spomenuti pomoni vektor.

Povezana lista. Qesto je potrebno da se broj elemenata dinamiqki mea.Kad se unapred ne zna broj elemenata vektora, mogue je rezervisati dovonoveliki vektor i tako rexiti problem | xto je qesto dobro rexee. Ipak,neefikasno je rezervisati memorijski prostor prema najgorem sluqaju. Poredtoga, qesto je potrebno umetae elemenata ili brisae elemenata iz sredineliste | xto je neefikasno kod vektora. Zbog navedenih razloga koriste setzv. dinamiqke strukture podataka. Najjednostavnija od ih je povezana

3.1. ELEMENTARNE STRUKTURE PODATAKA 33

primer = record

Int1 : integer;

Int2 : integer;

Ar1 : array[1..20] of integer;

Ar2 : array[1..20] of integer;

Ar3 : array[1..20] of integer;

Int3 : integer;

Int4 : integer;

Int5 : integer;

Int6 : integer;

Ime1 : array[1..12] of character;

Ime2 : array[1..12] of character

end

Ris. 1. Primer sloga.

lista. Ako je ci efikasno umetae i izbacivae elemenata, mora se na-pustiti sekvencijalni zapis koji karakterixe vektor | elementi se morajuzapisivati nezavisno, a meusobno se povezuju (nadovezuju) pomou pokazivaqa,promenive koja sadri adresu nekog drugog elementa.

Povezana lista je vektor parova (elemenat, pokazivaq), pri qemu pokazi-vaq sadri adresu narednog para. Par se predstava pomou sloga. Prolazakkroz listu mogu je jedino linearno | redom od poqetka, elemenat po ele-menat, pratei pokazivaqe. Nedostaci ove strukture podataka su u tome xtozahteva vixe prostora u memoriji (uz svaki elemenat ide i pokazivaq), a k-tom(k > 1) elementu moe se pristupiti samo preko svih prethodnih. Prednostpovezane liste je u tome xto se upis i brisae lako realizuju, za razliku odvektora, kod koga ove operacije zahtevaju veliki broj pomeraa elemenata. Zaumetae novog elementa izmeu neka dva elementa povezane liste dovono jesamo promeniti dva pokazivaqa. Na slici 2 prikazano je umetae novog, ele-menta 30a, izmeu 30. i 31. elementa povezane liste. Sliqno, za brisae ele-menta iz liste dovono je promeniti jedan pokazivaq. Na slici 3 prikazanoje brisae 31. elementa povezane liste.

1 2 30 31-- - -` ` ` -

-

30a

?

Ris. 2. Umetae novog elementa u povezanu listu.

34 3. STRUKTURE PODATAKA

- -30 31 32

6

- -

Ris. 3. Brisae elementa povezane liste.

Ovde su zbog jednostavnosti zanemareni neki vani detai, koji uslon-javaju realizaciju povezane liste. Osnovni problem je kako otkriti kraj liste.U tu svrhu moe se koristiti prazan pokazivaq nil, (pokazivaq na nixta,odnosno vrednost pokazivaqa takva da ne moe da predstava vaeu adresu),koja se dodeuje pokazivaqu posledeg elementa u listi. Drugo mogue rex-ee je da se kraj liste oznaqi obiqnim slogom, qiji pak podatak nije obiqan,tzv. prazan slog.

3.2. StablaVektori i povezane liste su jednodimenzionalne strukture podataka ko-

je odraavaju samo redosled elemenata. Ponekad je meutim potrebno pred-staviti i sloenije odnose izmeu elemenata. Stablo (drvo) je hijerarhijskastruktura, ali se moe koristiti i za izvoee nekih operacija nad lin-earnim strukturama. Na ovom mestu baviemo se samo hijerarhijskim ili ko-renskim stablom. Korensko stablo qini skup qvorova i grana, koje povezujuqvorove na specijalan naqin (videti primer na slici 4). Jedan qvor je iz-dvojen, predstava vrh hijerarhije i zove se koren stabla. Qvorovi vezani sakorenom qine nivo 1 hijerarhije; (novi) qvorovi vezani sa qvorovima nivoa 1(sem korena) qine nivo 2 hijerarhije, itd. Svaka grana u stablu povezuje nekiqvor sa egovim (jedinstvenim) prethodnikom (ocem); jedino koren nema oca.Osnovna karakteristika stabla je da nema ciklusa (zatvorenih puteva), zbogqega izmeu svaka dva egova qvora postoji jedinstveni put. Qvor u stabluvezan je sa ocem i nekoliko sinova. Za qvor v koji se nalazi na putu od qvorau do korena kae se da je predak qvora u; u tom sluqaju je qvor u potomakqvora v. Maksimalni broj sinova qvora u grafu zove se stepen stabla. Obiqnoje za sinove svakog qvora definisan redosled, tako da se sinovi mogu identi-fikovati svojim rednim brojem. Stablo stepena dva zove se binarno stablo.Qvor u binarnom stablu moe da ima najvixe dva sina, levog i desnog. Qvorbez dece zove se list, a qvor koji nije list zove se unutraxi qvor. Visinastabla je najvei nivo hijerarhije u emu, tj. maksimalno rastojae od kore-na do nekog qvora. Qvor ima kuq iz nekog potpuno ureenog skupa (npr. celiili realni broj). Svaki qvor moe da ima poe za podatak | xto zavisi odprimene.

U nastavku e biti reqi o binarnom stablu pretrage i hipu, kao primerimastruktura podataka zasnovanim na binarnom stablu. Pre toga razmotriemomogue naqine predstavaa stabla. U zavisnosti od toga da li se koristepokazivaqi ili ne, predstavae stabla je eksplicitno, odnosno implicitno.

3.2. STABLA 35

f

f

f

f

f

f

ff

ff

f f ff

f

f f

1

2 3

4 6 7 85

9 10

14 15 16 17

11 12 13

Ris. 4. Primer korenskog stabla.

Pri eksplicitnom predstavau se qvor sa k sinova predstava slogom qijije deo vektor sa k pokazivaqa ka sinovima; ponekad je deo sloga i pokazivaqka ocu. Pogodno je da svi qvorovi budu istog tipa | sa m pokazivaqa, gde jem najvei broj sinova nekog qvora, tj. stepen stabla. Stablo stepena veeg oddva moe se predstaviti korixeem samo dva pokazivaqa po qvoru: jednogka prvom sinu, a drugog ka narednom bratu | videti primer na slici 5.

e

ee

e e eee

ee

e eee

e ee

e

ee

e e eee

ee

e eee

e ee

Ris. 5. Prikazivae nebinarnog stabla sa po najvixe dvapokazivaqa po qvoru.

Za implicitno predstavae stabla ne koriste se pokazivaqi: svi qvorovise smextaju u vektor, a veze izmeu qvorova odreene su ihovom pozicijomu vektoru. Ako je sa A oznaqen vektor u koji se smextaju qvorovi binarnogstabla, onda se koren smexta u A[1]; egov levi, odnosno desni sin zapisujuse u A[2], odnosno A[3], itd. (videti sliku 6). Dakle, u vektoru se qvorovizapisuju onim redom kojim se prolaze s leva u desno, nivo po nivo; pri tomese oqigledno u vektoru mora rezervisati prostor i za odsutne qvorove. In-dukcijom se moe pokazati da ako je qvor v zapisan u elementu A[i], onda suegov levi, odnosno desni sin zapisani u elementu A[2i], odnosno A[2i + 1].

Ovakav naqin predstavaa stabla je pogodan zbog svoje kompaktnosti.Ipak, ako je stablo neuravnoteeno (odnosno neki listovi su mnogo dae

36 3. STRUKTURE PODATAKA

m

mm

m mmm

1

2 3

4 5 6 7

8 9 10 11 12 13 14 15

Ris. 6. Implicitno predstavae binarnog stabla. Broj uzqvor oznaqava egovu poziciju u vektoru.

od korena nego drugi), mora se rezervisati i prostor za mnogo nepostojeihqvorova, pa se tada ovakvim predstavaem stabla neracionalno koristi me-morijski prostor. Tako, na primer, za smextae stabla sa osam qvorova naslici 7 koristi se vektor duine qak 30.

m

m

m

m

m

m

m

m

1

2 3

6 7

14 15

30

Ris. 7. Primer neuravnoteenog stabla, za koje je implicit-no predstavae neefikasno.

3.3. HipHip je binarno stablo koje zadovoava uslov hipa: kuq svakog qvora je

vei ili jednak od kuqeva egovih sinova. Neposredna posledica definicije(zbog tranzitivnosti relacije ≤) je da je u hipu kuq svakog qvora vei ilijednak od kuqeva svih egovih potomaka.

Hip je pogodan za realizaciju liste sa prioritetom, apstraktne struk-ture podataka za koju su definisane dve operacije:

• umetni(x) umetni kuq x u strukturu, i• ukloni() ukloni (obrixi) najvei kuq iz strukture.

Hip se moe realizovati sa implicitno ili eksplicitno zadatim stablom.Ovde e biti prikazana realizacija hipa na implicitno zadatom stablu, jer

3.3. HIP 37

se dve osnovne operacije mogu izvoditi na naqin koji obezbeuje da stablo uvekbude uravnoteeno. Dakle, smatraemo da su kuqevi qvorova hipa smexteniu vektoru A, pri qemu je k gora granica za broj elemenata hipa (ako se tagranica ne zna unapred, onda se za hip mora koristiti povezana lista). Akoje n tekui broj elemenata hipa, onda se za smextae elemenata hipa koristelokacije u vektoru A sa indeksima od 1 do n.

Uklaae sa hipa elementa sa najveim kuqem. Kuq najveegelementa je A[1], pa ga je lako pronai. Posle toga treba transformisati pre-ostali sadraj vektora tako da predstava ispravan hip. To se moe postiitako da se najpre A[n] prekopira u koren (A[1] := A[n]) i n smai za jedan. Oz-naqimo sa x = A[1] novi kuq korena, a sa y = maxA[2], A[3] vei od kuqevasinova korena. Podstabla sa korenima u A[2] i A[3] su ispravni hipovi; akoje x ≥ y (odnosno x ≥ A[2] i x ≥ A[3]), onda je kompletno stablo ispravanhip. U protivnom (ako je x < y), posle zamene mesta kuqeva x i y u stablu(odnosno u vektoru A), podstablo sa nepromeenim korenom ostaje ispravanhip, a drugom podstablu je promeen (smaen!) kuq u korenu. Na to drugopodstablo primeuje se rekurzivno (indukcija) ista procedura koja je pri-meena na polazno stablo. Induktivna hipoteza je da ako je posle i korakax na poziciji A[j], onda samo podstablo sa korenom A[j] eventualno ne zado-voava uslov hipa. Dae se x uporeuje sa A[2j] i A[2j + 1] (ako postoje) i,ako nije vei ili jednak od oba ova kuqa, zameuje mesto sa veim od ih.Dakle, kuq x spuxta se nanie dotle dok ne dospe u list ili u koren nekogpodstabla u kome je vei ili jednak od kuqeva oba sina. Na slici 8 prikazanje primer uklaaa najveeg elementa iz hipa.

m m m m

m m

m8

4 6

3 1 2 5 m m m

m m

m5

4 6

3 1 2

y

m m m

m m

m6

4 5

3 1 2

y

®

Ris. 8. Uklaae najveeg elementa sa hipa.

Umetae novog elementa u hip. Operacija se izvodi na sliqan naqinkao i prethodna. Najpre se n povea za jedan i na slobodnu poziciju A[n] upixese novi kuq. Taj kuq uporeuje se sa kuqem oca A[i], gde je i = dn/2e, pa akoje vei od ega, zameuju im se mesta. Ova zamena moe samo da povea kuqA[i], pa e qvor sa kuqem A[i] biti koren ispravnog hipa. Moe pokazatida je taqna sledea induktivna hipoteza: ako je umetnuti kuq posle nizapremextaa dospeo u elemenat A[j], onda stablo sa korenom A[j] jeste ispravanhip, a ako se to podstablo ukloni, ostatak stabla zadovoava uslov hipa.

38 3. STRUKTURE PODATAKA

Proces se nastava premextaem novog kuqa navixe, sve dok ne bude maiili jednak od kuqa oca (ili dok ne doe do korena) | tada kompletno stablozadovoava uslov hipa; videti primer na slici 9. Maksimalni broj poreeaje ograniqen visinom stabla blog2 nc.

m m m m

m m

m6

4 5

3 1 2 9 m mm mm mm m

m mm m

m m6 9

4 49 6

3 31 12 25 5

y

°

²

¾

Ris. 9. Umetae elementa u hip.

Broj uporeivaa prilikom izvrxea obe navedene operacije sa hipomje dakle ograniqen visinom stabla, odnosno sa O(log n), xto znaqi da se oneefikasno izvrxavaju. Nedostatak hipa je u tome xto se ne moe efikasnoizvesti traee zadatog kuqa. Na slikama 10 i 11 prikazani su na pseudopaskalu algoritmi za uklaae najveeg kuqa, odnosno umetae novog kuqau hip.

Primedba. U ovakvim ne sasvim formalnim specifikacijama algori-tama na pseudo-paskalu qesto e biti korixen opis reqima; za blokove suispuxteni begin i end | sem na poqetku i kraju algoritma. Deklaracijepodataka se ne navode eksplicitno, jer to najqexe nije neophodno.

3.4. Binarno stablo pretrageSvaki qvor binarnog stabla ima najvixe dva sina, pa se moe fiksirati

neko preslikavae skupa egovih sinova u skup levi, desni. Ovo preslika-vae moe se iskoristiti pri iscrtavau stabla u ravni: levi sin crta selevo, a desni sin desno od oca; svi qvorovi iste generacije (nivoa) crtajuse na istoj horizontalnoj pravoj, ispod prave na kojoj su qvorovi prethodnegeneracije. Levom, odnosno desnom sinu korena stabla odgovara levo, odnos-no desno podstablo. U binarnom stablu pretrage (BSP) kuq svakog qvoravei je od kuqeva svih qvorova levog podstabla, a mai od kuqeva svihqvorova desnog podstabla. Pretpostavamo zbog jednostavnosti da su kuqevisvih qvorova razliqiti. BSP omoguuje efikasno izvrxavae sledee trioperacije:

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

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

3.4. BINARNO STABLO PRETRAGE 39

Algoritam Skini max sa hipa(A, n);

Ulaz: A (vektor veliqine n za smextae hipa).Izlaz: V rh hipa (najvei elemenat hipa), A (novi hip), n (nova veliqina hipa; ako je

n = 0 hip je prazan).begin

if n = 0 then print "hip je prazan"else

V rh hipa := A[1];

A[1] := A[n];

n := n− 1;

Otac := 1;

if n > 1 then

Sin := 2;

while Sin ≤ n do

if Sin + 1 ≤ n and A[Sin] < A[Sin + 1] then

Sin := Sin + 1;

if A[Sin] > A[Otac] then

zameni (A[Otac], A[Sin]);

Otac := Sin;

Sin := 2 · Sin;

else

Sin := n + 1 da bi se iskoqilo iz peteend

Ris. 10. Algoritam za uklaae najveeg elementa iz hipa.

• Ukloni(x) ako u strukturi podataka postoji elemenat sa kuqem x,ukloni ga.

Struktura podataka sa ovim operacijama zove se reqnik. Za enu realizacijumoe se iskoristiti BSP. Zbog vanosti dinamiqkih ubacivaa i brisaaelemenata iz reqnika, i da se ne bi morala unapred zadavati gora granicaza broj elemenata, smatraemo da je odgovarajue stablo predstaveno ekspli-citno. Svaki qvor stabla je slog sa bar tri poa: kuq, levi i desni. Drugo,odnosno tree poe su pokazivaqi ka drugim qvorovima, ili nil (ako qvornema levog, odnosno desnog sina).

Nalaee kuqa. Ovo je operacija po kojoj je struktura podataka bi-narno stablo pretrage dobila ime. Potrebno je pronai u stablu elemenatsa zadatim kuqem x. Broj x uporeuje se sa kuqem r korena BSP. Ako jer = x onda je traee zavrxeno. Ako je pak x < r (odnosno x > r) onda setraee rekurzivno nastava u levom (odnosno desnom) podstablu. Na sli-ci 12 prikazan je pseudo kod za ovaj algoritam. Algoritam je po ideji sliqansa metodom polovea intervala za numeriqko rexavae jednaqine f(x) = c,

40 3. STRUKTURE PODATAKA

Algoritam Upis u hip(A, n, x);

Ulaz: A (vektor veliqine n za smextae hipa), x (broj).Izlaz: A (novi hip), n (nova veliqina hipa).begin

n := n + 1; pretpostavka je da novo n nije vee od veliqine AA[n] := x;

Sin := n;

Otac := n div 2;

while Otac ≥ 1 do

if A[Otac] < A[Sin] then

zameni (A[Otac], A[Sin]);

Sin := Otac;

Otac := Otac div 2;

else

Otac := 0 za iskakae iz peteend

Ris. 11. Algoritam za upis novog elementa u hip.

kad je f(x) monotona neprekidna funkcija na intervalu [a, b], pri qemu jef(a) < 0 i f(b) > 0. Vrednost f(d) u sredoj taqki d = (a + b)/2 uporeuje sesa c, posle qega se traee nastava u levoj ili desnoj polovini intervala[a, b], u zavisnosti od toga da li je f(d) < c ili f(d) > c. Ako je f(d) = c ondaje rexee jednaqine naeno.

Algoritam Nadji u BSP(Koren, x);

Ulaz: Koren (pokazivaq na koren BSP), x (broj).Izlaz: Cvor (pokazivaq na qvor koji sadri kuq x, ili nil ako takvog qvora nema).begin

if Koren = nil or Koren .Kljuc = x then Cvor := Koren

Korenˆ je slog qiju adresu sadri pokazivaq Korenelse

if x < Koren .Kljuc then Nadji u BSP (Koren .Levi, x)

else Nadji u BSP (Koren .Desni, x)

end

Ris. 12. Nalaee broja u binarnom stablu pretrage.

Umetae je takoe jednostavna operacija. Kuq x koji treba umetnutinajpre se potrai u BSP; ako se pronae, umetae je zavrxeno; pretpostavaje da se u reqniku ne quvaju ponovene kopije istih elemenata. Ako se x ne

3.4. BINARNO STABLO PRETRAGE 41

pronae u BSP, onda se prilikom traea doxlo do lista, ili do qvora bezjednog sina, upravo sa one strane gde treba umetnuti novi qvor. Tada se xumee kao levi, odnosno desni sin tog qvora | ako je mai, odnosno vei odkuqa tog qvora (slika 13).

Algoritam Umetni u BSP(Koren, x);

Ulaz: Koren (pokazivaq na koren BSP), x (broj).Izlaz: U BSP se umee qvor sa kuqem x na koga pokazuje pokazivaq Sin;

ako ve postoji qvor sa kuqem x, onda Sin = nil.begin

if Koren = nil then

kreiraj novi qvor na koga pokazuje Sin;

Koren := Sin;

Koren .Kljuc = x; Koren .levi := nil; Koren .Desni := nil;

else

Cvor := Koren; tekui qvor u stabluSin := Koren; postava se na vrednost razliqitu od nilwhile Cvor 6= nil and Sin 6= nil do

if Cvor .Kljuc = x then Sin := nil

else silazak niz stablo za jedan nivoOtac := Cvor;

if x < Cvor .Kljuc then Cvor := Cvor .Levi

else Cvor := Cvor .Desni;

if Sin 6= nil then novi qvor je sin qvora Otac

kreiraj novi qvor na koga pokazuje Sin;

Sin .Kljuc := x;

Sin .Levi = nil; Sin .Desni = nil;

if x < Otac .Kljuc then Otac .Levi := Sin

else Otac .Desni := Sin

end

Ris. 13. Umetae broja u binarno stablo pretrage.

Brisae qvora iz BSP kome je kuq jednak zadatom broju je nexto kom-plikovanija operacija od prethodnih (videti algoritam na slici 15). Najjed-nostavnije je obrisati list, slika 14(a). Na sliqan naqin lako je obrisatiunutraxi qvor sa samo jednim sinom: taj qvor se uklaa, a podstablo sa ko-renom u egovom sinu se podie za jedan nivo tako da mu koren bude na mestuobrisanog qvora, slika 14(b). Ako treba ukloniti unutraxi qvor B sa obasina, moe se najpre u levom podstablu qvora B pronai "najdesniji" qvor x,odnosno qvor sa najveim kuqem (slika 14(c); polazei od korena tog stablaprelazi se dokle god je to mogue iz qvora u egovog desnog sina; na kraju tog

42 3. STRUKTURE PODATAKA

puta dolazi se do qvora x). Kuq qvora x kopira se u kuq B, a qvor x uklaase na ve opisani naqin jer je on list ili qvor sa samo jednim sinom. Posleove operacije BSP ostaje konzistentno: kuq x vei je od kuqeva svih qvoro-va u levom podstablu ispod svoje nove lokacije. Qvor x zove se prethodnikqvora B u stablu. Isti rezultat moe se postii pomou "najlevijeg" qvorau desnom podstablu qvora B, egovog sledbenika.

b bb b b b

bbb

bbb

bb

bb

b bb b b b

bbb

bb

bb

bb

(c)

f

f

x

y

B

y

x

b bbb

b bb

bb

B f

-

-

bb

bb

bb

bbbb

bf

(a) (b)

B

x

x

-

Ris. 14. Brisae elementa binarnog stabla pretrage.

Sloenost. Za sve tri razmatrane operacije vreme izvrxea zavisi odoblika stabla i poloaja qvora na kome se vrxi intervencija | u najgoremsluqaju se tragae zavrxava u listu stabla. Sve ostalo zahteva samo kon-stantan broj elementarnih operacija (na primer, stvarno upisivae kuqaili zamena kuqeva pri brisau). Dakle, u najgorem sluqaju je sloenostproporcionalna visini stabla. Ako je stablo sa n qvorova u razumnoj meriuravnoteeno (ovaj pojam e u narednom odeku biti preciznije definisan),onda je egova visina proporcionalna sa log2 n, pa se sve tri operacije efi-kasno izvrxavaju. Problem nastaje ako stablo nije uravnoteeno | na primer,stablo koje se dobija umetaem rastueg niza kuqeva ima visinu O(n)! Akose stablo dobija umetaem n kuqeva u sluqajno izabranom poretku, onda jeoqekivana visina stabla 2 ln n, pa su operacije traea i umetaa efikasne.Stabla sa dugaqkim putevima mogu da nastanu kao rezultat umetaa u u-reenom ili skoro ureenom redosledu. Brisaa mogu da izazovu problemeqak i ako se izvode u sluqajnom redosledu: razlog tome je asimetrija do ko-je dolazi ako se uvek koristi prethodnik za zamenu obrisanog qvora. Posleqestih brisaa i umetaa, stablo moe da dostigne visinu O(

√n), qak i u kod

3.4. BINARNO STABLO PRETRAGE 43

Algoritam Ukloni iz BSP(Koren, x);

Ulaz: Koren (pokazivaq na koren BSP), x (broj).Izlaz: Iz BSP se uklaa qvor sa kuqem x, ako takav postoji.

Pretpostavka je da se koren nikad ne brixe, i da su svi kuqevi razliqitibegin

prva faza: traee qvora sa kuqem xCvor := Koren;

while Cvor 6= nil and Cvor .Kljuc 6= x do

Otac := Cvor;

if x < Cvor .Kljuc then Cvor := Cvor .Levi

else Cvor := Cvor .Desni;

if Cvor = nil then print(′′x nije u BSP"); halt;

brisae naenog qvora Cvor, ili egovog prethodnikaif Cvor 6= Koren then

if Cvor .Levi = nil then

if x ≤ Otac .Kljuc then

Otac .Levi := Cvor .Desni

else Otac .Desni := Cvor .Desni

else if Cvor .Desni = nil then

if x ≤ Otac .Kljuc then

Otac .Levi := Cvor .Levi

else Otac .Desni := Cvor .Levi

else sluqaj sa dva sinaCvor1 := Cvor .Levi;

Otac1 := Cvor;

while Cvor1 .Desni 6= nil do

Otac1 := Cvor1;

Cvor1 := Cvor1 .Desni;

a sada brisae; Cvor1 je prethodnik qvora CvorCvor .Kljuc := Cvor1 .Kljuc

if Otac1 = Cvor then Otac1 .Levi := Cvor1 .Levi; Cvor1 je levi sin qvora Otac1

else

Otac1 .Desni := Cvor1 .Levi; Cvor1 je desni sin qvora Otac1end

Ris. 15. Brisae zadatog broja iz binarnog stabla pretrage.

44 3. STRUKTURE PODATAKA

sluqajnih umetaa i brisaa. Asimetrija se moe smaiti ako se za zamenuobrisanog qvora naizmeniqno koriste prethodnik i sledbenik.

Na sreu, postoji naqin da se izbegnu dugaqki putevi u BSP. Jedan takavmetod bie razmotren u sledeem odeku.

3.5. AVL stablaAVL stabla (koja su ime dobila po autorima, Adel~sonVel~ski, Landis,

1962.) su prva struktura koja garantuje da sloenost ni jedne od operacijatraea, umetaa i brisaa u najgorem sluqaju nije vea od O(log n), gdeje n je broj elemenata. Ideja je uloiti dopunski napor da se posle svakeoperacije stablo uravnotei, tako da visina stabla uvek bude O(log n). Pritome se uravnoteenost stabla definixe tako da se moe lako odravati.

Definicija 3.1. AVL stablo je binarno stablo pretrage kod koga je zasvaki qvor apsolutna vrednost razlike visina levog i desnog podstabla maaili jednaka od jedan.

Kao xto pokazuje sledea teorema, visina AVL stabla je O(log n).

Teorema 3.1. Za AVL stablo sa n unutraxih qvorova visina h zado-voava uslov h < 1.4405 log2(n + 2)− 0.327.

Dokazatel~stvo. AVL stablo Th visine h ≥ 2 sa najmaim moguimbrojem qvorova moe se dobiti sledeom induktivnom konstrukcijom: ego-vo podstablo mae visine h − 2 takoe treba da bude AVL stablo sa min-imalnim brojem qvorova, dakle Th−2; sliqno, egovo drugo podstablo tre-ba da bude Th−1. Stabla opisana ovakvom "diferencnom jednaqinom" zovu seFibonaqijeva stabla. Nekoliko prvih Fibonaqijevih stabala, takvih da jeu svakom unutraxem qvoru visina levog podstabla maa, prikazano je naslici 16. Oznaqimo sa nh minimalni broj unutraxih qvorova AVL stablavisine h, tj. broj unutraxih qvorova stabla Th; n0 = 0, n1 = 1, n2 = 2,n3 = 4. Po definiciji Fibonaqijevih stabala je nh = nh−1 + nh−2 + 1, odnos-no nh + 1 = (nh−1 + 1) + (nh−2 + 1), za h ≥ 2. Vidimo da brojevi nh + 1zadovoavaju istu diferencnu jednaqinu (2.5) kao i Fibonaqijevi brojeviFh (Fh+2 = Fh+1 + Fh za h ≥ 2; F1 = F2 = 1). Uzimajui u obzir i prveqlanove niza, indukcijom je dokazano da je nh + 1 = Fh+2. Prema tome, za brojn unutraxih qvorova AVL stabla visine h vai nejednakost

n ≥ Fh+2 − 1.

Polazei od izraza (2.9) za opxti qlan Fibonaqijevog niza, dobijamo

n ≥ 1√5

(αh+2 −

(− 1

α

)h+2)− 1 >

1√5αh+2 − 2,

3.5. AVL STABLA 45

gde je sa α = (√

5 + 1)/2 oznaqen pozitivan koren karakteristiqne jednaqinelinearne diferencne jednaqine (2.5). Ova nejednakost ekvivalentna je sa

h <1

log2 αlog2(n + 2)−

(2− log2 5

2 log2 α

),

qime je teorema dokazana, jer je 1/ log2 α ' 1.44042 i log2 5/(2 log2 α) ' 0.3277.¤

c c c cc c c c c

c c c c

cT0 T1 T2 T3

Ris. 16. Fibonaqijeva stabla T0, T1, T2 i T3.

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

Prilikom umetaa novog broja u AVL stablo postupa se najpre na naqinuobiqajen za binarno stablo pretrage: pronalazi se mesto qvoru, pa se u sta-blo dodaje novi list sa kuqem jednakim zadatom broju. Bez umaea opx-tosti moe se pretpostaviti da je novi qvor umetnut u levo podstablo. Akoje visina levog podstabla maa ili jednaka od visine desnog podstabla, ilise egova visina ne mea posle umetaa, onda stablo i posle umetaa osta-je uravnoteeno | visina levog podstabla se umetaem novog lista ne moepoveati za vixe od jedan. U protivnom se, ako je visina levog podstabla vea,i posle umetaa se povea za jedan, dobija neuravnoteeno stablo. Prema tomeda li je novi list dodat levom ili desnom podstablu levog podstabla, razliku-jemo dva sluqaja, videti sliku 17. U prvom sluqaju se na stablo primeujerotacija: koren levog podstabla B (videti sliku 18) podie se i postaje ko-ren stabla, a ostatak stabla preureuje se tako da stablo i dae ostane stablopretrage. Stablo T1 se "podie" za jedan nivo ostajui i dae levo podstabloqvora B; stablo T2 ostaje na istom nivou ali umesto desnog podstabla B postajelevo podstablo A; desno podstablo A spuxta se za jedan nivo. Isprekidana cr-tica na slici 18 pokazuje da rotacija rexava problem i ako su visine stabalaT1, T2 jednake, i ako je visina T1 za jedan vea od visine T2. Drugi sluqaj jekomplikovaniji; tada se stablo se moe uravnoteiti dvostrukom rotacijom,videti sliku 19.

Zapaamo da u oba sluqaja visina stabla posle uravnoteavaa ostajenepromeena. Qvor A na ovim slikama, tzv. kritiqan qvor, je dakle korennajmaeg podstabla koje sadri umetnuti qvor, a koje posle egovog umetan-ja postaje neAVL. Uravnoteavae podstabla kome je koren kritiqan qvor

46 3. STRUKTURE PODATAKA

bb b

b b bb

B

A

C

T4T3

T2T1

bb b

b b bb

B

A

C

T4T3

T2T1

novi list novi list

0

1

2

h

h + 1

h + 2

Ris. 17. Umetaa koja remete AVL svojstvo stabla.

bb b

b b bb

B

A

C

T4T3

T2T1

novi list

0

1

2

h

h + 1

h + 2

?? b

T1

novi list

b

T2

bb b

T4T3

bb

B

A

C-

6

Ris. 18. Uravnoteavae AVLstabla posle umetaa | rotacija.

h + 2

h + 1

h

3

2

1

0

bb

bb

bb

T1 T2

b

T3

T4

B

D

A

C

66

?

?

novi list

b

T1

b

T2

b

T3

novi list

bb

B

D

bb

T4

A

- C

Ris. 19. Uravnoteavae AVLstabla posle umetaa |dvostruka rotacija.

zbog toga ne utiqe na ostatak stabla. Prema tome, posle umetaa novog qvo-ra mora se pronai kritiqan qvor i ustanoviti koji je od gore razmotrenih

3.6. HEX TABELE 47

sluqajeva u pitau. Uz svaki qvor stabla quva se egov faktor ravnotee,jednak razlici visina egovog levog i desnog podstabla; za AVL stablo su terazlike elementi skupa −1, 0, 1. Uravnoteavae postaje neophodno ako jefaktor nekog qvora ±1, a novi qvor se umee na "pogrexnu" stranu. Prematome, kritiqan qvor mora da ima faktor ravnotee razliqit od nule. Posleuravnoteavaa visine iznad kritiqnog qvora ostaju nepromeene. Komple-tan postupak umetaa sa uravnoteavaem dakle izgleda ovako: idui nanieprilikom umetaa pamti se posledi qvor sa faktorom razliqitim od nule;kad se doe do mesta umetaa, ustanovava se da li je umetae na "dobroj" ili"pogrexnoj" strani u odnosu na kritiqan qvor, a onda se jox jednom prolaziput unazad do kritiqnog qvora, popravaju se faktori ravnotee i izvrxava-ju eventualne rotacije.

Brisae je komplikovanije, kao i kod obiqnog BSP. U opxtem sluqajuse uravnoteavae ne moe izvesti pomou samo jedne ili dve rotacije. Naprimer, da bi se Fibonaqijevo stablo Fh sa n qvorova uravnoteilo poslebrisaa "dobro" izabranog qvora, potrebno je izvrxiti h−2, odnosno O(log n)rotacija (videti sliku 20 za h = 4). U opxtem sluqaju je granica za potrebanbroj rotacija O(log n). Na sreu, svaka rotacija zahteva konstantni broj ko-raka, pa je sloenost uravnoteavaa AVL stabla posle brisaa ograniqenasa O(log n). Na ovom mestu preskoqiemo detae.

bib

bb

bb

bb

bb b

b

1

2

3

4

5

6

7

8

9

10

11

?

6

6

bb

b

bb

bb

bb b

b

2

3

4

5

6

7

8

9

10

11

1-

bb

b bb

7

8

9

10

11

bb

bb

b b1 3

2 5

6

4

-

?

6

6

Ris. 20. Uravnoteavae Fibonaqijevog stabla T4 poslebrisaa qvora, pomou dve rotacije.

AVL stablo je efikasna struktura podataka. Qak i u najgorem sluqajuAVL stabla zahtevaju najvixe za 45% vixe uporeivaa od optimalnih sta-bala. Empirijska ispitivaa su pokazala da se proseqno traee sastoji odoko log2 n + 0.25 poreea. Osnovni nedostatak AVL stabala je potreba zadodatnim memorijskim prostorom za smextae faktora ravnotee, kao i qi-enica da su programi za rad sa AVL stablima dosta komplikovani. Postojei druge varijante uravnoteenih stabala pretrage (2 − 3 stabla, B-stabla,crveno-crna stabla i sliqno).

3.6. Hex tabeleHex tabele spadaju meu najkorisnije strukture podataka. Koriste se za

umetae i traee, a u nekim varijantama i za brisae. Osnovna ideja jejednostavna. Ako treba smestiti podatke sa kuqevima iz opsega od 1 do n, a

48 3. STRUKTURE PODATAKA

na raspolagau je vektor duine n, onda se podatak sa kuqem i smexta napoziciju i, i = 1, 2, . . . , n. Ako su kuqevi podataka iz opsega od 1 do 2n, joxuvek je zgodno podatke smestiti na isti naqin u vektor duine 2n | time sepostie najvea efikasnost, koja nadoknauje utroxak memorijskog prostora.Situacija se mea ako je opseg vrednosti kuqeva od 1 do M veliki (ako je,na primer, M najvei prirodni broj koji se moe smestiti na konkretnomraqunaru): tada otpada varijanta sa korixeem vektora duine M . Pret-postavimo da treba smestiti podatke o 250 studenata, pri qemu se svaki od ihidentifikuje svojim matiqnim brojem sa 13 dekadnih cifara. Umesto kom-pletnog matiqnog broja kao indeks u vektoru mogu se koristiti samo egovetri poslede cifre: tada je za smextae podataka dovoan vektor duine1000. Metod ipak nije potpuno pouzdan: mogue je da neka dva studenta imajuiste tri poslede cifre matiqnog broja; naqine rexavaa ovog problema raz-motriemo kasnije. Mogu se iskoristiti i qetiri poslede cifre matiqnogbroja, ili tri poslede cifre kombinovane sa prvim slovom imena studen-ta, da bi se jox vixe smaila mogunost ovakvog dogaaja. S druge strane,korixee vixe cifara zahteva tabelu vee dimenzije, sa relativno maimiskorixenim delom.

Pretpostavimo da je dato n kuqeva iz skupa U veliqine | U |= M À n.Ideja je da kuqeve smestimo u tabelu veliqine m, tako da m nije mnogovee od n. Potrebno je dakle definisati funkciju h : 0, 1, . . . ,M − 1 →0, 1, . . . ,m−1, hex funkciju koja za svaki podatak odreuje egovu pozicijuna osnovu vrednosti odgovarajueg kuqa. U gorem primeru, kao vrednosthex funkcije od kuqa jednakog matiqnom broju, uzete su egove tri posled-e cifre. Ako se vrednosti ove funkcije lako izraqunavaju, bie lako pris-tupiti podatku. Meutim, ako je veliqina tabele m nedovono velika, dexa-vae se da razliqitim kuqevima odgovaraju iste lokacije. Ovakav nepoeandogaaj zove se kolizija. Potrebno je dakle rexiti dva problema: nalaeehex funkcija koje minimiziraju verovatnou pojave kolizija, i postupak zaobradu kolizija kad do ih ipak doe. Iako je veliqina M skupa U mnogovea od veliqine tabele m, stvarni skup kuqeva koje treba obraditi obiqnonije veliki. Dobra hex funkcija preslikava kuqeve ravnomerno po tabeli| da bi se minimizirala mogunost kolizija prouzrokovanih nagomilavaemkuqeva u nekim oblastima tabele. U proseku se u svaku lokaciju tabele ovakoizabranom hex funkcijom preslikava se veliki broj (iz skupa svih moguih)kuqeva, ih M/m. Hex funkcija treba da transformixe skup kuqevaravnomerno u skup sluqajnih lokacija iz skupa 0, 1, . . . ,m − 1. Uniform-nost i sluqajnost su bitne osobine hex funkcije. Tako, na primer, pogrexnoje za hex funkciju od 13-cifrenog matiqnog broja uzeti broj koji qine peta,xesta i sedma cifra matiqnog broja: te tri cifre su tri najnie cifre go-dine roea, pa za bilo koju veliqinu grupe studenata uzimaju mae od desetakrazliqitih vrednosti od 1000 moguih.

3.6. HEX TABELE 49

Hex funkcije. Ako je veliqina tabele m prost broj, a kuqevi su celibrojevi, onda je jednostavna i dobra hex funkcija data izrazom

h(x) = xmod m.

Ako pak m nije prost broj (na primer m = 2k), onda se moe koristitifunkcija

h(x) = (xmod p)mod m,

gde je p prost broj takav da je m ¿ p ¿ M . Neugodna je situacija kad susvi kuqevi oblika r + kp, za neki celi broj r, jer e svi kuqevi imatiistu vrednost hex funkcije r. Tada ima smisla uvesti jox jedan nivo ran-domizacije ("razbacivaa"), time xto bi se sama hex funkcija birala nasluqajan naqin. Na primer, broj p mogao bi se birati sa unapred pripremeneliste prostih brojeva. Druga mogunost je da se koriste hex funkcije oblikah(x) = (ax + bmod p)mod m, gde su a 6= 0 i b sluqajno izabrani brojevi maiod p. Vrednosti ove funkcije se izraqunavaju na sloeniji naqin, ali je enaprednost da je u proseku dobra za sve ulaze. Razume se da se za sve pristupeistoj tabeli mora koristiti ista hex funkcija. U mnogo sluqajeva potrebnoje vixe nezavisnih hex tabela, ili se tabele qesto kreiraju i brixu. Tada seza svaku novu tabelu moe koristiti druga hex funkcija.

Obrada kolizija. Najjednostaviji naqin za obradu kolizija je tzv. odvo-jeno nizae svaki elemenat hex tabele je pokazivaq na povezanu listu, kojasadri sve kuqeva smextene na tu lokaciju u tabeli. Pri traeu zadatogkuqa najpre se izraqunava vrednost hex funkcije, a zatim se adresiranapovezana lista linearno pretrauje. Na prvi pogled upisivae se pojednos-tavuje umetaem kuqa na poqetak liste. Meutim, lista se ipak mora pre-gledati do kraja da bi se izbeglo upisivae duplikata (elemenata sa kuqemjednakim nekom ve upisanom). Ovakav postupak je neefikasan ako su povezaneliste dugaqke, do qega dolazi ako je tabela mala u odnosu na broj kuqeva, ilije izabrana loxa hex funkcija. Pored toga, potexkoe stvara i dinamiq-ka alokacija memorije, a potrebno je rezervisati i prostor za pokazivaqe. Sdruge strane, odvojeno nizae radi bez grexaka i ako je izabrana pogrexnaveliqina tabele, za razliku od ostalih (priblinih) metoda.

Drugo jednostavno rexee je linearno popuavae ako je lokacija sa ad-resom h(x) ve zauzeta, onda se novi elemenat sa kuqem x zapisuje na susednulokaciju h(x)+1 mod m (lokacija koja sledi iza m−1 je 0). Prilikom traen-ja zadatog kuqa x neophodno je linearno pretraivae poqevxi od lokacijeh(x) do prve nepopuene lokacije. Ovo rexee je efikasno ako je tabela rela-tivno retko popuena. U protivnom dolazie do mnogo sekundarnih kolizija,odnosno kolizija prouzrokovanih kuqevima sa razliqitim vrednostima hexfunkcije. Na primer, neka je lokacija i zauzeta, a lokacija i+1 slobodna. Novikuq koji se preslikava u i prouzrokuje koliziju, i smexta se na lokaciju i+1.Do ovog trenutka problemi su rexeni efikasno, uz minimalni napor. Med-jutim, ako se novi kuq preslika u i + 1, imamo sluqaj sekundarne kolizije,a lokacija i + 2 mod m postaje zauzeta (ako ve nije bila). Svaki novi kuq

50 3. STRUKTURE PODATAKA

preslikan u i, i+1 ili i+2 mod m, ne samo da izaziva novu sekundarnu koliz-iju, nego i poveava veliqinu ovog popuenog odseqka, xto kasnije izaziva joxvixe sekundarnih kolizija. Ovo je tzv. efekat grupisaa. Kad je tabela skoropuna, broj sekundarnih kolizija pri linearnom popuavau je vrlo veliki,pa se pretraga degradira u linearnu.

Pri linearnom popuavau se brisaa ne mogu izvesti korektno. Ako priupisivau kuqa y prilikom traea praznog mesta preskoqi neka lokacijai = h(x), pa zatim kuq x bude izbrisan, onda se posle toga kuq y vixe nemoe pronai u tabeli: traee se zavrxava na praznoj lokaciji i. Dakle, akosu potrebna i brisaa, mora se koristiti neki od metoda za obradu kolizijakoji koristi pokazivaqe.

Efekat grupisae moe se ublaiti dvostrukim hexiraem. Kad doedo kolizije pri upisu x, h(x) = i, izraqunava se vrednost druge hex funkci-je h2(x), pa se x smexta na prvu slobodnu meu lokacijama i + h2(x)mod m,i + 2h2(x)mod m . . ., umesto i + 1 modm, i + 2mod m. . .. Ako se drugi kuq ypreslikava u npr. i + h2(x)mod m, onda se pokuxava se lokacijom i + h2(x) +h2(y)mod m umesto sa i+h2(x)+h2(x)mod m. Ako je vrednost h2(y) nezavisnaod h2(x) onda je grupisae praktiqno eliminisano. Prilikom izbora drugehex funkcije mora se voditi raquna o tome da ostaci i + jh2(x)mod m zaj = 0, 1, . . . , m − 1 pokrivaju kompletnu tabelu, odnosno da vrednosti h2(x)budu uzajamno proste sa m.

3.7. Problem formiraa unijaProblem formiraa unijea moe da poslui kao primer kako dobro iza-

brana struktura podataka moe da poboxa efikasnost algoritma. Neka jedato n elemenata x1, x2, . . . , xn, koji su podeeni u disjunktne podskupove. Napoqetku su podskupovi jednoqlani. Nad elementima i podskupovima mogu seproizvonim redosledom izvrxavati sledee dve operacije:

• podskup(i): daje ime podskupa koja sadri xi;• unija(A,B): formira uniju podskupova A i B, podskup sa jedinstven-im imenom.

Ci je nai strukturu podataka koja omoguuje xto efikasnije izvrxavaeobe ove operacije.

Prvi kandidat za eenu strukturu podataka je vektor. Poxto su svielementi poznati, mogu se smestiti u vektor X duine n. Najjednostavnijerexee postavenog problema je smestiti u X[i] ime podskupa koja sadrielemenat xi. Nalaee podskupa kome pripada xi je trivijalno. Meutim,formirae unije dva podskupa je sloenije. Pretpostavimo da je unija(A,B)novi podskup sa imenom A. Tada svim elementima vektora X iz podskupa Btreba promeniti ime u A.

Mogu je i drugi pristup ovom problemu, zasnovan na indirektnom adre-sirau, pri qemu je nalaee unije jednostavno. Svaki elemenat vektora X

3.7. PROBLEM FORMIRAA UNIJA 51

je dvoqlani slog. Prvi elemenat sloga je ime podskupa kome elemenat pripa-da, a drugi | pokazivaq ka nekom drugom slogu. U svakom podskupu treba dapostoji taqno jedan elemenat, qiji slog sadri prazan pokazivaq nil; ime togelementa je po definiciji ime podskupa; za pokazivaq tog elementa kaemoda je pokazivaq podskupa. Ako je pokazivaq elementa X[i] usmeren ka elemen-tu X[j], onda je ime podskupa koji sadri X[i] jednako imenu podskupa kojisadri X[j]. Prethodni uslov obezbeuje da ova definicija bude ispravna:nemogue je da se podskup sastoji od elemenata sa indeksima i1, i2, . . . , ik,i da pored toga pokazivaq X[ij ] bude usmeren ka X[ij+1], j = 1, 2, . . . , k − 1,a da je pokazivaq X[ik] usmeren ka X[i1] | tada ni jedan elemenat podskupane bi imao pokazivaq nil. Na poqetku su svi pokazivaqi nil, tj. vektor Xzadaje n jednoqlanih podskupova. Operacija unija(A,B) izvodi se tako xtose pokazivaq podskupa A usmeri ka elementu, qiji je pokazivaq istovremenoi pokazivaq podskupa B (ili obrnuto). Posle nekoliko formiraa unija,vektor X zadaje nekoliko stabala, videti sliku 21. Svako stablo odgovarapodskupu, a svaki qvor elementu. Elemenat u korenu stabla slui kao imepodskupa. Da bi se pronaxlo ime podskupa kome pripada elemenat G, trebapratiti lanac pokazivaqa do korena stabla, sloga sa pokazivaqem nil. Ovopodsea na situaciju kad neko promeni adresu: umesto da svima java da jepromenio adresu, on na staroj adresi ostava svoju novu adresu (sa molbom damu dostavaju prispelu poxtu) | xto je jednostavnije. Naravno, nalaeeprave adrese je sada nexto sloenije, odnosno operacija nalaea podskupakome elemenat pripada je mae efikasna (naroqito ako su izduena stablakoja predstavaju podskupove).

G

C

A

6

F

B E

6

D

66

nil nil nil

Ris. 21. Struktura podataka za formirae unija podskupova.

Ideja na kojoj se zasniva efikasna struktura za nalaee unija je da sestabla uravnotee, odnosno skrate. Unija podskupova A i B na slici 21 moese formirati usmeravaem pokazivaqa A ka B, ili usmeravaem pokazivaqaB ka A. Oqigledno je da se u drugom sluqaju dobija uravnoteenije stablo. Za-kuqak se lako uopxtava: pokazivaq korena stabla sa mae elemenata (odnosnoproizvonog od dva stabla ako im je broj elemenata jednak) treba usmeriti kakorenu stabla sa veim brojem elemenata. Jasno je da pri formirau svakenove unije usput treba izraqunavati i broj elemenata novog podskupa. Taj po-datak se smexta kao deo sloga u korenu stabla. Primenom ovog pravila se pri

52 3. STRUKTURE PODATAKA

formirau unija postie da je visina stabla sa m elemenata uvek maa ilijednaka od log2 m, xto pokazuje sledea teorema.

Teorema 3.2. Ako se pri formirau unija koristi uravnoteavae,svako stablo visine h sadri bar 2h elemenata.

Dokazatel~stvo. Dokaz se izvodi indukcijom po broju formiraa uni-ja. Tvree je oqigledno taqno za prvu uniju: dobija se stablo visine jedan sadva elementa. Posmatrajmo uniju podskupova A i B. Neka su visine odgovara-juih stabala h(A), h(B), i neka je broj elemenata u A vei ili jednak od brojaelemenata u B. Visina kombinovanog stabla jednaka je veem od brojeva h(A)i h(B) + 1. Ako je vei h(A), onda novo stablo ima visinu kao A, i vixe ele-menata nego stablo A, pa je tvree teoreme taqno. U protivnom, novo stabloima bar dva puta vixe elemenata od stabla B (jer A ima bar toliko elemenatakoliko B), a visina mu je za jedan vea od visine B, pa je tvree teoremetakoe taqno. ¤

Posledica ove teoreme je da se pri traeu podskupa kome pripada eleme-nat nikad ne prolazi vixe od log2 n pokazivaqa. Unija podskupova se formiraza konstantno vreme. Prema tome, za izvrxee niza od m ≥ n operacija prveili druge vrste, broj koraka je najvixe O(m log n).

Efikasnost ove strukture podataka moe se dae poboxati. Posmatraj-mo jox jednom analogiju sa preusmeravaem poxiki. U sluqaju vixestrukepromene adrese, poxika e ii od jedne do druge adrese, dok ne dospe nakonaqno odredixte. Razumna ideja je da se po isporuci poxike unazad, na sveusputne adrese, dostavi posleda adresa. Dakle, kad se pri odreivau pod-skupa nekog elementa pree put do korena stabla, taj put se jos jednom prolaziu obratnom smeru, a pokazivaqi svih usputnih qvorova preusmeravaju se ka ko-renu. Sloenost traea time je poveana najvixe za konstantni faktor (tj.asimptotska sloenost traea se ne mea), a postie se skraivae putevapri kasnijim traeima podskupa za sve usputne qvorove. Moe se pokaza-ti da se na ovaj naqin sloenost niza od m ≥ n operacija jedne ili drugevrste smauje na O(m log∗ n), gde se tzv. iterirani logaritam log∗ n defin-ixe pomou log∗ 1 = log∗ 2 = 1 i log∗ n = 1 + log∗

(dlog2 ne) za n > 2. Poxto zan ≤ 265536 vai log∗ n ≤ 5, vidimo da je sloenost proizvonog niza ovih op-eracija praktiqno linearna. Meutim, nije poznato da li postoji algoritamlinearne sloenosti za rexavae ovog problema.

3.8. GrafoviAlgoritmi za rad sa grafovima predmet su poglava 6. Na ovom mestu bie

prikazane samo strukture podataka pogodne za predstavae grafova. GrafG = (V,E) sastoji se od skupa V qvorova i skupa E grana. Grana odgovaraparu qvorova. Drugim reqima, grane predstavaju relaciju izmeu qvorova.Na primer, graf moe da predstava skup udi, a da grana povezuje dva qovekaako se oni poznaju. Graf je usmeren odnosno neusmeren ako su mu grane ureeni,

3.9. REZIME 53

odnosno neureeni parovi. Ako se usmereni graf predstava crteom, grana-ma se dodaju strelice koje vode ka drugom qvoru iz ureenog para. Jednostavanprimer grafa je stablo. Ako na stablu treba definisati hijerarhiju, onda sesve grane mogu orijentisati "od korena" (pri qemu je koren posebno izdvojenqvor stabla). Takva stabla su korenska stabla. Mogu se takoe razmatratineusmerena stabla za koja se ne vezuje bilo kakva hijerarhija.

Uobiqajena su dva naqina predstavaa grafova. Prvi je matrica pove-zanosti grafa. Neka je |V | = n i V = v1, v2, . . . , vn. Matrica povezanostigrafa G kvadratna matrica A = (aij) reda n, sa elementima aij = 1 akko(vi, vj) ∈ E; ostali elementi matrice A su nule. Ako je graf neusmeren, ma-trica A je simetriqna. Vrsta i ove matrice je dakle vektor duine n qijaje j-ta koordinata jednaka 1 ako iz qvora vi vodi grana u qvor vj , odnosno0 u protivnom. Nedostatak matrice povezanosti je to xto ona uvek zauzimaprostor veliqine n2, nezavisno od toga koliko grana ima graf. Svakom qvorugrafa pridruuje se vektor duine n. Ako je broj grana u grafu mali, veinaelemenata matrice povezanosti bie nule.

Umesto da se i sve nepostojee grane eksplicitno predstavaju u matri-ci povezanosti, mogu se formirati povezane liste od jedinica iz i-te vrste,i = 1, 2, . . . , n. Ovaj drugi naqin predstavaa grafa zove se lista povezanos-ti. Svakom qvoru pridruuje se povezana lista, koja sadri sve grane susedneqvoru (odnosno grane ka susednim qvorovima). Lista moe biti ureena pre-ma rednim brojevima qvorova na krajevima enih grana. Graf je predstavenvektorom lista. Svaki elemenat vektora sadri ime (indeks) qvora i pokazi-vaq na egovu listu qvorova. Ako je graf statiqki, odnosno nisu dozvoenaumetaa i brisaa, onda se liste mogu predstaviti vektorima na sledeinaqin. Koristi se vektor duine |V | + |E|. Prvih |V | qlanova vektora supridrueni qvorovima. Komponenta vektora pridruena qvoru vi sadri in-deks poqetka spiska qvorova susednih qvoru vi, i = 1, 2, . . . , n. Na slici 22prikazana su na jednom primeru oba naqina predstavaa grafa. Sa matri-cama povezanosti je jednostavnije raditi. S druge strane, liste povezanos-ti su efikasnije za grafove sa malim brojem grana. U praksi se qesto radisa grafovima koji imaju znatno mae grana od maksimalnog mogueg broja(n(n − 1)/2 neusmerenih, odnosno n(n − 1) usmerenih grana), i tada je obiqnoboe koristiti liste povezanosti.

3.9. RezimeStrukture podataka mogu se podeliti na statiqke i dinamiqke. Vektori

(nizovi) su statiqke strukture. Veliqina niza (ili bar taqna gora granicaza u) mora se unapred znati. S druge strane, rad sa nizom je vrlo efikasan.Povezane liste su dinamiqke. One se mogu poveavati i smaivati, i nemaograniqea na ihovu veliqinu, pod uslovom da ima dovono memorijskogprostora).

54 3. STRUKTURE PODATAKA

6

1

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

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

0 1 0 0 0

0

1

1

0

0

1

0

0

0

0

0

0

0

1

0

1

1

1

0

0

1 2 3 4 5

(a)

1

2

3

4

5

b

b

1

4

b

b

2

5

b

? -

µI

ª R

3

Ris. 22. Predstavae grafa matricom povezanosti (a),odnosno listom povezanosti (b).

Strukture podataka mogu se podeliti na jednodimenzionalne i vixedi-menzionalne strukture. Nizovi i povezane liste su jednodimenzionalni. Je-dina struktura koju oni mogu da predstavaju je redosled elemenata. Stablapredstavaju nexto vixe od jednodimenzionalne strukture | hijerarhiju.Moe se raditi i sa vixedimenzionalnim nizovima, odnosno povezanim lis-tama.

Pojam apstraktnog tipa podataka je vrlo koristan. On omoguuje da sepaa koncentrixe na operacije nad elementima strukture, nezavisno odkonkretnog tipa podataka. Opisane su realizacije reqnika, liste sa prio-ritetom i strukture za formirae unija podskupova.

Hex tabele su dobro rexee za smextae podataka bez ikakve posebnestrukture. Hex tabele se ne mogu koristiti ako pristup elementu ne zavisisamo od kuqa elementa. Na primer, da bi se naxao minimalni elemenat uhex tabeli, mora se pregledati cela tabela.

Zadaci3.1. Transformisati jednostavnu rekurzivnu proceduru pretrage binarnog stabla pre-

trage u nerekurzivnu proceduru.

3.2. Formirati neopadajui niz od kuqeva elemenata binarnog stabla pretrage. Ko-lika je sloenost konstruisanog algoritma?

3.3. Elementi skupa A (svi su razliqiti) smexteni su u binarno stablo pretrage.Konstruisati algoritam koji za dati elemenat a ∈ A odreuje sledei po veliqini elemenatskupa A.

3.4. Neka je A vektor koji slui za implicitno predstavae hipa. Koliki najmaibroj elemenata hipa moe da zauzme niz duine 16?

3.5. Pretpostavimo da se AVL stablo koristi za realizaciju liste sa prioritetom.Kolika je sloenost osnovnih operacija?

3.6. Opisati realizaciju apstraktnog tipa podataka koji podrava sledee operacije:

ZADACI 55

umetni(x): umetae se izvrxava i ako je broj x ve jednom prethodno umetnut u strukturupodataka; drugim reqima, struktura podataka treba da pamti duplikate;ukloni(y): ukloni proizvoan elemenat iz strukture podataka i dodeli ga promenivoj y.Ako postoji vixe kopija istog elementa, uklaa se samo jedna od ih.Ovaj apstraktni tip podataka moe se nazvati bazen. On se moe iskoristiti za smextaeposlova. Novi poslovi se generixu i umeu u bazen, a kad neki radnik postane raspoloiv,uklaa se neki posao. Sve operacije treba da se izvrxavaju za vreme O(1).

3.7. Modifikovati bazen, tip podataka iz zadatka 3.6, na sledei naqin: pretpostavase da se proizvoan elemenat moe pojaviti najvixe jednom u strukturi podataka. Umetan-je mora da bude praeno proverom postojaa duplikata. Realizovati iste operacije kaou prethodnom sluqaju, ali sa proverom postojaa duplikata. Kolika je sloenost svakeoperacije u najgorem sluqaju?

3.8. Druga varijanta tipa podataka bazen (videti zadatke 3.6, 3.7) je sledea. Pret-postavimo da su svim elementima pridrueni brojevi iz opsega od 1 do n, pri qemu n nijeveliko, pa je na raspolagau memorija veliqine O(n). Svaki elemenat moe se pojavitinajvixe jednom. Konstruisati algoritme za umetae i uklaae (kao xto je definisanou zadatku 3.6), vremenske sloenosti O(1).

3.9. Konstruisati algoritam za formirae hipa koji sadri sve elemente dva hipaveliqine n i m. Hipovi su predstaveni eksplicitno (svaki qvor ima pokazivaqe na dvasvoja sina). Vremenska sloenost algoritma u najgorem sluqaju treba da bude O(log(m+n)).

3.10. Opisati realizaciju apstraktnog tipa podataka koji podrava sledee operaci-je:Umetni(x): umetni kuq x u strukturu podataka, ako ga tamo ve nema;Obrisi(x): obrixi kuq x iz strukture podataka (ako ga ima);Naredni(x): pronai najmai kuq u strukturi podataka koji je vei od x.Izvrxavae svake od ovih operacija treba da ima vremensku sloenost O(log n) u najgoremsluqaju, gde je n broj elemenata u strukturi podataka.

3.11. Opisati realizaciju apstraktnog tipa podataka koji podrava sledee operaci-je:Umetni(x): umetni kuq x u strukturu podataka, ako ga tamo ve nema;Obrisi(x): obrixi kuq x iz strukture podataka (ako ga ima);Naredni(x, k): pronai u strukturi podataka k-ti najmai kuq, meu onima koji su veiod x.Izvrxavae svake od ovih operacija treba da ima vremensku sloenost O(log n) u najgoremsluqaju, gde je n broj elemenata u strukturi podataka.

3.12. Konkatenacija je operacija nad dva skupa koji zadovoavaju uslov da su svikuqevi u jednom skupu mai od svih kuqeva u drugom skupu; rezultat konkatenacije jeunija skupova. Konstruisati algoritam za konkatenaciju dva binarna stabla pretrage ujedno. Vremenska sloenost u najgorem sluqaju treba da bude O(h), gde je h vea od visinadva stabla.

3.13. Konstruisati algoritam za konkatenaciju (definisanu u zadatku 3.12) dva AVLstabla u jedno. Sloenost algoritma u najgorem sluqaju treba da bude O(h), gde je h vea odvisina dva AVL stabla.

3.14. (a) Kako se moe generisati sluqajno AVL stablo, kod koga faktor ravnoteeu svakom unutraxem qvoru ima vrednost iz skupa −1, 0, 1 sa ravnomernom raspodelomverovatnoa?

(b) Za sluqajno AVL stablo zadate visine h (sa raspodelom verovatnoa definisanomkonstrukcijom pod (a)) pokazati da je oqekivana duina puta od kritiqnog qvora do qvoraumetaa (novog qvora sa sluqajno izabranim kuqem) konstantna, i da ne zavisi od h.

56 3. STRUKTURE PODATAKA

3.15. Sa ulaza se zadaje niz prirodnih brojeva qiji se kraj oznaqava nulom. Konstru-isati algoritam koji brojeve datog niza smexta u binarno stablo, pri qemu za svaki qvorstabla u svakom koraku algoritma razlika broja qvorova u levom i desnom podstablu ne smeda premaxi jedan.

3.16. Odrediti izgled AVL stabla dobijenog umetaem redom brojeva 1, 2, . . . , n, po-lazei od praznog stabla. Kolika je visina tog stabla?

3.17. Neka su T1 i T2 dva proizvona binarna stabla sa po n qvorova. Dokazati dapostoji niz od najvixe 2n rotacija koje T1 transformixu u T2.

3.18. Unija dva neusmerena grafa G = (V, E) i H = (U, F ) je novi graf J = (W, D),takav da je W = V ∪ U i D = E ∪ F ∪ (V × U), tj. J pored grana G i H, sadri i sve granekoje povezuju neki qvor iz V sa nekim qvorom iz U . Predloite pogodnu reprezentacijugrafova koja omoguuje efikasno izraqunavae unija grafova.

3.19. Neka je S = s1, s2, . . . , sm vrlo veliki skup, izdeen u k disjunktnih blokova.Pretpostavimo da nam je na raspolagau procedura Koji blok koja za zadati elemenat si

daje Koji blok(si), redni broj bloka koji sadri si; ova procedura radi za konstantnovreme. Ci je omoguiti rad sa malim podskupovima T skupa S, i to sledee operacijenad T : Umetni(si), Obrisi(si), Obrisi blok(j) (brisae svih elemenata T koji pripadajubloku j). Na poqetku je T prazan skup. Sloenost svake operacije treba da bude O(log n) unajgorem sluqaju, gde je n tekui broj elemenata u T . Obrisi blok samo uklaa elemente izstrukture podataka | nije neophodno fiziqko brisae svakog od tih elemenata. Oba brojam i k mogu biti vrlo veliki, pa se ne moe koristiti tabela veliqine m ili k. Meutim,n je relativno malo, i na raspolagau je prostor O(n).

3.20. ∗ Neka je A[1], A[2], . . .A[n] niz realnih brojeva. Posmatrajmo sledee dve ope-racije: Dodaj(i, y): dodati vrednost y i-tom broju, i Parcijalna suma(i): izraqunati sumuprvih i brojeva,

∑ij=1 A[j]. Broj elemenata ostaje fiksiran | nema umetaa ili brisaa;

jedino se meaju neke vrednosti brojeva. Konstruisati algoritam za izvrxavae niza ovihdveju operacija, tako da se obe izvrxavaju za O(log n) koraka. Moe se koristiti pomoniniz duine n.

3.21. Konstruisati strukturu podataka za quvae skupa elemenata od kojih svaki imakuq i vrednost. Struktura podataka treba da podrava sledee operacije:Odredi Vrednost(x): odrediti vrednost pridruenu elementu sa kuqem x (nula, ako xnije u skupu);Umetni(x, y): umetni novi elemenat sa kuqem x i vrednoxu y;Obrisi(x): obrixi elemenat sa kuqem x;Dodaj(x, y): dodaj y tekuem elementu sa kuqem x;Dodaj svima(y): dodaj y svim elementima skupa.Vreme izvrxavaa svake od ovih operacija u najgorem sluqaju treba da bude O(log n).

Glava 4

Konstrukcija algoritama indukcijom

4.1. UvodU ovom poglavu bie navedeni jednostavni primeri konstrukcije algo-

ritama korixeem induktivnog pristupa, koji ilustruju osnovne principei tehnike. Ideja je da se iskoristi princip domina: sve nanizane domine epopadati ako se poruxi prva, i ako se posle ruxea n-te obavezno ruxi (n+1)-a domina. Dakle, da bi se rexio neki problem, treba rexiti neki egov malisluqaj, a zatim pokazati kako se rexee zadatog problema moe konstruisatipolazei od (rexenih) maih verzija istog problema. Imajui na umu ovo,paa se moe skoncentrisati na nalaee naqina za svoee problema namae probleme.

4.2. Izraqunavae vrednosti polinomaNajpre emo razmotriti jedan jednostavan problem: izraqunavae vred-

nosti zadatog polinoma u zadatoj taqki.Problem. Dati su realni brojevi an, an−1,. . . , a1, a0 i realni broj x.

Izraqunati vrednost polinoma Pn(x) =∑n

i=0 aixi.

Ulazni podaci za problem su n + 2 broja. Induktivni pristup rexavauproblema sastoji se u svoeu rexea na rexee maeg problema. Dakle,problem pokuxavamo da svedemo na mai, koji se zatim rexava rekurzivno.Najjednostavnije je svoee na uproxeni problem dobijen od polaznog ukla-aem an. Tada imamo problem izraqunavaa vrednosti polinoma

Pn−1(x) = an−1xn−1 + an−2x

n−2 + · · ·+ a1x + a0.

To je isti problem, ali sa jednim parametrom mae.Induktivna hipoteza. Pretpostavimo da znamo da izraqunamo vred-

nost polinoma zadatog koeficijentima an−1,. . . , a1, a0 u taqki x, tj. znamo daizraqunamo vrednost Pn−1(x).

Ova hipoteza je osnova za rexavae problema indukcijom. Sluqaj n = 0(izraqunavae vrednosti izraza a0) je trivijalan. Zatim se mora pokazatikako se polazni problem (izraqunavae Pn(x)) moe rexiti korixeemrexea maeg problema (vrednosti Pn−1(x)). U ovom sluqaju je to oqigled-no: treba izraqunati xn, pomnoiti ga sa an i rezultat sabrati sa Pn−1(x):

57

58 4. KONSTRUKCIJA ALGORITAMA INDUKCIJOM

Pn(x) = anxn + Pn−1(x). Moe se pomisliti da je korixee indukcije ovdenepotrebno: ono samo komplikuje vrlo jednostavno rexee. Opisani algori-tam je ekvivalentan izraqunavau vrednosti polinoma redom qlan po qlan.Ispostavie se ipak da ovaj pristup ima svoju snagu.

Opisani algoritam je taqan, ali neefikasan, jer zahteva n+(n−1)+ · · ·+1 = n(n+1)/2 mnoea i n sabiraa. Korixeem indukcije na drugi naqindobija se boe rexee.

Zapaamo da u ovom algoritmu ima mnogo ponovenih izraqunavaa: ste-pen xn izraqunava se svaki put "od poqetka". Veliki broj mnoea moe seuxtedeti ako se pri izraqunavau xn iskoristi xn−1. Poboxae se real-izuje ukuqivaem izraqunavaa xn−1 u induktivnu hipotezu.

Pojaqana induktivna hipoteza. Znamo da izraqunamo vrednost poli-noma Pn−1(x) i vrednost xn−1.

Ova induktivna hipoteza je jaqa, jer zahteva izraqunavae xn−1, ali selakxe proxiruje (jer je sada jednostavnije izraqunati xn). Da bi se izraqu-nalo xn, dovono je izvrxiti jedno mnoee. Posle toga sledi jox jednomnoee sa an i sabirae sa Pn−1(x). Ukupno je potrebno izvrxiti 2n mnoen-ja i n sabiraa. Zanimivo je zapaziti da iako induktivna hipoteza zahtevavixe izraqunavaa, ona dovodi do smaea ukupnog broja operacija. Dobi-jeni algoritam izgleda dobro u svakom pogledu: efikasan je, jednostavan ijednostavno se realizuje. Ipak, postoji i boi algoritam. Do ega se dolazikorixeem indukcije na novi, trei naqin.

Redukcija problema uklaaem najvixeg koeficijenta an je oqigledankorak, ali to ipak nije jedina raspoloiva mogunost. Umesto toga se moeukloniti koeficijent a0, i svesti problem na izraqunavae vrednosti poli-noma sa koeficijentima an, an−1,. . . , a1, odnosno polinoma

Pn−1(x) =n∑

i=1

aixi−1 = anxn−1 + an−1x

n−2 + · · ·+ a1.

Primetimo da je an ovde (n− 1)-i koeficijenat, an−1 je n− 2-i koeficijenat,i tako dae. Dakle, imamo novu induktivnu hipotezu.

Induktivna hipoteza (obrnuti redosled). Umemo da izraqunamo vred-nost polinoma Pn−1(x) sa koeficijentima an, an−1,. . . , a1 u taqki x.

Ovakva induktivna hipoteza je pogodnija jer se lakxe proxiruje. Poxtoje Pn(x) = xPn−1(x)+ a0, za izraqunavae Pn(x) polazei od Pn−1(x) dovonoje jedno mnoee i jedno sabirae. Izraqunavae se moe opisati sledeimizrazom:

anxn + an−1xn−1 + · · ·+ a1x+ a0 = ((· · · ((anx+ an−1)x+ an−2) · · · )x+ a1)x+ a0,

poznatim kao Hornerova xema. Program na pseudo paskalu koji realizuje ovajalgoritam prikazan je na slici 1.

4.3. MAKSIMALNI INDUKOVANI PODGRAF 59

Algoritam Vrednost polinoma(a, x);

Ulaz: a = a0, a1, . . . , an (koeficijenti polinoma) i x (realni broj).Izlaz: P (vrednost polinoma u taqki x).begin

P := an;

for i := 1 to n do

P := x · P + an−i

end

Ris. 1. Izraqunavae vrednosti polinoma u zadatoj taqki.

Sloenost. Algoritam obuhvata n mnoea, n sabiraa i zahteva samojednu novu memorijsku lokaciju. Posledi algoritam je ne samo efikasnijiod prethodnih, nego je i odgovarajui program jednostavniji.

Primedba. Indukcija nam omoguuje da se skoncentrixemo na proxiri-vae rexea maih na rexea veih problema. Pretpostavimo da hoemo dareximo P (n), odnosno problem P koji zavisi od nekog parametra n (obiqnoje to veliqina problema). Tada polazimo od proizvonog primera problemaP (n) i pokuxavamo da ga reximo koristei pretpostavku da je P (n − 1) verexen. Postoji mnogo naqina da se postavi induktivna hipoteza, a isto tako ivixe naqina da se ona iskoristi. Prikazaemo vixe takvih metoda, i demon-strirati ihovu mo pri konstrukciji algoritama.

Primer izraqunavaa vrednosti polinoma ilustruje fleksibilnost ko-ja nam je na raspolagau pri korixeu indukcije. Ideja koja je dovela doHornerove xeme sastoji se u tome da se ulaz obrauje sleva udesno, umestointutivnog redosleda zdesna ulevo. Druga uobiqajena mogunost izbora re-dosleda pojavuje se pri razmatrau strukture u obliku stabla: ona se moeprolaziti odozgo nanie ili odozdo navixe. Dae, mogue je parametar npoveavati za dva (ili vixe), umesto samo za jedan, a postoje i mnogobrojnedruge mogunosti. Xtavixe, ponekad najboi redosled primene indukcije ni-je isti za sve ulaze. Moe se pokazati korisnim konstrukcija algoritma kojibi pronalazio najboi redosled primene indukcije. Ovakve mogunosti ilus-trovaemo nekim primerima.

4.3. Maksimalni indukovani podgrafPosmatrajmo sledei problem. Organizujete konferenciju za nauqnike ko-

ji se bave raznorodnim disciplinama i imate spisak osoba koje biste elelida pozovete. Pretpostavka je da e se svaki od ih odazvati pozivu ako mu sebude ukazala mogunost plodne razmene ideja. Za svakog nauqnika moete danapravite listu onih (sa spiska) sa kojima e on verovatno imati interak-ciju. Neka je k zadati broj. Vi biste voleli da pozovete xto je mogue vixe

60 4. KONSTRUKCIJA ALGORITAMA INDUKCIJOM

udi, a da pri tome garantujete svakome od ih mogunost da razmeni mis-li sa bar k drugih osoba. Vax problem nije da organizujete te interakcije,niti da obezbedite dovono vremena za ih. Vi jedino elite da obezbediteihovo prisustvo na konferenciji. Kako izabrati osobe koje treba pozvati?Opisani problem odgovara sledeem grafovskom problemu. Neka je G = (V, E)neusmereni graf. Graf H = (U,F ) je indukovani podgraf grafa G ako U ⊆ Vi F sadri sve grane iz E kojima su oba kraja u U , videti primer na slici 2.Stepen qvora je broj emu susednih qvorova. Qvorovi grafa odgovaraju nauq-nicima, a grana izmeu dva qvora postoji ako odgovarajui nauqnici mogu darazmeuju ideje. Indukovani podgraf odgovara podskupu nauqnika.

d

d d

d

d

a

b c

d

e G = (V, E)

V = a, b, c, d, eE = (a, b), (a, d), (a, e), (b, c), (c, d), (c, e), (d, e)

H = (U, F )

U = a, d, eF = (a, d), (a, e), (d, e)

Ris. 2. Primer indukovanog podgrafa. Grane su neureeniparovi qvorova.

Problem. Za zadati neusmereni graf G = (V, E) i zadati prirodni broj kpronai maksimalni indukovani podgraf H = (U,F ) grafa G (tj. indukovanipodgraf sa maksimalnim brojem qvorova) uz uslov da svi qvorovi podgrafa Himaju stepen bar k, ili ustanoviti da takav indukovani podgraf ne postoji.

Direktni pristup rexavau ovog problema sastoji se u uklaau svihqvorova stepena maeg od k. Posle uklaaa ovih qvorova, zajedno sa granamakoje su im susedne, stepeni preostalih qvorova se u opxtem sluqaju smauju.Kad stepen nekog qvora postane mai od k, taj qvor treba ukloniti iz grafa.Nije meutim jasan redosled kojim qvorove treba uklaati. Treba li najpreukloniti sve qvorove stepena < k, a zatim obraivati qvorove sa umaenimstepenovima? Ili treba ukloniti jedan qvor stepena < k, pa nastaviti saqvorovima kojima su smaeni stepenovi? (Ova dva pristupa odgovaraju pre-trazi u xirinu, odnosno pretrazi u dubinu, tehnikama koje e biti razmotreneu odeku 6.3). Da li e oba pristupa dati isti rezultat? Da li e rezultujuigraf imati najvei mogui broj qvorova? Na ova pitaa lako je dati odgovorkorixeem sledeeg pristupa.

Umesto da algoritam posmatramo kao niz koraka koje treba izvrxiti da bise doxlo do rezultata, moemo da sebi postavimo za ci dokazivae teoremeda algoritam postoji. Potrebno je pronai maksimalni indukovani podgrafkoji zadovoava zadate uslove.

4.4. NALAEE BIJEKCIJE 61

Induktivna hipoteza. Umemo da pronaemo maksimalni indukovanipodgraf sa qvorovima stepena ≥ k za graf sa mae od n qvorova.

Treba da dokaemo da je ova "teorema" taqna za bazni sluqaj, a zatimda iz ene taqnosti za n − 1 sledi ena taqnost za n. Prvi netrivijalnisluqaj pojavuje se za n = k + 1, jer ako je n ≤ k onda su stepeni svih qvorovamai od k. Ako je n = k + 1 onda samo u jednom sluqaju postoji indukovanipodgraf sa stepenima qvorova ≥ k: to je sluqaj potpunog grafa (grafa sasvim moguim granama). Pretpostavimo dae da je G = (V, E) proizvoangraf sa n > k + 1 qvorova. Ako su stepeni svih qvorova u G vei ili jednakiod k, onda graf H = G zadovoava uslove i dokaz je zavrxen. U protivnompostoji qvor v stepena < k. Oqigledno je da stepen qvora v ostaje < k i usvakom indukovanom podgrafu grafa G, pa prema tome v ne pripada ni jednompodgrafu koji zadovoava uslove problema. Dakle, v se moe ukloniti iz Gzajedno sa svim emu susednim granama, ne meajui uslove teoreme. Posleuklaaa v graf ima n− 1 qvor, pa prema induktivnoj hipotezi mi umemo dareximo problem do kraja.

Komentar. Jedan od moguih naqina za uproxavae nekog problema jeeliminacija nekog od egovih elemenata. U ovom primeru primena indukcijebila je jednostavna, jer je bilo jasno koje qvorove i kako treba eliminisati.U opxtem sluqaju proces eliminacije ne mora da bude jednostavan. Videemoprimer u kome se dva elementa objediavaju, qime se broj elemenata smaujeza jedan (odeak 5.5); zatim primer u kome se eliminixu ograniqea na prob-lem umesto da se eliminixu delovi ulaza (odeak 6.7); i na kraju primer ukome se najpre konstruixe poseban algoritam za izbor elemenata koji se mogueliminisati (odeak 4.5). U primeru koji sledi takoe e biti ilustrovanoeliminisae odgovarajuih elemenata.

4.4. Nalaee bijekcijeNeka je f funkcija koja preslikava konaqan skup A u samog sebe, f : A → A.

Bez gubitka opxtosti moe se pretpostaviti da je A = 1, 2, . . . , n. Pret-postavamo da je funkcija f predstavena vektorom f duine n, tako daf [i] sadri vrednost f(i) ∈ A, i = 1, 2, . . . , n. Funkcija f je bijekcija, akoza proizvoan elemenat j ∈ A postoji elemenat i ∈ A takav da je f(i) = j.Funkcija se moe predstaviti dijagramom kao na slici 3, tako da svakomelementu A odgovara po jedan levi i jedan desni qvor, a grane definixu pre-slikavae. Funkcija prikazana na slici 3 oqigledno nije bijekcija.

Problem. Neka je zadat konaqan skup A i preslikavae f : A → A.Odrediti podskup S ⊆ A sa najveim moguim brojem elemenata tako da budef(S) ⊆ S i da restrikcija f na S bude bijekcija.

Ako je f bijekcija, onda kompletan skup A zadovoava uslove problema,pa je maksimalni podskup S = A. Ako je pak f(a) = f(b) za neke a 6= b, onda Sne moe da sadri i a i b. Na primer, skup S u problemu sa slike 3 ne moe

62 4. KONSTRUKCIJA ALGORITAMA INDUKCIJOM

b bbbbbbb

bbbbbb

7

6

5

4

3

2

1

7

6

5

4

3

2

1

~

1>

q->

1

Ris. 3. Primer preslikavaa skupa u samog sebe.

da sadri oba elementa 2 i 3, jer je f(2) = f(3) = 1. Meutim, nije svejednokoji e elemenat od ova dva biti eliminisan. Ako na primer eliminixemo3, onda se zbog f(1) = 3 mora eliminisati i 1. Zatim se na isti naqin zbogf(2) = 1 mora eliminisati i 2. Dobijeni podskup sigurno nije maksimalan,jer je mogue eliminisati samo elemenat 2 umesto 1, 2 i 3. Rexee problemana slici 3 je podskup 1, 3, 5, xto se moe ustanoviti npr. proverom svihmoguih podskupova S ⊂ A. Postava se pitae nalaea opxteg metoda zaodluqivae koje elemente treba ukuqiti u S.

Na sreu, imamo izvestan manevarski prostor prilikom odluqivaa kakoproblem svesti na mai. Veliqina problema moe se smaiti bilo nalae-em elementa koji pripada skupu S, bilo nalaeem elementa koji ne pripadaskupu S. Ispostava se da je druga mogunost boa. Koristiemo sledeujednostavnu induktivnu hipotezu.

Induktivna hipoteza. Znamo da reximo problem za skupove sa n − 1elemenata.

Baza indukcije je trivijalna: ako skup A ima jedan element, on se morapreslikavati u sebe, pa je f na A bijekcija. Pretpostavimo dae da imamoproizvoan skup A od n elemenata i da traimo podskup S koji zadovoavauslove problema. Tvrdimo da ako elemenat a ne pripada skupu f(A), ondaa ne moe pripadati S; drugim reqima, elemenat a za koji u odgovarajuiqvor na desnoj strani dijagrama ne ulazi ni jedna grana, ne moe biti u S.Zaista, iz uslova problema sledi da je f(S) = S, a to je, ako se pretpostavida a ∈ S | nemogue, jer po pretpostavci a /∈ f(S). Dakle, ako postoji takavelemenat a, mi ga eliminixemo iz skupa. Sada imamo skup A′ = A \ a san− 1 elementom, koji f preslikava u samog sebe; prema induktivnoj hipotezimi znamo da reximo problem sa skupom A′. Ako takvo a ne postoji, onda jepreslikavae bijekcija, i problem je rexen.

Suxtina ovog rexea je da se a mora ukloniti. Dokazali smo da a nemoe pripadati S. U tome je snaga indukcije: onog trenutka kad se elemenatukloni i time smai veliqina problema, zadatak je rexen. Pri tome se moravoditi raquna da mai problem bude potpuno isti kao polazni, izuzimajuiveliqinu. Jedini uslov koji f i A treba da zadovoavaju je f(A) ⊆ A. Ovaj

4.4. NALAEE BIJEKCIJE 63

uslov zadovoen je i na skupu A′ = A\a, jer se ni jedan elemenat ne presli-kava u a. U trenutku kad vixe nema elemenata koji se mogu ukloniti, skup Sje pronaen.

Realizacija. Algoritam smo opisali kao rekurzivnu proceduru. U sva-kom koraku pronalazimo elemenat u koga se ni jedan drugi ne preslikava,uklaamo ga i nastavamo rekurzivno. Realizacija algoritma ipak ne mo-ra da bude rekurzivna. Svakom elementu i, 1 ≤ i ≤ n pridruuje se brojaqc[i], qija je poqetna vrednost jednaka broju elemenata koji se preslikavaju u i.Vrednosti c[i] mogu se izraqunati u n koraka prolazei kroz vektor f i inkre-mentirajui (poveavajui za jedan) pri tome odgovarajue brojaqe. Zatim seu listu stavaju svi elementi kojima je vrednost brojaqa dobila vrednost 0.U svakom koraku se prvi elemenat j iz liste uklaa iz liste i iz skupa,dekrementira se c[f [j]], a ako c[f [j]] dobije vrednost 0, f [j] se stava u listu.Rexavae je zavrxeno u trenutku kad je lista prazna. Algoritam je prikazanna slici 4. Nije texko proveriti da se za ulaz predstaven na slici 3 dobijaS = 1, 3, 5.

Algoritam Bijekcija(f, n);

Ulaz: f (niz prirodnih brojeva izmeu jedan i n).Izlaz: S (podskup ulaznog skupa takav da je f bijekcija na S).begin

S := A; A = 1, 2, . . . nfor j := 1 to n do c[j] := 0;

for j := 1 to n do increment c[f [j]];

for j := 1 to n do

if c[j] = 0 then stavi j u Spisak lista elemenata za eliminacijuwhile Spisak nije prazan do

skini i sa vrha liste Spisak;S := S \ i;c[f [i]] = c[f [i]]− 1;

if c[f [i]] = 0 then stavi f [i] u Spisakend

Ris. 4. Algoritam Bijekcija.

Sloenost. Za uvodni deo (inicijalizaciju) treba izvrxiti O(n) ko-raka. Svaki elemenat se u listu moe staviti najvixe jednom, a operacijepotrebne da se elemenat ukloni iz liste izvrxavaju se za vreme ograniqenokonstantom. Prema tome, ukupan broj koraka je O(n).

Komentar. U ovom primeru veliqina problema je smaena uklaaemelemenata iz skupa. Traili smo najjednostavniji naqin za uklaae ele-menta tako da se ne promene uslovi problema. Poxto je jedini zahtev bio da

64 4. KONSTRUKCIJA ALGORITAMA INDUKCIJOM

funkcija preslikava A u samog sebe, izbor elementa u koga se ni jedan drugielemenat ne preslikava je prirodan.

4.5. Problem pronalaea zvezdeSledei primer je interesantan po tome xto za rexavae problema nije

neophodno pregledati sve ulazne podatke, pa qak ni ihov znaqajan deo. Meun osoba zvezda je osoba koja nikoga ne poznaje, a koju svi ostali poznaju. Prob-lem je identifikovati zvezdu (ako ona postoji) postavajui pitaa oblika"Izvinite, da li poznajete onu osobu?" Pretpostava se da su svi odgovoritaqni, a da e qak i zvezda odgovarati na pitaa. Ci je minimizirati uku-pan broj pitaa. Poxto parova osoba ima ukupno n(n−1)/2, u najgorem sluqajutreba postaviti n(n− 1) pitaa, ako se pitaa postavaju bez neke strategi-je. Na prvi pogled nije jasno moe li se eeni ci postii sa garantovanomaim brojem postavenih pitaa.

Problem se moe preformulisati u grafovski. Formiramo usmereni grafsa qvorovima koji odgovaraju osobama, u kome grana od osobe A ka osobi Bpostoji ako A poznaje B. Zvezda odgovara ponoru grafa, qvoru U koji ulazin− 1 grana, a iz koga ne izlazi ni jedna grana. Jasno je da graf moe imatinajvixe jedan ponor. Ulaz problema se opisuje n × n matricom povezanostiM , qiji elemenat Mij je jednak 1 ako osoba i poznaje osobu j, odnosno 0 uprotivnom; dijagonalni elementi su jednaki nuli.

Problem. Data je n×n matrica povezanosti M . Ustanoviti da li postojiindeks i, takav da su u M svi elementi i-te kolone (sem i-tog) jednaki 1, i dasu svi elementi i-te vrste jednaki 0.

Bazni sluqaj sa dve osobe je jednostavan. Posmatrajmo kao i obiqno razlikuizmeu problema sa n − 1 osobom i problema sa n osoba. Pretpostavamo daznamo da pronaemo zvezdu meu prvih n − 1 osoba indukcijom. Poxto moeda postoji najvixe jedna zvezda, postoje tri mogunosti:

(1) zvezda je jedna od prvih n− 1 osoba;(2) zvezda je n-ta osoba;(3) zvezda ne postoji.

Prvi sluqaj je najjednostavniji: treba samo proveriti da li n-ta osoba poz-naje zvezdu, odnosno da li je taqno da zvezda ne poznaje n-tu osobu. Preostaladva sluqaja su tea, jer da bi se proverilo da li je n-ta osoba zvezda, trebapostaviti 2(n − 1) pitaa. Ako postavimo 2(n − 1) pitaa u n-tom koraku,onda e ukupan broj pitaa biti n(n− 1), xto hoemo da izbegnemo. Potrebnoje dakle promeniti pristup problemu.

Ideja je da se problem posmatra "unazad". Poxto je texko identifiko-vati zvezdu, pokuxajmo da pronaemo osobu koja nije zvezda: u svakom sluqaju,broj ne-zvezda mnogo je vei od broja zvezda. Ako eliminixemo nekoga iz raz-matraa, paramentar n koji definixe veliqinu problema smauje se na n−1.Pri tome uopxte nije bitno koga emo eliminisati! Pretpostavimo da osobuA pitamo da li poznaje osobu B. Ako A poznaje B, onda A nije zvezda, a ako pak

4.5. PROBLEM PRONALAEA ZVEZDE 65

A ne poznaje B, onda B nije zvezda. U oba sluqaja se jedna osoba eliminixepostavaem samo jednog pitaa!

Ako se sada vratimo na tri mogua sluqaja pri prelasku sa n − 1 na n,vidimo da je novost u tome da n-tu osobu ne biramo proizvono. Eliminacijomosobe A ili B problem svodimo na sluqaj sa n−1 osobom, pri qemu smo sigurnida do sluqaja 2. nee doi, jer eliminisana osoba ne moe biti zvezda. Akoje nastupio sluqaj 3, odnosno nema zvezde meu prvih n − 1 osoba, onda nemazvezde ni meu svih n osoba. Ostaje prvi sluqaj, koji je lak: ako meu prvihn− 1 osoba postoji zvezda, onda se sa dva dopunska pitaa moe proveriti dali je to zvezda i za kompletan skup. Ako nije, onda nema zvezde.

Algoritam se sastoji u tome da pitamo osobu A da li poznaje osobu B ieliminixemo ili osobu A ili osobu B, zavisno od dobijenog odgovora. Neka jeeliminisana npr. osoba A. Indukcijom (rekurzivno) se pronalazi zvezda meupreostalih n − 1 osoba. Ako meu ima nema zvezde, rexavae je zavrxeno.U protivnom, proverava se da li je taqno da A poznaje zvezdu, a da zvezda nepoznaje A.

Realizacija. Kao i u sluqaju algoritma iz prethodnog odeka, efikas-nije je realizovati algoritam za nalaee zvezde iterativno, nego rekurzivno.Algoritam se deli u dve faze. U prvoj fazi se eliminixu sve osobe sem jednogkandidata za zvezdu, a druga faza je neophodna da se ustanovi da li kandidatjeste zvezda. Poqiemo sa n kandidata, za koje moemo da pretpostavimo da susmexteni na stek (listu iz koje se najpre vadi posledi upisani elemenat). Zasvaki par kandidata mi moemo da eliminixemo jednog, pitaem da li pozna-je drugog. Poqiemo uzimajui prva dva kandidata sa steka i eliminixuijednog od ih. Dae u svakom koraku formiramo par od preostalog kandidatai (sve dok je stek neprazan) naredne osobe sa steka, i eliminixemo jednog odih. U trenutku kad stek postane prazan, imamo samo jednog kandidata. Zatimse proverava da li je taj kandidat zvezda. Algoritam je prikazan na slici 5.Stek je realizovan eksplicitno korixeem indeksa i, j, i Naredni.

Sloenost. Postava se najvixe 3(n− 1) pitaa: n− 1 pitaa u prvojfazi da bi se eliminisala n− 1 osoba, i najvixe 2(n− 1) pitaa za proveruda li je preostali kandidat zvezda. Primetimo da veliqina ulaza nije n, negon(n − 1), broj elemenata matrice. Prikazano rexee pokazuje da je mogueodrediti zvezdu pregledajui najvixe O(n) elemenata matrice povezanosti,iako je jasno da rexee mora bitno da zavisi od svih n(n − 1) elemenatamatrice.

Komentar. Kuqna ideja ovog elegantnog rexea je pametno smaivaeparametra n za 1. Primer pokazuje da se ponekad isplati uloiti trud (u ovomsluqaju | jedno pitae) da bi se redukcija efikasnije izvela. Ne polazise od proizvonog, nego se bira poseban skup od n − 1 osobe. Videemo joxprimera u kojima se znaqajno vreme troxi na konstrukciju pogodnog redosledaindukcije, xto se pokazuje korisnim.

66 4. KONSTRUKCIJA ALGORITAMA INDUKCIJOM

Algoritam Zvezda(Poznaje);

Ulaz: Poznaje (n× n Bulova matrica sa nulama na dijagonali).Izlaz: Zvezda.begin

i := 1; osoba Aj := 2; osoba BNaredni := 3; sledei koji e se proveravatiprva faza: eliminixu se svi kandidati sem jednogwhile Naredni ≤ n + 1 do

if Poznaje[i, j] then i := Naredni eliminacija ielse j := Naredni; eliminacija jNaredni := Naredni + 1

po izlasku iz pete je ili i = n + 1 ili j = n + 1if i = n + 1 then Kandidat := j

else Kandidat := i

druga faza: provera da li je Kandidat zvezdaJeste := true; true ako Kandidat jeste zvezdak := 1;

while Jeste and k ≤ n do

if Poznaje[Kandidat, k] then Jeste := false;

if not Poznaje[k, Kandidat] then

if Kandidat 6= k then Jeste := false;

k := k + 1;

if Jeste then Zvezda := Kandidat

else Zvezda := 0 nema zvezdeend

Ris. 5. Algoritam za pronalaee zvezde.

4.6. Primer primene dekompozicije: maksimum skupapravougaonika

Do sada smo imali primere sa grafovima i numeriqke probleme. Sadaemo se pozabaviti primerom u kome treba iscrtati neke figure. Neka su L,D i V realni brojevi takvi da je L < D i V > 0. Pravougaona funkcija(pravougaonik) sa parametrima (L,D, V ) je funkcija

fL,D,V (x) =

0, x < L ili x ≥ DV, L ≤ x < D

.

Problem. Dato je n pravougaonika fLi,Di,Vi(x), i = 1, 2, . . . , n. Potrebnoje odrediti "konturu" ovog skupa pravougaonika, odnosno funkciju

f(x) = max fLi,Di,Vi(x) | i = 1, 2, . . . , n

4.6. PRIMER PRIMENE DEKOMPOZICIJE: MAKSIMUM SKUPA PRAVOUGAONIKA67

Primer ulaza i izlaza prikazan je na slici 6: ulaz su qetiri pravouga-onika (1, 4, 4), (2, 5, 6), (3, 3, 8) i (7, 4, 10), slika 6(a), a rezultujua konturaprikazana je na slici 6(b). Izlazna funkcija f(x) moe se opisati skupomintervala na kojima ona ima konstantnu vrednost, i vrednostima u tim in-tervalima. Drugim reqima, f(x) se zadaje nizom parova (xi, vi), i = 1, 2, . . . , k(pri qemu je vk = 0), tako da je f(x) = vi za xi ≤ x < xi+1, i = 1, 2, . . . , k. Zbogjednostavnosti pretpostava da je jox x0 = −∞, v0 = 0, xk+1 = ∞. U primerusa slike 6(b) funkcija f(x) opisuje se nizom parova (1, 4), (2, 5), (6, 3), (7, 4),(10, 0).

1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10(b)(a)

4

3

2

1

4

3

2

1

Ris. 6. Problem nalaea maksimuma skupa pravougaonika:(a) ulaz; (b) izlaz.

Direktni pristup rexavau ovog problema zasniva se na proxirivaurexea korak po korak, tj. proxirivau rexea za prvih n−1 pravougaonikanovim, n-tim pravougaonikom. Baza indukcije n = 1 je jednostavna: pravouga-onik fL1,D1,V1(x) pretvara se u funkciju f(L1,V1),(D1,0)(x). Da bi se maksimumu

fn−1(x) = f(x1,v1),(x2,v2),...,(xk,vk)(x)

prikuqio n-ti pravougaonik fLn,Dn,Vn(x), treba pronai takve indekse i, j,da je xi ≤ Ln < xi+1, xj ≤ Dn < xj+1, 0 ≤ i ≤ j ≤ k: vrednost funkcije fn−1(x)moe se pri prelasku na fn(x) promeniti samo u onim intervalima konstant-nosti sa kojima interval [Li, Di)) ima neprazan presek. Novi maksimum je

fn(x) =

fn−1(x), x < Ln ili x ≥ Dn

maxfn−1(x), Vn, Ln ≤ x < Dn.

Intervali konstantnosti [xi, xi+1) i [xj , xj+1) funkcije fn−1(x) u opxtemsluqaju bivaju taqkama Ln i Dn podeeni na podintervale [xi, Ln), [Ln, xi+1),odnosno [xj , Dn), [Dn, xj+1), u kojima je vrednost fn(x) konstantna; pored to-ga, u intervalima [xl, xl+1), l = i + 1, . . . , j − 1 u kojima fn−1(x) ima vrednostmau od Vn, fn(x) dobija novu (u odnosu na fn−1(x)) vrednost Vn. U primeruna slici 7 je n = 5, (Ln, Dn, Vn) = (5, 9, 4.5), i

fn−1(x) = f(1,4),(2,5),(5,6),(9,4),(10,0)(x),fn(x) = f(1,4),(2,5),(6,4.5),(9,4),(10,0)(x).

68 4. KONSTRUKCIJA ALGORITAMA INDUKCIJOM

1 2 3 4 5 6 7 8 9 10

4

3

2

1

Ris. 7. Dodavae novog pravougaonika maksimumu prethod-nih n− 1 sa slike 6.

Ovaj algoritam je korektan, ali nije efikasan: dodavae n-tog pravougao-nika funkciji fn−1(x) zahteva O(n) koraka, pa je ukupna sloenost O(n2). Al-goritam se moe usavrxiti primenom metoda dekompozicije (odnosno "zava-di, pa vladaj, engleski divide–and–conquer ). Umesto prelaska san − 1 na n, efikasnije je proxirivati rexee sa n/2 na n pravougaonika.Bazni sluqaj je ve razmotren. Metod dekompozicije obuhvata podelu ulazana mae podskupove, ihovu obradu rekurzivnim pozivom procedure i objed-iavae dobijenih rexea. Najqexe se problem deli u potprobleme pod-jednake veliqine. Kao xto smo videli u poglavu 2, rexee diferencnejednaqine T (n) = T (n − 1) + cn je T (n) = O(n2), dok je rexee jednaqineT (n) = 2T (n/2) + cn dato sa T (n) = O(n log n). Dakle, ako podelimo problemna dva jednaka potproblema i dobijena rexea potproblema objedinimo za lin-earno vreme, onda je sloenost algoritma O(n log n). Tehnika dekompozicijeje vrlo korisna, u xta emo se vixe puta uveriti.

U problemu sa pravougaonicima dekompozicija se zasniva na zapaan-ju da je za dodavae novog pravougaonika funkciji fn−1(x) potrebno u naj-gorem sluqaju linearno vreme, a da se za linearno vreme mogu objediniti idve razliqite funkcije f ′n/2(x) i f ′′n/2(x), rexea dva potproblema za po n/2pravougaonika. Za asimptotski isto vreme postie se mnogo vixe koristeidrugi pristup. Dve u delovima konstantne funkcije mogu se kombinovati uosnovi istim algoritmom kojim je kombinovan jedan pravougaonik sa jednomtakvom funkcijom (slika 8). Prekidne taqke dveju funkcija f ′n/2(x) i f ′′n/2(x)se prolaze istovremeno sleva u desno, identifikuju se x-koordinate kraje-va intervala konstantnosti funkcije fn(x) i odreuju vrednosti fn(x) u timintervalima. Objediavae se izvrxava za linearno vreme, pa je sloenostkompletnog algoritma O(n log n) u najgorem sluqaju. Ovaj algoritam je sliqanalgoritmu sortiraa objediavaem, odeak 5.3.3 (videti zadatak 4.9).

Komentar. Trudite se da za uloeno uvek dobijete xto je mogue vixe.Ako vax algoritam sadri korak koji je opxtiji nego xto je potrebno, raz-motrite mogunost da taj korak primenite na najtei deo problema. Dekom-pozicija je ovde korisna, jer do maksimuma koristi korak objediavaa. Difer-encne jednaqine iz odeka 2.5.4 pokrivaju veinu uobiqajenih algoritama za-snovanih na dekompoziciji, pa je korisno znati ihova rexea.

4.7. IZRAQUNAVAE FAKTORA RAVNOTEE BINARNOG STABLA 69

1 2 3 4 5 6 7 8 9 10 11

1

2

3

4

5

Ris. 8. Odreivae maksimuma dve u delovima konstantne funkcije.

4.7. Izraqunavae faktora ravnotee binarnog stablaNeka je T binarno stablo sa korenom r. Visina qvora v je rastojae

od v do najdaeg potomka. Visina stabla je visina egovog korena. Faktorravnotee qvora v definixe se kao razlika visina egovog levog i desnogpodstabla. U odeku 3.5 razmatrana su AVL stabla | binarna stabla qiji sviqvorovi imaju faktore ravnotee −1, 0 ili 1. Ovde emo se baviti proizvon-im binarnim stablima. Na slici 9 prikazano je binarno stablo kod koga je uzsvaki qvor upisan par h/b, gde je h visina qvora, a b egov faktor ravnotee.

cc

cc

c

cc

cc

1/1 1/− 1

2/0

3/0

2/− 2

1/1

Ris. 9. Binarno stablo sa oznakama h/b uz unutraxeqvorove (h visina, b faktor ravnotee qvora).

Problem. Za zadato stablo T sa n qvorova izraqunati faktore ravnoteesvih qvorova.

Pokuxaemo sa induktivnim pristupom i najjednostavnijom induktivnomhipotezom.

Induktivna hipoteza. Znamo da izraqunamo faktore ravnotee svihqvorova u stablima sa < n qvorova.

Bazni sluqaj n = 1 je trivijalan. Ako je dato stablo sa n > 1 qvoro-va, moemo da uklonimo koren, zatim da reximo problem (induktivno) zadva podstabla koja su preostala. Opredelili smo se za uklaae korena zbogtoga xto faktor ravnotee qvora v zavisi samo od qvorova ispod v. Zbog to-ga znamo faktore ravnotee svih qvorova izuzev korena. Meutim, faktorravnotee korena zavisi ne od faktora ravnotee, nego od visina egovih

70 4. KONSTRUKCIJA ALGORITAMA INDUKCIJOM

sinova. Zakuqujemo da u ovom sluqaju jednostavna indukcija ne rexava prob-lem. Potrebno je da znamo visine sinova korena. Ideja je da nalaee visinaqvorova prikuqimo polaznom problemu.

Pojaqana induktivna hipoteza. Znamo da izraqunamo faktore ravno-tee i visine svih qvorova u stablima koja imaju < n qvorova.

Bazni sluqaj je ponovo trivijalan. Kad sada posmatramo koren proizvo-nog stabla, egov faktor ravnotee moemo lako da odredimo kao razlikuvisina egovih sinova. Moemo da odredimo i visinu korena: to je vea odvisina egovih sinova, uveana za jedan. Lako je proveriti da se sluqaj kadnema levog ili desnog podstabla, moe rexiti tako da se visina nepostojeegsina zameni sa −1.

Karakteristika ovog algoritma je da on rexava nexto opxtiji problem.Umesto da raqunamo samo faktore ravnotee, mi izraqunavamo i visine qvo-rova. Ispostava se da je opxtiji problem lakxi, jer se visine lako raqunaju.Ako je rexee opxtije (jer je problem proxiren), onda induktivni korakmoe biti jednostavniji, jer posedujemo snanija sredstva. Uobiqajena grexkapri rexavau xireg problema je da se zaboravi na postojae dva parametra,i da se svaki od ih mora posebno izraqunati.

4.8. Nalaee maksimalnog uzastopnog podnizaProblem. Zadat je niz x1, x2,. . .xn realnih brojeva (ne obavezno poz-

itivnih). Odrediti podniz xi, xi+1,. . .xj uzastopnih elemenata sa najveommoguom sumom.

Za ovakav podniz rei emo da je maksimalni podniz. Na primer, u nizu(2,−3, 1.5,−1, 3,−2,−3, 3) maksimalni podniz je 1.5,−1, 3, sa sumom 3.5. Moeda postoji vixe maksimalnih podnizova datog niza. Ako su svi qlanovi nizanegativni, onda je maksimalni podniz prazan (po definiciji, suma praznogniza je 0). Voleli bismo da imamo algoritam koji rexava ovaj problem i pre-gleda (prolazi niz redom sleva u desno) niz samo jednom.

Induktivna hipoteza. Znamo da naemo maksimalni podniz u nizovimaduine < n.

Za n = 1 maksimalni podniz je broj x1 ako je x1 ≥ 0, odnosno prazan podnizako je x1 < 0. Posmatrajmo niz S = (x1, x2, . . . , xn) duine n > 1. Premainduktivnoj hipotezi mi umemo da pronaemo maksimalni podniz S′M nizaS′ = (x1, x2, . . . , xn−1). Ako je S′M prazan podniz, onda su svi brojevi u nizu S′

negativni, pa ostaje da se razmotri samo xn. Pretpostavimo sada da je S′M =(xi, xi+1, . . . , xj) za neke indekse i i j takve da je 1 ≤ i ≤ j ≤ n−1. Ako je j = n−1(odnosno maksimalni podniz je sufiks), onda je lako ovo rexee proxiritina S: ako je broj xn pozitivan, onda on produuje S′M , a u protivnom podniz S′Mje maksimalan i u S. Meutim, ako je j < n− 1, onda postoje dve mogunosti.Ili S′M ostaje maksimalni podniz u S, ili postoji drugi podniz koji nijemaksimalan u S′, ali posle dodavaa xn postaje maksimalan u S.

4.8. NALAEE MAKSIMALNOG UZASTOPNOG PODNIZA 71

Kuqna ideja je da se pojaqa induktivna hipoteza. Ona e biti demon-strirana na primeru nalaea maksimalnog podniza, a zatim e nexto opxti-je biti razmotrena u sledeem odeku. Problem sa razmotrenom induktivnomhipotezom je u tome xto xn moe da produi podniz koji nije maksimalanu S′ i tako formira novi maksimalni podniz u S. Prema tome, nije dovonosamo poznavae maksimalnog podniza u S′. Meutim, xn moe da produi samopodniz koji se zavrxava sa xn−1, odnosno sufiks niza S′. Pretpostavimo dasmo pojaqali induktivnu hipotezu tako da obuhvati i nalaee maksimalnogsufiksa, oznaqenog sa S′E = (xk, xk+1, . . . , xn−1).

Pojaqana induktivna hipoteza. U nizovima duine < n umemo dapronaemo maksimalni podniz, i maksimalni sufiks.

Ako za podniz S′ znamo oba ova podniza, algoritam postaje jasan. Mak-simalni sufiks proxirujemo brojem xn. Ako je dobijena suma vea od sume(globalno) maksimalnog podniza, onda imamo novi maksimalni podniz (takod-je i novi maksimalni sufiks). U protivnom, zadravamo prethodni maksi-malni podniz. Posao time nije zavrxen: potrebno je odrediti i novi maksi-malni sufiks. U opxtem sluqaju novi maksimalni sufiks se ne dobija uvekproxirivaem starog brojem xn. Moe se dogoditi da je maksimalni sufikskoji se zavrxava sabirkom xn negativan. Tada je novi maksimalni sufiks ust-vari prazan podniz, sa sumom 0. Algoritam za nalaee maksimalnog podnizaprikazan je na slici 10.

Algoritam Max uzast podniz(X, n);

Ulaz: X (niz duine n).Izlaz: Glob max (suma maksimalnog podniza).begin

Glob max := 0; poqetna vrednost globalno maks. sumeSuf max := 0; poqetna vrednost sume maks. sufiksafor i := 1 to n do

if x[i] + Suf max > Glob max then

Suf max := Suf max + x[i];

Glob max := Suf max;

else if x[i] + Suf max > 0 then

Suf max := Suf max + x[i];

else Suf max := 0

end

Ris. 10. Algoritam za nalaee maksimalnog podnizazadatog niza.

72 4. KONSTRUKCIJA ALGORITAMA INDUKCIJOM

4.9. Pojaqavae induktivne hipotezePojaqavae induktivne hipoteze je jedna od najvanijih tehnika za doka-

zivae teorema indukcijom. Prilikom traea dokaza qesto se nailazi nasledeu situaciju. Neka je teorema koju treba dokazati oznaqena sa P . In-duktivna hipoteza moe se oznaqiti sa P (< n), a dokaz teoreme svodi se nadokazivae taqnosti tvrea P (< n) ⇒ P (n). U mnogo sluqajeva moe seuvesti dopunska pretpostavka Q, koja olakxava dokaz. Drugim reqima, lakxeje dokazati [P ∧ Q](< n) ⇒ P (n) nego P (< n) ⇒ P (n). Pretpostavka moeda izgleda korektna, ali nije jasno kako se moe dokazati. Ideja se sastojiu tome da se Q ukuqi u induktivnu hipotezu. Sada je potrebno dokazati da[P ∧Q](< n) ⇒ [P ∧Q](n). Konjunkcija P ∧Q je jaqe tvree nego samo P , alise qesto jaqa tvrea lakxe dokazuju. Proces se nastava, i posle odreenogbroja uvedenih pretpostavki moe da dovede do zavrxetka dokaza. Problemnalaea maksimalnog podniza je dobar primer kako se ovaj princip moeiskoristiti za usavrxavae algoritama.

Najqexa grexka prilikom korixea ove tehnike je previd qieniceda je dodata dopunska pretpostavka u trenutku kad treba korigovati dokaz.Drugim reqima, mi dokazujemo tvree [P ∧ Q](< n) ⇒ P (n), zaboravajuida je uvedena dopunska pretpostavka Q. U primeru sa maksimalnim podnizomdo ove grexke bi doxlo ako ne bismo izraqunali novi maksimalni sufiks.Sliqno, u primeru sa nalaeem faktora ravnotee qvorova binarnog sta-bla, ovakva grexka bila bi ako se ne izraquna visina korena stabla. Prematome, vano je precizno registrovati promene induktivne hipoteze.

4.10. Dinamiqko programirae, problem rancaPretpostavimo da ranac treba napuniti stvarima. Stvari mogu da budu

razliqitog oblika i veliqine, a ci je da se u ranac upakuje xto je moguevixe stvari. Umesto ranca to moe da bude kamion, brod ili silicijumskiqip, a problem je pakovae elemenata. Postoji mnogo varijanti ovog problema;ovde e biti razmatrana varijanta sa jednodimenzionalnim predmetima.

Problem. Dat je prirodan broj K i n predmeta razliqitih veliqina(teina), tako da i-ti predmet ima veliqinu ki, 1 ≤ i ≤ n. Pronai podskuppredmeta qija je suma veliqina jednaka taqno K, ili ustanoviti da takavpodskup ne postoji.

Oznaqimo problem sa P (n,K), gde n oznaqava broj predmeta, a K veliqinu(nosivost) ranca. Veliqine predmeta podrazumevaju se implicitno, odnosnoihove veliqine nisu deo eksplicitne oznake problema. Na taj naqin P (i, k)oznaqava problem sa prvih i predmeta i rancem velicine k. Zbog jednostavnos-ti ograniqavamo sa na problem odluqivaa da li rexee postoji. Zapoqiemosa najjednostavnijim induktivnim pristupom.

Induktivna hipoteza (prvi pokuxaj). Umemo da reximo P (n− 1,K).

4.10. DINAMIQKO PROGRAMIRAE, PROBLEM RANCA 73

Bazni sluqaj je jednostavan: rexee postoji akko je k1 = K. Ako postojirexee problema P (n − 1,K), onda je to i rexee P (n,K): u to rexee neulazi predmet veliqine kn. U protivnom, ako ne postoji rexee P (n− 1,K),postava se pitae| moe li se iskoristiti ovaj negativni rezultat? Najprezakuqujemo da n-ti predmet mora biti ukuqen u zbir. Tada ostali predmetimoraju stati u mai ranac veliqine K − kn. Problem je time sveden na dvamaa problema P (n− 1,K) i P (n− 1, K−kn). Da bi se rexee kompletiralo,trebalo bi pojaqati induktivnu hipotezu. Potrebno je imati rexea ne samoza ranac veliqine K, nego i za rance veliqine mae od K.

Induktivna hipoteza (drugi pokuxaj). Umemo da reximo P (n−1, k) zasve k, 0 ≤ k ≤ K.

Ova induktivna hipoteza omoguuje nam da reximo P (n, k) za 0 ≤ k ≤ K.Bazni sluqaj P (1, k) se lako rexava: za k = 0 uvek postoji rexee (trivijalno,nula sabiraka), a u protivnom rexee postoji akko je k1 = k. Problem P (n, k)svodi se na dva problema P (n−1, k) i P (n−1, k−kn) (drugi problem otpada akoje k−kn < 0). Oba ova problema se mogu rexiti indukcijom. Poxto je svoeekompletno, algoritam je konstruisan. Meutim, ovaj algoritam je neefikasan.Problem veliqine n sveden je na dva problema veliqine n−1 (istina, u jednomod potproblema smaena je vrednost k). Svaki od novih problema svodi se napo dva naredna problema, itd, xto dovodi do eksponencijalnog algoritma.

Na sreu, u mnogo sluqajeva mogue je poboxati efikasnost prilikomrexavaa ovakvih problema. Zapaa se da ukupan broj razliqitih problemane mora biti preveliki: prvi parametar moe da ima najvixe n, a drugi na-jvixe K razliqitih vrednosti. Ukupno je broj razliqitih problema najvixenK. Eksponencijalno vreme izvrxavaa algoritma je posledica dupliraabroja problema posle svakog svoea. Poxto ukupno ima nK razliqitih prob-lema, jasno je da su neki od ih (ako je 2n > nK) vixe puta rexavani. Korisnaideja je pamtiti sva naena rexea da bi se izbeglo ponovae rexavaa is-tih problema. Ovaj pristup je kombinacija pojaqavaa induktivne hipoteze ikorixea potpune indukcije. Razmotriemo sada kako se ovaj pristup moepraktiqno realizovati.

Za smextae svih izraqunatih rezultata koristi se posebna matrica di-menzije n×K. Elemenat (i, k) matrice sadri informacije o rexeu P (i, k):Svoee po drugoj varijanti induktivne hipoteze ekvivalentno je izraquna-vau jedne vrste na osnovu prethodne vrste matrice. Svaki elemenat se izraqu-nava na osnovu dva elementa iz prethodne vrste. Ako je potrebno odrediti ipodskup sa zadatim zbirom, onda uz svaki elemenat matrice treba saquvatii informaciju o tome da li je odgovarajui elemenat skupa ukuqen u zbiru tom koraku. Pratei ove informacije unazad od elementa (n,K), moe serekonstruisati podskup sa zbirom K. Algoritam je prikazan na slici 11, au tabeli 1 prikazan je jedan primer. Matrica P je zbog udobnosti dimenzije(n + 1)× (k + 1) i sadri elemente P [i, k], 0 ≤ i ≤ n, 0 ≤ k ≤ K.

74 4. KONSTRUKCIJA ALGORITAMA INDUKCIJOM

Algoritam Ranac(S, K);

Ulaz: S (vektor duine n sa veliqinama predmeta) i K (veliqina ranca).Izlaz: P (matrica, tako da je P [i, k].Postoji = true akko postoji rexee problemaranca sa prvih i predmeta, za veliqinu ranca k; P [i, k].P ripada = true akko i-tipredmet pripada tom rexeu).begin

P [0, 0].Postoji := true;

for k := 1 to K do

P [0, k].Postoji := false;

elementi P [i, 0] za i ≥ 1 bie izraqunati na osnovu P [0, 0]for i := 1 to n do

for k := 0 to K do izraqunavae elementa P [i, k]P [i, k].Postoji := false; polazna vrednostif P [i− 1, k].Postoji then

P [i, k].Postoji := true;

P [i, k].P ripada := false

else if k − S[i] ≥ 0 then

if P [i− 1, k − S[i]].Postoji then

P [i, k].Postoji := true;

P [i, k].P ripada := true;

end

Ris. 11. Algoritam za rexavae problema ranca.

0 1 2 3 4 5 6 7 8 9 10 11k1 = 8 O - - - - - - - I - - -k2 = 5 O - - - - I - - O - - -k3 = 4 O - - - I O - - O I - -k4 = 3 O - - I O O - I I O - I

Tablica 1. Primer tabele formirane pri rexavau prob-lema ranca. Ulaz su n = 4 predmeta veliqina 8, 5, 4 i 3, aveliqina ranca je K = 11. Simbol "I" znaqi da postoji rexe-e koje obuhvata predmet iz odgovarajue vrste; "O": postojirexee, ali samo bez tog predmeta; "-": ne postoji rexee.

Metod korxen za rexavae ovog problema je specijalni sluqaj opxtetehnike koja se zove dinamiqko programirae. Suxtina dinamiqkog pro-gramiraa je formirae velikih tabela (u opxtem sluqaju vixedimenzion-alnih) sa svim prethodnim rezultatima. Tabele se konstruixu iterativno.Svaki elemenat se izraqunava na osnovu ve izraqunatih elemenata. Osnov-ni problem je organizovati izraqunavae elemenata tabele na najefikasnijinaqin. Drugi primer dinamiqkog programiraa bie prikazan u odeku 5.7.

4.11. UOBIQAJENE GREXKE 75

Sloenost. U tabeli ima nK elemenata. Svaki od ih izraqunava seza konstantno vreme na osnovu druga dva elementa, pa je ukupna vremenskasloenost algoritma O(nK). Ako predmeti nisu preveliki, onda K ne moebiti preveliko, pa je nK ¿ 2n. Ako je K jako veliko, ili su veliqine predmetarealni brojevi, onda je ovaj pristup neprimeniv; na ovaj problem vratiemose u poglavu 11). Ako je potrebno samo ustanoviti da li rexee postoji,onda je odgovor sadran u elementu P [n,K]. Ako pak treba odrediti podskup sazbirom K, onda treba prei put unazad, polazei od pozicije (n,K), koristeipoe Postoji elemenata matrice iz programa. Predmet teine kn pripadaskupu akko je P [n, K].P ripada taqno; ako je P [n,K].P ripada taqno, odnosnonetaqno, onda se dae na isti naqin posmatra elemenat P [n−1,K−kn], odnosnoP [n− 1,K] iz n− 1-e vrste, itd. Podskup se rekonstruixe za O(n) koraka.

Prostorna sloenost ovog algoritma je O(nK). Ako se zahteva samo odgo-vor na pitae da li postoji podskup sa zbirom K, lako je modifikovati al-goritam tako da mu prostorna sloenost bude O(K): naredna vrsta se izraqu-nava na osnovu prethodne, pa je za izraqunavae elementa P [n,K] dovonoimati prostor za smextae dve uzastopne vrste matrice. Dae usavrxavaedovodi do algoritma prostorne sloenosti O(K) koji omoguuje i efektivnopronalaee podskupa sa zbirom K, videti zadatak 4.15.

Komentar. Dinamiqko programirae je efikasno kad se problem moesvesti na nekoliko maih, ali ne sasvim malih potproblema. Rexavaju sesvi mogui potproblemi. Rezultati izraqunavaa quvaju se u odgovarajuojtabeli. Dakle, dinamiqko programirae je praktiqno izvodivo samo akobroj potproblema nije preveliki. Qak i tada dinamiqko programirae radisa velikim tabelama, pa obiqno zahteva veliki memorijski prostor. U nekimsluqajevima, kao u algoritmu Ranac na slici 11, mogue je rexiti problemkoristei mai prostor, tako xto se u memoriji u jednom trenutku quva samomai deo (dve vrste) matrice. Vremenska sloenost je obiqno bar kvadratna.

4.11. Uobiqajene grexkeOsvrnuemo se na neke mogue grexke prilikom induktivne konstrukcije

algoritama. Grexke prilikom izvoea dokaza indukcijom ve su razmotreneu odeku 1.11. Sve te grexke ovde imaju svoje analogone. Na primer, qesto sezaborava na bazu indukcije. U sluqaju rekurzivne procedure bazni sluqaj jeod suxtinskog znaqaja, jer se kroz ega izlazi iz rekurzije. Druga qesta grex-ka je proxirivae rexea za n na rexee specijalnog, umesto proizvonogsluqaja problema za n + 1.

Nenamerna promena induktivne hipoteze je takoe qesta grexka. Demon-striraemo to na jednom primeru. Graf G je bipartitni ako se egov skupqvorova moe predstaviti kao disjunktna unija dva podskupa, tako da ne pos-toji grana izmeu dva proizvona qvora iz istog poskupa. Za povezan bi-partitni graf je ovakvo razlagae u disjunktnu uniju jednoznaqno, videtizadatak 6.22.

76 4. KONSTRUKCIJA ALGORITAMA INDUKCIJOM

Problem. Za zadati povezani neusmereni graf G ustanoviti da li jebipartitni, a ako jeste, pronai odgovarajue razlagae egovih qvorova udisjunktnu uniju.Pogrexno rexee: Uklaamo qvor v i razlaemo ostatak grafa indukci-jom, ako je mogue. Prvi podskup zvaemo beli, a drugi crni. Ako je v povezansamo sa belim qvorovima, prikuqujemo ga crnom skupu, i obrnuto | akoje v povezan samo sa crnim qvorovima, prikuqujemo ga belom skupu. Ako jev povezan sa qvorovima iz oba podskupa, onda graf nije biparititan, jer jerazlagae jednoznaqno.

Osnovna grexka u ovom rexeu (a to je grexka koju smo nameravali dailustrujemo) je u tome xto posle uklaaa qvora v graf ne mora da ostanepovezan. Prema tome, mai primer problema nije isti kao polazni, pa seindukcija ne moe koristiti. Ako bismo uklonili qvor koji ne "razbija"graf, rexee bi bilo korektno.

4.12. RezimeU ovom poglavu prikazano je vixe tehnika za konstrukciju algorita-

ma, koje su ustvari varijante jednog istog pristupa. Nove tehnike i brojniprimeri bie dati u narednim poglavima. Najboi naqin da se te tehnikesavladaju je da se one koriste za rexavae problema. Prilikom rexavaaproblema korisno je imati na umu sledee sugestije:

• Princip indukcije koristi se da se ulaz za problem svede na jedanili vixe maih. Ako se svoee moe uvek izvesti, a bazni sluqajse moe rexiti, onda je algoritam definisan indukcijom, odnosnodobijen je rekurzivni algoritam. Osnovna ideja je da se paa skon-centrixe na smaivae problema, a ne na egovo direktno rexavae.

• Jedan od najlakxih naqina da se smai problem je eliminacija nekihegovih elemenata, xto se moe pokuxati na vixe naqina. Poredeliminacije elemenata koji su oqigledno suvixni (kao u odeku 4.3),mogue je spajae dva elementa u jedan, pronalaee elemenata kojise mogu obraditi na poseban naqin, ili uvoee novog elementa kojipreuzima ulogu dva ili vixe polaznih elemenata (odeak 5.5).

• Veliqina problema moe se smaiti na vixe naqina. Meutim, nedobija se svakom od tih redukcija algoritam iste efikasnosti. Za-to je korisno razmotriti razliqite redoslede primene induktivnehipoteze.

• Jedan od najefikasnijih naqina za smaivae veliqine problema jeegova podela na dva ili vixe podjednakih delova. Dekompozicija jeefikasna ako se problem moe podeliti, tako da se od rexea pot-problema lako dobija rexee celog problema. Algoritmi zasnovanina dekompoziciji razmatrani su u odecima 5.3, 5.4, 7.2, 7.4, 8.4, 8.5.

• Prilikom svoea na mae potprobleme, treba teiti da potprob-lemi budu xto nezavisniji. Na primer, problem sortiraa moe se

ZADACI 77

svesti na pronalaee i uklaae najmaeg elementa; redosled os-talih ne zavisi od ukloenog elementa (videti odeke 5.3,6.5).

• Na kraju, sve nabrojane tehnike treba koristiti zajedno, kombinujuiih na razne naqine. Na primer, moe se koristiti dekompozicija sapojaqavaem induktivne hipoteze, tako da se dobijeni potproblemilakxe kombinuju (odeak 7.4).

Zadaci4.1. Konstruisati algoritam za izraqunavae vrednosti polinoma zasnovan na dekom-

poziciji. Koliki je broj sabiraa i mnoea potreban?4.2. Razmotriti algoritam Bijekcija sa slike 4. Da li je mogue da skup S postane

prazan na kraju izvrxavaa algoritma? Navesti takav primer, ili dokazati da se to nemoe desiti.

4.3. Xta je invarijanta pete u prvoj while peti algoritma Zvezda (slika 5)?4.4. Dato je binarno stablo T . Konstruisati efikasan algoritam koji daje odgovor na

pitae da li je T AVL stablo.4.5. Unutraxi qvor v binarnog stabla je S-AVL qvor ako levo i desno podstablo

imaju jednake visine. Konstruisati algoritam linearne sloenosti koji oznaqava sve S-AVL qvorove datog binarnog stabla, qiji ni jedan potomak nije S-AVL qvor.

4.6. Za binarno stablo kaemo da je L-AVL stablo ako za svaki egov unutraxiqvor levo podstablo ima visinu za jedan veu od desnog. Konstruisati algoritam linearnesloenosti za proveru da li je dato stablo L-AVL stablo.

4.7. Konstruisati algoritam koji proverava da li su jednaka dva zadata binarna sta-bla.

4.8. Precizirati rexee problema ranca korixeem poa Pripada (slika 11).4.9. Neka su date dve funkcije, f ′(x) i f ′′(x),

f ′(x) = f(x′1,h′1),(x′2,h′2),...,(x′k

,h′k)(x),

f ′′(x) = f(x′′1 ,h′′1 ),(x′′2 ,h′′2 ),...,(x′′l

,h′′l)(x),

maksimumi dve grupe od po n/2 pravougaonih funkcija (videti odeak 4.6); k, l ≤ n, h′k =h′l = 0. Funkcija f ′(x) (i sliqno f ′′(x)) ima u intervalima [x′i, x

′i+1) konstantnu vrednost h′i,

0 ≤ i ≤ k, pri qemu se zbog udobnosti uzima da je x′0 = x′′0 = −∞, h′0 = h′′0 = 0, x′k+1 = +∞.Konstruisati algoritam sloenosti O(n) za odreivae funkcije f(x) = maxf ′(x), f ′′(x).

4.10. Modifikacija problema maksimum skupa pravougaonika: Umesto pravougaonika(L, D, V ) sa x-koordinatama levog L i desnog kraja D, odnosno visinom V , koji "lei"na x-osi, sada (L, D, V ) predstava figuru dobijenu dodavaem "krova" (jednakokrako-pravouglog trougla sa hipotenuzom duine D − L na goroj ivici pravougaonika) na pra-vougaonik. Zadatak ostaje isti | odrediti maksimum n ovakvih funkcija algoritmomsloenosti O(n log n).

4.11. Neka je x1, x2, . . . , xn niz realnih (ne obavezno pozitivnih) brojeva. Konstruisatialgoritam sloenosti O(n) za odreivae podniza xi, xi+1, . . . , xj sa najveim moguimproizvodom, 1 ≤ i ≤ j ≤ n. Proizvod praznog podniza je po definiciji jednak 1.

4.12. Za qvor binarnog stabla (koje u opxtem sluqaju ne mora da bude AVL stablo)kazemo da je AVL qvor ako je egov faktor ravnotee iz skupa 0,±1. Konstruisatialgoritam koji u datom binarnom stablu T oznaqava sve kritiqne qvorove (qvorove kojinisu AVL qvorovi, a qiji su svi potomci AVL qvorovi).

78 4. KONSTRUKCIJA ALGORITAMA INDUKCIJOM

4.13. Neka je G = (V, E) stablo sa n qvorova. Ci je formirati simetriqnu kvadratnumatricu reda n, qiji elemenat (i, j) je jednak rastojau izmeu qvorova vi i vj . Konstru-isati algoritam sloenosti O(n2) koji rexava ovaj problem ako je stablo zadato listompovezanosti.

4.14. Rastojae izmeu dva qvora stabla je broj grana na jedinstvenom putu koji ihpovezuje. Dijametar stabla T = (V, E) je najvee meu rastojaima neka dva egova qvora.Konstruisati efikasan algoritam za odreivae dijametra datog stabla, i odrediti egovuvremensku sloenost.

4.15. Kako se moe poboxati korixee memorijskog prostora u algoritmu Ranacsa slike 11? Kolika je prostorna sloenost usavrxenog algoritma?

4.16. Varijanta problema ranca. Dati su brojevi x1, x2, . . . , xn i K; potrebno je pred-staviti K u obliku zbira nekih brojeva xi, 1 ≤ i ≤ n, pri qemu se sabirci mogu ponavatiproizvoan broj puta.

4.17. Varijanta problema ranca. Pretpostavke su iste kao i u zadatku 4.16 (n tipovapredmeta teina x1, x2, . . . , xn; zalihe tih predmeta su neograniqene, i zadata je suma Kteina predmeta u rancu), ali je sada predmetima tipa i pridruena vrednost vi, i =1, 2, . . . , n. Konstruisati algoritam koji ranac puni do vrha, i to predmetima sa najveimzbirom vrednosti; drugim reqima, odrediti nenegativne cele brojeve a1, a2, . . . , an takve daje

∑ni=1 aiki = K, a da suma

∑ni=1 aivi ima maksimalnu vrednost.

4.18. Neka je dat skup prirodnih brojeva x1, x2, . . . , xn i neka je S =∑n

i=1 xi. Kon-struisati algoritam sloenosti O(nS) koji razlae ovaj skup u dva disjunktna podskupasa jednakim sumama elemenata, ili utvruje da takvo razlagae nije mogue.

4.19. Na raspolagau nam je algoritam u obliku crne kutije (xto znaqi da ne znamoegove detae) sa sledeim osobinama: za dati skup od n prirodnih brojeva i prirodnibroj k, algoritam daje odgovor "da" ili "ne", zavisno od toga da li postoji podskup datihbrojeva sa sumom jednakom k. Kako se moe odrediti podskup brojeva sa sumom k (ako postoji),koristei crnu kutiju O(n) puta?

4.20. Problem hanojskih kula je standardni primer netrivijalnog problema koji imajednostavno rekurzivno rexee. Ukupno n diskova razliqite veliqine sloeni su na us-pravni xtapi A, tako da im veliqine opadaju odozdo navixe. Pored toga, postoje i dvaprazna xtapia B i C. Ci je premestiti sve diskove, jedan po jedan, na drugi xtapi (Bili C), na sledei naqin. Diskovi se premextaju sa vrha jednog na vrh drugog xtapia,ali samo ako disk dolazi na disk vei od sebe (ili na prazan xtapi). Broj premextaadiskova treba da bude najmai mogui.

(a) Konstruisati indukcijom algoritam za nalaee najkraeg niza poteza koji rexavaproblem hanojskih kula sa n diskova.

(b) Koliko poteza traje izvrxavae algoritma? Formirati diferencnu jednaqinu zabroj poteza i rexiti je.

(c) Dokazati da je dobijeni broj poteza u (b) optimalan, odnosno da ne postoji algoritamkoji rexava problem u maem broju poteza.

4.21. Razmotrimo sledeu varijantu problema hanojskih kula (zadatak 4.20). U poqet-nom poloaju diskovi ne moraju vixe biti na jednom xtapiu. Mogu biti na proizvoannaqin rasporeeni na tri xtapia, uz uslov da im veliqine opadaju (odozdo navixe) nasvakom xtapiu. Ci koji treba postii ostaje isti, da se svi diskovi premeste na zadatixtapi (uz ista ograniqea kao i u osnovnom problemu), koristei xto je mae potezamogue. Konstruisati algoritam za odreivae najkraeg niza poteza koji rexava ovu va-rijantu problema hanojskih kula sa n diskova.

Glava 5

Algoritmi za rad sa nizovima i skupovima

5.1. UvodU ovom poglavu baviemo se problemima za koje su ulazi konaqni nizovi

ili skupovi. Razlika izmeu nizova i skupova je u tome xto je kod nizovabitan redosled elemenata, a kod skupova nije. Takoe, kod skupova se pret-postava da se jedan isti elemenat pojavuje najvixe jednom, a kod nizovatakve pretpostavke nema. Poxto su ulazni podaci obiqno dati nekim redom,moemo ih smatrati nizom. Ipak, ulaz se moe smatrati skupom ako nas re-dosled elemenata ne zanima. Ako se drugaqije ne naglasi, u ovom poglavu sepretpostava da je predstava ulaza (ulaznih podataka) vektor zadate veli-qine. Najqexe se pretpostava da su to elementi potpuno ureenog skupa(npr. celi ili realni brojevi), tako da se mogu uporeivati. Razmatraju sepitaa kao xto su maksimalnost, redosled, specijalni podnizovi, kompresijapodataka i uporeivae nizova.

Razmatra se vixe algoritama sa xirokom primenom. Navode se novi pri-meri metodologije konstrukcije algoritama uvedene u poglavu 4, ali i ne-ki vani algoritmi. To su vani i univerzalno primenivi algoritmi (naprimer binarna pretraga i sortirae), vani algoritmi sa primenom u speci-fiqnim oblastima (kompresija podataka, uporeivae nizova), kao i ne mnogovani algoritmi koji ilustruju vane tehnike (nalaee dva najvea brojau skupu, problem mucavog podniza).

Prvi primer u ovom poglavu je binarna pretraga | fundamentalni ielegantan algoritam koji se pojavuje u mnogo oblika i na koga se nailaziu mnogim situacijama. Zatim se prelazi na sortirae | jedan od najxireprouqavanih problema, rangovske statistike, kompresiju podataka, dva prob-lema povezana sa obradom teksta i probabilistiqke algoritme.

5.2. Binarna pretraga i varijacijeBinarna pretraga je za oblast algoritama ono xto je toqak za mehanizme:

ona je jednostavna, elegantna, neizmerno vana, i otkrivana je vixe puta.Osnovna ideja binarne pretrage je podela prostora na dva priblino jednakadela postavaem samo jednog pitaa. U ovom odeku razmatra se nekolikovarijacija binarne pretrage.

79

80 5. ALGORITMI ZA RAD SA NIZOVIMA I SKUPOVIMA

5.2.1. Qista binarna pretraga.Problem. Neka je x1, x2, . . . , xn niz realnih brojeva takav da je x1 ≤ x2 ≤

· · · ≤ xn. Za zadati realni broj z treba ustanoviti da li se z pojavuje u nizu,a ako je odgovor "da", potrebno je pronai indeks i takav da je xi = z.

Zbog jednostavnosti, traimo samo jedan indeks i takav da je z = xi. Uopxtem sluqaju ci moe da bude pronalaee svih takvih indeksa, najma-eg ili najveeg meu ima i sliqno. Ideja je prepoloviti prostor koji sepretrauje tako xto se najpre proveri sredi qlan niza. Pretpostavimo zbogjednostavnosti da je n paran broj. Ako je z mae od xn/2+1, onda z moe bitisamo u prvoj polovini niza; u protivnom, z moe biti samo u drugoj polovininiza. Pronalaee z u prvoj ili drugoj polovini niza je problem veliqinen/2, koji se rexava rekurzivno. Bazni sluqaj n = 1 rexava se neposrednimuporeivaem z sa elementom. Algoritam je dat na slici 1.

Algoritam Binarna Pretraga(X, n, z);

Ulaz: X (niz od n brojeva, ureenih neopadajue) i z (broj koji se trai).Izlaz: Poz (indeks i takav da je X[i] = z, ili 0 ako takav indeks ne postoji).begin

Poz := Nadji(z, 1, n);

end

function Nadji(z, Levi, Desni) : integer

begin

if Levi = Desni then

if X[Levi] = z then Nadji := Levi

else Nadji := 0

else

Srednji = d(Levi + Desni)/2e;if z < X[Srednji] then

Nadji = Nadji(z, Levi, Srednji− 1)

else

Nadji = Nadji(z, Srednji, Desni)

end

Ris. 1. Binarna pretraga.

Sloenost. Posle svakog uporeivaa opseg moguih indeksa se polovi,pa je potreban broj uporeivaa za pronalaee zadatog broja u nizu veli-qine n O(log n). Ova varijanta binarne pretrage odlae proveru jednakostido samog kraja. Alternativa je provera jednakosti sa z u svakom koraku. Prob-lem sa prikazanom varijantom je u tome xto se pretraga ne moe zavrxiti

5.2. BINARNA PRETRAGA I VARIJACIJE 81

pre nego xto se opseg za pretragu suzi na samo jedan broj; prednost joj je pakda se u svakom koraku vrxi samo jedno uporeivae. Ovakva pretraga je zbogtoga obiqno bra. Iako je jednostavnije napraviti rekurzivni program, lakoje ovaj program prevesti u nerekurzivni. Binarna pretraga nije tako efikasnaza male vrednosti n, pa je tada boe zadati niz pretraiti linearno, qlanpo qlan.

Sledei problem svodi se na binarnu pretragu.

Problem. Za zadati rastue ureeni niz celih brojeva a1, a2, . . . , an utvr-diti da li postoji indeks i, takav da je ai = i.

Zaista, niz xi = ai− i je neopadajui (jer je xi+1−xi = ai+1−ai− 1 ≥ 0), auslov ai = i je ekvivalentan uslovu xi = 0. Prema tome, zadati problem rexavase binarnom pretragom niza xi, u kome se trai broj z = 0.

5.2.2. Binarna pretraga cikliqki ureenog niza. Za niz x1, x2, . . . ,xn kae se da je cikliqki ureen ako vae nejednakosti

xi < xi+1 < · · · < xn < x1 < · · · < xi−1,

gde je xi najmai elemenat niza.

Problem. Za zadati cikliqki ureeni niz pronai poziciju minimalnogelementa niza (zbog jednostavnosti moe se pretpostaviti da je ta pozicijajedinstvena).

Da bismo pronaxli minimalni elemenat xi u nizu, koristimo ideju bi-narne pretrage da jednim uporeivaem eliminixeno polovinu niza. Uzmimoproizvona dva broja xk i xm takva da je k < m. Ako je xk < xm, onda i ne moebiti u intervalu k < i ≤ m, jer je xi najmai elemenat niza (u tom sluqajubilo bi xi < xm < xk | suprotno pretpostavci da je xk < xm). U protivnom,ako je xk > xm, onda i mora biti u intervalu k < i ≤ m, jer je tada monotonostniza prekinuta negde u intervalu indeksa [k, m], videti sliku 2. Prema tome,jednim uporeivaem moe se eliminisati mnogo elemenata. Odgovarajuimizborom k i m, i se moe odrediti pomou O(log n) uporeivaa, videti al-goritam na slici 3. Invarijanta glavne pete algoritma je uslov da se i uveknalazi u intervalu [Levi,Desni].

5.2.3. Binarna pretraga niza nepoznate duine. Posmatrajmo var-ijantu problema pretrage kad se zadati broj z trai u ureenom nizu nepoz-nate duine. Da bi se problem sveo na ve rexen, potrebno je pronai barjedan indeks i takav da je xi > z: tada se moe prei na binarnu pretraguopsega indeksa od 1 do i.

Moe se postupiti na sledei naqin. Najpre se z uporeuje sa x1. Ako jez ≤ x1, onda z moe biti jednako samo broju x1. Pretpostavimo da znamo in-deks j takav da je z > xj . Posle uporeivaa z sa x2j postoje dve mogunosti.Ako je z ≤ x2j , onda znamo da je xj < z ≤ x2j , pa se z moe pronai pomou

82 5. ALGORITMI ZA RAD SA NIZOVIMA I SKUPOVIMA

-

6

ii− 1k1 m n

j

xj

ss

sss

gs

sss

sg

Ris. 2. Cikliqki ureen niz | ilustracija.

Algoritam Cikl Binarna Pretraga(X, n);

Ulaz: X (vektor sa cikliqki ureenim nizom od n razliqitih brojeva).Izlaz: poz (indeks minimalnog elementa u X).begin

poz := c Nadji(1, n);

end

function c Nadji(Levi, Desni) : integer

begin

if Levi = Desni then

c Nadji := Levi

else

Srednji = b(Levi + Desni)/2c;if X[Srednji] < X[Desni] then

c Nadji = c Nadji(Levi, Srednji)

else

c Nadji = c Nadji(Srednji + 1, Desni)

end

Ris. 3. Binarna pretraga cikliqki ureenog niza.

O(log2 j) uporeivaa. Ako je pak z > x2j , onda je prostor za pretraivan-je udvostruqen, i treba nastaviti (indukcijom) tako xto se j zameni sa 2j.Pretpostavimo da je i najmai indeks takav da je z ≤ xi. Tada je dovonoO(log2 i) uporeivaa da se (udvostruqavaem) pronae takvo xj koje je veeili jednako od z, i novih O(log2 i) uporeivaa da se pronae z.

Isti algoritam moe se upotrebiti i ako je duina niza poznata, alioqekujemo da je indeks i vrlo mali. Da bi ovaj algoritam bio boi od obiqnebinarne pretrage, potrebno je da bude priblino 2 log2 i < log2 n, odnosnoi <

√n.

5.2. BINARNA PRETRAGA I VARIJACIJE 83

5.2.4. Problem mucavog podniza. Princip binarne pretrage moe seiskoristiti i u problemima koji na prvi pogled nemaju veze sa binarnompretragom. Neka su A = a1a2 . . . an i B = b1b2 . . . bm dva niza znakova izkonaqnog alfabeta i m ≤ n. Kae se da je B podniz A ako postoje indek-si i1 < i2 < · · · < im takvi da je bj = aij

za sve indekse j, 1 ≤ j ≤ m, odnosnoako se niz B moe "uklopiti" u niz A. Lako je ustanoviti da li je B podnizniza A: u nizu A trai se prva pojava znaka b1, zatim od te pozicije dae prvapojava znaka b2, itd. Ispravnost ovog algoritma lako se dokazuje indukcijom.Poxto se elementi oba niza prolaze taqno po jednom, vremenska sloenostalgoritma je O(m + n). Za zadati niz B, neka Bi oznaqava niz u kome se re-dom svaki znak niza B ponava i puta. Na primer, ako je B = xyzzx, onda jeB3 = xxxyyyzzzzzzxxx.

Problem. Data su dva niza A i B. Odrediti maksimalnu vrednost i takvuda je Bi podniz niza A.

Ovaj problem moe se nazvati problem mucavog podniza. Iako na prvipogled teak, on se lako moe rexiti pomou binarne pretrage.

Za svaku zadatu vrednost i lako se konstruixe niz Bi, i proverava dali je Bi podniz niza A. Pored toga, ako je Bj podniz A, onda je za svako i,1 ≤ i ≤ j, Bi podniz A. Najvea vrednost za i koju treba razmatrati man-ja je ili jednaka od n/m, jer bi u protivnom niz Bi bio dui od niza A.Dakle, moe se primeniti binarna pretraga. Poqiemo sa i = dn/(2m)e iproveravamo da li je Bi podniz A. Zatim nastavamo sa binarnom pretragom,eliminixui doi, odnosno gori podinterval ako je odgovor da, odnosno ne.Posle dlog2(n/m)e testova bie pronaeno maksimalno i. Vremenska sloenostalgoritma je O((n+m) log(n/m)) = O(n log(n/m)). Problemi sa uporeivaemnizova razmatraju se i u odeku 5.7.

Rexee ovog problema lako je uopxtiti. Pretpostavimo da ako broj i zado-voava uslov P (i), onda i svi brojevi j, 1 ≤ j ≤ i zadovoavaju taj uslov.Ako traimo maksimalnu vrednost i koja zadovoava uslov P (i), dovono jeda imamo algoritam koji utvruje da li zadato i zadovoava taj uslov. Ta-da se problem rexava binarnom pretragom moguih vrednosti za i. Ako se nezna gora granica za i, moe se iskoristiti postupak sa udvostruqavaem:poqie se sa i = 1, a zatim se i udvostruqava, sve dok se ne dobije neka gorn-ja granica. Rezultujui algoritam, iako efikasan, qesto nije optimalan, ifaktor log n iz izraza za vremensku sloenost moe se eliminisati (kao usluqaju problema mucavog podniza).

5.2.5. Numeriqko rexavae jednaqina. Postupak binarne pretragesliqan je numeriqkom rexavau jednaqine f(x) = 0 na intervalu [a, b] metodombisekcije, pri qemu je npr. f(a)f(b) < 0 i funkcija f(x) je neprekidna. Cije nai rexee jednaqine sa zadatom taqnoxu.

Poxto je funkcija neprekidna, u intervalu [a, b] jednaqina ima bar jednorexee. Izraqunava se vrednost funkcije u taqki x1 = (a+b)/2. Ako je f(x1) =0 (u granicama zadate taqnosti), onda je rexee pronaeno. U protivnom,

84 5. ALGORITMI ZA RAD SA NIZOVIMA I SKUPOVIMA

funkcija u krajevima jednog od podintervala [a, x1] ili [x1, b] ima vrednostisuprotnog znaka, pa u tom podintervalu postoji bar jedno rexee jednaqine.Posle k koraka dolazi se do intervala duine (b−a)/2k koji sadri rexee.Sa poloveem intervala nastava se do postizaa zahtevane taqnosti.

5.2.6. Interpolaciona pretraga. U okviru binarne pretrage prostorpretrage se svaki put polovi, xto garantuje logaritamsku vremensku sloe-nost. Meutim, ako se u toku pretrage naie na vrednost vrlo blisku traenombroju z, izgleda razumno da se pretraga usredsredi na "okolinu" tog indeksaumesto da se nastavi sa poloveem naslepo. Specijalno, ako je vrednost zvrlo mala, moe se zapoqeti sa pretragom negde na poqetku niza umesto odsredeg indeksa.

Posmatrajmo naqin na koji otvaramo kigu kad traimo neku stranicu.Neka, na primer, u kizi od 800 strana traimo stranu 200. Ona se nalazioko prve qetvrtine kige, pa mi tu qienicu koristimo kad otvaramo kigu.Verovatno je da neemo odmah pogoditi stranu 200; pretpostavimo da smo ki-gu otvorili na strani 250. Sada je pretraga suena na opseg od 250 strana, atraena strana je na oko 4/5 opsega. Mi pokuxavamo da otvorimo kigu na okopetine pre kraja opsega. Proces nastavamo dok se ne pribliimo dovonostrani 200, posle qega do e dolazimo okreui stranu po stranu. Opisanipostupak je upravo suxtina interpolacione pretrage. Umesto da polovimoprostor pretrage, mi ga delimo tako da bude najvea "verovatnoa" uspeha.Odnos u kome se opseg indeksa deli odreuje se interpolacijom, xto je ilus-trovano na slici 4. Prvom interpolacijom dobija se indeks 6; ispostava daje X[6] < z. Sledea interpolacija u intervalu indeksa [6, 17] dovodi do rex-ea X[7]. Algoritam, zajedno sa izrazom po kome se vrxi interpolacija, datje na slici 5.

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

z b b

Ris. 4. Interpolaciona pretraga | ilustracija.

5.3. SORTIRAE 85

Algoritam Interpolaciona Pretraga(X, n, z);

Ulaz: X (niz od n neopadajue ureenih brojeva) i z (broj koji se trai).Izlaz: Poz (indeks i takav da je X[i] = z, ili 0 ako takav indeks ne postoji).begin

if z < X[1] or z > X[n] then Poz := 0 neuspexna pretragaelse Poz := i Nadji(z, 1, n);

end

function i Nadji(z, Levi, Desni) : integer

begin

if X[Levi] = z then i Nadji := Levi

else if Levi = Desni or X[Levi] = X[Desni] then

i Nadji := 0

else

Srednji :=

⌈Levi +

(z −X[Levi])(Desni− Levi)

X[Desni]−X[Levi]

⌉;

if z < X[Srednji] then

i Nadji = i Nadji(z, Levi, Srednji− 1)

else

i Nadji = i Nadji(z, Srednji, Desni)

end

Ris. 5. Interpolaciona pretraga.

Sloenost. Efikasnost interpolacione pretrage ne zavisi samo od du-ine niza, nego i od svih egovih elemenata, odnosno od kompletnog ulaza.Postoje ulazi za koje interpolaciona pretraga proverava praktiqno svakiqlan niza (videti zadatak 5.5). S druge strane, interpolaciona pretraga jevrlo efikasna za ulaze sa priblino uniformno raspodeenim elementima(odnosno ako su taqke (i, xi) grupisane u okolini prave; primer sa strana-ma u kizi oqigledno spada u ovu kategoriju). Pokazuje se da je sredi brojuporeivaa u toku interpolacione pretrage (usredavae po svim moguimnizovima) jednak O(log log n). Ipak, interpolaciona pretraga nije mnogo boaod obiqne binarne pretrage iz dva razloga. Najpre, sem za jako velike vrednos-ti n, ve je log2 n mala vrednost, pa en logaritam nije mnogo mai. Drugo,kod izbora narednog indeksa u toku interpolacione pretrage potrebno je izvr-xiti nexto komplikovanije aritmetiqke operacije.

5.3. SortiraeSortirae je jedan od najxire prouqavanih problema u raqunarstvu. Sor-

tirae je osnova za mnoge algoritme i troxi veliki deo raqunarskog vremena

86 5. ALGORITMI ZA RAD SA NIZOVIMA I SKUPOVIMA

u mnogim tipiqnim aplikacijama. Postoje mnoge verzije problema sortiraa,kao i desetine algoritama za sortirae. Ovde emo razmotriti samo nekolikopoznatijih algoritama.

Problem. Datih n brojeva x1, x2, . . . , xn treba urediti u neopadajui niz.Drugim reqima, treba pronai niz razliqitih indeksa 1 ≤ i1, i2, . . . in ≤ ntakvih da je xi1 ≤ xi2 ≤ · · · ≤ xin .

Zbog jednostavnosti, ako se ne naglasi drugaqije, pretpostavamo da subrojevi xi razliqiti. Svi opisani algoritmi rade ispravno i sa brojevimakoji nisu razliqiti. Za algoritam sortiraa kae se da je u mestu ako sene koristi dopunski memorijski prostor (osim onog u kome je smexten ulazniniz).

5.3.1. Sortirae razvrstavaem i sortirae vixestrukim raz-vrstavaem. Najjednostavniji postupak sortiraa sastoji se u tome da seobezbedi dovoan broj lokacija, i da se onda svaki elemenat smesti na svojulokaciju. Taj postupak zove se sortirae razvrstavaem. Ako se, na primer,sortiraju pisma prema odredixtima, onda je dovono obezbediti jednu pre-gradu za svako odredixte, i sortirae je vrlo efikasno. Ali ako pisma trebasortirati prema petocifrenom poxtanskom broju, onda ovaj metod zahteva oko100000 pregrada, xto postupak qini nepraktiqnim. Prema tome, sortiraerazvrstavaem radi dobro ako su elementi iz malog, jednostavnog opsega, kojije unapred poznat. Prelazimo na detaniji opis ovog algoritma.

Neka je dato n elemenata, koji su celi brojevi iz opsega od 1 do m ≥ n.Rezervixe se m lokacija, a onda se za svako i broj xi stava na lokacijuxi koja odgovara egovoj vrednosti. Posle toga se pregledaju sve lokacije iiz ih se redom pokupe elementi. Sloenost ovog jednostavnog algoritma jedakle O(m + n). Ako je m = O(n), dobijamo algoritam za sortirae linernesloenosti. S druge strane, ako je m veliko u odnosu na n (kao u sluqajupoxtanskih brojeva), onda je i O(m) takoe veliko. Pored toga, algoritamzahteva memoriju veliqine O(m), xto je jox vei problem za velike m.

Prirodno uopxtee ove ideje je sortirae vixestrukim razvrstavaem.Razmotrimo jox jednom primer sa poxtanskim brojevima. Sortirae razvrs-tavaem u ovom sluqaju nije pogodno, jer je preveliki opseg moguih poxtan-skih brojeva. Kako smaiti potreban opseg? Primeniemo indukciju po opseguna sledei naqin. Najpre koristimo 10 pregrada i sortiramo pisma prema pr-voj cifri poxtanskog broja. Svaka pregrada sada pokriva 10000 razliqitihpoxtanskih brojeva (odreenih sa preostale qetiri cifre poxtanskog broja).Broj operacija za ovu etapu je O(n). Na kraju prve etape imamo 10 pregrada, odkojih svaka odgovara maem opsegu. Dae se problem za svaku pregradu rexavaindukcijom. Poxto se opseg posle svake etape smauje za faktor 10, i poxtopoxtanski brojevi imaju pet cifara, dovono je pet etapa. Kad se sadrajipregrada sortiraju, lako ih je objediniti u sortiranu (ureenu) listu.

5.3. SORTIRAE 87

Razmotrimo sada drugu varijantu iste ideje. Napomenimo da se opseg moepodeliti na bilo koji odgovarajui naqin. U primeru sa poxtanskim broje-vima podela je izvrxena u skladu sa dekadnim prikazom poxtanskih brojeva.Ako su elementi stringovi koje treba sortirati leksikografski, moemo ihuporeivati znak po znak, pa se dobija leksikografsko sortirae. Raz-motrena verzija sortiraa vixestrukim razvrstavaem (cifre se prolazesleva udesno) poznata je kao sortirae obratnim vixestrukim razvrsta-vaem.

Rekurzivna realizacija sortiraa obratnim vixestrukim razvrstavaemzahteva pomone lokacije (oko 50 pregrada u primeru sa poxtanskim brojevi-ma; svaki nivo rekurzije ima svoje pregrade). Drugi naqin realizacije sorti-raa vixestrukim razvrstavaema zasniva se na primeni indukcije obrnutimredosledom: sortirae se radi zdesna ulevo, polazei od najniih umesto odnajvixih cifara. Pretpostavamo da su elementi veliki brojevi, predstavl-jeni sa k cifara u sistemu sa osnovom d (cifre su iz opsega od 0 do d − 1).Induktivna hipoteza je vrlo prirodna.

Induktivna hipoteza. Umemo da sortiramo elemente sa mae od k ci-fara.

Razlika izmeu ovog metoda i sortiraa obratnim vixestrukim razvrs-tavaem je u naqinu na koji se proxiruje hipoteza (ideja primene induktivnehipoteze obrnutim redosledom sliqna je kao kod Hornerove xeme, odeak 4.2).Kod datih brojeva sa k cifara mi najpre ignorixemo najvixu (prvu) cifrui sortiramo brojeve prema ostatku cifara indukcijom. Tako dobijamo listuelemenata sortiranih prema najniih k−1 cifara. Zatim prolazimo jox jed-nom kroz sve elemente, i razvrstavamo ih prema najvixoj cifri u d pregrada.Konaqno, objediujemo redom sadraje pregrada. Ovaj algoritam zove se sor-tirae direktnim vixestrukim razvrstavaem. Pokazaemo da su elementina kraju sortirani po svih k cifara.

Tvrdimo da su dva elementa svrstana u razliqite pregrade u ispravnomporetku. Za to nam nije potrebna induktivna hipoteza, jer je najvixa cifraprvog od ih vea od najvixe cifre drugog. S druge strane, ako dva elementaimaju iste najvixe cifre, onda su oni prema induktivnoj hipotezi dovedeniu ispravan redosled pre posledeg koraka. Bitno je da elementi staveni uistu pregradu ostaju u istom redosledu kao i pre razvrstavaa. Ovo se moepostii upotrebom liste za svaku pregradu i objediavaem d lista na krajusvake etape u jednu globalnu listu od svih elemenata (sortiranih prema inajniih cifara). Algoritam je prikazan na slici 6.

Sloenost. Potrebno je n koraka za kopirae elemenata u globalnu lis-tu GL, i d koraka za inicijalizaciju lista Q[i]. U glavnoj peti algoritma,koja se izvrxava k puta, svaki elemenat se vadi iz globalne i stava u nekuod lista Q[i]. Na kraju se sve liste Q[i] ponovo objediavaju u GL. Ukupnavremenska sloenost algoritma je O(nk).

88 5. ALGORITMI ZA RAD SA NIZOVIMA I SKUPOVIMA

Algoritam DVR sort(X, n, k);

Ulaz: X (niz od n celih nenegativnih brojeva sa po k cifara).Izlaz: X (sortirani niz).begin

Pretpostavamo da su na poqetku svi elementi u globalnoj listi GL

GL se koristi zbog jednostavnosti; lista se moe realizovati u Xfor i := 0 to d− 1 do

d je broj moguih cifara; d = 10 u dekadnom sluqajuinicijalizovati listu Q[i] kao praznu listu;

for i := k downto 1 do

while GL nije prazna do razvrstavae po i-toj cifriskini x iz GL; x je prvi elemenat sa listec := ita cifra x; gledano sleva udesnoubaci x u Q[c];

for t := 0 to d− 1 do objediavae lokalnih listaukuqi Q[t] u GL; dodavae na kraj liste

for i := 1 to n do prepisivae elemenata iz GL u niz xskini X[i] iz GL

end

Ris. 6. Sortirae direktnim vixestrukim razvrstavaem.

U nastavku emo razmatrati tehnike sortiraa koje koriste uporeivaeelemenata, ne uzimajui u obzir ihovu strukturu. Radi se dakle o opxtijimalgoritmima, koji za elemente pretpostavaju samo da se mogu uporeivati.

5.3.2. Sortirae umetaem i sortirae izborom. Koristiemo di-rektnu indukciju. Pretpostavimo da umemo da sortiramo n − 1 elemenata ida je dato n elemenata. Posle sortiraa prvih n−1 elemenata, n-ti elemenatse umee na mesto koje mu pripada, tako xto se pregleda n − 1 sortiranihbrojeva, do pronalaea pravog mesta za umetae. Ovakav postupak zove sesortirae umetaem. On je jednostavan i efikasan samo za male vrednostin. U najgorem sluqaju n-ti broj uporeuje se sa svih prethodnih n − 1 broje-va. Ukupan broj uporeivaa pri sortirau n elemenata moe da bude dakle1 + 2 + · · ·+ n = n(n− 1)/2 = O(n2). Pored toga, umetae n-tog broja ukuqujepomerae ostalih brojeva. U najgorem sluqaju u n-tom koraku premexta se n−1brojeva, pa je i broj premextaa (kopiraa) O(n2). Sortirae umetaem moese poboxati smextaem elemenata u vektor i korixeem binarne pretragen − 1 sortiranih brojeva da bi se pronaxlo mesto za umetae. Pretraga sesastoji od O(log n) uporeivaa po umetau, pa je ukupan broj uporeivaatada O(n log n). Meutim, broj premextaa podataka ostaje nepromeen, pa jesloenost algoritma i dae kvadratna.

5.3. SORTIRAE 89

Induktivni pristup moe se poboxati izborom posebnog n-tog broja.Najvei broj je dobar izbor, jer se zna gde mu je mesto | na kraju niza. Algori-tam se sastoji od izbora najveeg broja i egovog postavaa na pravo mestozamenom sa brojem koji je trenutno na tom mestu; posle toga se rekurzivnosortira ostatak brojeva. Ovaj algoritam zove se sortirae izborom. egovaprednost nad sortiraem umetaem je u tome xto koristi samo n − 1 zame-na brojeva, u odnosu na O(n2) kopiraa u najgorem sluqaju kod sortiraaumetaem. S druge strane, poxto je potrebno n− 1 uporeivae da se pronaenajvei elemenat (nalaee najveeg broja razmatra se u odeku 5.4.1), ukupanbroj uporeivaa je uvek O(n2), dok je kod sortiraa umetaem sa binarnompretragom potrebno samo O(n log n) uporeivaa.

Za efikasno umetae i izbor mogu se koristiti uravnoteena stabla(videti poglave 3). Ako se, na primer, iskoriste AVL stabla, svako umetaezahteva O(log n) koraka. Iwitavae svih brojeva iz AVL stabla u sortira-nom redosledu moe se izvesti u O(n) koraka rekurzivnom procedurom kojaiwitava sve elemente levog podstabla, pa koren, pa sve elemente desnog pod-stabla. Ako umemo da formiramo AVL stablo za n−1 brojeva, onda je potrebnosamo umetnuti n-ti broj, odnosno O(log n) koraka. Ukupno je dakle potrebnoO(n log n) koraka za umetae n brojeva u prazno AVL stablo i O(n) koraka zaihovo iwitavae u sortiranom redosledu. Za velike n ovo je mnogo efikas-nije i od sortiraa umetaem i od sortiraa izborom, ali zahteva vixeprostora za smextae pokazivaqa. Ovaj algoritam sortiraa nije u mestu,komplikovan je, i nije tako dobar kao algoritmi koji emo razmotriti.

5.3.3. Sortirae objediavaem. Efikasnost sortiraa umetaemmoe se poboxati na sledei naqin. Za vreme potrebno za pregledae vesortiranih brojeva i pronalaee mesta za umetae jednog broja, mogu se naimesta za vixe brojeva. Ova ideja je ve korixena u odeku 4.6. Dva sortirananiza mogu se objediniti u sortirani niz jednim prolazom. Objediavae sevrxi tako xto se brojevi iz drugog niza razmatraju redom: trai se mesto uprvom nizu za najmai broj, pa za sledei itd. Preciznije, oznaqimo nizove saa1, a2, . . . , an, odnosno b1, b2, . . . , bm, i pretpostavimo da su oba niza sortiranau rastuem poretku. Elementi prvog niza se pregledaju dok se ne pronaemesto za b1, pa se umee b1. Zatim se nastava sa pregledaem od te pozicijedae, dok se ne pronae mesto za b2, itd. Poxto su brojevi u drugom nizusortirani, nema potrebe za vraaem u prvom nizu. Ukupan broj uporeivaau najgorem sluqaju jednak je zbiru duina dva niza. Problem su premextaa:neefikasno je premextati elemente pri svakom umetau, jer se tada elementimoraju premextati vixe puta. Umesto toga, poxto objediavae daje jedanpo jedan elemenat u sortiranom redosledu, elemente kopiramo u privremeniniz; svaki elemenat se kopira taqno jednom. Ukupno je za objediavae dvasortirana niza duina n i m potrebno O(n + m) uporeivaa i premextaapodataka. Pretpostava se da je raspoloiv memorijski prostor za pomoniniz.

90 5. ALGORITMI ZA RAD SA NIZOVIMA I SKUPOVIMA

Opisani postupak objediavaa moe se iskoristiti kao osnova za algo-ritam sortiraa zasnovan na dekompoziciji, poznat kao sortirae objedia-vaem. Algoritam radi na sledei naqin. Najpre se niz podeli na dva jednakaili priblino jednaka dela (ako mu je duina neparna). Zatim se oba delarekurzivno sortiraju. Na kraju se sortirani delovi objediavaju u jedan sor-tirani niz na prethodno opisani naqin. Detanije je algoritam prikazan naslici 7, a primer egovog izvrxavaa u tabeli 1 (kopiraa nisu prikazana).

Sloenost. Neka je T (n) broj uporeivaa potrebnih za sortirae ob-jediavaem u najgorem sluqaju. Pretpostavimo zbog jednostavnosti da je nstepen dvojke. Da bi se izraqunalo T (n), treba rexiti sledeu diferencnujednaqinu:

T (2n) = 2T (n) + cn, T (2) = 1.

eno rexee je T (n) = O(n log n) (videti poglave 2), xto je asimptotski bol-je od O(n2), vremenske sloenosti sortiraa umetaem i sortiraa izborom.Broj premextaa podataka je takoe O(n log n), xto je vixe nego kod sortiraaizborom.

Iako je sortirae objediavaem boe od sortiraa umetaem za veliken, ipak ima i neke ozbine nedostatke. Pored toga xto se ne realizuje lako,korak objediavaa zahteva dopunsku memoriju, tj. ovo nije sortirae u mes-tu. Kopirae se radi pri svakom objediavau maih skupova, xto qiniproceduru sporijom.

5.3.4. Sortirae razdvajaem. Sortirae objediavaem primer jeefikasnosti dekompozicije. Ako nam poe za rukom da podelimo problem na

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

2 6

5 8

2 5 6 8

9 10

1 12

1 9 10 12

1 2 5 6 8 9 10 12

7 15

3 13

3 7 13 15

4 11

14 16

4 11 14 16

3 4 7 11 13 14 15 16

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

Tablica 1. Primer sortiraa objediavaem. Prva vrsta jeulazni niz. U svakoj vrsti prikazani su samo brojevi sa kojimase trenutno radi.

5.3. SORTIRAE 91

Algoritam Sort Objed(X, n);

Ulaz: X (niz od n brojeva).Izlaz: X (sortirani niz).begin

M sort(1, n)

end

procedure M Sort(Levi, Desni);

begin

if Desni− Levi = 1 then

provera koja nije neophodna, ali qini program efikasnijimif X[Levi] > X[Desni] then zameni (X[Levi], X[Desni])

else if Levi 6= Desni then

Srednji := d(Levi + Desni)/2e;M Sort(Levi, Srednji− 1);

M Sort(Srednji, Desni);

sada se dva sortirana dela niza objediavajui := Levi; pokazivaq na levu polovinu nizaj := Srednji; pokazivaq na desnu polovinu nizak := 0; pokazivaq na pomoni vektor Pomwhile (i ≤ Srednji− 1) and (j ≤ Desni) do

k := k + 1;

if X[i] ≤ X[j] then

Pom[k] := X[i];

i := i + 1

else

Pom[k] := X[j];

j := j + 1

if j > Desni then

kopirae ostatka leve polovine na kraj vektora Pomako je i ≥ Srednji onda je desna strana ve na svom mestufor t := 0 to Srednji− 1− i do

X[Desni− t] := X[Srednji− 1− t];

kopirae pomonog vektora Pom nazad u Xfor t := 0 to k − 1 do

X[Levi + t] := Pom[t + 1]

end

Ris. 7. Sortirae objediavaem.

92 5. ALGORITMI ZA RAD SA NIZOVIMA I SKUPOVIMA

dva priblino jednaka potproblema, reximo svaki od ih nezavisno i ihovarexea kombinujemo za linearno vreme O(n), dobijamo algoritam sloenostiO(n log n). Nedostatak sortiraa objediavaem je potreba za dopunskom me-morijom, jer se prilikom objediavaa ne moe predvideti koji e elemenatgde zavrxiti. Moe li se dekompozicija primeniti na drugi naqin, tako dase poloaji elemenata mogu predvideti? Ideja sortiraa razdvajaem je dase glavnina vremena utroxi na fazu podele, a vrlo mali deo na objediavae.

Pretpostavimo da znamo broj x, takav da je pola elemenata niza mae ilijednako, a pola vee od x. Broj x moe se uporediti sa svim elementima niza(n − 1 uporeivae) i time ih podeliti u dve grupe, prema rezultatu upo-reivaa. Poxto dve grupe imaju isti broj elemenata, jedna od ih se moesmestiti u prvu, a druga u drugu polovinu niza. Kao xto emo odmah videti,ovo razdvajae moe se izvrxiti bez dopunskog memorijskog prostora; to jefaza podele. Zatim se oba podniza rekurzivno sortiraju. Faza objediavaaje trivijalna, jer oba dela zauzimaju svoja mesta u nizu. Prema tome, nijepotreban dopunski memorijski prostor.

Pri opisanoj konstrukciji pretpostaveno je da je vrednost x poznata,xto obiqno nije sluqaj. Lako se uvia da isti algoritam dobro radi bez obzi-ra na to koji se broj koristi za razdvajae. Broj x je tzv. pivot. Ci jerazdvojiti elemente niza na dva dela, jedan sa brojevima maim ili jednakim,a drugi sa brojevima veim od pivota. Razdvajae (particija) se moe se ost-variti pomou sledeeg algoritma. Koriste se dva pokazivaqa na niz, L i D.Na poqetku L pokazuje na levi, a D na desni kraj niza. Pokazivaqi se "pomera-ju" jedan prema drugom. Sledea induktivna hipoteza (tj. invarijanta pete)garantuje ispravnost razdvajaa.

Induktivna hipoteza. U koraku k algoritma vai pivot ≥ xi za sveindekse i < L i pivot < xj za sve indekse j > D.

Hipoteza je trivijalno ispuena na poqetku, jer ni jedno i, odnosno j, nezadovoavaju navedene uslove. Ci je u koraku k + 1 pomeriti L udesno, iliD ulevo, tako da hipoteza i dae bude taqna.

U trenutku kad se desi L = D, razdvajae je skoro zavrxeno, izuzev eventu-alno elementa xL, na xta emo se kasnije vratiti. Pretpostavimo da je L < D.Postoje dve mogunosti. Ako je bilo xL ≤ pivot bilo xD > pivot, odgovarajuipokazivaq moe se pomeriti, tako da hipoteza i dae bude zadovoena. U pro-tivnom je xL > pivot i xD ≤ pivot. Tada zameujemo xL sa xD i pomeramooba pokazivaqa dae prema unutra. U oba sluqaja imamo pomerae bar jednogpokazivaqa. Prema tome, pokazivaqi e se u jednom trenutku susresti, i cije postignut.

Ostaje problem izbora dobrog pivota i preciziraa posledeg korakaalgoritma kad se pokazivaqi sretnu. Algoritmi zasnovani na dekompozicijinajboe rade kad delovi imaju priblino iste veliqine, xto sugerixe daxto je pivot blii sredini, to e algoritam biti efikasniji. Mogue je naimedijanu niza (o tome e biti reqi u sledeem odeku), ali to nije vredno

5.3. SORTIRAE 93

truda. Kao xto emo videti iz analize algoritma, izbor sluqajnog elementaniza je dobro rexee. Ako je polazni niz dobro ispreturan, onda se za pivotmoe uzeti prvi elemenat niza. Zbog jednostavnosti je u algoritmu na slici 8upravo tako i uraeno.

function Razdvajanje(X, Levi, Desni);

Ulaz: X (niz), Levi (leva granica niza) i Desni (desna granica niza).Izlaz: X i S = Razdvajanje, takav indeks da je X[i] ≤ X[S] za sve i ≤ S iX[j] > X[S] za sve j > S.begin

pivot := X[Levi];

L := Levi; D := Desni;

while L < D do

while X[L] ≤ pivot and L ≤ Desni do L := L + 1;

while X[D] > pivot and D ≥ Levi do D := D − 1;

if L < D then

zameni X[L] i X[D];

Razdvajanje := D;

zameni X[Levi] sa X[S]

end

Ris. 8. Algoritam razdvajae.

Ako se prvi elemenat izabere za pivot, on se moe zameniti sa XL uposledem koraku razdvajaa, i tako postaviti na svoje mesto. Druge mogu-nosti bie razmotrene prilikom analize sloenosti. U svakom sluqaju, pivotkoji je izabran na neki drugi naqin, moe se najpre zameniti sa prvim ele-mentom niza, posle qega se moe primeniti opisani algoritam.

Primer rada algoritma Razdvajanje dat je u tabeli 2. Pivot je prvibroj (6). Brojevi koji upravo treba da budu zameeni su podebani Posle trizamene i pomeraa L pokazuje na X[7] = 1, a D na X[6] = 1 (pokazivaq Dpreskaqe L). Posleda je zamena sredeg broja (X[D] = 1) i pivota (6). Posleove zamene svi brojevi levo od pivota su mai ili jednaki od ega, a svibrojevi desno su vei od ega. Dva podniza (od 1 do 6 i od 7 do 16) mogu dase rekurzivno sortiraju. Sortirae razdvajaem je prema tome sortirae umestu. Algoritam je prikazan na slici 9, a primer egovog rada u tabeli 3.

Sloenost. Vreme izvrxea sortiraa razdvajaem zavisi od konkret-nog ulaza i izbora pivota. Ako pivot uvek razdvaja niz na dva jednaka dela,onda je diferencna jednaqina za sloenost T (n) = 2T (n/2) + cn, T (2) = 1,xto za posledicu ima T (n) = O(n log n). Uveriemo se kasnije da je vremenskasloenost ovog algoritma O(n log n) i pod mnogo slabijim pretpostavkama.Ako je pak pivot blizu nekom od krajeva niza, onda je broj koraka mnogo vei.

94 5. ALGORITMI ZA RAD SA NIZOVIMA I SKUPOVIMA

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

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

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

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

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

Tablica 2. Razdvajae niza oko pivota 6.

Algoritam Quicksort(X, n);

Ulaz: X (niz od n brojeva).Izlaz: X (sortirani niz).begin

Q sort(1, n)

end

procedure Q Sort(Levi, Desni);

begin

if Levi < Desni then

S = Razdvajanje(X, Levi, Desni); S je indeks pivota posle razdvajaaQ Sort(Levi, S − 1);

Q Sort(S + 1, Desni);

end

Ris. 9. Sortirae razdvajaem.

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

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

1 2 4 5 3

2 4 5 3

3 4 5

8 9 11 7 10 12 13 15 16 14

7 8 11 9 10

10 9 11

9 10

13 15 16 14

14 15 16

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

Tablica 3. Primer sortiraa razdvajaem. Pivoti su pode-bani. Elementi koji se u nekoj fazi ne meaju, nisuprikazani.

Na primer, ako je pivot najmai elemenat u nizu, onda prvo razdvajae za-hteva n − 1 uporeivaa i smexta samo pivot na pravo mesto. Ako je niz ve

5.3. SORTIRAE 95

ureen rastue i za pivot se uvek bira prvi elemenat, onda je broj koraka algo-ritma O(n2). Kvadratna sloenost u najgorem sluqaju za sortirane ili skorosortirane nizove moe se izbei uporeivaem prvog, posledeg i sredegelementa niza i izborom sredeg meu ima (drugog po veliqini) za pivot.Jox pouzdaniji metod je sluqajni izbor nekog elementa niza za pivot. Vremen-ska sloenost sortiraa e i tada u najgorem sluqaju biti O(n2), jer i daepostoji mogunost da pivot bude najmai elemenat niza. Ipak, verovatnoa dadoe do ovog najgoreg sluqaja je mala. Razmotriemo to sada malo preciznije.

Pretpostavimo da se svaki elemenat xi sa jednakom verovatnoom moeizabrati za pivot. Ako je pivot i-ti najmai elemenat, onda posle razdva-jaa treba rekurzivno sortirati dva dela niza duina redom i − 1, odnos-no n − i. Ako brojimo samo uporeivaa, sloenost razdvajaa je n − 1 (podpretpostavkom da se posle zamene X[L] sa X[D] u algoritmu Razdvajanje saslike 8 indeksi L i D najpre bez uporeivaa pomeraju za po jedno mesto).Prema tome, sloenost sortiraa razdvajaem zadovoava jednakost T (n) =n−1+T (i−1)+T (n− i). Ako pretpostavimo da pozicija pivota posle razdva-jaa moe biti svako i = 1, 2, . . . , n sa jednakom verovatnoom 1/n, proseqanbroj koraka je

T (n) = n− 1 +1n

n∑

i=1

(T (i− 1) + T (n− i)) =

= n− 1 +1n

n∑

i=1

T (i− 1) +1n

n∑

i=1

T (n− i) = n− 1 +2n

n−1∑

i=0

T (i).

Ovo je potpuna rekurzija, i to upravo ona koja je razmatrana u odeku 2.5.5.eno rexee je T (n) = O(n log n). Dakle, sortirae razdvajaem je zaistaefikasno u proseku.

U praksi je sortirae razdvajaem veoma brzo, pa zasluuje svoje drugoime (kviksort, tj. brzo sortirae). Osnovni razlog za egovu brzinu, osimelegantne primene dekompozicije, je u tome xto se mnogo elemenata uporeu-je sa jednim istim elementom, pivotom. Pivot se zbog toga moe smetiti uregistar, xto ubrzava uporeivaa.

Jedan od naqina da se sortirae razdvajaem ubrza je dobar izbor bazeindukcije. Ideja je da se sa indukcijom ne poqie uvek od jedinice. Sorti-rae razdvajaem, kao xto je reqeno, poziva se rekurzivno do baznog sluqaja,koji obuhvata nizove duine 1. Meutim, jednostavni algoritmi, kao xto susortirae umetaem ili sortirae izborom, rade sasvim dobro za kratke ni-zove. Prema tome, moe se izabrati da bazni sluqaj za sortirae razdvajaembudu nizovi duine vee od jedan (npr. izmeu 10 i 20, xto zavisi od konkretnerealizacije), a da se bazni sluqaj obrauje sortiraem umetaem. Drugimreqima, uslov "if Levi < Desni" zameuje se uslovom "if Levi < Desni−Prag"(gde Prag ima vrednost izmeu 10 i 20), i dodaje se deo "else ", koji izvrxa-va sortirae umetaem). Efekat ove promene je popravka brzine sortiraarazdvajaem za mali konstantni faktor.

96 5. ALGORITMI ZA RAD SA NIZOVIMA I SKUPOVIMA

5.3.5. Hipsort. Hipsort je jox jedan primer brzog algoritma za sorti-rae. U praksi on, za velike n, obiqno nije tako brz kao sortirae razdva-jaem, ali nije ni mnogo sporiji. S druge strane, za razliku od sortiraarazdvajaem, egova efikasnost je garantovana. Kao kod sortiraa objedi-avaem, sloenost hipsorta u najgorem sluqaju je O(n log n). Za razliku odsortiraa objediavaem, hipsort je algoritam sortiraa u mestu. U vezisa hipsortom obratiemo posebno pau na poqetni deo algoritma | formi-rae hipa. Algoritam za formirae hipa ilustruje naqin na koji treba kom-binovati konstrukciju i analizu algoritma.

Hip kao struktura podataka razmatran je u poglavu 3. Pretpostava seda se hip predstava implicitno; egovi elementi smexteni su u vektor Aduine n, koji stablu odgovara na sledei naqin: koren je smexten u A[1], asinovi qvora zapisanog u A[i] smexteni su u A[2i] i A[2i + 1]. Stablo zadovo-ava uslov hipa ako je vrednost svakog qvora vea ili jednaka od vrednostiegovih sinova.

Algoritam hipsort izvrxava se na isti naqin kao i sortirae izborom;razlika je u upotrebenoj strukturi podataka za smextae niza. Najpre seelementi niza preureuju tako da qine hip; formirae hipa razmotriemonexto kasnije. Ako je hip u vektoru A, onda je A[1] najvei elemenat hipa.Zamenom A[1] sa A[n] postie se da A[n] sadri najvei elemenat niza. Zatimse razmatra niz A[1], A[2], . . . , A[n − 1]; preureuje se, tako da i dae zadovo-ava uslov hipa (problem je jedino novi elemenat A[1]). Posle toga se sa timnizom rekurzivno ponava postupak primeen na niz A[1], A[2], . . . , A[n]. Sveu svemu, algoritam se sastoji od poqetnog formiraa hipa i n − 1 koraka,u kojima se vrxi po jedna zamena i preureivae hipa. Preureivae hipaje u osnovi isti postupak kao algoritam za uklaae najveeg elementa izhipa, odeak 3.3. Formirae hipa je samo po sebi interesantan problem, pae biti posebno razmatran. Vremenska sloenost algoritma je dakle O(n log n)(O(log n) po zameni) plus sloenost formiraa hipa. Jasno je da je hipsortsortirae u mestu; algoritam je prikazan na slici 10.

Algoritam Hipsort(X, n);

Ulaz: X (niz od n brojeva).Izlaz: X (sortirani niz).begin

Preurediti X tako da bude hip; videti nastavak tekstafor i := n downto 2 do

zameni (X[1], X[n]);

Preuredi Hip(i− 1)

procedura sliqna algoritmu Skini max sa hipa na slici 3.10 end

Ris. 10. Algoritam hipsort.

5.3. SORTIRAE 97

5.3.5.1. Formirae hipa. Sada emo se pozabaviti problemom formiraahipa od proizvonog niza.

Problem. Dat je niz A[1], A[2], . . . , A[n] proizvono ureenih brojeva.Preurediti egove elemente tako da zadovoavaju uslov hipa.

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

-

Ris. 11. Formirae hipa odozgo nadole i odozdo nagore.

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

Induktivna hipoteza (odozgo nadole). Niz A[1], A[2], . . . , A[i] predstav-a hip.

Bazni sluqaj je trivijalan, jer A[1] jeste hip. Osnovni deo algoritma jeugrada elementa A[i+1] u hip A[1], A[2], . . . , A[i] (videti poglave 3). Eleme-nat A[i + 1] uporeuje se sa svojim ocem, i zameuje se sa im ako je vei odega; novi elemenat se premexta navixe, sve dok ne postane mai ili jednakod oca, ili dok ne dospe u koren hipa. Broj uporeivaa je u najgorem sluqajublog2(i + 1)c.

Razmotrimo sada prolazak niza zdesna ulevo, xto odgovara prolasku hipaodozdo nagore. Voleli bismo da kaemo da je niz A[i+1], A[i+2], . . . , A[n] hip, ukoji treba ubaciti elemenat A[i]. Ali niz A[i+1], A[i+2], . . . , A[n] ne odgovarajednom, nego kolekciji hipova (niz A[i + 1], A[i + 2], . . . , A[n] posmatramo kaodeo stabla predstavenog nizom A[1], A[2], . . . , A[n]). Zbog toga je induktivnahipoteza nexto komplikovanija.

Induktivna hipoteza (odozdo nagore). Sva stabla predstavena nizomA[i + 1], A[i + 2], . . . , A[n] zadovoavaju uslov hipa.

98 5. ALGORITMI ZA RAD SA NIZOVIMA I SKUPOVIMA

Indukcija je po i, ali obrnutim redosledom, i = n, n − 1, . . . , 1. ElemenatA[n] oqigledno predstava hip, xto predstava bazu indukcije. Moe se za-kuqiti i nexto vixe. Elementi vektora A sa indeksima od bn/2c + 1 do nsu listovi stabla. Zbog toga se stabla koja odgovaraju tom nizu sastoje samood korena, pa trivijalno zadovoavaju uslov hipa. Dovono je dakle da saindukcijom krenemo od i = bn/2c. To ve ukazuje da bi pristup odozdo nagoremogao biti efikasniji: polovina posla je trivijalna; ovo je jox jedan primervanosti paivog izbora baze indukcije.

Razmotrimo sada elemenat A[i]. On ima najvixe dva sina A[2i + 1] i A[2i],koji su, prema induktivnoj hipotezi, koreni ispravnih hipova. Zbog toga jejasan naqin ukuqivaa A[i] u hip: A[i] se uporeuje sa veim od sinova, izameuje se sa im ako je potrebno. Ovo je sliqno brisau iz hipa, videtipoglave 3. Sa zamenama se nastava nanie niz stablo, dok prethodna vred-nost elementa A[i] ne doe do mesta na kome je vea od oba sina. Konstrukcijahipa odozdo nagore ilustrovana je primerom u tabeli 4.

Sloenost (odozgo nadole). Korak sa rednim brojem i zahteva najvixeblog2 ic ≤ blog2 nc uporeivaa, pa je vremenska sloenost O(n log n). Ocenasloenosti O(n log n) nije gruba, jer je

n∑

i=1

blog2 ic ≥n∑

i=n/2

blog2 ic ≥ (n/2)blog2(n/2)c = Ω(n log n).

Sloenost (odozdo nagore). Broj uporeivaa u svakom koraku maije ili jednak od dvostruke visine razmatranog qvora (poxto se qvor morauporediti sa veim od sinova, eventualno zameniti, i tako dae niz stablodo lista). Prema tome, sloenost je maa ili jednaka od dvostruke sume visi-na svih qvorova u stablu. Izraqunajmo dakle sumu visina svih qvorova, alinajpre samo za kompletna stabla. Neka je H(i) suma visina svih qvorova kom-pletnog binarnog stabla visine i. Niz H(i) zadovoava diferencnu jednaq-inu H(i) = 2H(i − 1) + i, jer se kompletno binarno stablo visine i sastoji

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

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

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

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

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

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

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

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

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

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

Tablica 4. Primer formiraa hipa odozdo nagore. Brojeviu prvoj vrsti su indeksi. Brojevi koji su upravo uqestvovaliu zameni, podebani su.

5.3. SORTIRAE 99

od dva kompletna binarna podstabla visine i − 1 i korena, qija je visinai. Pored toga, H(0) = 0. Qlan i iz diferencne jednaqine moe se uklonitienim prepisivaem u obliku H(i) + i = 2(H(i − 1) + (i − 1)) + 2, odnosnoG(i) = 2G(i − 1) + 2, gde je uvedena oznaka G(i) = H(i) + i; G(0) = H(0) = 0.Da bi se uklonio preostali konstantni qlan 2, obema stranama treba dodatiodgovarajuu konstantu, tako da bude korisna smena F (i) = G(i) + a; odatle sedobija a = 2: G(i)+2 = 2(G(i−1)+2), tj. F (i) = 2F (i−1) i F (0) = G(0)+2 = 2.Rexee poslede diferencne jednaqine je F (i) = 2i+1, pa konaqno dobijamoH(i) = 2i+1− (i + 2). Poxto je ukupan broj qvorova kompletnog binarnog stab-la visine i jednak 2i+1 − 1, zakuqujemo da je za hipove sa n = 2i − 1 qvorovavremenska sloenost formiraa hipa odozdo nagore O(n). Sloenost za hipsa n qvorova, pri qemu je 2i ≤ n ≤ 2i+1 − 1 maa je ili jednaka od sloenostiza hip se 2i+1 − 1 qvorova, koja je i dae O(n). Osnovni razlog zbog koga jepristup odozdo nagore efikasniji je u tome da je veliki deo qvorova stablana egovom dnu, a vrlo mali deo pri vrhu, u blizini korena. Zato je boeminimizirati obradu qvorova na dnu.

Ovo je jox jedan primer koji pokazuje da se dobrim izborom redosledaindukcije moe konstruisati efikasan algoritam. Metod formiraa hipaodozgo nadole je direktniji i oqigledniji, ali se ispostava da je pristupodozdo nagore boi.

5.3.6. Doa granica za sortirae. Polazei od algoritama za sorti-rae sloenosti O(n2), usavrxavaem smo doxli do algoritma sloenostiO(n log n). Da li je mogue dae poboxae, odnosno da li je sloenost svakogalgoritma za sortirae Ω(n log n)?

Funkcija f(n) je doa granica sloenosti nekog problema ako za slo-enost T (n) proizvonog algoritma koji rexava taj problem vai T (n) =Ω(f(n)) (ili: ne postoji algoritam sloenosti mae od O(f(n)), koji rexavaproblem). Dokazati da je neka funkcija doa granica sloenosti razmatra-nog problema nije lako, jer se dokaz odnosi na sve mogue algoritme, a nesamo na jedan konkretan pristup. Neophodno je najpre specificirati mod-el koji odgovara proizvonom algoritmu, a zatim dokazati da je vremenskasloenost proizvonog algoritma obuhvaenog tim modelom vea ili jedna-ka od doe granice. U ovom odeku razmotriemo jedan takav model koji sezove stablo odluqivaa. Stablo odluqivaa modelira izraqunavaa koja sesastoje najveim delom od uporeivaa. Stablo odluqivaa nije opxti modelizraqunavaa kao xto je npr. Tjuringova maxina, pa su doe granice nextoslabije; ali s druge strane, stabla odluqivaa su jednostavnija i sa ima selakxe operixe.

Stablo odluqivaa definixe se kao binarno stablo sa dve vrste qvorova,unutraxim qvorovima i listovima. Svaki unutraxi qvor odgovara pitan-ju sa dva mogua odgovora, koji su pak pridrueni dvema granama koje izlazeiz qvora. Svakom listu pridruen je jedan od moguih izlaza. Ako se radi o

100 5. ALGORITMI ZA RAD SA NIZOVIMA I SKUPOVIMA

problemu sortiraa, pretpostavamo da je ulazni niz x1, x2, . . . , xn. Izraqu-navae poqie od korena stabla. U svakom qvoru postava se jedno pitae uvezi sa ulazom, i u zavisnosti od dobijenog odgovora, nastava se levom ilidesnom izlaznom granom. Kad se dostigne list, izlaz pridruen listu je izlazizraqunavaa. Na slici 12 prikazano je sortirae pomou stabla odluqivaaza n = 3. Vremenska sloenost (u najgorem sluqaju) algoritma definisanogstablom T jednaka je visini T , odnosno najveem moguem broju pitaa kojatreba postaviti za neki ulaz. Stablo odluqivaa prema tome odgovara algo-ritmu. Iako stablo odluqivaa ne moe da modelira svaki algoritam (npr.ne moe se izraqunati kvadratni koren iz nekog broja korixeem stabla od-luqivaa), ono je prihvativ model za algoritme zasnovane na uporeivau.Doa granica dobijena za model stabla odluqivaa odnosi se naravno sanona algoritme tog oblika. Sada emo iskoristiti stabla odluqivaa da bismoodredili dou granicu za sortirae.

x1 < x2?

x1 < x3? x2 < x3?

x1 < x3? x3 < x2 < x1

x2 < x1 < x3 x2 < x3 < x1

x3 < x1 < x2x2 < x3?

x1 < x3 < x2

da ne

da ne da ne

ne da ne

x1 < x2 < x3

da

t

t

t t

t

Ris. 12. Sortirae tri elementa pomou stabla odluqivaa.

Teorema 5.1. Proizvono stablo odluqivaa za sortirae n elemenataima visinu Ω(n log n).

Dokazatel~stvo. Ulaz u algoritam za sortirae je niz x1, x2, . . . , xn.Izlaz je isti niz u sortiranom redosledu. Drugim reqima, izlaz je permutaci-ja ulaza: izlaz ustvari pokazuje kako treba ispremextati elemente tako daoni postanu sortirani. Na izlazu se moe pojaviti svaka permutacija, jerulaz moe biti zadat u proizvonom redosledu. Algoritam za sortirae jekorektan ako moe da obradi sve mogue ulaze. Prema tome, svaka permutaci-ja skupa 1, 2, . . . , n treba da se pojavi kao mogui izlaz stabla odluqivaaza sortirae. Izlazi stabla odluqivaa pridrueni su egovim listovima.Poxto dve razliqite permutacije odgovaraju razliqitim izlazima, moraju imbiti pridrueni razliqiti listovi. Prema tome, za svaku permutaciju mo-ra da postoji bar jedan list. Permutacija ima n!, pa poxto pretpostavamoda je stablo binarno, egova visina je najmae log2(n!). Prema Stirlingovoj

5.3. SORTIRAE 101

formuli je

n! =√

2πn(n

e

)n(

1 + O

(1n

)),

odnosno log2(n!) = Ω(n log n), qime je dokaz zavrxen. ¤

Ovakva vrsta doe granice zove se teorijskoinformaciona doa gra-nica, jer ona ne zavisi od samog izraqunavaa (mi, na primer, nismo de-finisali kakva pitaa su dozvoena), nego samo od koliqine informacijasadrane u izlazu. Znaqaj doe granice je u tome da proizvoan algoritamsortiraa zahteva Ω(n log n) uporeivaa u najgorem sluqaju, jer on mora darazlikuje n! razliqitih izlaza, a u jednom koraku moe da izabere samo jednuod dve mogunosti. Mogli smo da definixemo stablo odluqivaa kao stablo ukome svaki qvor ima tri sina (koji, na primer, odgovaraju ishodima "<", "="i ">"). U tom sluqaju bi visina bila najmae log3 n!, xto je i dae Ω(n log n).Drugim reqima, doa granica Ω(n log n) odnosi se na sva stabla odluqivaasa konstantnim brojem grana po qvoru.

Ovaj dokaz doe granice pokazuje da svaki algoritam za sortirae zas-novan na uporeivaima ima sloenost Ω(n log n). Sortirae je ipak mogueizvrxavati bre korixeem specijalnih osobina brojeva, ili izvodei al-gebarske manipulacije sa ima. Na primer, ako imamo n prirodnih brojevaiz opsega od 1 do 4n, sortirae razvrstavaem e ih urediti za vreme O(n).Ovo ne protivreqi dokazanoj dooj granici, jer sortirae razvrstavaem nekoristi uporeivaa. Koristi se qienica da vrednosti brojeva mogu da seefikasno koriste kao adrese.

Kad razmatramo stabla odluqivaa, obiqno ignorixemo ihovu veliq-inu, a zanima nas samo visina. Zbog toga qak i jednostavni algoritmi linearnevremenske sloenosti mogu da odgovaraju stablima odluqivaa sa eksponenci-jalnim brojem qvorova. Veliqina nije bitna, jer se stablo ustvari ne formiraeksplicitno. Stablo se koristi kao sredstvo za dokazivae doih granica.Ignorisae veliqine qini dokaz jaqim, jer se moe primeniti na programeeksponencijalne duine. S druge strane, tehnika moe da bude previxe mona,qinei je beskorisnom za izvoee doih granica za probleme koji se ne mogurexiti programima razumne veliqine, ali se mogu rexiti programima ek-sponencijalne duine (na primer, programom sa tablicom koja sadri svamogua rexea). Stabla odluqivaa su neuniformni modeli izraqunavan-ja. Stablo zavisi od n, veliqine ulaza. Ispostava se da se mogu formiratistabla odluqivaa polinomijalne visine | ali eksponencijalne veliqine |za probleme koji verovatno zahtevaju eksponencijalno vreme izvrxavaa, pasu stabla odluqivaa ponekad previxe optimistiqka. Drugim reqima, don-ja granica po modelu stabla odluqivaa moe da bude daleko ispod stvarnesloenosti problema. S druge strane, ako je doa granica jednaka gorojgranici za neki konkretan algoritam, kao xto je sluqaj sa sortiraem, ondadoa granica pokazuje da se algoritam ne moe ubrzati ni upotrebom mnogoveeg prostora.

102 5. ALGORITMI ZA RAD SA NIZOVIMA I SKUPOVIMA

5.4. Rangovske statistikeZa elemeat xi zadatog niza elemenata S = x1, x2, . . . , xn kaemo da ima

rang k u S ako je xi k-ti najmai elemenat u S. Rangovi elemenata u nizumogu se lako odrediti sortiraem. Ipak, postoji dosta problema u vezi sarangovima koji se mogu rexiti i bez sortiraa. U ovom odeku razmotriemonajpre problem istovremenog nalaea najmaeg i najveeg elementa, a zatimopxti problem nalaea k-tog najmaeg elementa.

5.4.1. Najvei i najmai elemenat. Nalaee najveeg ili najmaegelementa u nizu je jednostavno. Ako znamo najvei elemenat u nizu duinen− 1, onda treba da ga jox uporedimo sa n-tim elementom da bismo pronaxlinajvei elemenat niza duine n. Nalaee najveeg elementa niza duine1 je trivijalno. Proces zahteva jedno uporeivae po elementu, poqevxi oddrugog elementa. Ukupan broj uporeivaa je dakle n− 1.

Pretpostavimo sada da je ci pronai istovremeno najmai i najveielemenat niza.

Problem. Pronai najvei i najmai elemenat datog niza.

Najjednostavnije je rexiti ova dva problema nezavisno. Ukupan broj upo-reivaa je 2n − 3: n − 1 da se pronae najvei, a zatim n − 2 da se pronaenajmai elemenat (jer se najvei pri tome ne mora razmatrati). Moe li se ovopoboxati? Razmotrimo jox jednom induktivni pristup. Pretpostavimo daumemo da reximo problem za datih n− 1 elemenata, i da je potrebno rexitiproblem za n elemenata (bazni sluqaj je trivijalan). Treba uporediti novielemenat sa najveim i najmaim do tada. To su dva uporeivaa, xto znaqida e broj uporeivaa ponovo biti 2n−3, jer za prvi elemenat nije potrebnoni jedno uporeivae.

Sledei pokuxaj mogao bi da bude da se rexee proxiri za vixe od jednogelementa. Pokuxajmo da odjednom dodajemo po dva elementa: pretpostavimo daumemo da reximo problem za n − 2 elementa, i pokuxajmo da ga reximo za nelemenata. Da bi konstrukcija bila kompletna, moraju se rexiti dva baznasluqaja, n = 1 i n = 2. Neka su max i min najvei i najmai elementi meuprvih n−2 elemenata (poznati na osnovu induktivne hipoteze) i neka su xn−1

i xn novododati elementi. Lako je videti da su za nalaee novog maksimumai minimuma dovona tri uporeivaa: najpre xn−1 sa xn, a zatim vei odih sa max, a mai sa min. Ukupno algoritam zahteva oko 3n/2 umesto 2nuporeivaa! Moe li se algoritam dae poboxati ako se odjednom doda potri (ili qetiri) elementa? Koristei isti pristup, dolazi se do istog brojauporeivaa. Ispostava se da se broj uporeivaa ne moe smaiti bilokojim metodom. Zanimivo je da i pristup zasnovan na dekompoziciji takoedovodi do algoritma sa oko 3n/2 uporeivaa.

5.4.2. Nalaee k-tog najmaeg elementa. Posmatrajmo sada opxtiproblem.

5.4. RANGOVSKE STATISTIKE 103

Problem. Za zadati niz elemenata S = x1, x2, . . . , xn i prirodni broj k,1 ≤ k ≤ n, odrediti k-ti najmai elemenat u S.

Ovo je problem odreivaa rangovskih statistika, odnosno selekcije.Ako je k vrlo blizu 1 ili n, onda se k-ti najmai elemenat moe odreditiizvrxavaem algoritma za nalaee minimuma (maksimuma) k puta. Ovajpristup zahteva oko kn uporeivaa. Sortirae je boe od ovog jednostavnogalgoritma, sem ako je k reda veliqine log n. Meutim, postoji drugi algoritamkoji efikasno pronalazi k-ti najmai elemenat za proizvono k.

Ideja je primeniti dekompoziciju na isti naqin kao i kod algoritma sor-tirae razdvajaem, sem xto je ovog puta dovono rexiti samo jedan od dvapotproblema. Kod sortiraa razdvajaem niz se razdvaja pomou pivota nadva podniza. Dva podniza se zatim sortiraju rekurzivno. Ovde je dovonoodrediti koji od podnizova sadri k-ti najmai elemenat, a onda algori-tam primeniti rekurzivno samo na taj podniz. Ostali elementi mogu se ig-norisati. Algoritam je prikazan na slici 13.

Algoritam Selekcija(X, n, k);

Ulaz: X (niz od n brojeva) i k (prirodni broj).Izlaz: S (k-ti najmai elemenat; niz X je promeen).begin

if (k < 1) or (k > n) then print "grexka"else

S := Sel(1, n, k)

end

function Sel(Levi, Desni, k);

begin

if Levi = Desni then

Sel := Levi

else

S = Razdvajanje(X, Levi, Desni); videti sliku 8if S − Levi + 1 ≥ k then

Sel := Sel(Levi, S, k)

else

Sel := Sel(S + 1, Desni, k − (S − Levi + 1))

end

Ris. 13. Algoritam za odreivae k-tog najmaeg elementa.

Sloenost. Kao i kod sortiraa razdvajaem, lox izbor pivota vodikvadratnom algoritmu. Sreda sloenost ovog algoritma moe se oceniti na

104 5. ALGORITMI ZA RAD SA NIZOVIMA I SKUPOVIMA

sliqan naqin kao kod sortiraa razdvajaem. Neka je sa T (n, k) oznaqen prose-qan broj uporeivaa u algoritmu na ulazima duine n kad se trai k-ti na-jmai elemenat. Pretpostavimo da posle razdvajaa (n− 1 uporeivae) piv-ot sa jednakom verovatnoom 1/n moe doi na svaku poziciju i = 1, 2, . . . , n.Razmatraemo malo izmeenu varijantu algoritma, u kojoj se dae izvrxa-vae odmah prekida ako je pozicija pivota k (i sliqno u daim rekurzivnimpozivima), jer je tada pronaen k-ti najmai elemenat. Za i < k (odnosnoi > k) dolazi se do rekurzivnog poziva algoritma sloenosti T (n − i, k − i)(odnosno T (i, k)) jer preostaje pronalaee (k − i)-tog najmaeg elementa odih n−i (odnosno k-tog najmaeg elementa od ih i). Prema tome, diferencnajednaqina za T (n, k) je

T (n, k) =1n

n−1∑

i=k

T (i, k) +1n

n−1∑

i=n−k+1

T (i, n− k + 1) + n− 1.

Indukcijom se moe dokazati da je T (n, k) ≤ 4n za svako k = 1, 2, . . . , n. Zan = 2 ovo se neposredno proverava, a iz induktivne hipoteze da za i < n iproizvono m, 1 ≤ m ≤ i, vai T (i,m) ≤ 4i sledi

T (n, k) ≤ n− 1 +1n

n−1∑

i=k

4i +1n

n−1∑

i=n−k+1

4i

= n− 1 +4n

(n− 1 + k

2(n− k) +

2n− k

2(k − 1)

)

= n− 1 +2n

(n2 + 2nk − 2k2 − 3n + 2k

)

= 4n− 1n

((n− 2k)2 + 3(n− k) + 4n

)< 4n.

Prema tome, za proizvono k je proseqna sloenost ovog algoritma O(n).

Komentar. Veina primena rangovskih statistika zahteva odreivaemedijane, odnosno n/2-tog najmaeg elementa. Algoritam Selekcija je odliqanalgoritam za tu svrhu. Ne postoji jednostavniji algoritam za nalaee samomedijane. Drugim reqima, uopxtee problema nalaea medijane na nalaen-je k-tog najmaeg elementa qini algoritam jednostavnijim. Ovo je takoe primerpojaqavaa induktivne hipoteze, jer rekurzija zahteva proizvone vrednostiza k.

5.5. Kompresija podatakaKompresija podataka je postupak smaea prostora koji zauzimaju podaci.

Kompresija podataka je takoe vana prilikom ihovog prenosa, kad je cenaobrade podataka maa od cene ihovog prenosa. Kompresija podataka xirokose primeuje i predstava oblast koja se brzo razvija. U ovom odeku raz-motriemo samo jedan algoritam pogodan za kompresiju.

5.5. KOMPRESIJA PODATAKA 105

Zbog jednostavnosti pretpostavimo da su podaci koje treba komprimovatitekst smexten u fajl. Svaki znak teksta predstaven je jedinstvenim nizombita | kodom tog znaka. Ako su duine kodova svih znakova jednake (xtoje upravo sluqaj sa standardnim kodovima, kao xto je ASCII ), brojbita koji predstavaju fajl zavisi samo od broja znakova u emu. Da bi sepostigla uxteda, moraju se neki znaci kodirati maim, a neki veim bro-jem bita. Neka se u fajlu pojavuje n razliqitih znakova, i neka se znak si

pojavuje fi puta, 1 ≤ i ≤ n. Ako sa li oznaqimo broj bita u kodu znaka si,u kodu oznaqenom sa E, onda je ukupan broj bita upotrebenih za predstavl-jae kodiranog fajla L(E, F ) =

∑ni=1 lifi, gde je sa F = f1, f2, . . . , fn oznaqen

niz uqestanosti (frekvencija) znakova u fajlu. Kodirae fajla je postupakegove transformacije, zamenom znakova odgovarajuim kodovima iz E. In-verzna transformacija koja kodove zameuje znacima je dekodirae.

Osnovni uslov koji kod E mora da zadovoi je da omoguuje jednoznaqnodekodirae, odnosno rekonstrukciju polaznog fajla na osnovu egove kodi-rane verzije. Pre nego xto preemo na traee optimalnog koda, razmotrimouslove koje ko d treba da zadovoi da bi bilo mogue jednoznaq-no dekodirae. Jedan od naqina da se jednonaqnost obezbedi, je da se kodunametne uslov da ni jedna kodna req nije prefiks nekoj drugoj. Kodovi kojizadovoavaju ovaj uslov zovu se prefiksni kodovi. Svaki binarni prefiksni(onaj koji znake kodira nizovima bita) ko d moe se predstaviti bi-narnim stablom, videti primer na slici 14. Polazei od binarnog stabla ukome su grane ka levim, odnosno desnim sinovima oznaqene sa 0, odnosno 1, naprirodan naqin se svakoj kodnoj reqi jednoznaqno pridruuje qvor. Polazi seod korena, a kretae se kontrolixe kodnom reqi: ako je naredni bit 0, prelazise u levog, a ako je 1, u desnog sina. Kod prefiksnih kodova kodnim reqimaoqigledno odgovaraju listovi kodnog stabla. Vai i obrnuto, ko dzadat kodnim stablom, u kome su kodne reqi listovi, prefiksni je ko d.Dekodirae prefiksnog koda je jednostavno: iz niza bita koji predstavajukodirani fajl redom se izdvaja jedna po jedna kodna req. Proces je jednoznaq-no odreen upravo zato xto je ko d prefiksni. Na primer, niz bita011100010001, moe se u kodu predstavenim stablom na slici 14 dekodiratisamo na jedan naqin: 011− 1− 00− 010− 00− 1. Problem efikasnog kodiraamoe se sada formulisati na sledei naqin.

Problem. Zadat je tekst sa n razliqitih znakova, tako da su uqestanostiznakova zadate nizom F = f1, f2, . . . , fn. Odrediti prefiksni ko d Ekoji minimizira broj bita L(E, F ) upotrebenih za kodirae.

Za prefiksni ko d koji minimizira vrednost L(E,F ) kae se da jeoptimalni ko d; on oqigledno zavisi od niza uqestanosti znakova F . Cije za dati niz F odrediti optimalni prefiksni ko d (bilo koji; u opxtemsluqaju postoji vixe razliqitih optimalnih kodova). Razmotrimo zbog togamalo detanije osobine optimalnih kodova. Jasno je najpre da u optimalnomkodu qexi znaci moraju biti kodirani maim brojem bita, odnosno, ako je

106 5. ALGORITMI ZA RAD SA NIZOVIMA I SKUPOVIMA

t

t t

t t

t t

0

00

010 011

101

Ris. 14. Predstavae prefiksnog koda stablom.

za proizvona dva znaka ci, cj , znak ci qexi od znaka cj (tj. fi > fj), ondaza odgovarajue duine kodnih reqi li, lj mora da vai li ≤ lj . Zaista, pret-postavimo suprotno, da je fi > fj i li > lj . Tada je (fi − fj)(li − lj) > 0, ilifili + fj lj > fj li + filj . Ova nejednakost suprotna je pretpostavci da se radi ooptimalnom kodu: zamenom kodnih reqi za znakove ci i cj dobija se ko dsa maom vrednoxu L(E,F ) od polazne:

f1l1 + f2l2 + · · ·+ fj li + · · ·+ filj + · · ·+ fnln <

< f1l1 + f2l2 + · · ·+ fili + · · ·+ fj lj + · · ·+ fnln.

U kodnom stablu optimalnog prefiksnog koda svaki unutraxi qvor mo-ra da ima oba sina: u protivnom bi se ko d mogao pojednostavitiskraivaem kodnih reqi u listovima podstabla ispod qvora sa samo jednimsinom, videti primer na slici 15. Odatle sledi druga karakteristika opti-malnih prefiksnih kodova: postoji optimalni prefiksni ko d u komesu kodne reqi za dva znaka sa najmaim frekvencijama | listovi sa istimocem, na najveem moguem rastojau od korena (drugim reqima, te kodne reqise razlikuju samo po posledem bitu). Zaista, dva znaka ci, cj sa najmaimuqestanostima moraju biti kodirana sa najvixe bita, odnosno moraju bitipredstaveni listovima u najdaem sloju (na najveem rastojau od korena).Znaci ci, cj moraju biti u istom sloju; ako ti znaci nisu sinovi istog oca,onda se mogu izvrxiti zamene kodova znakova u posledem sloju (ta zamenane mea broj upotrebenih bita L(E, F )), tako da u novom optimalnom koduznaci ci, cj budu sinovi istog oca (videti primer na slici 16).

Algoritam kodiraa (nalaea optimalnog koda) zasniva se na svoeuproblema sa n znakova na problem sa n− 1 znakom; bazni sluqaj je trivijalan.Kao i obiqno, problem je kako definisati induktivnu hipotezu i kojim re-dosledom eliminisati znakove. Svoee je u ovom sluqaju nexto drukqije oddosad vienih. Umesto da prosto eliminixemo jedan znak, mi uvodimo jedannovi znak umesto dva postojea. Ova tehnika je malo komplikovanija, ali vodiciu: veliqina ulaza se smauje. Neka su ci i cj dva proizvona znaka sa naj-maim uqestanostima. Prema gore dokazanom tvreu, postoji optimalni kod u kome znacima ci i cj odgovaraju listovi na maksimalnom rastojau od ko-rena. Dva znaka ci i cj zameujemo novim znakom koji moemo da oznaqimo sa

5.5. KOMPRESIJA PODATAKA 107

d d

d

d d d

d d

d d

d

d

d d

d d d

d d

d

A B C D E

0 1

000 001 100 101 111

A B

C D

00 01

100 101

E11

0 1

-

Ris. 15. Kodno stablo u kome neki qvor ima samo jednog sinanije kodno stablo optimalnog koda.

b bb

b bb

b

fi fr fs fj

b bb

b bb

b

fi fj fs fr

-

Ris. 16. Transformacija kodnog stabla, posle koje dva znakasa najmaim frekvencijama fi i fj postaju sinovi istog oca.

cicj i qija je frekvencija fi + fj . Alfabet sada ima n− 1 znak, pri qemu zbiruqestanosti znakova nije promeen, pa se za ega prema induktivnoj hipotezimoe odrediti optimalni ko d. Optimalni ko d za polaznialfabet dobija se tako xto se listu cicj u kodu za n− 1 znak dodaju dva sina,lista koji odgovaraju znacima ci i cj . Optimalni ko d dobijen opisanomkonstrukcijom zove se Hofmanov ko d (prema imenu autora algoritma,D. Huffman ).

Realizacija. Operacije koje se izvrxavaju prilikom formiraa Hof-manovog koda su

• umetae u strukturu podataka,• brisae dva znaka sa najmaim frekvencijama iz strukture, i• konstrukcija kodnog stabla.

Hip je pogodna struktura podataka za prve dve operacije, jer se tada te opera-cije u najgorem sluqaju izvrxavaju za O(log n) koraka. Algoritam za formi-rae Hofmanovog koda prikazan je na slici 17.

Primer 5.1. Neka je dat fajl u kome se pojavuju znaci A, B, C, D, E i Fsa frekvencijama redom 5, 2, 3, 4, 10 i 1. Dva znaka sa najmaim frekvencijamasu F i B; oni se zameuju novim znakom BF sa frekvencijom 1 + 2 = 3. Daa

108 5. ALGORITMI ZA RAD SA NIZOVIMA I SKUPOVIMA

Algoritam Hofman(S, F );

Ulaz: S (string znakova koji se pojavuju u tekstu) i F (frekvencije).Izlaz: T (kodno stablo Hofmanovog koda za S).begin

ubaciti sve znake u hip H prema ihovim frekvencijama;while H neprazan do

if H sadri samo jedan znak X then

formiraj stablo T koje ima samo koren, qvor X

else

skini sa hipa H znakove X, Y sa najmaim frekvencijama fX , fY ;

zameni X i Y novim znakom Z sa frekvencijom fZ = fX + fY ;

ubaci Z u hip H;

povei X i Y tako da budu sinovi Z u T ; Z jox nema ocaend

Ris. 17. Algoritam za formirae Hofmanovog koda.

zameivaa prikazana su u sledeoj tabeli.

1 2 3 4 5 6 novi znakA B C D E F BF5 2 3 4 10 1 3A C D E BF CBF5 3 4 10 3 6A D E CBF AD5 4 10 6 9E CBF AD CBFAD10 6 9 15E CBFAD ECBFAD10 15 25

Na slici 18 prikazano je dobijeno kodno stablo.

Sloenost. Sloenost dodavaa novog qvora stablu ograniqena je kon-stantom. Umetaa i brisaa iz hipa izvrxavaju se u O(log n) koraka. Sloe-nost algoritma je dakle O(n log n).

5.6. Traee uzorka u tekstuNeka su S = s1s2 . . . sn i P = p1p2 . . . pm dva stringa (niza znakova iz

konaqnog alfabeta). Za prvi od ih rei emo da je tekst, a za drugi da jeuzorak. Podstring stringa S je string sisi+1 . . . sj od uzastopnih znakova S.

5.6. TRAEE UZORKA U TEKSTU 109

t

tt

t

t t

t

tt

t t

ECBFAD

CBFAD E

CBF

FB

F B

C A D

AD

0 1

1

1 10 1

10

0

0000 0001

001 010 011

1

Ris. 18. Stablo Hofmanovog koda iz primera 5.1.

Problem. Za dati tekst S = s1s2 . . . sn i uzorak P = p1p2 . . . pm ustanovi-ti da li postoji podstring S jednak P , a ako postoji, pronai prvu pojavu uzor-ka u tekstu, odnosno najmai indeks k takav da je sk+i−1 = pi za i = 1, 2, . . . , m.

Tipiqna situacija u kojoj se nailazi na ovaj problem je kad se traineka req u tekstualnom fajlu. Problem ima primenu i u drugim oblastima,na primer u molekularnoj biologiji, gde je korisno pronai neke uzorke uokviru velikih molekula rnk ili dnk.

Na prvi pogled problem izgleda jednostavno. Dovono je uporediti uzorakP sa svim moguim podstringovima S oblika sksk+1 . . . sk+m−1 duine m, priqemu k uzima vrednosti redom 1, 2, . . . , n − m + 1. Uporeivae uzorka sapodstringom vrxi se znak po znak sleva udesno, sve dok se ne ustanovi da susvi znaci uzorka jednaki odgovarajuim znacima podstringa (u tom trenutkuprekida se dae pregledae podstringova), ili dok se ne naie na neslagaepi 6= sk+i−1 za neko i, 1 ≤ i ≤ m:

j = k + i− 1↓

s1 . . . sk . . . sj . . . sk+m−1 . . . sn

p1 . . . pi . . . pm

↑i

U drugom sluqaju uzorak se "pomera" za jedan znak udesno, odnosno nastavase sa proverom jednakosti p1 sa sk+1. Ovaj jednostavan algoritam za traeeuzorka u stringu prikazan je na slici 19. Broj uporeivaa znakova mai jeod mn, pa je sloenost ovog algoritma O(mn) u najgorem sluqaju.

Neracionalnost ovog algoritma ogleda se u vraau unazad pokazivaqana tekst posle nailaska na neslagae. Pretpostavimo da je do neslagaadoxlo na poziciji i u uzorku, tj. za neki indeks j u tekstu je pi 6= sj ip1p2 . . . pi−1 = sj−i+1sj−i+2 . . . sj−1 (videti sliku 20). Postava se pitae: ko-liko uzorak najmae treba pomeriti udesno, odnosno koji znak pl uzorka trebapostaviti ispod znaka sj teksta, tako da se (mai) deo uzorka p1p2 . . . pl−1,

110 5. ALGORITMI ZA RAD SA NIZOVIMA I SKUPOVIMA

Algoritam Nadji uzorak(S, n, P, m);

Ulaz: S (string duine n) i P (uzorak duine m).Izlaz: Start (indeks poqetka prvog podstringa S jednakog P , ako takav postoji,

odnosno 0 u protivnom).begin

Start := 0;

i := 1; pokazivaq na uzorakj := 1; pokazivaq na stringwhile i ≤ m and j ≤ n do dok ima nade da se nae podstring jednak uzorku

if P [i] = S[j] then

i := i + 1; j := j + 1 poklapae: napredovae i u stringu i u uzorkuelse

j := j − i + 2; i := 1 neslagae: uzorak klizi za jedno mesto udesnoif i > m then

Start := j − i + 1 pronaen je podstring jednak uzorkuend

Ris. 19. Najjednostavniji algoritam za traee uzorka u tekstu.

l < i, i dae slae sa delom teksta sj−l+1sj−l+2 . . . sj−1, i da pri tome budepl 6= pi? Poxto je l < i, bie pi−l+1pi−l+2 . . . pi−1 = sj−l+1sj−l+2 . . . sj−1. Zbogtoga je jednakost p1p2 . . . pl−1 = sj−l+1sj−l+2 . . . sj−1 ekvivalentna sa slagaemp1p2 . . . pl−1 = pi−l+1pi−l+2 . . . pi−1 prefiksa uzorka duine l−1 sa delom uzor-ka koji se zavrxava sa pi−1 | xto je uslov koji ne zavisi od teksta, nego samood uzorka! Poxto i uslov pl 6= pi zavisi samo od uzorka, jasno je da indeks lzavisi samo od indeksa i i znakova uzorka p1, p2,. . . , pi. Mogue je dakle na-jpre obraditi uzorak, tako da se u poseban vektor h na poziciju h[i] smestiizraqunati indeks l, i = 1, 2, . . . ,m. Ako ni za jedno l < i nije istovremenop1p2 . . . pl−1 = pi−l+1pi−l+2 . . . pi−1 i pl 6= pi, onda se stava h[i] = 0: p1 sepostava ispod sj+1.

Vratimo se na traee uzorka u tekstu, i to na situaciju na slici 20, kadje prvo neslagae pi 6= sj . Tada se oqitava vrednost l = h[i] i uzorak pomeraudesno za i − h[i], pa se (ako je l > 0) proverava da li je pl = sj . Ako jeste,onda se uporeuju pl+1 i sj+1, a ako nije, onda se postupa na ve poznat naqin:oqitava vrednost h[l] a uzorak se pomera dae udesno za l − h[l], itd. Ukolikoje pak l = 0, onda se napreduje u tekstu, tj. p1 se postava ispod sj+1.

Opisani algoritam, koji je dobio ime KMP po svojim autorima Knutu,Morisu i Pratu (Knuth, Moris, Pratt ), prikazan je na slici 21.Algoritam najpre uqitava uzorak i formira tabelu h, koja odreuje kolikoznakova treba pomeriti uzorak udesno u sluqaju neslagaa. Zatim se prelazina traee uzorka u tekstu. Poxto nema vraaa, ulaz se moe uqitavatiznak po znak. Operator cand u unutraxoj peti je "uslovna konjunkcija"

5.6. TRAEE UZORKA U TEKSTU 111

(skraenica od conditional and ), a egov efekat je da se pi i sj uporeujusamo ako je i > 0. U unutraxoj while-peti se, posle otkrivaa neslagaapi 6= sj , uzorak pomera udesno za i−h[i] pozicija, tj. pokazivaq na uzorak umestoi dobija novu vrednost h[i]; pri tome se pretpostava da su elementi vektorave izraqunati. Ovaj korak se ponava sve dok ne bude i = 0 (xto znaqi dani jedan poqetak uzorka ne moe biti jednak prefiksu ulaznog teksta koji sezavrxava sa sj) ili pi = sj (xto znaqi da je p1 . . . pi−1pi = sj−i+1 . . . sj−1sj zanovu vrednost i). Spoaxa while-peta pomera za po jedno mesto pokazivaqena uzorak i tekst.

6l = h[i]

P

P

S?j

6i

?k

61

Ris. 20. Ilustracija ideje na kojoj se zasniva algoritam KMP.

Algoritam KMP(S, n, P, m);

Ulaz: S (tekst | string duine n) i P (uzorak duine m).Pretpostava se da je niz h izraqunat

Izlaz: Start (indeks poqetka prvog podstringa S jednakog P , ako takav postoji,odnosno 0 u protivnom).

begin

Start := 0;

i := 1; pokazivaq na uzorakj := 1; pokazivaq na tekstwhile i ≤ m and j ≤ n do dok ima nade da se nae podstring jednak uzorku

while i > 0 cand P [i] 6= S[j] do

i := h[i]; pomerae uzorka udesno za i− h[i]i := i + 1; j := j + 1; napredovae u tekstu i u uzorku

if i > m then

Start := j − i + 1 pronaen je podstring jednak uzorkuend

Ris. 21. Algoritam KMP za nalaee uzorka u tekstu.

Razmotrimo sada kako se efektivno mogu izraqunati elementi vektora h.Kao xto je reqeno, ako je pi 6= sj , onda je l = h[i] indeks znaka uzorka koga

112 5. ALGORITMI ZA RAD SA NIZOVIMA I SKUPOVIMA

sledeeg treba uporediti sa znakom teksta sj . Drugim reqima, l je najvei in-deks za koji je p1p2 . . . pl−1 = pi−l+1pi−l+2 . . . pi−1 i pl 6= pi. Uz uslov h[1] = 0ovim su odreeni svi qlanovi vektora h. Da bismo pojednostavili problem,uvedimo vektor g iste duine, tako da bude g[1] = 0, a za i > 1 je g[i] najveiindeks l, takav da je p1p2 . . . pl−1 = pi−l+1pi−l+2 . . . pi−1. Koji su sledei in-deksi l2 > l3 > · · · , takvi da se plr moe postaviti naspram pi, odnosno takvida je p1p2 . . . plr−1 = pi−lr+1pi−lr+2 . . . pi−1 (tj. sufiks duine lr − 1 stringap1p2 . . . pi−1 jednak je prefiksu tog stringa iste duine), r = 2, 3, . . .? Jasno jeda su to indeksi l2 = g[g[l]] = g2[l], l3 = g3[l], . . . koji qine opadajui, pa daklekonaqan niz prirodnih brojeva. Koristei ovu qienicu, lako je izraqunatielemente vektora h kad se zna g. Neka je g[i] = l; tada je

h[i] =

l, ako pi 6= pl

h[l], ako pi = pl,

tj. h[i] je jednako g[i], ili se izraava preko ve izraqunatog elementa h[l],l < i.

Elementi vektora g se takoe mogu izraqunavati rekurzivno, polazei odjednakosti g[1] = 0. Neka su ve izraqunati g[1], g[2],. . . , g[i]. Tada je g[i + 1]najvei indeks l + 1, takav da je p1p2 . . . pl = pi−l+1pi−l+2 . . . pi. Ova jednakostza posledicu ima p1p2 . . . pl−1 = pi−l+1pi−l+2 . . . pi−1, pa je l ∈ h[i], h2[i], . . .;podrazumeva se da ovaj skup ne obuhvata nulu. Prema tome, za vrednosti l izovog skupa redom se proverava da li je pl = pi, pa se za g[i + 1] uzima se prvo lza koje je pl = pi. Ako ni za jedno l iz skupa nije pl = pi, onda je g[i + 1] = 1.

Algoritam Pomaci za izraqunavae vektora h (i usput vektora g), kojije praktiqno identiqan sa algoritmom za traee uzorka u tekstu, prikazanje na slici 22. Pri tome se pokazivaq j zameuje sa h[j] umesto sa g[j], xtopredstava poboxae, jer se smauje broj iteracija. Time se postie "au-tonomija" izraqunavaa h, tj. naredbe u kojima se pojavuje vektor g postajunepotrebne. Na slici 23 je xematski prikazana unutraxa peta algoritma.

Sloenost. Broj izvrxavaa naredbe j := h[j] u unutraxoj peti (dru-ga naredba while na slici 22) koja smauje j, mai je ili jednak od brojaizvrxavaa naredbe j := j + 1 u spoaxoj peti, koja za po jedan poveavaj: j je uvek pozitivno. Meutim, broj inkrementiraa j jednak je broju inkre-mentiraa i, pa je dakle mai od m. Prema tome, izraqunavae h obava se zavreme O(m). Na sliqan naqin naredba i := h[i] u unutraxoj peti na slici 21(koja smauje i bar za 1) ne moe se izvrxiti vixe puta od naredbe j := j + 1(a time i naredbe i := i + 1 koja poveava i za 1) u spoaxoj peti. Prematome, u unutraxoj peti se uzorak pomera udesno najvixe n puta, pa je vre-menska sloenost ovog algoritma O(n). Primetimo da vremenska sloenostalgoritma KMP ne zavisi od veliqine alfabeta.

5.6. TRAEE UZORKA U TEKSTU 113

Algoritam Pomaci(P, m);

Ulaz: P (uzorak, string duine m).Izlaz: h (niz duine m).begin

i := 1; indeks elementa h koji se izraqunavaj := 0; pokazivaq na smaknuti uzorak; uskakae u petuh[1] := 0; g[1] := 0; neslagae na prvom znaku u KMP: pomerae udesnowhile i < m do

na ovom mestu je P [i− j + k] = P [k] za k = 12, . . . j − 1] | invarijanta petewhile j > 0 cand P [i] 6= P [j] do

j := h[j]; smaivae indeksa j; moe i j := g[j];, ali je ovako boe!i := i + 1; j := j + 1; paralelno napredovae pokazivaqag[i] := j;

neka je s simbol u tekstu, sa kojim se P [i] uporeuje u algoritmu KMPif P [i] = P [j] then

h[i] := h[j] ako P [i] 6= s, onda je i P [j] 6= s; udesno na h[j]else

h[i] := j ako P [i] 6= s, onda proveriti da li je P [j] 6= s; udesno na jend

Ris. 22. Algoritam za izraqunavae tabele h.

?

6j

iP

P

?

6j + 1

i + 1 ?

6h[j]

i

pi = pj pi 6= pj

-

?

h[i + 1] =

h[j + 1], pi+1 = pj+1

j + 1, pi+1 6= pj+1

S?l

Ris. 23. Unutraxa peta i izraqunavae jednog elementatabele h u algoritmu Pomaci.

114 5. ALGORITMI ZA RAD SA NIZOVIMA I SKUPOVIMA

Primer 5.2. Neka je uzorak P = abaababaabaab. Algoritam sa slike 22daje sledee vektore h i g:

i 1 2 3 4 5 6 7 8 9 10 11 12 13pi b a a b a b a a b a a bj 0 1 0 1 2 1 2 3 4 2 3 4 5 6 7 4 5pj a a b a b a a b a a b a b a b

pi = pj? 6= = 6= = = = 6= = = = = = 6= = =h[i] 0 1 0 2 1 0 4 0 2 1 0 7 1g[i] 0 1 1 2 2 3 4 3 4 5 6 7 5

Primenimo algoritam KMP da bismo pronaxli ovaj uzorak u tekstuS = abaababaabacabaababaabaab.

Posle slagaa prvih 11 znakova, dolazi se do neslagaa na znaku c u S. U tomtrenutku je i = j = 12:

j = 12↓

a b a a b a b a a b a c a b a a b a b a . . .a b a a b a b a a b a a b

↑i = 12

Prva iteracija u unutraxoj peti na slici 21 postava i = h12 = 7,xto odgovara pomerau uzorka pet znakova udesno; time se sedmi znak uzorkapostava ispod 12-tog znaka teksta:

j = 12↓

a b a a b a b a a b a c a b a a b a b a . . .a b a a b a b a a b a a b

↑i = 7

Sada je i dae pi 6= sj , pa se i postava na novu vrednost h7 = 4. Neslagaase na ovoj poziciji nastavaju i za i = 4, 2, 1, 0. Unutraxa peta zavrxenaje bez nalaea uzorka u tekstu, pa se u spoaxoj peti postava i = 1,j = 13:

j = 13↓

. . . a b a a b a c a b a a b a b a a b a a ba b a a b a b a a b a a b↑

i = 1

Na ovom mestu algoritam pronalazi uzorak u tekstu.Drugi efikasan algoritam za nalaee uzorka u stringu razvili su Bojer

i Mur 1977. (Boyer, Moore ). Prikazaemo ga ukratko. Razlika izmeuovog i algoritma KMP je u tome xto se uzorak i tekst prolaze u razliqitimsmerovima. Najpre se uporeuje pm sa sm. Ako su ta dva znaka jednaka, nastavl-ja se sa uporeivaem pm−1 sa sm−1, itd. U sluqaju neslagaa, prikupeneinformacije se koriste kao i u algoritmu KMP da se uzorak pomeri udesno.

5.7. UPOREIVAE NIZOVA 115

Ako je, na primer, sm ="Z", a znak "Z" se ne pojavuje u uzorku, onda se uzo-rak pomera udesno za m pozicija i sledee uporeivae je s2m sa pm. Ako se"Z" pojavuje u P kao npr. pi, unda se uzorak pomera m − i pozicija udesno.Odluka o tome koliko uzorak treba pomeriti udesno postaje komplikovanijaako je prethodno doxlo do nekoliko slagaa znakova uzorka sa odgovarajuimznacima teksta; pri tome se uzima u obzir i eventualni sufiks pronaenogdela uzorka jednak prefiksu uzorka, kao kod algoritma KMP. Na ovom mestuneemo se upuxtati u detae algoritma. Zanimivo je da u tekstu sa velikimalfabetom ovaj algoritam najqexe izvrxava mnogo mae od n uporeivaaznakova, u proseku qak n/m uporeivaa, xto znaqi da su qesta pomeraauzorka za m pozicija udesno.

5.7. Uporeivae nizovaProblemu uporeivaa nizova tek se od nedavno posveuje vea paa.

Osnovni razlog su primene u molekularnoj biologiji. Ovde emo se bavitisamo jednim problemom | nalaeem minimalnog broja edit operacija kojeprevode jedan string u drugi. Osnovna tehnika koja se u vezi sa tim koristije dinamiqko programirae (videti odeak 4.10).

Neka su A = a1a2 . . . an i B = b1b2 . . . bm dva stringa, niza qiji su elementiznakovi iz konaqnog alfabeta. Ci je transformisati A u B, znak po znak.Dozvoene su tri vrste elementarnih transformacija (ili edit operacija),koje imaju cenu 1:

• umetae | umetae znaka;• brisae | brisae znaka, i• zamena | zamena jednog znaka drugim znakom.

Problem. Za zadate stringove A = a1a2 . . . an i B = b1b2 . . . bm pronainiz edit operacija najmae cene koji A transformixe u B.

Na primer, da se string abbc transformixe u string babb, moe se prvoobrisati a (dobija se bbc), umetnuti a izmeu dva b (dobija se babc), i na kra-ju zameniti c sa b | ukupno tri promene. Isti rezultat moe se postii sasamo dve promene: umetaem novog b na poqetku (dobija se babbc) i brisaemposledeg c. Ci je pronai transformaciju koja se sastoji od minimalnogbroja edit operacija (takva transformacija u opxtem sluqaju nije jedinstve-na).

Najmai broj edit operacija koji transformixe string A u string Bzvaemo edit rastojaem d(A,B) stringova A i B. Funkcija d(A, B) je metri-ka: oqigledno je d(A, A) = 0 i d(A,B) = d(B, A), za proizvone stringove A iB (ako postoji niz edit operacija duine k koji transformixe A u B, ondainverznih k operacija, primeenih obrnutim redosledom, transformixu Bu A). Ako su A, B i C proizvoni stringovi, tada vai nejednakost trougla:d(A, B) + d(B,C) ≥ d(A,C). Zaista, postoji niz od d(A, B) edit operacija ko-je prevode A u B, i postoji niz od d(B,C) edit operacija koje prevode B uC. Posmatrane zajedno, ovih d(A,B) + d(B, C) edit operacija prevode A u C;

116 5. ALGORITMI ZA RAD SA NIZOVIMA I SKUPOVIMA

iz qienice da je d(A,C) najmai broj edit operacija koje A prevode u Csledi traena nejednakost. Rastojae d(A,B) poznato je kao Levenxtajnovorastojae (Levenstein ).

Razmotrimo kako moe da izgleda minimalni niz edit operacija koji Atransformixe u B. Na neke znakove ai1 , ai2 ,. . . , aik

iz A primeuje se operacijazamene znacima bj1 , bj2 ,. . . , bjk

iz B. Iskuqivaem ovih znakova, stringoviA i B su podeeni na k + 1 (eventualno praznih) grupa znakova, tako da sei-ta (prazna) grupa u B dobija brisaem znakova iz i-te grupe u A, ili se odi-te (prazne) grupe u A umetaem dobija i-ta grupa u B, i = 1, 2, . . . , k +1. Zbogminimalnosti su sve edit operacije u okviru jedne grupe istog tipa | ilibrisae ili umetae, jer se brisae jednog znaka, pa umetae drugog znakana isto mesto (dve edit operacije sa ukopnom cenom 2), moe zameniti samojednom zamenom, cene 1.

Uzimajui u obzir ove qienice, niz edit operacija koji je kandidat zaoptimalni, moe se predstaviti na sledei pregledan naqin. Uvedimo noviznak φ. Naspram obrisanih znakova iz A u B se umee znak φ, a naspram znakovau B, dobijenih umetaem, u A se umee znak φ. Time su A, B produeni donizova A, B jednake duine, a sve edit operacije svedene su na zamenu: brisauznaka a iz A odgovara zamena a iz A sa φ u B, a umetau znaka b u B odgovarazamena φ u A znakom b u B. Znak φ smatra se razliqitim od svih ostalihznakova, pa je cena zamene istim, odnosno razliqitim znakom i dae 0, odnosno1.

Dva gore navedena primera nizova edit operacija mogu se dakle predstavi-ti sa

a b φ b cφ b a b b

1+ 0+ 1+ 0+ 1 = 3,

odnosnoφ a b b cb a b b φ

1+ 0+ 0+ 0+ 1 = 2.

Problem transformisaa stringova ima takoe primenu u vezi sa upo-reivaem fajlova i quvaem razliqitih verzija fajla. Pretpostavimo daimamo tekstualni fajl (npr. program) i drugi fajl koji je modifikacija pr-vog. Zgodno je izdvojiti razlike dva fajla. To mogu biti razliqite verzijeistog programa, pa ako su verzije sliqne i treba da budu arhivirane, efikas-nije je quvati samo jednu verziju i razlike umesto obe verzije programa. Utakvim sluqajevima (ovde znacima stringa odgovaraju linije u fajlu) dozvo-ene operacije su samo umetaa i brisaa. U drugim situacijama mogu serazliqitim edit operacijama dodeliti razliqite cene.

Moguih nizova edit operacija koje A prevode u B, ima mnogo, pa je naprvi pogled texko meu ima nai najboi. Za poqetak, ograniqiemo se nanalaee edit rastojaa d(A,B), odnosno najmaeg broja edit operacija kojeprevode A u B (a ne i samog niza edit operacija). Kao i obiqno, pokuxaemo

5.7. UPOREIVAE NIZOVA 117

da problem reximo indukcijom. Za zadati string A oznaqimo sa A(i) egovprefiks duine i. Problem je odrediti rastojae d(A(n), B(m)). Za n = 0potrebno je prazan prefiks A(0) transformisati u string B(m) duine m.Oqigledno je za to potrebno najmae m operacija umetaa znakova; prematome, d(A(0), B(m)) = m za m ≥ 0. Sliqno, d(A(n), B(0)) = n za n ≥ 0, jer se na-jkrai niz edit operacija koje string A(n) duine n prevodi u prazan stringB(0) sastoji od n brisaa. Da bismo problem rexili indukcijom, potrebnoje da izraqunavae rastojaa d(A(i), B(j)) izmeu nekih prefiksa svedemo naizraqunavae rastojaa izmeu nekih "kraih" prefiksa. Ovaj ci moe sepostii ako razmotrimo koja edit operacija moe biti posleda u nizu editoperacija koje prevode A(i) u B(j). Postoje tri mogunosti:

(a) zamena znaka ai (istim ili razliqitim) znakom bj , poxto je prethod-no prefiks A(i− 1) transformisan u B(j − 1),

(b) umetae znaka bj poxto je prethodno prefiks A(i) transformisanu B(j − 1);

(c) brisae znaka ai, poxto je prethodno prefiks A(i−1) transformisanu B(j),

xto je ilustrovano na slici 24. Neka je

c(i, j) =

0, za ai = bj

1, za ai 6= bj.

Najmai broj edit operacija koje A(i) prevode u B(j) jednak najmaem od triizraza d(A(i− 1), B(j − 1)) + c(i, j), d(A(i), B(j − 1)) + 1 i d(A(i− 1), B(j)) + 1.Neka je C matrica qiji su elementi rastojaa svih podstringova A od svihpodstringova B, tj. C[i, j] = d(A(i), B(j)), 0 ≤ i ≤ n, 0 ≤ j ≤ m. Elementi ovematrice zadovoavaju diferencnu jednaqinu

C[i, j] = minC[i− 1, j − 1] + c(i, j), C[i, j − 1] + 1, C[i− 1, j] + 1,koja en proizvoan elemenat izraava preko tri druga: iznad, levo i gorelevo:

j↓...

· · · C[i− 1, j − 1] C[i− 1, j] . . .i→ · · · C[i, j − 1] C[i, j] . . .

Ova jednakost omoguuje izraqunavae svih elemenata matrice C, poxto seznaju ena 0-ta kolona i 0-ta vrsta. Time je rexen problem izraqunavaaedit rastojaa stringova A i B: d(A, B) = C[n, m]. Opisani algoritam jeprimer dinamiqkog programiraa.

Realizacija. Za izraqunavaa se koristi matrica C dimenzije (n+1)×(m + 1), pri qemu prvi, odnosno drugi indeks uzimaju vrednosti iz opsega[0, n], odnosno [0, m]. Neka M [i, j] oznaqava posledu edit operaciju koja dovo-di do minimalne vrednosti C[i, j]. Dovono je zapamtiti samo tu posledu

118 5. ALGORITMI ZA RAD SA NIZOVIMA I SKUPOVIMA

B(j − 1)

A(i− 1) ai

bj

(a) zamena

? ?

B(j − 1) B(j)

A(i) A(i− 1)φ ai

bj φ

(b) umetae (b) brisae

? ?? ?

Ris. 24. Nizovi edit operacija koje transformixu A u Brazvrstani prema posledoj operaciji.

edit operaciju (brisae A[i], umetae B[j] ili zamena A[i] sa B[j]), jer sedo kompletnog niza edit operacija dolazi prolazei elemente matrice "un-azad", polazei od M [n, m]. Za izraqunavae C[i, j], potrebno je znati C[i−1, j],C[i, j−1] i C[i−1, j−1]. Posleda promena M [i, j] odreena je time koja od trimogunosti daje minimalnu vrednost za C[i, j]; izbor nije uvek jednoznaqan!Algoritam je prikazan na slici 25.

Algoritam Edit rastojanje(A, n, B, m);

Ulaz: A (string duine n), i B (string duine m).Izlaz: C (matrica rastojaa podstringova A i B).begin

for i := 0 to n do C[i, 0] := i;

for j := 0 to m do C[0, j] := j;

for i := 1 to n do

for j := 1 to m do

x := C[i− 1, j] + 1;

y := C[i, j − 1] + 1;

if ai = bj then

z := C[i− 1, j − 1]

else

z := C[i− 1, j − 1] + 1;

C[i, j] := min(x, y, z)

izabrana edit operacija pamti se u M [i, j]end

Ris. 25. Algoritam za nalaee edit rastojaa dva niza.

Primer 5.3. Razmotrimo rad algoritma na gore navedenom primeru strin-gova A = abbc i B = babb. Matrica rastojaa podstringova A i B, zajedno sastrelicama koje prikazuju mogue puteve dobijaa C[i, j] (: zamena A[i] sa

5.8. PROBABILISTIQKI ALGORITMI 119

B[j], →: umetae B[j] ili ↓: brisae A[i]), data je sledeom tabelom:B 0 1 2 3 4

A b a b b

0 0 → 1 → 2 → 3 → 4

↓ 1 a 1 1 1 → 2 → 3

↓ ↓ 2 b 2 1 → 2 1 → 2

↓ ↓ ↓ 3 b 3 2 2 2 1

↓ ↓ ↓ ↓4 c 4 3 3 3 2

U doem desnom uglu tabele pronalazimo d(A,B) = 2. Do doeg desnog ugladolazi se samo samo iz poa iznad ega operacijom ↓. Na sliqan naqin iduiunazad, vidimo da se do goreg levog ugla tabele unazad moe doi samo najedan naqin, nizom operacija (unazad) ↓→. Prema tome, u ovom primerupostoji samo jedan niz od dve edit transformacije koji prevodi A = abbc uB = babb.

Sloenost. Svaki elemenat matrice C izraqunava se za konstantno vre-me, pa je vremenska sloenost algoritma O(nm). Problem sa ovom verzijomalgoritma je u tome xto je i egova prostorna sloenost O(nm). Ako se ma-trica C popuava vrstu po vrstu, poxto vrsta zavisi samo od prethodne, ovajalgoritam moe se preraditi tako da mu prostorna sloenost bude O(m).

Primedba. Dinamiqko programirae je korisno u situaciji kad se re-xee problema izraava preko nekoliko rexea nexto maih problema.Korixee tabele za smextae prethodnih rezultata je uobiqajeno kod di-namiqkog programiraa. Tabela se obiqno prolazi nekim redosledom (obiq-no po vrstama), pa je sloenost algoritma najmae kvadratna. Zbog toga jepristup sa dinamiqkim programiraem obiqno mae efikasan od, na primer,pristupa zasnovanog na dekompoziciji.

5.8. Probabilistiqki algoritmiAlgoritmi koje smo do sada razmatrali bili su deterministiqki |

svaki naredni korak je unapred odreen. Kad se deterministiqki algoritamizvrxava dva puta sa istim ulazom, naqin izvrxavaa je oba puta isti, kaoi dobijeni izlazi. Probabilistiqki algoritmi su drugaqiji. Oni sadre ko-rake koji zavise ne samo od ulaza, nego i od nekih sluqajnih dogaaja. Pos-toji mnogo varijacija probabilistiqkih algoritama. Ovde emo razmotritidve od ih. Razmotriemo najpre jedan jednostavan primer.

Pretpostavimo da je dat skup brojeva x1, x2, . . . , xn i da meu ima trebaizabrati neki broj iz "gore polovine", odnosno broj koji je vei ili jednakod bar n/2 ostalih. Na primer, potrebno je izabrati "dobrog" studenta, pri

120 5. ALGORITMI ZA RAD SA NIZOVIMA I SKUPOVIMA

qemu je kriterijum proseqna ocena. Jedna mogunost je uzeti najvei broj (kojije uvek u goroj polovini). Ve smo videli da je za odreivae maksimumapotrebno n − 1 uporeivae. Druga mogunost je zapoqeti sa izvrxavaemalgoritma za nalaee maksimuma, i zaustaviti se kad se proe polovinabrojeva. Broj koji je vei ili jednak od jedne polovine brojeva je sigurno ugoroj polovini. Algoritam zahteva oko n/2 uporeivaa. Moe li se ovajposao obaviti efikasnije? Nije texko pokazati da je nemogue garantovatida broj pripada goroj polovini ako je izvrxeno mae od n/2 uporeivaa.Prema tome, opisani algoritam je optimalan.

Ovaj algoritam je, meutim, optimalan samo ako insistiramo na garanci-ji. U mnogo sluqajeva garancija nije neophodna, dovona je pristojna verovat-noa da je rexee dovono taqno. Na primer, kod hex tablica nije moguegarantovati da do kolizija nee doi, ali postoji naqin za rexavae prob-lema izazvanih pojavom kolizija (operacije sa hex tablicama se takoe mogusmatrati probabilistiqkim algoritmima). Ako odustanemo od garancije, ondapostoji boi algoritam za nalaee elementa iz gore polovine. Izaberimona sluqajan naqin dva broja xi i xj iz skupa, tako da je i 6= j. Pretpostavimoda je xi ≥ xj . Verovatnoa da sluqajno izabrani broj iz skupa pripada gorojpolovini je bar 1/2 (ona e biti vea od 1/2 ako je vixe brojeva jednako medi-jani). Verovatnoa da ni jedan od brojeva xi, xj ne pripada goroj polovinije najvixe 1/4. Zbog xi ≥ xj ova verovatnoa jednaka je verovatnoi da xi

ne pripada goroj polovini. Prema tome, verovatnoa da xi pripada gorojpolovini je bar 3/4.

Verovatnoa 3/4 da je dobijeni rezultat taqan obiqno nije dovona. Meu-tim, opisani pristup moe se uopxtiti. Na sluqajan naqin biramo k brojevaiz skupa i biramo najvei od ih. Na isti naqin kao u specijalnom sluqaju,zakuqujemo da najvei od k elemenata pripada goroj polovini sa verovat-noom najmae 1− 2−k (on ne pripada goroj polovini akko goroj polovinine pripada ni jedan od izabranih brojeva, odnosno sa verovatnoom najvixe2−k). Na primer, ako je k = 10, verovatnoa uspeha je priblino 0.999, a zak = 20 ta verovatnoa je oko 0.999999. Ako je pak k = 100, onda je verovatnoagrexke za sve praktiqne svrhe zanemariva. Verovatnoa grexke u programu,hardverske grexke, ili qak zemotresa za vreme izvrxavaa programa, veaje od 2−100 ' 10−30. Imamo dakle algoritam koji bira broj iz gore polovinesa proizvono velikom verovatnoom, a koji izvrxava najvixe 100 uporei-vaa nezavisno od veliqine ulaza. Pri tome se pretpostava da se sluqajniizbor jednog broja moe izvrxiti za konstantno vreme; generisae sluqajnihbrojeva bie razmotreno u odeku 5.8.1.

Za ovakav algoritam obiqno se kae da je Monte Karlo algoritam.Netaqan rezultat moe se dobiti sa jako malom verovatnoom, ali je vremeizvrxavaa ovog Monte Karlo algoritma boe nego za najboi determinis-tiqki algoritam. Drugi tip probabilistiqkog algoritma je onaj koji nikadne daje pogrexan rezultat, ali mu vreme izvrxavaa nije garantovano. Algo-ritam se moe izvrxiti brzo, ali se moe izvrxavati i proizvono dugo.

5.8. PROBABILISTIQKI ALGORITMI 121

Ovaj tip algoritma, koji sa obiqno zove Las Vegas, koristan je ako mu jeoqekivano vreme izvrxavaa malo. U odeku 5.8.2 bie razmotren Las Vegasalgoritam koji rexava jedan problem bojea elemenata skupa.

Ideja probabilistiqkih algoritama tesno je povezana sa izvoeem dokaza.Korixee verovatnoe za dokazivae kombinatornih tvrea je mona teh-nika. U osnovi, ako se dokae da neki objekat iz skupa objekata ima vero-vatnou veu od nule, onda je to indirektan dokaz da postoji objekat sa timosobinama. Ova ideja moe se iskoristiti za konstrukciju probabilistiqkogalgoritma. Pretpostavimo da traimo objekat sa nekim osobinama, a znamo daako generixemo sluqajni objekat, on e zadovoavati eeni uslov sa verovat-noom veom od nule (xto je probabilistiqki dokaz da traeni objekat posto-ji). Mi zatim pratimo probabilistiqki dokaz, generixui sluqajne dogaajekad je potrebno, i na kraju nalazimo eeni objekat se nekom pozitivnomverovatnoom. Ovaj postupak moe se ponavati vixe puta, sve do uspexnogpronalaea eenog objekta.

5.8.1. Sluqajni brojevi. Bitan elemenat probabilistiqkih algorita-ma je generisae sluqajnih brojeva. Potrebno je imati efikasne metode zarexavae ovog problema. Deterministiqka procedura generixe brojeve nafiksirani naqin, pa tako dobijeni brojevi ne mogu biti sluqajni u pravomsmislu te reqi. Ti brojevi su meusobno povezani na sasvim odreeni naqin.Na sreu, to u praksi nije veliki problem: dovono je koristiti tzv. pseu-dosluqajne brojeve. Ti brojevi generixu se deterministiqkom procedurom(pa dakle nisu pravi sluqajni brojevi), ali procedura generisaa je dovonosloena, da druge aplikacije ne "oseaju" meuzavisnosti izmeu tih brojeva.

Ovde neemo detanije razmatrati dobijae sluqajnih brojeva. Jedan odnaqina za dobijae pseudosluqajnih brojeva je linearni kongruentni metod.Prvi korak je izbor celog broja X0 kao prvog qlana niza, sluqajnog brojaizabranog na neki nezavisan naqin (na primer, tekue vreme u mikrosekun-dama). Ostali brojevi izraqunavaju se na osnovu diferencne jednaqine Xn =aXn−1 + b (mod m), gde su a, b i m konstante, koje se moraju oprezno izabrati.I pored paivog izbora, ovakvi nizovi nisu dovono kvalitetni ("sluqa-jni"). Alternativa su diferencne jednaqine vixeg stepena, odnosno vixegreda (sa zavisnoxu od vixe prethodnih qlanova). Dobija se niz brojeva izopsega od 0 do m − 1. Ako su potrebni sluqajni brojevi iz opsega od 0 do 1,onda se qlanovi ovog niza mogu podeliti sa m.

5.8.2. Jedan problem sa bojeem. Neka je S skup od n elemenata, ineka je S1, S2, . . . Sk kolekcija egovih razliqitih podskupova, od kojih svakisadri taqno r elemenata, pri qemu je k ≤ 2r−2.

Problem. Obojiti svaki elemenat skupa S jednom od dve boje, crvenomili plavom, tako da svaki podskup Si sadri bar jedan plavi i bar jedancrveni elemenat.

122 5. ALGORITMI ZA RAD SA NIZOVIMA I SKUPOVIMA

Bojee koje zadovoava taj uslov zvaemo ispravnim bojeem. Ispostavl-ja se da pod navedenim uslovima ispravno bojee uvek postoji. Jednostavanprobabilistiqki algoritam dobija se prepravkom probabilistiqkog dokazapostojaa takvog bojea:

Obojiti svaki elemenat S 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 Si obojeni crveno je2−r, a verovatnoa da su svi obojeni istom bojom (crvenom ili plavom) je2 · 2−r = 21−r. Sluqajni dogaaj (podskup skupa svih 2n sluqajnih bojea |elementarnih dogaaja) A: "neki od skupova Si je neispravno obojen" je unijasvih sluqajnih dogaaja Ai: "skup Si je neispravno obojen", za i = 1, 2, . . . , k,pa vai nejednakost

P (A) ≤k∑

i=1

P (Ai) =k∑

i=1

21−r = k21−r ≤ 2r−221−r =12.

Time je dokazano da ispravno bojee postoji (u protivnom bi verovatnoaneispravnog bojea bila taqno 1). Pored toga, vidi se da je ovaj probabilis-tiqki algoritam dobar. Ispravnost zadatog bojea lako se proverava: prove-ravaju se elementi svakog podskupa dok se ne pronau dva razliqito obojenaelementa. Verovatnoa uspexnog bojea p = 1−P (A) je bar 1/2. Ako se u jednompokuxaju ne dobije neispravno bojee, postupak (bojee) se ponava. Oqeki-vani broj pokuxaja bojea je mai ili jednak od dva. Zaista, verovatnoa dase ispravno bojee pronae u j-tom pokuxaju je (1− p)j−1p, pa je matematiqkooqekivae broja pokuxaja

∞∑

j=1

j(1− p)j−1p =1p≤ 2.

Opisani algoritam bojea je oqigledno Las Vegas algoritam, jer se bojeaproveravaju jedno za drugim, a se traeem se zavrxava kad se naie na is-pravno bojee. Ne postoji garancija uspexnog bojea u bilo kom fiksiranombroju pokuxaja, ali je ovaj algoritam u praksi ipak vrlo efikasan.

5.9. RezimeU ovom poglavu razmatrano je dosta razliqitih oblasti | pretraga,

sortirae, rangovske statistike, kompresija podataka, uporeivae stringovai probabilistiqki algoritmi. U svakoj oblasti prikazano je samo nekolikoosnovnih algoritama. U praksi problemi najqexe nisu tako jednostavni inije ih tako lako formulisati. Zbog toga je neophodno izdvojiti samo glavnedelove zadatog problema. Tehnike iskorixene u ovom poglavu sliqne suonima uvedenim u poglavu 4. Indukcija ponovo igra najvaniju ulogu.

Mnogi problemi razmatrani u ovom poglavu imaju direktno rexee kojese moe dobiti uz malo napora; primeri su linearna pretraga i sortirae

ZADACI 123

izborom. Za male veliqine ulaza ova rexea su najqexe ne samo dovonodobra, nego su i boa od savrxenijih, komplikovanijih rexea. Meutim,kad je veliqina ulaza velika, vano je pokuxati sa pronalaeem boih re-xea. Korixee linearne pretrage i kvadratnih algoritama za sortiraeje uobiqajeno. Na nesreu, ti i drugi neefikasni algoritmi suvixe qesto sekoriste i za velike ulaze.

Zadaci5.1. Igraqi A i B igraju igru pogaaa brojeva: A zamixa proizvoan prirodni

broj n, a B pokuxava da pogodi n postavaem xto maeg broja pitaa oblika "da li jebroj x vei (mai) od n?". Predloite efikasnu strategiju za igraqa B.

5.2. Igraq A izabrao je na sluqajan naqin, sa ravnomernom raspodelom verovatnoa,prirodan broj k, 1 ≤ k ≤ 97. Igraq B pogaa broj k primeujui sledei algoritam:(1) na poqetku je a = 1, b = 97;(2) ako je a = b, traeni broj je k = a;(3) izraqunati m := b(a + b)/2c i postaviti pitae "Da li je k > m?"; ako jeste, a := m +1;ako nije, b := m; u oba sluqaja nastaviti od (2).Koliki je oqekivani broj pitaa igraqa B?

5.3. Kiga ima 1999 strana. Zadatak je binarnom pretragom pronai stranicu x. Meu-tim, binarna pretraga nije idealna: kad se pretrauje opseg strana od m do n, onda se zboggrexke samo zna da je moduo razlike neparne strane na kojoj je kiga otvorena i b(m+n)/2cmai ili jednak od desetine broja strana u intervalu, odnosno od (n −m + 1)/10. Kolikibroj otvaraa kige je dovoan?

5.4. Pretpostavimo da radimo sa programom koji obrauje velike tekstove. Programobrauje tekst sa ulaza kao niz znakova, i daje neki izlaz. U jednom trenutku programnailazi na grexku, posle koje ne moe da nastavi sa radom; pri tome program ne saopxtavakakva je grexka u pitau, ni gde je do e doxlo. Drugim reqima, jedino se vidi da seprogram zaustavio i odxtampao poruku "Grexka". Pretpostavimo da je grexka lokalna, tj.da do e dolazi zbog nekog kratkog dela teksta koji se programu ne svia, iz nepoznatograzloga | grexka ne zavisi od konteksta u kome se taj deo teksta nalazi. Na koji naqi semoe ustanoviti u kom delu teksta dolazi do grexke?

5.5. Navesti primer interpolacione pretrage (traee datog prirodnog broja z uureenom nizu prirodnih brojeva x1 < x2 < · · · < xn) koja koristi Ω(n) uporeivaa.

5.6. Za svako n oblika n = 2k navesti primer niza x1, x2, . . . , xn kod koga se prisortirau objediavaem (slika 7) izvrxava maksimalni broj uporeivaa.

5.7. Uporedite sortirae objediavaem sa problemom odreivaa maksimuma skupapravougaonih funkcija iz odeka 4.6. Moe li se rexee jednog od tih problema iskoris-titi kao "crna kutija" za rexavae drugog?

5.8. Formulisati invarijantu pete u osnovnoj peti algoritma Razdvajanje (sli-ka 8), i dokazati korektnost algoritma.

5.9. Konstruisati ulaz na kome sortirae razdvajaem koristi Ω(n) uporeivaa, akose za pivot uvek bira medijana prvog, posledeg i sredeg elementa niza.

5.10. Konstruisati algoritam za nalaee maksimalnog i minimalnog elementa uskupu, zasnovan na dekompoziciji. Za n = 2k algoritam treba da koristi najvixe 3n/2uporeivaa.

5.11. Kodirati sledeu reqenicu optimalnim binarnim prefiksnim kodom: "Na vrhbrda vrba mrda".

124 5. ALGORITMI ZA RAD SA NIZOVIMA I SKUPOVIMA

5.12. Odrediti edit rastojae stringova aabccbba i baacbabacc i nai bar jedan nizedit operacija minimalne duine koji prvu req transformixe u drugu.

5.13. Dat je niz prirodnih brojeva A[1], A[2], . . . , A[n] takav da je |A[i]−A[i + 1]| ≤ 1za svako i, 1 ≤ i ≤ n. Neka je A[1] = x, A[n] = y, x < y i neka je dat broj z, x ≤ z ≤ y.Konstruisati efikasan algoritam za nalaee indeksa j takvog da je A[j] = z. Kolikimaksimalni broj uporeivaa sa z se izvrxava?

5.14. Korixeem stabla odluqivaa izvesti dou granicu za broj koraka (u najgoremsluqaju) u algoritmu koji rexava problem iz zadatka 5.13, i uporediti ga sa sloenoxukonstruisanog algoritma.

5.15. Dat je skup S od n realnih brojeva. Konstruisati algoritam sloenosti O(n)za nalaee nekog broja koji nije u S. Dokazati da je Ω(n) doa granica za broj korakapotrebnih da se rexi ovaj problem.

5.16. Dat je skup S od n realnih brojeva, i realni broj x. (a) Konstruisati algoritamsloenosti O(n log n) za utvrivae da li u S postoje dva elementa kojima je zbir jednakx. (b) Ako su elementi S dati u rastuem redosledu, konstruisati algoritam koji rexavaisti problem, a ima sloenost O(n).

5.17. Data su dva skupa realnih brojeva S1 i S2 i realni broj x. Ustanoviti da lipostoje realni brojevi y1 ∈ S1 i y2 ∈ S2 takvi da im je zbir jednak x. Vremenska sloenostalgoritma treba da bude O(n log n), gde je n ukupan broj elemenata u oba skupa.

5.18. Konstruisati algoritam sloenosti O(n log n) za nalaee unije dva skupa odpo najvixe n elemenata. Izlaz treba da bude niz razliqitih elemenata unije (ni jedanelemenat se ne sme u nizu pojaviti vixe nego jednom).

5.19. Zadat je niz realnih brojeva x1, x2, . . . , xn, pri qemu je n parno. Konstruisatialgoritam za razlagae niza u n/2 parova na sledei naqin. Neka su sa s1, s2, . . . , sn/2

oznaqene sume brojeva u parovima, i neka je smax = maxs1, s2, . . . , sn/2. Parove trebaformirati tako da smax ima najmau moguu vrednost.

5.20. Dat je niz brojeva x1, x2, . . . , xn i niz razliqitih brojeva a1, a2, . . . , an iz skupa1, 2, . . . , n (permutacija tog skupa). Konstruisati algoritam sloenosti O(n log n) kojiureuje prvi niz u skladu sa redosledom odreenim drugim nizom, tj. na poziciji ai uprvom nizu treba da se nae broj xi, i = 1, 2, . . . , n. Prostorna sloenost algoritma trebada bude O(1).

5.21. Dato je d rastue ureenih nizova sa ukupno n elemenata. Konstruisati algori-tam sloenosti O(n log d) za objediavae svih ovih nizova u jedan rastue ureeni niz.

5.22. Dat je niz od n prirodnih brojeva sa vixe ponavaa elemenata, tako da je brojrazliqitih elemenata u nizu O(log n). (a) Konstruisati algoritam za sortirae ovakvihnizova, u kome se izvrxava najvixe O(n log log n) uporeivaa brojeva. (b) Zbog qega jesloenost ovog algoritma maa od doe granice Ω(n log n) za sortirae?

5.23. Binarno stablo sa n qvorova je uravnoteeno ako odgovara implicitno pred-stavenom stablu pomou niza duine n. Dokazati da je zbir f(n) visina svih qvorovauravnoteenog binarnog stabla sa n qvorova mai ili jednak od n− 1. Za koja stabla se uovoj nejednakosti dostie jednakost?

5.24. Suma visina svih qvorova u hipu predstavenom implicitno (videti odel-jak 5.3.5) moe se izraqunati direktno, koristei qienicu da je visina qvora na pozicijii u vektoru duine n jednaka blog2(n/i)c. Odrediti sumu visina qvorova na ovaj naqin.

5.25. Dat je hip sa n elemenata (sa najveim elementom u korenu), i realni broj x.Konstruisati algoritam koji utvruje da li je k-ti najvei elemenat hipa mai ili jednakod x. Vremenska sloenost algoritma treba da bude O(k) (nezavisno od veliqine hipa), a

ZADACI 125

moe se koristiti memorijski prostor veliqine O(k) (nije potrebno odrediti k-ti najveielemenat, nego samo ustanoviti egov odnos sa x).

5.26. Neka je A algoritam koji odreuje k-ti najvei od n elemenata x1, x2, . . . , xn nizomuporeivaa. Pokazati da A prikupa dovono informacija da se moe ustanoviti kojisu elementi vei, a koji mai od k-tog najveeg (drugim reqima, skup se moe razloitina vee i mae od k-tog najveeg, bez novih uporeivaa)

5.27. Ci je odrediti k-ti najmai elemenat sliqno kao u zadatku 5.26, ali ovogputa elimo da minimiziramo vreme izvrxavaa, i da pri tome koristimo vrlo maliprostor (ne obavezno minimalni). Ulaz je niz brojeva x1, x2, . . . , xn koji se dobijaju jedan pojedan. Konstruisati algoritam srede vremenske sloenosti O(n) za izraqunavae k-tognajmaeg elementa, koji koristi samo O(k) memorijskih lokacija. Vrednost k unapred jepoznata (pa se moe rezervisati dovoan memorijski prostor), ali se vrednost n ne zna dopojave posledeg elementa niza.

5.28. Neka su A i B dva skupa od po n elemenata, pri qemu se A quva u raqunaru P , a Bu raqunaru Q. Raqunari mogu da komuniciraju razmeujui poruke, a mogu i da izvrxe bilokakvo lokalno izraqunavae. Konstruisati algoritam koji odreuje n-ti najmai elemenatskupa A ∪ B (tj. medijanu). Moe se, zbog jednostavnosti, pretpostaviti da je A ∩ B = ∅.Ci je minimizirati broj poruka, pri qemu poruka moe da sadri jedan elemenat ilijedan celi broj. Koliki je broj poruka potreban u najgorem sluqaju?

5.29. Korixeem teorijsko-informacione granice pokazati da je Ω(log n) doa gra-nica broja uporeivaa pri pronalaeu vrednosti i takve da je xi = i u nizu x1, x2, . . . , xn,ili utvrivau da takva vrednost ne postoji (problem je razmatran u odeku 5.2).

5.30. Traee uzorka u tekstu u realnom vremenu. Pretpostavimo da se uzorakunosi (ukucava) znak po znak malom brzinom, a tekst je ve dat. Oqekuje se da traee usvakom trenutku napreduje koliko je najvixe mogue, ne qekajui da bude unesen kompletanuzorak. Drugim reqima, elimo da se pri unoxeu k-tog znaka uzorka ve nalazimo naprvoj poziciji u tekstu odakle se tekst poklapa sa prvih k − 1 znakova uzorka. Kako trebapromeniti algoritam KMP da bi se postigao ovaj ci?

5.31. Modifikovati algoritam KMP tako da pronae najvei prefiks uzorka P kojikao podstring postoji u tekstu S (drugim reqima, u tekstu S treba pronai najvei moguiprefiks uzorka P ).

5.32. Najvei zajedniqki podniz (LCS, skraenica od largest common subsequence) dva niza T i P je najdui niz L koji je podniz oba niza T i P . Najmai zajedniqkinadniz (SCS, skraenica od smallest common supersequence ) dva niza T i P jenajkrai niz L takav da su T i P egovi podnizovi.

(a) Konstruisati efikasne algoritme za odreivae LCS i SCS dva data niza.(b) Neka je d(T, P ) edit rastojae izmeu T i P , pri qemu zamene nisu dozvoene

(dozvoena su samo umetaa i brisaa znakova). Dokazati da je d(T, P ) = |SCS(T, P )| −|LCS(T, P )|, gde su |SCS(T, P )|, odnosno |LCS(T, P )| duine SCS, odnosno LCS nizova T iP .

5.33. Uopxtiti algoritam za nalaee edit rastojaa iz odeka 5.6 na sluqaj kad seumetaa znakova na poqetku ili na kraju kraeg niza ne raqunaju. Drugim reqima, raqunase samo edit rastojae B i bilo kog ("najblieg") podniza A.

5.34. Problem uporeivaa nizova moe se uopxtiti na tri (ili vixe) nizova nasledei naqin. Data su tri niza A = a1a2 . . . am, B = b1b2 . . . bn i C = c1c2 . . . cp. Potrebnoje odrediti najmai skup edit operacija koji sva tri niza transformixe u jedan isti niz.

5.35. Neka su A = a1a2 . . . an i B = b1b2 . . . bm dva niza znakova. Oznaqimo sa Ai nizaiai+1 . . . an (tj. i-ti sufiks A). Neka je di edit rastojae nizova B i Ai. Konstruisatialgoritam sloenosti O(n2) za nalaee najmae vrednosti di, i = 1, 2, . . . , n.

126 5. ALGORITMI ZA RAD SA NIZOVIMA I SKUPOVIMA

5.36. Na raspolagau nam je procedura, koja za proizvono k, 1 ≤ k ≤ n, generixesluqajne brojeve iz opsega od 1 do k sa uniformnom raspodelom verovatnoe (RV). Zadatakje konstruisati algoritam za generisae sluqajne permutacije brojeva 1, 2, . . . , n sa uni-formnom RV.

5.37. Neka je E zadati niz brojeva x1, x2, . . . , xn. Vixestrukost broja x u E je brojpojavivaa x u E. Odrediti elemenat E vixestrukosti vee od n/2 ("preovlaujui ele-menat") ili ustanoviti da takav elemenat ne postoji.

5.38. Neka je dat niz od n elemenata. Konstruisati algoritam sloenosti O(n) zapronalaee elementa koji se u nizu pojavuje vixe od n/4 puta.

Glava 6

Grafovski algoritmi

6.1. UvodU prethodnom poglavu razmatrali smo algoritme za rad sa nizovima i

skupovima objekata. Analizirani su odnosi ureea, vixestrukosti, prekla-paa i sliqni. U ovom poglavu razmatraemo komplikovanije odnose izmeuobjekata. Za modelirae tih odnosa koristiemo grafove. Grafovi mogu damodeliraju mnogo situacija, i koriste se u razliqitim oblastima, od arhe-ologije do socijalne psihologije. Prikazaemo vixe vanih osnovnih algo-ritama za obradu grafova i za izraqunavae nekih ihovih karakteristika.

Pogledajmo najpre neke primere modeliraa pomou grafova.

(1) Nalaee dobrog puta do nekog odredixta u gradu je grafovskiproblem. Ulice odgovaraju granama (usmerene grane u sluqaju jednos-mernih ulica), a raskrsnice qvorovima. Svakom qvoru i svakoj grani(delu ulice) moe se pridruiti vreme potrebno za prolazak, pa seproblem svodi na nalaee "najbreg" puta izmeu dva qvora.

(2) Proces izvrxavaa nekog programa moe se podeliti na staa. Izsvakog staa moe se nastaviti na nekoliko naqina. Neka staa sma-traju se nepoenim. Problem utvrivaa koja staa mogu dovestiu nepoena staa je grafovski problem u kome staima odgovarajuqvorovi, a grane ukazuju na mogue prelaske iz jednog u drugo stae.

(3) Pravee rasporeda qasova na fakultetu moe se posmatrati kaografovski problem. Qvorovi odgovaraju grupama, a dve grupe su povezaneako postoji student koji namerava da ih obe pohaa, ili ako imaju za-jedniqkog predavaqa. Problem je kako napraviti raspored po grupamatako da se minimiziraju konflikti. To je teak problem, za koji nijelako nai dobra rexea.

Predstavae grafova razmatrano je u odeku 3.8. Najqexe emo koris-titi predstavae listom povezanosti, koja je efikasnija za retke grafove(odnosno grafove sa relativno malim brojem grana). Uvexemo najpre neop-hodne pojmove. Graf G = (V,E) sastoji se od skupa V qvorova, i skupa Egrana. Svaka grana odgovara paru razliqitih qvorova (ponekad su dozvoenepete, odnosno grane koje vode od qvora ka emu samom; mi emo pretpostav-ati da one nisu dozvoene). Graf moe biti usmeren ili usmeren. Grane

127

128 6. GRAFOVSKI ALGORITMI

usmerenog grafa su ureeni parovi qvorova (koji se zovu krajevi grane); re-dosled dva qvora koje povezuje grana je bitan. Grane usmerenog grafa crtajuse kao strelice usmerene od jednog qvora (poqetka) ka drugom qvoru (kraju).Grane neusmerenog grafa su neureeni parovi: one se crtaju kao obiqne dui(linije). Stepen d(v) qvora v je broj grana susednih qvoru v (odnosno brojgrana koje v povezuju sa nekim drugim qvorom). U usmerenom grafu razlikuje-mo ulazni stepen, broj grana za koje je qvor v kraj, i izlazni stepen, brojgrana za koje je qvor v poqetak.

Put od v1 do vk je niz qvorova v1, v2, . . . , vk povezanih granama (v1, v2),(v2, v3), . . . , (vk−1, vk); ove grane se obiqno takoe smatraju delom puta. Putje prost, ako se svaki qvor u emu pojavuje samo jednom. Za qvor u se kaeda je dostian iz qvora v ako postoji put (usmeren, odnosno neusmeren, za-visno od grafa) od v do u. Po definiciji je qvor v dostian iz v. Ciklusje put qiji se prvi i posledi qvor poklapaju. Ciklus je prost ako se, semprvog i posledeg qvora, ni jedan drugi qvor u emu ne pojavuje dva puta.Neusmereni oblik usmerenog grafa G = (V, E) je isti graf, bez smerovana granama. Za graf se kae da je povezan ako (u egovom neusmerenom ob-liku) postoji put izmeu proizvona dva qvora. Xuma je graf koji (u svomneusmerenom obliku) ne sadri cikluse. Stablo ili drvo je povezana xuma.Korensko stablo je usmereno stablo sa jednim posebno izdvojenim qvorom,koji se zove koren pri qemu su sve grane usmerene od korena.

Graf H = (U,F ) je podgraf grafa G = (V, E) ako je U ⊂ V i F ⊂ E.Povezujue stablo neusmerenog grafa G je egov podgraf koji je stabloi sadri sve qvorove G. Povezujua xuma neusmerenog grafa G je egovpodgraf koji je xuma i sadri sve qvorove G. Indukovani podgraf grafaG = (V, E) je egov podgraf H = (U,F ) takav da je U ⊂ V i F sadri sve graneiz E qija su oba kraja u U . Ako graf G = (V, E) nije povezan, onda se on moena jedinstven naqin razloiti u skup povezanih podgrafova, koji se zovukomponente povezanosti grafa G. Skup qvorova komponente povezanosti jeklasa ekvivalencije u odnosu na relaciju dostinosti za qvorove: komponentupovezanosti G kojoj pripada qvor v qine svi qvorovi dostini iz v. Kompo-nenta povezanosti grafa G je maksimalni povezani podgraf G (odnosno takavpodgraf koji nije pravi podgraf ni jednog drugog povezanog podgrafa G).Bipartitni graf je graf qiji se qvorovi mogu podeliti na dva disjunktnapodskupa tako da u grafu postoje samo grane izmeu qvorova iz razliqitihpodskupova. Teinski graf je graf qijim su granama pridrueni realnibrojevi (teine, cene, duine, eng. weight, cost, length ).

Mnoge definicije za usmerene i neusmerene grafove su sliqne, izuzevnekih oqiglednih razlika. Na primer, usmereni i neusmereni putevi defi-nixu se na isti naqin, sem xto se kod usmerenih grafova specificiraju ismerovi grana. Znaqee takvih termina zavisi od konteksta; ako se, na primer,radi o putevima u usmerenom grafu, onda se misli na usmerene puteve.

Razmotriemo najpre jednostavan problem, koji se smatra prvim proble-mom teorije grafova | obilazak Keningsberxkih mostova. Zatim emo se

6.2. OJLEROVI GRAFOVI 129

baviti obilascima grafova, ureeem qvorova grafa, nalaeem najkraihputeva u grafu i drugim problemima. U poglavu 8 razmatraju se veze gra-fovskih i algoritama sa matricama, pa je prikazano i nekoliko grafovskihalgoritama.

6.2. Ojlerovi grafoviPojam Ojlerovih grafova u vezi je sa, kako se smatra, prvim rexenim prob-

lemom teorije grafova. Xvajcarski matematiqar Leonard Ojler naixao je nasledei zadatak 1736. godine. Grad Kenigsberg, danas Kaliingrad, lei naobalama i na dva ostrva na reci Pregel, kao xto je prikazano na slici 1.Grad je bio povezan sa sedam mostova. Pitae (koje je muqilo mnoge tadaxegraane Kenigsberga) bilo je da li je mogue poqeti xetu iz bilo koje taqkeu gradu i vratiti se u polaznu taqku, prelazei pri tome svaki most taqnojednom. Rexee je dobijeno uopxtavaem problema. "Graf" na istoj slici,bar xto se ovog problema tiqe, ekvivalentan je sa planom grada (navodni-ci su upotrebeni jer ovaj "graf" ima vixestruke grane, pa strogo gledanopo definiciji i nije graf; to je tzv. multigraf). Problem se moe ekviva-lentno formulisati kao sledei problem iz teorije grafova: da li je mogueu povezanom grafu pronai ciklus, koji svaku granu sadri taqno jednom(Ojlerov ciklus). Ili: da li je mogue nacrtati graf sa slike 1 ne diuiolovku sa papira, tako da olovka svoj put zavrxi na mestu sa koga je i krenula.Ojler je rexio problem, dokazavxi da je ovakav obilazak mogu ako i samo akoje graf povezan i svi egovi qvorovi imaju paran stepen. Takvi grafovi zovuse Ojlerovi grafovi. Poxto "graf" na slici 1 ima qvorove neparnog stepe-na, zakuqujemo da problem Kenigsberxkih mostova nema rexee. Dokaz teo-reme indukcijom, koji sledi, daje efikasan algoritam za nalaee Ojlerovogciklusa u grafu.

®­

©ª

²±

¯°C

A

B

D

b

bb b

A

B

C D

Ris. 1. Problem Kenigsberxkih mostova, i odgovarajui graf.

Problem. U zadatom neusmerenom povezanom grafu G = (V, E) qiji sviqvorovi imaju paran stepen, pronai zatvoreni put P , takav da se u emusvaka grana iz E pojavuje taqno jednom.

Lako je pokazati da ako u grafu postoji Ojlerov ciklus, onda svi qvorovigrafa moraju imati paran stepen. Za vreme obilaska zatvorenog ciklusa, usvaki qvor se ulazi isto toliko puta koliko puta se iz ega izlazi. Poxto

130 6. GRAFOVSKI ALGORITMI

se svaka grana prolazi taqno jednom, broj grana susednih proizvonom qvorumora biti paran. Da bismo indukcijom dokazali da je uslov dovoan, moramonajpre da izaberemo parametar po kome e biti izvedena indukcija. Taj iz-bor treba da omogui smaivae problema, bez egove promene. Ako ukloni-mo qvor iz grafa, stepeni qvorova u dobijenom grafu nisu vixe svi parni.Trebalo bi da uklonimo takav skup grana S, da za svaki qvor v grafa brojgrana iz S susednih sa v bude paran (makar i 0). Proizvoan ciklus zado-voava ovaj uslov, pa se postava pitae da li Ojlerov graf uvek sadriciklus. Pretpostavimo da smo zapoqeli obilazak grafa iz proizvonog qvo-ra v proizvonim redosledom. Sigurno je da e se obilazak ranije ili kasnijezavrxiti u qvoru v, jer kad god uemo u neki qvor, smaujemo egov stepen zajedan, qinimo ga neparnim, pa ga uvek moemo i napustiti. Naravno, ovakavobilazak ne mora da sadri sve grane grafa.

Sada moemo da formulixemo induktivnu hipotezu i dokaemo teoremu.

Induktivna hipoteza. Povezani graf sa < m grana qiji svi qvoroviimaju paran stepen, sadri Ojlerov ciklus, koji se moe pronai.

Posmatrajmo graf G = (V,E) sa m grana. Neka je P neki ciklus u G, ineka je G′ graf dobijen uklaaem grana koje qine P iz grafa G. Stepenisvih qvorova u G′ su parni, jer je broj ukloenih grana susednih bilo komqvoru paran. Ipak se induktivna hipoteza ne moe primeniti na graf G′, jeron ne mora biti povezan, videti primer na slici 2. Neka su G′1, G′2, . . . , G′kkomponente povezanosti grafa G′. U svakoj komponenti stepeni svih qvorovasu parni. Pored toga, broj grana u svakoj komponenti je mai od m (ihovukupan broj grana mai je od m). Prema tome, induktivna hipoteza moe seprimeniti na sve komponente: u svakoj komponenti G′i postoji Ojlerov ciklusP ′i , i mi znamo da ga pronaemo. Potrebno je sada sve ove cikluse objedinitiu jedan Ojlerov ciklus za graf G. Polazimo iz bilo kog qvora ciklusa P("magistralnog puta") sve dok ne doemo do nekog qvora vj koji pripada kom-ponenti G′j . Tada obilazimo komponentu G′j ciklusom Pj ("lokalnim putem")i vraamo se u qvor vj . Nastavajui na taj naqin, obilazei cikluse kompo-nenti u trenutku nailaska na ih, na kraju emo se vratiti u polaznu taqku.U tom trenuku sve grane grafa G proene su taqno jednom, xto znaqi da jekonstruisan Ojlerov ciklus. Algoritam ipak nije sasvim kompletan: potrebannam je efikasan metod za izdvajae komponenti povezanosti grafa, odnosnoza obilazak grafa. Oba ova problema bie razmatrana u sledeem odeku.

6.3. Obilasci grafovaPrvi problem na koji se nailazi pri konstrukciji bilo kog algoritma

za obradu grafa je kako pregledati ulaz. U prethodnom poglavu taj problembio je trivijalan zbog jednodimenzionalnosti ulaza | nizovi i skupovi moguse lako pregledati linearnim redosledom. Pregledae grafa, odnosno egov

6.3. OBILASCI GRAFOVA 131

e

e e

e e

e e

e

e e

Ris. 2. Primer konstrukcije Ojlerovog puta indukcijom.Punom linijom izvuqene su grane pomonog ciklusa. Izbaci-vaem grana ovog ciklusa iz grafa, dobija se graf sa dve kom-ponente povezanosti.

obilazak, nije trivijalan problem. Postoje dva osnovna algoritma za obi-lazak grafa: pretraga u dubinu i pretraga u xirinu. Vixe algoritamaiz ovog poglava zasniva se na jednoj od ove dve tehnike.

6.3.1. Pretraga u dubinu. Pretraga u dubinu je praktiqno ista za neus-merene i usmerene grafove. Meutim, poxto elimo da ispitamo neke osobinegrafova, koje nisu iste za neusmerene i usmerene grafove, razmatrae e bitipodeeno na dva dela.

6.3.1.1. Neusmereni grafovi. Pretpostavimo da graf G = (V, E) odgovaraumetniqkoj galeriji, koja se sastoji od niza hodnika sa slikama na zidovima.Grane G odgovaraju hodnicima, a qvorovi odgovaraju presecima hodnika. Mihoemo da obiemo galeriju i vidimo sve slike. Pretpostavka je da u tokuprolaska kroz hodnik u bilo kom smeru vidimo slike na oba egova zida. Akoje graf Ojlerov, mogue je obii galeriju poseujui svaki hodnik taqno jed-nom. Ovde se ne pretpostava da je graf Ojlerov, a dozvoava se prolazakiste grane vixe nego jednom (kao xto e se videti, svaka grana bie pre-gledana taqno dva puta). Ideja na kojoj se zasniva pretraga u dubinu je sledea.Prolazimo kroz galeriju trudei se da uemo u novi hodnik uvek kad je tomogue. Kada prvi put uemo u neku raskrsnicu, ostavamo kamenqi i nas-tavamo kroz neki drugi hodnik (izuzev ako je to hodnik slepa ulica). Kaddoemo do raskrsnice u kojoj ve postoji kamenqi, vraamo se istim putemnazad, i pokuxavamo kroz neki drugi hodnik. Ako su svi hodnici koji vodeiz raskrsnice pregledani, onda uklaamo kamenqi iz raskrsnice i vraamose hodnikom kroz koji smo prvi put uxli u raskrsnicu. Ovu raskrsnicu vixeneemo poseivati (kamenqi se uklaa zbog odravaa reda u galeriji; uk-laae nije suxtinski deo algoritma). Uvek se trudimo da ispitujemo novehodnike; kroz hodnik kojim smo prvi put uxli u raskrsnicu vraamo se tekkad smo proxli sve hodnike iz raskrsnice. Ovaj pristup zove se pretragau dubinu (DFS, skraenica od depth–first–search ), xto je u vezi satendencijom da se poseuju uvek novi hodnici (idui sve dube u galeriju).Osnovni razlog upotrebivosti pretrage u dubinu lei u enoj jednostavnos-ti i prilagodivosti rekurzivnim algoritmima.

132 6. GRAFOVSKI ALGORITMI

Posle opisa pretrage u dubinu zasnovanog na obilasku galerije i ostav-au kamenqia, razmotrimo isti problem za neusmereni graf zadat listompovezanosti. Obilazak zapoqie iz proizvonog zadatog qvora r, korena pre-trage u dubinu. Koren se oznaqava kao poseen. Zatim se bira proizvonineoznaqeni qvor r1, susedan sa r, pa se iz qvora r1 rekurzivno startuje pretra-ga u dubinu. Iz nekog nivoa rekurzije izlazi se kad se naie na qvor v kome susvi susedi (ako ih ima) ve oznaqeni. Ako su u trenutku zavrxetka pretrageiz r1, svi susedi qvora r oznaqeni, onda se pretraga za qvor r zavrxava. U pro-tivnom, bira se sledei proizvoni neoznaqeni sused r2 qvora r, izvrxava sepretraga polazei od r2, itd.

Pretraga grafa uvek se vrxi sa nekim ciem. Da bi se razliqite ap-likacije uklopile u pretragu u dubinu, poseti qvora ili grane pridruujuse dve vrste obrade, ulazna obrada i izlaznu obradu. Ulazna obrada vrxise u trenutku oznaqavaa qvora. Izlazna obrada vrxi se posle povratka nekomgranom, ili kad se otkrije da neka grana vodi ve oznaqenom qvoru. Ulaznai izlazna obrada zavise od konkretne primene DFS. Ovi pojmovi omoguienam rexavae nekoliko problema jednostavnim definisaem ulazne i izlazneobrade. Algoritam pretrage u dubinu dat je na slici 3. Polazni qvor zarekurzivnu pretragu je v. Zbog jednostavnosti se za poqetak pretpostava daje graf povezan. Primer pretrage grafa u dubinu dat je na slici 4, pri qemubrojevi uz qvorove pokazuju redosled obilaska.

Algoritam DFS(G, v);

Ulaz: G = (V, E) (neusmereni povezani graf) i v (qvor grafa G).Izlaz: zavisi od primene.begin

oznaqi v;

izvrxi ulaznu obradu na v; ulazna obrada zavisi od primene DFSfor sve grane (v, w) do

if w je neoznaqen then DFS(G, w);

izvrxi izlaznu obradu za (v, w)

izlazna obrada zavisi od primene DFSona se ponekad vrxi samo za grane ka novooznaqenim qvorovima

end

Ris. 3. Pretraga u dubinu.

Lema 6.1. Ako je graf G povezan, onda e algoritmom pretrage u dubinusvi egovi qvorovi biti oznaqeni, a sve egove grane bie u toku izvrxavaaalgoritma pregledane bar po jednom.

Dokazatel~stvo. Pretpostavimo suprotno, i oznaqimo sa U skup neoz-naqenih qvorova zaostalih posle izvrxavaa algoritma. Poxto je G povezan,

6.3. OBILASCI GRAFOVA 133

d

d

d

d d d d

dd

da : 1/10

b : 2/5

e : 3/1 f : 4/4

j : 5/3

g : 6/2

c : 7/9

h : 8/8 i : 9/7

d : 10/6

a : b, g, c, d

b : a, e, f, g

c : a, h, i, d

d : a, c, h, i

e : b

f : b, j, g

g : a, b, f, j

h : c, i, d

i : d, c, h

j : f, g

Ris. 4. Primer pretrage u dubinu. Dva broja uz qvor jednakasu egovim rednim brojevima pri dolaznoj, odnosno odlaznojDFS numeraciji.

bar jedan qvor iz U mora biti povezan granom sa nekim oznaqenim qvorom.Meutim, ovako nexto je nemogue, jer kad god se poseti qvor, moraju bitiposeeni (pa dakle i oznaqeni) svi egovi neoznaqeni susedi. Poxto su sviqvorovi poseeni, a kad se qvor poseti, onda se pregledaju sve grane koje vodeiz ega, zakuqujemo da su i sve grane grafa pregledane. ¤

Za nepovezane grafove se algoritam DFS mora promeniti. Ako su sviqvorovi oznaqeni posle prvog pokretaa opisanog algoritma, onda je grafpovezan, i obilazak je zavrxen. U protivnom, moe se pokrenuti nova pretra-ga u dubinu polazei od proizvonog neoznaqenog qvora, itd. Prema tome, DFSse moe iskoristiti da bi se ustanovilo da li je graf povezan, odnosno zapronalaee svih egovih komponenti povezanosti. Odgovarajui algoritamdat je na slici 5. Mi emo najqexe razmatrati samo povezane grafove, jer se uopxtem sluqaju problem svodi na posebnu obradu svake komponente povezanos-ti. Dakle, koristiemo DFS u obliku sa slike 3, ne spomiui eksplicitnoda se pretraga mora vixe puta pokretati kao na slici 5.

Sloenost. Lako je uveriti se da se svaka grana pregleda taqno dva puta,po jednom sa svakog kraja. Prema tome, vremenska sloenost je proporcionalnabroju grana. S druge strane, broj rekurzivnih pokretaa algoritma je |V |, pase sloenost algoritma moe opisati izrazom O(|V |+ |E|).

6.3.1.2. Konstrukcija DFS stabla. Prikazaemo sada dve jednostavne pri-mene DFS | numeraciju qvorova grafa DFS brojevima, i formirae speci-jalnog povezujueg stabla, takozvanog DFS stabla. DFS brojevi i DFS stabloimaju posebne osobine, koje su korisne u mnogim algoritmima. Qak i ako sestablo ne formira eksplicitno, mnoge algoritme je lakxe razumeti razma-trajui DFS stablo. Da bi se opisali ovi algoritmi, dovono je zadati bilo

134 6. GRAFOVSKI ALGORITMI

Algoritam Komponente povezanosti(G);

Ulaz: G = (V, E) (neusmereni graf).Izlaz: v.Komp za svaki qvor v dobija vrednost jednaku rednom broju komponente

povezanosti koja sadri v.begin

Rb komp := 1;

while postoji neoznaqen qvor v do

DFS(G, v);

sa sledeom ulaznom obradom:v.Komp := Rb komp;

Rb komp := Rb komp + 1;

end

Ris. 5. Algoritam za nalaee komponenti povezanosti grafa.

ulaznu, bilo izlaznu obradu. Postoje dve varijante DFS numeracije: qvorovise mogu numerisati prema redosledu oznaqavaa (dolazna DFS numeracija,ili prema redosledu napuxtaa (odlazna DFS numeracija. Algoritam zadobijae obe DFS numeracije qvorova grafa dat je na slici 6, a primer grafasa qvorovima numerisanim na dva naqina prikazan je na slici 4. Algoritamza formirae DFS stabla prikazan je na slici 7. Naravno, ova dva algoritmane moraju se izvrxavati odvojeno.

Algoritam DFS numeracija(G, v);

Ulaz: G = (V, E) (neusmereni graf) i v (qvor G).Izlaz: za svaki qvor v raqunaju se egovi redni brojevi v.Pre i v.Post

pri dolaznoj, odnosno odlaznoj numeraciji.Inicijalizacija DFS pre := 1; DFS post := 1;

Pokrenuti DFS sa sledeom ulaznom i izlaznom obradom:ulazna obrada:

v.Pre := DFS pre;

DFS pre := DFS pre + 1;

izlazna obrada:if w je posledi na listi suseda v then

v.Post := DFS post;

DFS post := DFS post + 1;

Ris. 6. DFS numeracija qvorova grafa.

Qvor v zove se predak qvora w u stablu T sa korenom r ako je v na jedin-stvenom putu od w do r u T . Ako je v predak w, onda je w potomak v. DFSstablo obuhvata sve qvorove grafa G. Redosled sinova svakog qvora u stablu

6.3. OBILASCI GRAFOVA 135

Algoritam DFS stablo(G, v);

Ulaz: G = (V, E) (neusmereni graf) i v (qvor G).Izlaz: T (DFS stablo grafa G; na poqetku je T prazno).Pokrenuti DFS sa sledeom izlaznom obradom:izlazna obrada:

if w je bio neoznaqen then dodati granu (v, w) u T ;

goru naredbu treba dodati u if naredbu algoritma DFS

Ris. 7. Formirae DFS stabla grafa.

zadat je listom povezanosti koja specificira graf G, pa se za svaka dva meuima moe rei koji je od ih levi (prvi po tom redosledu), a koji desni.Relacija levidesni se prenosi na proizvona dva qvora u i v koji nisu jedanispod drugog (odnosno u relaciji predakpotomak), videti sliku 8. Za ihtada postoji jedinstveni zajedniqki predak w u DFS stablu, kao i sinovi u′ iv′ qvora w takvi da je u′ predak u i v′ predak v. Kaemo da je u levo od v akoi samo ako je u′ levo od v′. Jasna je geometrijska interpretacija ove relacije:moemo da zamislimo da se DFS stablo iscrtava nanie dok se prelazi unove neoznaqene qvorove (koraci u dubinu), odnosno sleva udesno prilikomdodavaa novih grana posle povratka u ve oznaqene qvorove. Dolazna DFSnumeracija qvorova neposredno je povezana sa uvedenom relacijom. Neka suu.Pre, v.Pre redni brojevi u, v prema dolaznoj DFS numeraciji. Ako je qvoru levo od qvora v, onda je on prilikom pretrage dostignut pre qvora v, pa jeu.Pre < v.Pre. Obrnuto ne vai uvek: ako je u.Pre < v.Pre, onda je u levo odv, ili je u predak v u DFS stablu (tj. iznad v).

d

d dd

d d dd

d d

d

r

w

u′ v′

u

v

Ris. 8. Uz definiciju relacije "levodesno" na skupu qvoro-va DFS stabla.

Lema 6.2 (Osnovna osobina DFS stabla neusmerenog grafa). Neka je G =(V, E) povezan neusmeren graf, i neka je T = (V, F ) DFS stablo grafa G do-bijeno algoritmom DFS stablo. Svaka grana e ∈ E pripada T (tj. e ∈ F ) ilispaja dva qvora grafa G, od kojih je jedan predak drugog u T .

136 6. GRAFOVSKI ALGORITMI

Dokazatel~stvo. Neka je (v, u) grana u G, i pretpostavimo da je u tokuDFS v poseen pre u. Posle oznaqavaa v, u peti se rekurzivno pokree DFSiz svakog neoznaqenog suseda v. U trenutku kad doe red na suseda u, ako je uoznaqen, onda je u potomak v u T , a u protivnom, se iz u startuje DFS, pa upostaje sin v. ¤

Tvree leme moe se preformulisati na sledei naqin: grane grafa nemogu biti popreqne grane za DFS stablo, odnosno grane koje povezuju qvorovena razliqitim putevima od korena (ili: takva dva qvora u i v da je npr. ulevo od v).

Poxto je DFS vrlo vaan algoritam, dajemo i nerekurzivnu varijantu e-gove realizacije. Osnovna alatka za realizaciju rekurzivnog programa je stek,na kome se quvaju informacije potrebne za "razmotavae" rekurzivnih poziva.Prevodilac obezbeuje prostor na steku za lokalne podatke pridruene svakojkopiji rekurzivne procedure. Zbog toga, kad se zavrxi sa jednim rekurzivnimpozivom procedure, mogu je povratak na taqno odreeno mesto u pozivajuojproceduri (koja moe da bude druga kopija iste rekurzivne procedure). Qestonije neophodno sve lokalne podatke quvati na steku, pa se ispostava da sunerekurzivne procedure efikasnije.

Osnovna potexkoa pri prevoeu rekurzivne u nerekurzivnu verziju potiqeod neophodnosti eksplicitnog pamea podataka, koji se inaqe quvaju na steku.DFS proceduru pozivali smo rekurzivno unutar for pete, a od programasmo oqekivali da zapamti taqno mesto u peti, gde treba nastaviti poslerekurzivnog poziva. U nerekurzivnoj verziji se ti podaci moraju eksplicit-no pamtiti. Pretpostavamo da svaki qvor v ima povezanu listu susednihgrana (DFS prati redosled grana u listi). Pokazivaq na poqetak te listeje v.Prvi. Svaki elemenat liste je slog koji sadri dve promenive: Cvor iNaredni; Cvor je ime qvora na drugom kraju grane, a Naredni je pokazivaq nanaredni elemenat liste. Posledi elemenat liste Naredni ima vrednost nil.DFS se izvrxava kao i ranije, silazei niz stablo sve do dolaska u "slepuulicu". Za registrovae dostignutog nivoa pretrage koristi se stek. U tokuobilaska na steku se quvaju svi qvorovi na putu od korena do tekueg qvora,onim redom kojim su na putu. Izmeu svaka dva qvora Otac i Sin stek sadripokazivaq na granu iz Otac koja e biti sledea pregledana posle povratka izSin. Nerekurzivna verzija DFS prikazana je na slici 9.

6.3.1.3. Usmereni grafovi. Procedura pretrage u dubinu usmerenih gra-fova ista je kao za neusmerene grafove. Meutim, usmerena DFS stabla imajunexto drugaqije osobine. Za ih, na primer, nije taqno da nemaju popreqnegrane, xto se moe videti iz primera na slici 10. Grane grafa mogu se podeli-ti na qetiri vrste: grane stabla, povratne, direktne i popreqne. Prvetri vrste grana povezuju dva qvora od kojih je jedan potomak drugog u stab-lu: grana stabla povezuje oca sa sinom, povratna grana potomka sa pretkom, adirektna grana pretka sa potomkom. Jedino popreqne grane povezuju qvorove

6.3. OBILASCI GRAFOVA 137

Algoritam Nerek DFS(G, v);

Ulaz: G = (V, E) (neusmereni graf) i v (qvor grafa G).Izlaz: zavisi od primene.begin

while postoji neoznaqeni qvor w do

if v neoznaqen then w := v; pretraga poqie od voznaqi w;

izvrxi ulaznu obradu na w;

Grana := w.Prvi; pokazivaq na prvu granu iz wupixi na stek w i Grana;

Otac := w;

poqetak osnovne pete rekurzijewhile stek nije prazan do

skini Grana sa vrha steka;while Grana 6= nil do dok ima nepregledanih grana iz qvora

Sin := Grana .Cvor;

if Sin nije oznaqen then korak u dubinuoznaqi Sin;

izvrxi ulaznu obradu na Sin;

upixi Grana .Naredni na vrh steka; sledea, kad se obradi Sinza nastavak po zavrxetku obrade Sin

Grana := Sin.Prvi;

Otac := Sin;

upixi Otac na vrh steka novooznaqeni qvor;else Grana je povratna grana;

izvrxi izlaznu obradu za (Otac, Sin);

ovo se preskaqe ako se izlazna obrada radi samo za grane stablaGrana := Grana .Naredni;

na vrhu steka su posledi oznaqeni qvor i sledea grana iz egaskini Sin sa vrha steka; korak nazadif stek nije prazan then stek postaje prazan kad je Sin koren

neka su Grana i Otac na vrhu steka; ne uklaati ih sa stekaizvrxi izlaznu obradu za (Otac, Sin)

end

Ris. 9. Nerekurzivni algoritam pretrage u dubinu.

koji nisu "srodnici" u stablu. Popreqne grane, meutim, moraju biti usmerene"zdesna ulevo", kao xto pokazuje sledea lema.

138 6. GRAFOVSKI ALGORITMI

d

d

d

d

d

d

d

?

ª R

?

?ª¾

K direktna

grana ulevo

povratna

grana stabla

ª R

Ris. 10. DFS stablo usmerenog grafa.

Lema 6.3 (Osnovna osobina usmerenih DFS stabala). Neka je G = (V, E)usmereni graf, i neka je T = (V, F ) DFS stablo grafa G. Ako je (v, w) ∈ Egrana grafa G za koju vai v.Pre < w.Pre, onda je w potomak v u stablu T .

Dokazatel~stvo. Poxto je prema dolaznoj DFS numeraciji v ispredw, w je oznaqen posle v. Grana grafa (v, w) mora biti razmatrana u tokurekurzivnog poziva DFS iz qvora v. Ako u tom trenutku qvor w nije bio oz-naqen, onda se grana (v, w) mora ukuqiti u stablo, tj. (v, w) ∈ F , pa je tvreeleme taqno. U protivnom, w je oznaqen u toku izvoea rekurzivnog pozivaDFS iz v, pa w mora biti potomak v u stablu T . ¤

DFS za povezan neusmereni graf, startovana iz proizvonog qvora, obi-lazi ceo graf. Analogno tvree ne mora biti taqno za usmerene grafove.Posmatrajmo usmereni graf na slici 11. Ako se DFS zapoqne iz qvora v, ondae biti dostignuti samo qvorovi u desnoj koloni. DFS moe da dostigne sveqvorove grafa samo ako se zapoqne iz qvora a. Ako se qvor a ukloni iz grafazajedno sa dve grane koje izlaze iz ega, onda vixe nee postojati qvor iz kogaDFS obilazi ceo graf. Prema tome, uvek kad govorimo o DFS usmernog grafa,smatraemo da je DFS pokrenuta toliko puta koliko je potrebno da bi sviqvorovi bili oznaqeni i sve grane bile razmotrene. Dakle, u opxtem sluqajugraf umesto DFS stabla ima DFS xumu.

Nepostojae grana grafa koje idu sleva udesno govori nexto zanimivo ikorisno o odlaznoj numeraciji qvorova grafa i o qetiri vrste grana u odnosuna DFS stablo. Na slici 12(a) prikazana su tri qvora grafa u, v i w u DFSobilasku grafa. Qvorovi v i w su potomci qvora u, a qvor w je desno od qvorav. Na slici 12(b) prikazani su vremenski intervali trajaa rekurzivnihpoziva DFS za svaki od ovih qvorova. Zapaamo da DFS za potomka, kao xtoje v, aktivna samo u podintervalu vremena za koje je DFS aktivna za pretka,kao xto je u. Specijalno, DFS iz v zavrxava se pre DFS iz u. Prema tome,iz qienice da je v potomak u sledi da je v.Post < u.Post. Pored toga, ako

6.3. OBILASCI GRAFOVA 139

d

d

d

d d

d d

d d

?

?

- -

? ?

? ?

-

-

-

-

a v

Ris. 11. Primer kad DFS usmerenog grafa ne obilazi kom-pletan graf.

je w desno od v, onda poziv DFS iz w ne moe biti aktiviran pre nego xtose zavrxi DFS iz v. Prema tome, ako je v levo od w, onda je v.Post < w.Post.Iako to nije pokazano na slici 12, isti zakuqak je taqan i ako su v i w urazliqitim stablima DFS xume, pri qemu je stablo qvora v levo od stablaqvora w.

¹¸

º·

¹¸

º·

¹¸

º·

u

v w

(a) Tri qvora u DFS stablu

trajae DFS iz v trajae DFS iz w

trajae DFS iz u

(b) Aktivni intervali za ihove pozive DFS

Ris. 12. Odnos izmeu poloaja qvora u DFS stablu i tra-jaa rekurzivnih poziva.

Razmotrimo sada za svaku granu (u, v) odnos odlaznih DFS brojeva qvorovau i v.

(1) Ako je (u, v) grana stabla ili direktna grana, onda je v potomak u, paje v.Post < u.Post.

140 6. GRAFOVSKI ALGORITMI

(2) Ako je (u, v) popreqna grana, onda je zbog toga xto je v levo od u,ponovo v.Post < u.Post.

(3) Ako je (u, v) povratna grana i v 6= u, onda je v pravi predak u iv.Post > u.Post. Meutim, v = u je mogue za povratnu granu, jer je ipeta povratna grana. Prema tome, za povratnu granu (u, v) znamo daje v.Post ≥ u.Post.

Prema tome, dokazano je sledee tvree.

Lema 6.4. Grana (u, v) usmerenog grafa G = (V,E) je povratna ako i samoako prema odlaznoj numeraciji qvor u prethodi qvoru v, odnosno u.Post ≤v.Post.

Pokazaemo sada kako se DFS moe iskoristiti za utvrivae da li jezadati graf acikliqki.

Problem. Za zadati usmereni graf G = (V, E) ustanoviti da li sadriusmereni ciklus.

Lema 6.5. Neka je G = (V, E) usmereni graf, i neka je T DFS stablografa G. Tada G sadri usmereni ciklus ako i samo ako G sadri povratnugranu (u odnosu na T ).

Dokazatel~stvo. Ako je grana (u, v) povratna, onda ona zajedno sa grana-ma stabla na putu od v do u zatvara ciklus. Suprotno tvree je takod-je taqno: ako u grafu postoji ciklus, tada u emu mora da postoji povrat-na grana. Zaista, pretpostavimo da u grafu postoji ciklus koji qine grane(v1, v2), (v2, v3),. . . (vk, v1). Ako je k = 1, odnosno ciklus je peta, onda jegrana (v, v) povratna grana. Ako je pak k > 1, pretpostavimo da ni jednaod grana (v1, v2), (v2, v3),. . . (vk−1, vk) nije povratna. Prema prethodnoj lemije tada v1.Post > v2.Post > · · · > vk.Post, odnosno vk.Post < v1.Post, pa jegrana (vk, v1) povratna. Time je dokazano da u svakom ciklusu postoji povrat-na grana. ¤

Algoritam za proveru da li graf sadri ciklus svodi se na DFS nu-meraciju i proveru postojaa povratne grane na osnovu leme, videti sliku 13.

6.3.2. Pretraga u xirinu. Pretraga u xirinu (ili BFS, xto je skra-enica od breadth–first–search ) je obilazak grafa na sistematiqan naqin,nivo po nivo. Ako polazimo od qvora v, onda se najpre poseuju svi susedi v(deca u stablu pretrage, nivo jedan). Zatim se dolazi do svih "unuka" (ni-vo dva), i tako dae (videti sliku 14). Obilazak se realizuje sliqno kao unerekurzivnoj verziji DFS, sem xto je stek zameen listom FIFO (skraenicaod first–in–first–out queue ). Prilikom obilaska qvorovi se mogu nu-merisati BFS brojevima, sliqno kao pri DFS. Preciznije, qvor w ima BFSbroj k ako je on k-ti qvor oznaqen u toku BFS. BFS stablo grafa moe seformirati ukuqivaem samo grana ka novooznaqenim qvorovima. Algori-tam BFS dat je na slici 15. Zapaa se da ovde nema smisla izlazna obrada

6.3. OBILASCI GRAFOVA 141

Algoritam Acikl(G);

Ulaz: G = (V, E) (usmereni graf).Izlaz: Postoji ciklus (taqno ako G sadri ciklus i netaqno u protivnom).Inicijalizacija: v.Na putu := false za sve qvorove i Postoji ciklus := false;

Pokrenuti DFS iz proizvonog qvora, sa sledeom ulaznom i izlaznom obradom:ulazna obrada:

if iz v izlazi bar jedna grana then

v.Na putu := true;

x.Na putu je taqno ako je x na putu od korena do tekueg qvoraizlazna obrada:

if w.Na putu then Postoji ciklus := true; halt;

if w posledi qvor u spisku suseda v then v.Na putu := false;

Ris. 13. Algoritam za proveru da li graf sadri ciklus.

kao kod DFS; pretraga nema povratak "navixe", ve se kree samo nanie odkorena.

d

d

d

d

d

d

d

ª

?

ª R

R

?

?ª¾

K

Nivo 0

Nivo 1

Nivo 2

Ris. 14. BFS stablo usmerenog grafa.

Lema 6.6. Ako grana (u,w) pripada BFS stablu i qvor u je otac qvora w,onda qvor u ima minimalni BFS broj meu qvorovima iz kojih postoji granaka w.

Dokazatel~stvo. Ako bi u grafu postojala grana (v, w), pri qemu v imamai BFS broj od u, onda bi u trenutku obrade v na listu morao biti stavenqvor w, pa bi grana (v, w) morala biti ukuqena u stablo, suprotno pret-postavci. ¤

Lema 6.7. Put od korena r BFS stabla do proizvonog qvora w kroz BFSstablo najkrai je put od r do w u grafu G.

142 6. GRAFOVSKI ALGORITMI

Algoritam BFS(G, v);

Ulaz: G = (V, E) (neusmereni povezani graf) i v (qvor grafa G).Izlaz: zavisi od primene.begin

oznaqi v;

upixi v u listu; FIFO lista, prvi unutra prvi napoewhile lista je neprazna do

skini prvi qvor w sa liste;izvrxi ulaznu obradu na w; ulazna obrada zavisi od primene BFSfor sve grane (w, x) za koje x nije oznaqen do

oznaqi x;

dodaj (w, x) u stablo T ;

upixi x u listu;end

Ris. 15. Pretraga u xirinu (BFS).

Dokazatel~stvo. Indukcijom po d dokazaemo da do svakog qvora w narastojau d od korena r (jedinstveni) put kroz stablo od r do v ima duinud. Za d = 1 tvree je taqno: grana (r, w) je obavezno deo stabla, pa izmeur i w postoji put kroz stablo duine 1. Pretpostavimo da je tvree taqnoza qvorove koji su na rastojau maem od d od korena, i neka je w neki qvorna rastojau d od korena, tj. postoji niz qvorova w0 = r, w1, w2, . . . , wd = wkoji qine put duine d od r do w. Prema induktivnoj hipotezi put od r dowd−1 kroz stablo ima duinu d − 1. U trenutku obrade qvora wd−1, poxto uG postoji grana (wd−1, wd), ta grana se ukuquje u BFS stablo, pa do qvora wd

postoji put duine d kroz stablo. ¤

Nivo qvora w je duina puta u stablu od korena do w. Pretraga u xirinuobilazi graf nivo po nivo.

Lema 6.8. Ako je (v, w) grana iz E koja ne pripada T , onda ona spaja dvaqvora qiji se nivoi razlikuju najvixe za jedan.

Dokazatel~stvo. Neka je npr. qvor v prvi dostignut pretragom i nekaje egov nivo d. Tada je nivo qvora w vei ili jednak od d. Taj nivo jednak jerastojau w od korena, pa je mai ili jednak od d + 1, jer do w postoji putduine d + 1 (put od korena do v produen granom (v, w)). ¤

Razmotriemo sada nekoliko algoritama za obradu grafova.

6.4. Topoloxko sortiraePretpostavimo da je zadat skup poslova na qiji redosled izvrxavaa su

zadata neka ograniqea. Neki poslovi zavise od drugih, odnosno ne mogu se

6.4. TOPOLOXKO SORTIRAE 143

zapoqeti pre nego xto se ti drugi poslovi zavrxe. Sve zavisnosti su poz-nate, a ci je napraviti takav redosled izvrxavaa poslova koji zadovoavasva zadata ograniqea; drugim reqima, trai se takav raspored, da se poemu svaki posao zapoqie tek kad budu zavrxeni svi poslovi od kojih onzavisi. Potrebno je konstruisati efikasni algoritam za formirae takvograsporeda. Problem se zove topoloxko sortirae. Zadatim poslovima iihovim meuzavisnostima moe se na prirodan naqin pridruiti graf.Svakom poslu pridruuje se qvor, a usmerena grana od posla x do posla ypostoji ako se posao y ne moe zapoqeti pre zavrxetka posla x. Jasno je dagraf mora biti acikliqki, (bez usmerenih ciklusa), jer se u protivnom nekiposlovi nikada ne bi mogli zapoqeti.

Problem. U zadatom usmerenom acikliqkom grafu G = (V, E) sa n qvoro-va numerisati qvorove od 1 do n, tako da ako je proizvoan qvor v numerisansa k, onda svi qvorovi do kojih postoji usmereni put iz v imaju broj vei odk.

Prirodna je sledea induktivna hipoteza.Induktivna hipoteza. Umemo da numerixemo na zahtevani naqin qvo-

rove svih usmerenih acikliqkih grafova sa mae od n qvorova.Bazni sluqaj jednog qvora, odnosno posla, je trivijalan. Kao i obiqno,

posmatrajmo proizvoni graf sa n qvorova, uklonimo jedan qvor, primenimoinduktivnu hipotezu i pokuxajmo da proxirimo numeraciju na polazni graf.Imamo slobodu izbora n-tog qvora. Trebalo bi ga izabrati tako da ostatakposla bude xto jednostavniji. Potrebno je numerisati qvorove. Koji qvor jenajlakxe numerisati? To je oqigledno qvor (posao) koji ne zavisi od drugihposlova, odnosno qvor sa ulaznim stepenom nula; emu se moe dodeliti broj1. Da li se uvek moe pronai qvor sa ulaznim stepenom nula? Intuitivno senamee potvrdan odgovor, jer se sa oznaqavaem negde mora zapoqeti. Sledealema potvruje ovu qienicu.

Lema 6.9. Usmereni acikliqki graf uvek ima qvor sa ulaznim stepenomnula.

Dokazatel~stvo. Ako bi svi qvorovi grafa imali pozitivne ulaznestepene, mogli bismo da krenemo iz nekog qvora "unazad" prolazei graneu suprotnom smeru. Meutim, broj qvorova u grafu je konaqan, pa se u tomobilasku mora u nekom trenutku naii na neki qvor po drugi put, xto znaqida u grafu postoji ciklus. Ovo je meutim suprotno pretpostavci da se radio acikliqkom grafu. Na sliqan naqin zakuquje se da u grafu mora postojatii qvor sa izlaznim stepenom nula. ¤

Pretpostavimo da smo pronaxli qvor sa ulaznim stepenom nula. Numeri-ximo ga sa 1, uklonimo sve grane koje vode iz ega, i numeriximo ostatakgrafa (koji je takoe acikliqki) brojevima od 2 do n (prema induktivnojhipotezi oni se mogu numerisati od 1 do n − 1, a zatim se svaki redni broj

144 6. GRAFOVSKI ALGORITMI

moe poveati za jedan). Vidi se da je posle izbora qvora sa ulaznim stepenomnula, ostatak posla jednostavan.

Realizacija. Jedini problem pri realizaciji je kako pronai qvor saulaznim stepenom nula i kako popraviti ulazne stepene qvorova posle ukla-aa grane. Svakom qvoru moe se pridruiti promeniva (poe) UlStepen,tako da je na poqetku v.UlStepen jednako ulaznom stepenu qvora v. Poqetnevrednosti promeivih UlStepen mogu se dobiti prolaskom kroz skup svihgrana proizvonim redosledom (korixeem DFS, na primer) i poveavaemza jedan w.UlStepen svaki put kad se naie na granu (v, w). Qvorovi sa ulaznimstepenom nula stavaju se u listu (ili stek, xto je jednako dobro). Premalemi 6.9 u grafu postoji bar jedan qvor v sa ulaznim stepenom nula. Qvorv se kao prvi u listi lako pronalazi; on se uklaa iz liste. Zatim se zasvaku granu (v, w) koja izlazi iz v brojaq w.UlStepen smauje za jedan. Akobrojaq pri tome dobije vrednost nula, qvor w stava se u listu. Posle uklaa-a qvora v graf ostaje acikliqki, pa u emu prema lemi 6.9 ponovo postojiqvor sa ulaznim stepenom nula. Algoritam zavrxava sa radom kad lista saqvorovima stepena nula postane prazna, jer su u tom trenutku svi qvorovinumerisani. Algoritam je prikazan na slici 16.

Algoritam Top sort(G);

Ulaz: G = (V, E) (usmereni acikliqki graf).Izlaz: v.Rb za svaki qvor v dobija vrednost u skladu sa topoloxkim sortiraem G.begin

Inicijalizovati v.UlStepen za sve qvorove; npr. pomou DFSG rb := 0;

for i := 1 to n do

if vi.UlStepen = 0 then stavi vi u listu;while lista nije prazna

skini qvor v iz liste;G rb := G rb + 1;

v.Rb := G rb;

for sve grane (v, w) do

w.UlStepen := w.UlStepen− 1;

if w.UlStepen = 0 then stavi w u listu;end

Ris. 16. Algoritam za topoloxko sortirae acikliqkog us-merenog grafa.

Sloenost. Sloenost izraqunavaa poqetnih vrednosti promenivihUlStepen je O(|V |+ |E|). Za nalaee qvora sa ulaznim stepenom nula potreb-no je konstantno vreme (pristup listi). Svaka grana (v, w) razmatra se taqno

6.5. NAJKRAI PUTEVI IZ ZADATOG QVORA 145

jednom, u trenutku kad se v uklaa iz liste. Prema tome, broj promena vred-nosti UlStepen jednak je broju grana u grafu. Vremenska sloenost algoritmaje dakle O(|V |+ |E|), odnosno linearna je funkcija od veliqine ulaza.

6.5. Najkrai putevi iz zadatog qvoraU ovom odeku baviemo se teinskim grafovima. Neka je G = (V, E)

usmereni graf sa nenegativnim teinama pridruenim granama. Ovde emoteine zvati duinama, poxto operixemo duinama puteva kao zbirovi-ma duina grana (ne brojevima grana). Ako je graf neusmeren, moemo gasmatrati usmerenim, pri qemu svakoj egovoj neusmerenoj grani odgovarajudve usmerene grane iste duine, u oba smera. Prema tome, razmatrae u ovomodeku odnosi se i na neusmerene grafove.

Problem. Za dati usmereni graf G = (V, E) i zadati egov qvor v pro-nai najkrae puteve od v do svih ostalih qorova G.

Zbog jednostavnosti emo se baviti samo nalaeem duina najkraihputeva. Algoritmi se mogu proxiriti tako da pronalaze i same najkraeputeve. Postoji mnogo situacija u kojima se pojavuje ovaj problem. Na primer,graf moe odgovarati autokarti: qvorovi su gradovi, a duine grana suduine direktnih puteva izmeu gradova (ili vreme potrebno da se taj putpree, ili izgradi, itd, zavisno od problema).

6.5.1. Acikliqki sluqaj. Pretpostavimo najpre da je graf G acikliq-ki. U tom sluqaju problem je lakxi, i egovo rexee pomoi e nam da gareximo u opxtem sluqaju. Pokuxaemo indukcijom po broju qvorova. Baznisluqaj je trivijalan. Neka je |V | = n. Moemo da iskoristimo topoloxko sor-tirae grafa iz prethodnog odeka. Ako je redni broj qvora v jednak k, ondase qvorovi sa rednim brojevima maim od k ne moraju razmatrati: ne postojinaqin da se do ih doe iz v. Pored toga, redosled dobijen topoloxkim sorti-raem je pogodan za primenu indukcije. Posmatrajmo posledi qvor, odnosnoqvor z sa rednim brojem n. Pretpostavimo (induktivna hipoteza) da znamonajkrae puteve od v do svih ostalih qvorova, sem do z. Oznaqimo duinunajkraeg puta od v do w sa w.SP . Da bismo odredili z.SP , dovono je daproverimo samo one qvorove w iz kojih postoji grana do z. Poxto se naj-krai putevi do ostalih qvorova ve znaju, z.SP jednako je minimumu zbiraw.SP + duzina(w, z), po svim qvorovima w iz kojih vodi grana do z. Da lije time problem rexen? Pitae je da li dodavae qvora z moe da skratiput do nekog drugog qvora. Meutim, poxto je z posledi qvor u topoloxkomredosledu, ni jedan drugi qvor nije dostian iz z, pa se duine ostalih naj-kraih puteva ne meaju. Dakle, uklaae z, nalaee najkraih puteva bezega, i vraae z nazad su osnovni delovi algoritma. Drugim reqima, sledeainduktivna hipoteza rexava problem.

Induktivna hipoteza. Ako se zna topoloxki redosled qvorova, umemoda izraqunamo duine najkraih puteva od v do prvih n− 1 qvorova.

146 6. GRAFOVSKI ALGORITMI

Kad je dat acikliqki graf sa n qvorova (topoloxki ureenih), uklaamon-ti qvor, indukcijom rexavamo smaeni problem, nalazimo najmau meuvrednostima w.SP + duzina(w, z), za sve qvorove w takve da (w, z) ∈ E. Algo-ritam je prikazan na slici 17. Sada emo pokuxati da usavrximo algoritamtako da se topoloxko sortirae obava istovremeno sa nalaeem najkraihputeva. Drugim reqima, ci je objediniti dva prolaza (za topoloxko sorti-rae i nalaee najkraih puteva) u jedan.

Algoritam Acikl najkr putevi(G, v, n);

Ulaz: G = (V, E) (teinski acikliqki graf), v (qvor) i n (broj qvorova).Izlaz: za svaki qvor w ∈ V , w.SP je duina najkraeg puta od v do w.Pretpostavamo da je ve izvrxeno topoloxko sortirae.Poboxani algoritam koji obuhvata i topoloxko sortirae dat je na slici 18.Pre poziva ove procedure stava se z.SP := ∞ za sve qvorove z 6= v.begin

neka je z qvor sa rednim brojem n u topoloxkom redosledu;if z 6= v then

Acikl najkr putevi(G− z, v, n− 1);

G− z dobija se uklaaem z sa svim susednim granama iz Gfor sve qvorove w takve da je (w, z) ∈ E do

if w.SP + duzina(w, z) < z.SP then

z.SP := w.SP + duzina(w, z);

else v.SP := 0;

end

Ris. 17. Algoritam za nalaee duina najkraih putevaod zadatog qvora u acikliqkom grafu.

Razmotrimo naqin na koji se algoritam rekurzivno izvrxava (posle nala-ea topoloxkog redosleda). Pretpostavimo, zbog jednostavnosti, da je rednibroj qvora v u topoloxkom redosledu 1 (qvorovi sa rednim brojem maim odrednog broja v ionako nisu dostini iz v). Prvi korak je poziv rekurzivneprocedure. Procedura zatim poziva rekurzivno samu sebe, sve dok se ne doedo qvora v. U tom trenutku se duina najkraeg puta do v postava na 0,i rekurzija poqie da se "razmotava". Zatim se razmatra qvor u sa rednimbrojem 2; duina najkraeg puta do ega izjednaquje se sa duinom grane(v, u), ako ona postoji; u protivnom, ne postoji put od v do u. Sledei korakje provera qvora x sa rednim brojem 3. U ovom sluqaju u x ulaze najvixedve grane (od v ili u), pa se uporeuju duine odgovarajuih puteva. Umestoovakvog izvrxavaa rekurzije unazad, pokuxaemo da iste korake izvrximopreko niza qvorova sa rastuim rednim brojevima.

Indukcija se primeuje prema rastuim rednim brojevima poqevxi odv. Ovaj redosled oslobaa nas potrebe da redne brojeve unapred znamo, pa

6.5. NAJKRAI PUTEVI IZ ZADATOG QVORA 147

emo biti u stau da izvrxavamo istovremeno oba algoritma. Pretpostavimoda su duine najkraih puteva do qvorova sa rednim brojevima od 1 do mpoznati, i razmotrimo qvor sa rednim brojem m + 1, koji emo oznaqavati saz. Da bismo pronaxli najkrai put do z, moramo da proverimo sve grane kojevode u z. Topoloxki redosled garantuje da sve takve grane polaze iz qvorovasa maim rednim brojevima. Prema induktivnoj hipotezi ti qvorovi su verazmatrani, pa se duine najkraih puteva do ih znaju. Za svaku granu (w, z)znamo duinu w.SP najkraeg puta do w, pa je duina najkraeg puta do zpreko w jednaka w.SP + duzina(w, z). Pored toga, kao i ranije, ne moramoda vodimo raquna o eventualnim promenama najkraih puteva ka qvorovimasa maim rednim brojevima, jer se do ih ne moe doi iz z. Poboxanialgoritam prikazan je na slici 18.

Algoritam Acikl najkr putevi2(G, v);

Ulaz: G = (V, E) (teinski acikliqki graf), v (qvor G).Izlaz: za svaki qvor w ∈ V , w.SP je duina najkraeg puta od v do w.Nerekurzivna verzija prethodnog algoritma koja obava i topoloxko sortirae.begin

for sve qvorove w do

w.SP := ∞;

Inicijalizuj v.UlStepen za sve qvorove; ulazni stepeni qvorova; npr. DFSfor i := 1 to n do

if vi.UlStepen = 0 then stavi vi u listu;v.SP := 0;

while lista nije praznaskini qvor w iz liste;for sve grane (w, z) do

if w.SP + duzina(w, z) < z.SP then

z.SP := w.SP + duzina(w, z);

z.UlStepen := z.UlStepen− 1;

if z.UlStepen = 0 then stavi z u listu;end

Ris. 18. Poboxani algoritam za nalaee duina najkra-ih puteva od zadatog qvora u acikliqkom grafu.

Sloenost. Svaka grana se po jednom razmatra u toku inicijalizacijeulaznih stepenova, i po jednom u trenutku kad se en polazni qvor uklaaiz liste. Pristup listi zahteva konstantno vreme. Svaki qvor se razmatrataqno jednom. Prema tome, vremenska sloenost algoritma u najgorem sluqajuje O(|V |+ |E|).

148 6. GRAFOVSKI ALGORITMI

6.5.2. Opxti sluqaj. Kad graf nije acikliqki, ne postoji topoloxkiredosled, pa se razmatrani algoritmi ne mogu direktno primeniti. Meu-tim, osnovne ideje se mogu iskoristiti i u opxtem sluqaju. Jednostavnostrazmotrenih algoritama posledica je sledee osobine topoloxkog redosleda:

Ako je z qvor sa rednim brojem k, onda (1) ne postoje puteviod z do qvorova sa rednim brojevima maim od k, i (2) nepostoje putevi od qvorova sa rednim brojevima veim od kdo z.

Ova osobina omoguuje nam da naemo najkrai put od v do z, ne vodei raquna oqvorovima koji su posle z u topoloxkom redosledu. Moe li se nekako defin-isati redosled qvorova proizvonog grafa koji bi omoguio nexto sliqno?

Ideja je razmatrati qvorove grafa redom prema duinama najkraih pute-va do ih od v. Te duine se na poqetku, naravno, ne znaju; one se izraqunavajuu toku izvrxavaa algoritma. Najpre proveravamo sve grane koje izlaze iz v.Neka je (v, x) najkraa meu ima. Poxto su po pretpostavci sve duine granapozitivne, najkrai put od v do x je grana (v, x). Duine svih drugih putevado x su vee ili jednake od duine ove grane. Prema tome, znamo najkraiput do x, i to moe da poslui kao baza indukcije. Pokuxajmo da napravi-mo sledei korak. Kako moemo da pronaemo najkrai put do nekog drugogqvora? Biramo qvor koji je drugi najblii do v (x je prvi najblii). Jediniputevi koje treba uzeti u obzir su druge grane iz v ili putevi koji se sastojeod dve grane: prva je (v, x), a druga je grana iz qvora x. Neka je sa duzina(u,w)oznaqena duina grane (u,w). Biramo najmai od izraza duzina(v, y) (y 6= x)ili duzina(v, x) + duzina(x, z) (z 6= v). Jox jednom zakuqujemo da se drugiputevi ne moraju razmatrati, jer je ovo najkrai put za odlazak iz v (izuzevdo x). Moe se formulisati sledea induktivna hipoteza.

Induktivna hipoteza. Za zadati graf i egov qvor v, umemo da prona-emo k qvorova najbliih qvoru v, kao i duine najkraih puteva do ih.

Zapazimo da je indukcija po broju qvorova do kojih su duine najkraihputeva ve izraqunate, a ne po veliqini grafa. Pored toga, pretpostava seda su to qvorovi najblii qvoru v, i da umemo da ih pronaemo. Mi umemo dapronaemo prvi najblii qvor, pa je baza (sluqaj k = 1) rexena. Kad k dobijevrednost |V | − 1, rexen je kompletan problem.

Oznaqimo sa Vk skup koji se sastoji od v i k emu najbliih qvorova.Problem je pronai qvor w koji je najblii qvoru v meu qvorovima van Vk,i pronai najkrai put od v do w. Najkrai put od v do w moe da sarisamo qvorove iz Vk. On ne moe da sadri neki qvor y van Vk, jer bi y bioblii qvoru v od w. Prema tome, da bismo pronaxli qvor w, dovono je daproverimo grane koje spajaju qvorove iz Vk sa qvorovima koji nisu u Vk; svedruge grane se za sada mogu ignorisati. Neka je (u, z) grana takva da je u ∈ Vk

i z /∈ Vk. Takva grana odreuje put od v do z koji se sastoji od najkraeg putaod v do u (prema induktivnoj hipotezi ve poznat) i grane (u, z). Dovono jeuporediti sve takve puteve i izabrati najkrai meu ima, videti sliku 19.

6.5. NAJKRAI PUTEVI IZ ZADATOG QVORA 149

d

d

d

dd

dd

d

dd

d

d

z′

u′u

v

z

Vk

Ris. 19. Nalaee sledeeg najblieg qvora zadatom qvoru v.

Algoritam odreen ovom induktivnom hipotezom izvrxava se na sledeinaqin. U svakoj iteraciji dodaje se novi qvor. To je qvor w za koji je najmaaduina(6.1) min u.SP + duzina(u,w)|u ∈ Vkmeu svim qvorovima w /∈ Vk. Iz ve iznetih razloga, w je zaista (k + 1)-vi(sledei) najblii qvor qvoru v. Prema tome, egovo dodavae produujeinduktivnu hipotezu.

Algoritam je sada kompletno specificiran, ali mu se efikasnost moepoboxati. Osnovni korak algoritma je pronalaee sledeeg najblieg qvo-ra. To se ostvaruje izraqunavaem najkraeg puta prema (6.1). Meutim, nijeneophodno u svakom koraku proveravati sve vrednosti u.SP + duzina(u,w).Veina tih vrednosti ne mea se pri dodavau novog qvora: mogu se promeni-ti samo one vrednosti koje odgovaraju putevima kroz novododati qvor. Mimoemo da pamtimo duine poznatih najkraih puteva do svih qvorova vanVk, i da im popravamo vrednosti samo pri proxirivau Vk. Jedini naqin dase dobije novi najkrai put posle dodavaa w u Vk je da taj put prolazi krozw. Prema tome, treba proveriti sve grane od w ka qvorovima van Vk. Za svakutakvu granu (w, z) uporeujemo duinu w.SP +duzina(w, z) sa vrednoxu z.SP ,i po potrebi popravamo z.SP . Svaka iteracija obuhvata nalaee qvora sanajmaom vrednoxu SP , i popravku vrednosti SP za neke od preostalihqvorova. Ovaj algoritam poznat je kao Dijkstrin algoritam (Dijkstra ).

Realizacija. Potrebno je da pronalazimo najmau vrednost u skupu du-ina puteva i da qesto popravamo duine puteva. Dobra struktura podatakaza nalaee minimalnih elemenata i za popravke duina elemenata je hip.Poxto je potrebno da pronaemo qvor sa najmaom duinom puta do ega,sve qvorove van skupa Vk quvamo u hipu, sa kuqevima jednakim duinamatrenutno najkraih puteva od v do ih. Na poqetku su sve duine puteva semjedne jednake∞, pa redosled elemenata u hipu nije bitan, sem xto v mora biti

150 6. GRAFOVSKI ALGORITMI

na vrhu. Nalaee qvora w je jednostavno: on se uzima sa vrha hipa. Mogu seproveriti sve grane (w, u), i zatim bez texkoa popraviti duine puteva.Meutim, kad se promeni duina puta do nekog qvora z, moe se promenitipoloaj z u hipu. Prema tome, potrebno je na odgovarajui naqin popravatihip (problem je u tome xto hip kao struktura podataka ne omoguuje efikas-no pronalaee zadatog elementa). Locirae qvora z u hipu moe se izvestipomou druge strukture podataka povezane sa hipom. Podaci o svim qvorovi-ma mogu se smestiti u vektor sa pokazivaqima na ihove pozicije u hipu.Nalaee qvora u hipu je zbog toga ekvivalentno pristupau elementu vek-tora. Poxto su elementi hipa qvorovi grafa, prostorna sloenost je O(|V |),xto je prihvativo. Duine puteva mogu samo da opadaju. Ako neki elemenathipa postane mai od oca, on se moe zameivaem pomerati navixe dok muse ne pronae odgovarajui poloaj. To je isti postupak kao i pri obiqnompostupku popravke hipa (pri umetau elementa u hip, na primer). Algoritamza nalaee najkraih puteva od zadatog qvora prikazan je na slici 20.

Algoritam Najkr putevi(G, v);

Ulaz: G = (V, E) (teinski usmereni graf), v (polazni qvor).Izlaz: za svaki qvor w, w.SP je duina najkraeg puta od v do w.Pretpostavka je da su sve duina grana nenegativne.begin

for sve qvorove w do

w.Oznaka := false; oznaqeni qvorovi su u Vkw.SP := ∞;

v.SP := 0;

while postoji neoznaqen qvor do

neka je w neoznaqeni qvor sa najmaom vrednoxu w.SP ;

w.Oznaka := true; ukuqivae w u Vkfor sve grane (w, z) takve da je z neoznaqen do

if w.SP + duzina(w, z) < z.SP then

z.SP := w.SP + duzina(w, z);

end

Ris. 20. Dijkstrin algoritam za nalaee duina najkra-ih puteva od zadatog do svih ostalih qvorova u grafu.

Sloenost. Popravka duine puta zahteva O(log m) uporeivaa, gdeje m veliqina hipa. Ukupno ima |V | iteracija, i zbog toga |V | brisaa izhipa. Popravke treba izvrxiti najvixe |E| puta (jer svaka grana moe daprouzrokuje najvixe jednu popravku), pa je potrebno izvrxiti najvixe O(|E| log |V |)uporeivaa u hipu. Prema tome, vremenska sloenost algoritma je O((|E|+

6.5. NAJKRAI PUTEVI IZ ZADATOG QVORA 151

|V |) log |V |). Zapaa se da je algoritam sporiji nego algoritam koji isti prob-lem rexava za acikliqke grafove: u drugom sluqaju sledei qvor se uzima iz(proizvono ureene) liste, i nikakve popravke nisu potrebne.

Primer 6.1. Primer izvrxavaa algoritma Najkr putevi za nalaeenajkraih puteva od zadatog qvora u grafu dat je na slici 21. Prva vrstaodnosi se samo na puteve od jedne grane iz v. Bira se najkrai put, u ovomsluqaju on vodi ka qvoru a. Druga vrsta pokazuje popravke duina putevaukuqujui sada sve puteve od jedne grane iz v ili a, i najkrai put sadavodi do c. U svakoj liniji bira se novi qvor, i prikazuju se duine trenutnihnajkraih puteva od v do svih qvorova. Podebana su rastojaa za koja sepouzdano zna da su najkraa.

d

d

d

d d

d d

d d

?

?

-

? ?

? ?

- -

¾

¾ ¾

a 1 v 5 b

2 9 3

e2d4c

9 4 1

32f g h

v a b c d e f g ha 0 1 5 ∞ 9 ∞ ∞ ∞ ∞c 0 1 5 3 9 ∞ ∞ ∞ ∞b 0 1 5 3 7 ∞ 12 ∞ ∞d 0 1 5 3 7 8 12 ∞ ∞e 0 1 5 3 7 8 12 11 ∞h 0 1 5 3 7 8 12 11 9g 0 1 5 3 7 8 12 11 9f 0 1 5 3 7 8 12 11 9

Ris. 21. Primer izvrxavaa algoritma za nalaee najkra-ih puteva od zadatog qvora.

Komentar. Ovakav tip algoritma se ponekad zove pretraga sa prio-ritetom | svakom qvoru dodeuje se prioritet (u ovom sluqaju trenutnonajmae poznato rastojae od v), pa se qvorovi obilaze redosledom odree-nim prioritetom. Kad se zavrxi razmatrae qvora, proveravaju se sve emususedne grane. Ta provera moe da dovede do promene nekih prioriteta. Naqinizvoea tih promena je deta po kome se jedna pretraga sa prioritetom ra-zlikuje od druge. Pretraga sa prioritetom sloenija je od obiqne pretrage.Ona je korisna kod problema sa teinskim grafovima.

Najkrae puteve od v do svih ostalih qvorova naxli smo tako xto smoputeve pronalazili jedan po jedan. Svaki novi put je odreen jednom granom,koja produuje prethodno poznati najkrai put do novog qvora. Sve te graneformiraju stablo sa korenom v. Ovo stablo zove se stablo najkraih puteva,i vano je za rexavae mnogih problema sa putevima. Ako su teine svihgrana jednake, onda je stablo najkraih puteva ustvari BFS stablo sa korenomu qvoru v. U primeru na slici 21 podebane su grane koje pripadaju stablunajkraih puteva.

152 6. GRAFOVSKI ALGORITMI

6.6. Minimalno povezujue stabloRazmotrimo sistem raqunara koje treba povezati optiqkim kablovima.

Potrebno je obezbediti da postoji veza izmeu svaka dva raqunara. Poznatisu troxkovi postavaa kabla izmeu svaka dva raqunara. Ci je projekto-vati mreu optiqkih kablova tako da cena mree bude minimalna. Sistemraqunara moe biti predstaven grafom qiji qvorovi odgovaraju raqunari-ma, a grane potencijalnim vezama izmeu raqunara, sa odgovarajuom (pozi-tivnom) cenom. Problem je pronai povezani podgraf (sa granama koje odgo-varaju postavenim optiqkim kablovima), koji sadri sve qvorove, takav damu suma cena grana bude minimalna. Nije texko videti da taj podgraf morada bude stablo. Ako bi podgraf imao ciklus, onda bi se iz ciklusa moglaukloniti jedna grana | time se dobija podgraf koji je i dae povezan, aima mau cenu, jer su cene grana pozitivne. Traeni podgraf zove se mi-nimalno povezujue stablo (MCST, skraenica od minimum–cost spanningtree ) i ima mnogo primena. Nax ci je konstrukcija efikasnog al-goritma za nalaee MCST. Zbog jednostavnosti, pretpostavimo da su cenegrana razliqite. Ova pretpostavka ima za posledicu da je MCST jedinstveno,xto olakxava rexavae problema. Bez ove pretpostavke algoritam ostaje ne-promeen, izuzev xto, kad se naie na grane jednake teine, proizvono sebira jedna od ih.

Problem. Za zadati neusmereni povezani teinski graf G = (V, E) kon-struisati povezujue stablo T minimalne cene.

U ovom kontekstu teine grana teinskog grafa G su ustvari ihovecene. Prirodno je koristiti sledeu induktivnu hipotezu.

Induktivna hipoteza (1). Umemo da konstruixemo MCST za povezanigraf sa mae od m grana.

Bazni sluqaj je trivijalan. Ako je zadat problem MCST sa m grana, kakose on moe svesti na problem sa mae od m grana? Tvrdimo da grana najmaeteine mora biti ukuqena u MCST. Ako ona ne bi bila ukuqena, onda bieno dodavae stablu MCST zatvorilo neki ciklus; uklaaem proizvonedruge grane iz tog ciklusa ponovo se dobija stablo, ali mae teine | xtoje u suprotnosti sa pretpostavkom o minimalnosti MCST. Dakle, mi znamojednu granu koja mora da pripada MCST. Moemo da je uklonimo iz grafa iprimenimo induktivnu hipotezu na ostatak grafa, koji sada ima mae od mgrana. Da li je ovo regularna primena indukcije?

Problem je u tome xto posle uklaaa grane, preostali problem vixenije ekvivalentan polaznom. Prvo, izbor jedne grane ograniqava mogunostiizbora drugih grana. Drugo, posle uklaaa grane graf ne mora da ostanepovezan.

Rexee nastalog problema je u precizirau induktivne hipoteze. Miznamo kako da izaberemo prvu granu, ali ne moemo da je uklonimo i prosto

6.6. MINIMALNO POVEZUJUE STABLO 153

zaboravimo na u, jer ostali izbori zavise od e. Dakle, umesto da granu uk-lonimo, treba da je oznaqimo, i da tu qienicu, en izbor, koristimo daeu algoritmu. Algoritam se izvrxava tako xto se jedna po jedna grana birai dodaje u MCST. Prema tome, indukcija je ne prema veliqini grafa, negoprema broju izabranih grana u zadatom (fiksiranom) grafu.

Induktivna hipoteza (2). Za zadati povezan graf G = (V, E) umemo dapronaemo podgraf T sa k grana (k < |V | − 1), tako da je stablo T podgrafMCST grafa G.

Bazni sluqaj za ovu hipotezu smo ve razmotrili | on se odnosi na izborprve grane. Pretpostavimo da smo pronaxli stablo T koje zadovoava in-duktivnu hipotezu i da je potrebno da T proxirimo narednom granom. Kakoda pronaemo novu granu za koju emo biti sigurni da pripada MCST? Pri-meniemo sliqan pristup kao i pri izboru prve grane. Za T se ve zna da jedeo konaqnog MCST. Zbog toga u MCST mora da postoji bar jedna grana kojapovezuje neki qvor iz T sa nekim qvorom u ostatku grafa. Pokuxaemo dapronaemo takvu granu. Neka je Ek skup svih grana koje povezuju T sa qvorovi-ma van T . Tvrdimo da grana sa najmaom cenom iz Ek pripada MCST. Oznaqi-mo tu granu sa (u, v) (videti sliku 22; grane stabla T su podebane). Poxtoje MCST povezujue stablo, ono sadri taqno jedan put od u do v (izmeu sva-ka dva qvora u stablu postoji taqno jedan put). Ako grana (u, v) ne pripadaMCST, onda ona ne pripada ni tom putu od u do v. Meutim, poxto u pripada,a v ne pripada T , na tom putu mora da postoji bar jedna grana (x, y) takva dax ∈ T i y /∈ T . Cena ove grane vea je od cene (u, v), jer je cena (u, v) naj-maa medu cenama grana koje povezuju T sa ostatkom grafa. Sada moemo daprimenimo sliqno zakuqivae kao pri izboru prve grane. Ako dodamo (u, v)stablu MCST, a izbacimo (x, y), dobijamo povezujue stablo mae cene, xto jekontradikcija.

t t

tt

t

t t

t

t

t

t

t

t

t

uv

x

y

Ris. 22. Nalaee sledee grane minimalnog povezujuegstabla (MCST).

154 6. GRAFOVSKI ALGORITMI

Realizacija. Opisani algoritam sliqan je algoritmu za nalaee naj-kraih puteva od zadatog qvora iz prethodnog odeka. Prva izabrana granaje grana sa najmaom cenom. T se definixe kao stablo sa samo tom jednomgranom. U svakoj iteraciji pronalazi se grana koja povezuje T sa nekim qvoromvan T , a ima najmau cenu. U algoritmu za nalaee najkraih puteva odzadatog qvora traili smo najkrai put do qvora van T . Prema tome, jedinarazlika izmeu MCST algoritma i algoritma za nalaee najkraih puteva jeu tome xto se minimum trai ne po duini puta, nego po ceni grane. Ostatakalgoritma prenosi se praktiqno bez promene. Za svaki qvor w van T pamtimocenu grane minimalne cene do w od nekog qvora iz T , odnosno ∞ ako takvagrana ne postoji. U svakoj iteraciji mi na taj naqin biramo granu najmaecene i povezujemo odgovarajui qvor w sa stablom T . Zatim proveravamo svegrane susedne qvoru w. Ako je cena neke takve grane (w, z) (za z /∈ T ) maa odcene trenutno najjeftinije poznate grane do z, onda popravamo cenu qvoraz. Algoritam je prikazan na slici 23.

Sloenost. Sloenost ovog algoritma identiqna je sloenosti algo-ritma za nalaee najkraih rastojaa od zadatog qvora iz prethodnog ode-ka, O((|E|+ |V |) log |V |).

Primer 6.2. Algoritam za konstrukciju MCST ilustrovaemo primeromna slici 24. Qvor u prvoj koloni tabele je onaj koji je dodat u odgovarajuemkoraku. Prvi dodati qvor je v, i u prvoj vrsti navedene su sve grane iz v sa svo-jim cenama. U svakoj vrsti bira se grana sa najmaom cenom. Spisak trenutnonajboih grana i ihovih cena poprava se u svakom koraku (prikazani susamo krajevi grana). Na slici su grane grafa koje pripadaju MCST podebane.

Komentar. Algoritam za konstrukciju MCST je primer, iako ne sasvimqist, pohlepnog metoda. Pretpostavimo da radimo sa skupom elemenata ko-jima su pridruene cene, i da je ci pronai skup elemenata se maksimalnom(ili minimalnom) cenom koji zadovoava neka ograniqea. U problemu MCSTelementi su grane grafa, a ograniqee je da grane odgovaraju povezujuemstablu. Suxtina pohlepnog metoda je u tome da se u svakom koraku uzima-ju elementi sa najveom cenom. U algoritmu MCST uveli smo neka dodatnaograniqea pri izboru grana: razmatrane su samo grane povezane sa tekuimstablom. Zbog toga algoritam nije qisti primer pohlepnog algoritma. MCSTse moe konstruisati i na drugi naqin, izborom grane sa najmaom cenomu svakom koraku, uz ograniqee da ta grana ne zatvara ciklus. Preciznije,izabrana grana treba da povezuje dva qvora iz razliqitih stabala trenutnexume; polazi se od xume sa |V | qvorova bez grana; za objediavae stabala uvea koristi se struktura podataka za nalaee unija iz odeka 3.7). Pohlep-ni metod ne vodi uvek optimalnom rexeu. On je obiqno samo heuristika zanalaee suboptimalnih rexea. Ponekad, meutim, kao u primeru nalaeaMCST, pohlepni metod pronalazi najboe rexee.

6.6. MINIMALNO POVEZUJUE STABLO 155

Algoritam MCST(G);

Ulaz: G (teinski neusmereni graf).Izlaz: T (minimalno povezujue stablo grafa G).begin

Na poqetku je T prazan skup;

for sve qvorove w do

w.Oznaka := false; w.Oznaka je true ako je w u Tw.Cena := ∞;

neka je (x, y) grana sa najmaom cenom u G;

x.Oznaka := true; y e biti oznaqeno u glavnoj petifor sve grane (x, z) do

z.Grana := (x, z); grana najmae cene od T do zz.Cena := cena(x, z); cena grane z.Grana

while postoji neoznaqen qvor do

neka je w neoznaqeni qvor sa najmaom vrednoxu w.Cena;

if w.Cena = ∞ then

print "G nije povezan"; halt;

else

w.Oznaka := true;

dodaj w.Grana u T ;

sada popravamo cene neoznaqenih qvorova povezanih sa wfor sve grane (w, z) do

if not z.Oznaka then

if cena(w, z) < z.Cena then

z.Grana := (w, z);

z.Cena := cena(w, z);

end

Ris. 23. Algoritam za nalaee minimalnog povezujueg stabla.

d

d

d

d d

d d

d da 1 v 6 b

2 9 3

e7d4

c

10 12 51113

f g h

v a b c d e f g h

v − v(1) v(6) ∞ v(9) ∞ ∞ ∞ ∞a − − v(6) a(2) v(9) ∞ ∞ ∞ ∞c − − v(6) − c(4) ∞ c(10) ∞ ∞d − − v(6) − − d(7) c(10) d(12) ∞b − − − − − b(3) c(10) d(12) ∞e − − − − − − c(10) d(12) e(5)

h − − − − − − c(10) h(11) −f − − − − − − − h(11) −g − − − − − − − − −

Ris. 24. Primer izvrxavaa algoritma za nalaee MCST.

156 6. GRAFOVSKI ALGORITMI

6.7. Svi najkrai puteviSada emo razmotriti problem izraqunavaa najkraih puteva izmeu

svaka dva qvora u grafu.Problem. Dat je teinski graf G = (V,E) (usmereni ili neusmereni) sa

nenegativnim teinama (duinama) grana. Pronai puteve minimalne duineizmeu svaka dva qvora.

Ponovo, poxto govorimo o najkraim putevima, teine grana zovemo dui-nama. Ovo je problem nalaea svih najkraih puteva. Zbog jednostavnostiemo se zadovoiti nalaeem duina svih najkraih puteva, umesto samihputeva. Pretpostavamo da je graf usmeren; sve xto e biti reqeno vai i zaneusmerene grafove. Pored toga, pretpostava se da su duine grana nenega-tivne.

Kao i obiqno, pokuxajmo sa direktnim induktivnim pristupom. Moe sekoristiti indukcija po broju grana ili qvorova. Kako se meaju najkraiputevi u grafu posle dodavaa nove grane (u,w)? Nova grana moe pre svegada predstava krai put izmeu qvorova u i w. Pored toga, moe se promenitinajkrai put izmeu proizvona druga dva qvora v1 i v2. Da bi se ustanoviloima li promene, treba sa prethodno poznatom najmaom duinom puta od v1

do v2 uporediti zbir duina najkraeg puta od v1 do u, grane (u,w) i duinenajkraeg puta od w do v2. Ukupno, za svaku novu granu potrebno je izvr-xiti O(|V |2) provera, pa je sloenost ovakvog algoritma u najgorem sluqajuO(|E||V |2). Poxto je broj grana najvixe O(|V |2), sloenost ovog algoritma jeO(|V |4).

Kako se meaju najkrai putevi ako se u graf doda novi qvor u? Potrebnoje da najpre pronai duine najkraih puteva od u do svih ostalih qvorova,i od svih ostalih qvorova do u. Poxto su duine najkraih puteva koji nesadre u ve poznate, najkrai put od u do w moemo da pronaemo na sledeinaqin. Potrebno je da odredimo samo prvu granu na tom putu. Ako je to grana(u, v), onda je duina najkraeg puta od u do w jednaka zbiru duine grane(u, v) i duine najkraeg puta od v do w, koja je ve poznata. Potrebno je dakleda uporedimo ove duine za sve grane susedne sa u, i da meu ima izaberemonajmau. Najkrai put od w do u moe se pronai na sliqan naqin. Ali tosve nije dovono. Ponovo je potrebno da za svaki par qvorova proverimo dali izmeu ih postoji novi krai put kroz novi qvor u. Za svaka dva qvorav1 i v2, da bi se ustanovilo ima li promene, treba sa prethodno poznatom na-jmaom duinom puta od v1 do v2 uporediti zbir duina najkraeg puta odv1 do u i duine najkraeg puta od u do v2. To je ukupno O(|V |2) provera isabiraa posle dodavaa svakog novog qvora, pa je sloenost ovakvog algo-ritma u najgorem sluqaju O(|V |3). Ispostava se da je efikasnija indukcijapo broju qvorova nego po broju grana. Meutim, postoji jox boa induktivnakonstrukcija za rexavae ovog problema.

Ideja je da se ne mea broj qvorova ili grana, nego da se uvedu ograniqeana tip dozvoenih puteva. Indukcija se izvodi po opadajuem broju takvih

6.7. SVI NAJKRAI PUTEVI 157

ograniqea, tako da na kraju dolaze u obzir svi mogui putevi. Numeriximoqvorove od 1 do |V |. Put od u do w zove se k-put ako su redni brojevi svihqvorova na putu (izuzev u i w) mai ili jednaki od k. Specijalno, 0-put sesastoji samo od jedne grane (poxto se ni jedan drugi qvor ne moe pojavitina putu).

Induktivna hipoteza. Umemo da odredimo duine najkraih putevaizmeu svaka dva qvora, pri qemu su dozvoeni samo k-putevi, za k < m.

Baza indukcije je sluqaj m = 1, kad se razmatraju samo direktne granei rexee je oqigledno. Pretpostavimo da je induktivna hipoteza taqna i dahoemo da je proxirimo na k ≤ m. Jedini novi putevi koje treba da razmot-rimo su m-putevi. Treba da pronaemo najkrae m-puteve izmeu svaka dvaqvora i da proverimo da li oni poboxavaju k-puteve za k < m. Neka je vm

qvor sa rednim brojem m. Proizvoan najkrai m-put sadri vm najvixe jed-nom. Najkrai m-put izmeu u i v sastoji se od najkraeg (m− 1)-puta od u dovm, i najkraeg (m− 1)-puta od vm do v. Prema induktivnoj hipotezi mi veznamo duine najkraih k-puteva za k < m, pa je dovono da saberemo ove dveduine (i zbir uporedimo sa duinom najkraeg (m − 1)-puta od u do v) dabismo pronaxli duinu najkraeg m-puta od u do v. Ovaj algoritam je nex-to bri od prethodnog (za konstantni faktor), a lakxe ga je i realizovati,videti sliku 25.

Algoritam Svi Najkr putevi(W );

Ulaz: W (n× n matrica povezanosti koja predstava teinski graf).W [x, y] je teina grane (x, y), ako ona postoji, odnosno ∞ u protivnom.W [x, x] je 0 za sve qvorove xIzlaz: Na kraju matrica W sadri duine najkraih puteva.begin

for m := 1 to n do indukcija je po parametru mfor x := 1 to n do

for y := 1 to n do

if W [x, m] + W [m, y] < W [x, y] then

W [x, y] := W [x, m] + W [m, y]

end

Ris. 25. Algoritam za nalaee duina svih najkraihputeva u grafu.

Unutraxe dve pete koriste se za proveru svih parova qvorova. Zapaase da se ova provera moe izvrxavati sa parovima qvorova proizvonim re-dosledom, jer je svaka provera nezavisna od ostalih. Ovakva fleksibilnost jevana, na primer, kod paralelnih algoritama.

158 6. GRAFOVSKI ALGORITMI

Sloenost. Za svako m algoritam izvrxava jedno sabirae i jedno upo-reivae za svaki par qvorova. Broj koraka indukcije je |V |, pa je ukupan brojsabiraa, odnosno uporeivaa, najvixe |V |3. Prisetimo se da je vremenskasloenost algoritma za nalaee duina najkraih puteva od jednog qvoraO(|E| log |V |). Ako je graf gust, pa je broj grana Ω(|V |2), onda je opisani algo-ritam efikasniji od izvrxavaa za svaki qvor algoritma za najkrae puteveod datog qvora. Iako je mogue realizovati algoritam za najkrae puteve odjednog qvora sloenosti O(|V |2) (videti zadatak 6.31), a time i algoritamsloenosti O(|V |3) za nalaee svih najkraih rastojaa, algoritam iz ovogodeka boi je za guste grafove zbog svoje jednostavne realizacije. S drugestrane, ako graf nije gust (pa ima na primer O(|V |) grana), onda je boa vre-menska sloenost O(|E||V | log |V |) vixe (|V |) puta upotrebenog algoritma zanajkrae puteve od jednog qvora.

6.8. Tranzitivno zatvoreeZa zadati usmereni graf G = (V, E) egovo tranzitivno zatvoree

C = (V, F ) je usmereni graf u kome grana (u,w) izmeu qvorova u i w postojiako i samo ako u G postoji usmereni put od u do w. Postoji mnogo primenatranzitivnog zatvorea, pa je vano imati efikasni algoritam za egovonalaee.

Problem. Pronai tranzitivno zatvoree zadatog usmerenog grafa G =(V, E).

Ovaj problem rexiemo redukcijom (svoeem) na drugi problem. Dru-gim reqima pokazaemo kako se moe proizvoni ulaz za problem tranzitivnozatvoree svesti na ulaz za drugi problem, koji umemo da reximo. Posle togarexee drugog problema transformixemo u rexee problema tranzitivnogzatvorea. Problem o kome je req je nalaee svih najkraih puteva.

Neka je G′ = (V, E′) kompletni usmereni graf (graf kod koga za svaki parqvorova postoje obe grane, u oba smera). Grani e ∈ E′ dodeuje se duina 0 akoje e ∈ E, odnosno 1 u protivnom. Sada za graf G′ rexavamo problem nalaeasvih najkraih puteva. Ako u G postoji put izmeu v i w, onda je u G′ egovaduina 0. Prema tome, put izmeu v i w u G postoji ako i samo ako je duinanajkraeg puta izmeu v i w u G′ jednaka 0. Drugim reqima, rexee prob-lema svih najkraih puteva neposredno se transformixe u rexee problematranzitivnog zatvorea.

Ideja korixea redukcije jednog problema na drugi detanije je raz-raena u poglavu 10. Ovde redukciju koristimo sa ciem da je kao tehnikuilustrujemo na jednostavnom primeru. Nije texko prepraviti algoritam za svenajkrae puteve, tako da direktno rexava problem tranzitivnog zatvorea,videti sliku 26.

Qienica da moemo da svedemo jedan problem na drugi znaqi da je prviproblem opxtiji od drugog, odnosno da je drugi problem specijalni sluqaj

6.8. TRANZITIVNO ZATVOREE 159

Algoritam Tranzit zatvorenje(A);

Ulaz: A (n× n matrica povezanosti koja predstava usmereni graf).A[x, y] je true ako grana (x, y) pripada grafu, odnosno false u protivnom.A[x, x] je true za sve qvorove xIzlaz: Na kraju matrica A predstava tranzitivno zatvoree grafa.begin

for m := 1 to n do indukcija je po parametru mfor x := 1 to n do

for y := 1 to n do

if A[x, m] and A[m, y] then A[x, y] := true

ovaj korak je popraven u sledeem algoritmuend

Ris. 26. Algoritam za nalaee tranzitivnog zatvorea grafa.

prvog. Obiqno su opxtija rexea skupa, sloenija. Mi smo videli mno-go primera gde je opxtiji problem lakxe rexiti; ipak, da bismo vixe do-bili, moramo vixe i da platimo. Posle korixea redukcije preporuqivoje pokuxati sa popravkom dobijenog rexea, koristei specijalne osobineproblema.

Razmotrimo osnovni korak algoritma, naredbu if . Ona se sastoji od dveprovere, A[x,m] i A[m, y]. Nexto se preduzima samo ako su oba uslova ispue-na. Ova if naredba izvrxava se n puta za svaki par qvorova. Svaka popravkaove naredbe vodila bi bitnoj popravci algoritma. Moraju li se svaki putproveravati oba uslova? Prva provera zavisi samo od x i m, a druga zavisisamo od m i y. Zbog toga se prva provera moe za fiksirane x i m izvrxitisamo jednom (umesto n puta). Ako prvi uslov nije ispuen, onda se drugi nemora proveravati ni za jednu vrednost y. Ako je pak prvi uslov ispuen, ondase egova ispuenost ne mora ponovo proveravati. Ova promena je ugraena upoboxani algoritam na slici 27. Asimptotska sloenost ostaje nepromen-jena, ali se algoritam izvrxava priblino dva puta bre.

Realizacija. Realizacija algoritma je direktna. Rezultat unutraxepete je da je na vrstu x matrice A primeena or (ili) operacija sa vrstomm (elemenat po elemenat). Mnogi raqunari mogu da izvrxe istovremeno vixebitskih operacija or. Zbog toga se or operacija sa vrstama moe izvrxitibre nego vixe bitskih or operacija. U praksi je dakle broj or operacijan3/w, gde je w veliqina reqi na raqunaru (broj bita na koje se moe istovre-meno primeniti or operacija). Ovo je vrlo jednostavan primer paralelnogalgoritma.

160 6. GRAFOVSKI ALGORITMI

Algoritam Tranzit zatvorenje2(A);

Ulaz: A (n× n matrica povezanosti koja predstava usmereni graf).A[x, y] je true ako grana (x, y) pripada grafu, odnosno false u protivnom.A[x, x] je true za sve qvorove xIzlaz: Na kraju matrica A predstava tranzitivno zatvoree grafa.begin

for m := 1 to n do indukcija je po parametru mfor x := 1 to n do

if A[x, m] then

for y := 1 to n do

if A[m, y] then A[x, y] := true

end

Ris. 27. Poboxani algoritam za nalaee tranzitivnogzatvorea grafa.

6.9. UparivaeZa zadati neusmereni graf G = (V, E) uparivae je skup disjunktnih

grana (grana bez zajedniqkih qvorova). Ovo ime potiqe od qienice da se granemogu shvatiti kao parovi qvorova. Bitno je da svaki qvor pripada najvixejednoj grani | to je monogamno uparivae. Qvor koji nije susedan ni jednojgrani iz uparivaa zove se neupareni qvor; kae se takoe da qvor ne pri-pada uparivau. Savrxeno uparivae je uparivae u kome su svi qvoroviupareni.Optimalno uparivae je uparivae sa maksimalnim brojem grana.Maksimalno uparivae je pak uparivae koje se ne moe proxiriti doda-vaem nove grane. Problemi koji se svode na uparivae pojavuju se u mnogimsituacijama, ne samo socijalnim. Mogu se uparivati radnici sa radnim mes-tima, maxine sa delovima, grupe studenata sa uqionicama, itd.

Problem nalaea optimalnog uparivaa za proizvoan graf je teakproblem. U ovom odeku ograniqiemo se na dva specijalna sluqaja. Prvi odih nije tako vaan | radi se o uparivau u vrlo gustim grafovima. Meu-tim, rexee tog problema ilustruje interesantan pristup, koji se moe uop-xtiti da bi se doxlo do rexea problema uparivaa za bipartitne grafove.

6.9.1. Savrxeno uparivae u vrlo gustim grafovima. U ovom pri-meru razmotriemo specijalan sluqaj problema savrxenog uparivaa. Neka jeG = (V,E) neusmereni graf kod koga je |V | = 2n i stepen svakog qvora jebar n. Prikazaemo algoritam za nalaee savrxenog uparivaa u ovakvimgrafovima. Posledica je da ako graf zadovoava navedene uslove, onda u e-mu uvek postoji savrxeno uparivae. Koristiemo indukciju po veliqini muparivaa. Bazni sluqaj m = 1 rexava se formiraem uparivaa veliqinejedan od proizvone grane grafa. Pokazaemo da se proizvono uparivaekoje nije savrxeno moe proxiriti ili dodavaem jedne grane ili zamenom

6.9. UPARIVAE 161

jedne grane dvema novim granama. U oba sluqaja poveava se veliqina upari-vaa za jedan.

Posmatrajmo uparivae M u G sa m grana, pri qemu je m < n. Najpreproveravamo sve grane van uparivaa M da ustanovimo da li se neka od ihmoe dodati u M . Ako pronaemo takvu granu, problem je rexen | naenoje vee uparivae. U protivnom, M je maksimalno uparivae. Ako M nijesavrxeno uparivae, postoje bar dva neuparena qvora v1 i v2. Iz ta dva qvo-ra po pretpostavci izlazi najmae 2n grana. Sve te grane vode ka uparenimqvorovima (u protivnom bi se u uparivae mogla dodati nova grana, suprotnopretpostavci da je ono maksimalno). Poxto u M ima mae od n grana, a iz v1 iv2 izlazi bar 2n grana, u uparivau M postoji grana (u1, u2) koja je susedna sa("pokriva") bar tri grane iz v1 i v2. Pretpostavimo, bez smaea opxtosti,da su to grane (u1, v1), (u1, v2) i (u2, v1), videti sliku 28(a). Lako je videti dase uklaaem grane (u1, u2) iz M , i dodavaem dveju novih grana (u1, v2) i(u2, v1) dobija vee uparivae, slika 28(b).

d d

dd v1 v2

u1 u2

(a)d d

dd v1 v2

u1 u2

(b)

Ris. 28. Proxirivae uparivaa.

Opisani algoritam je jox jedan primer pohlepnog pristupa. U svakomkoraku proxirivaa uparivaa za jednu granu ukuqeno je najvixe tri grane.U ovoj situaciji je to bilo dovono; meutim, u opxtem sluqaju je nalaeedobrog uparivaa tei problem. Ukuqivae jedne grane u uparivae utiqena izbor drugih grana qak i u udaenim delovima grafa. Pokazaemo sadakako se ovaj pristup moe primeniti na drugi specijalni sluqaj problemauparivaa.

6.9.2. Bipartitno uparivae. Neka je G = (V, E, U) bipartitni grafu kome su V i U disjunktni skupovi qvorova, a E je skup grana koje povezujuneke qvorove iz V sa nekim qvorovima iz U .

Problem. Pronai uparivae sa maksimalnim brojem grana u bipartit-nom grafu G.

Jedan od naqina da se formulixe problem je sledei: V je skup devojaka,U je skup mladia, a E 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, dotrenutka kad daa uparivaa vixe nisu mogua | u nadi da e nam strategija

162 6. GRAFOVSKI ALGORITMI

obezbediti optimalno ili rexee blisko optimalnom. Moe se, na primer,pokuxati sa pohlepnim pristupom, uparujui najpre qvorove malog stepena, unadi da e preostali qvorovi i u kasnijim fazama imati neuparene partnere.Drugim reqima, najpre uparujemo stidive osobe, one sa mae poznanstava, a oostalima brinemo kasnije. Umesto da se bavimo analizama ovakvih strategija(xto je teak problem), pokuxaemo sa pristupom korixenim kod prethodnogproblema. Pretpostavimo da se polazi od maksimalnog uparivaa, koje ne mo-ra biti optimalno uparivae. Moemo li ga nekako popraviti? Pogledajmoprimer na slici 29(a), na kome je uparivae prikazano podebanim granama.Jasno je da se uparivae moe poveati zamenom grane 2A sa dve grane 1A i2B. Ovo je transformacija sliqna onoj koju smo primenili u prethodnom prob-lemu. Meutim, ne moramo se ograniqiti zamenama jedne grane dvema granama.Ako pronaemo sliqnu situaciju u kojoj se nekih k grana mogu zameniti sa k+1grana, dobijamo algoritam veih mogunosti. Na primer, uparivae se moedae poveati zamenom grana 3D i 4E sa tri grane 3C, 4D i 5E, slika 29(b).

d

d1

A

d d d d d

d d d d d2 3 4 5 6

B C D E F

(a)

d

d1

A

d d d d d

d d d d d2 3 4 5 6

B C D E F

(b)

Ris. 29. Proxirivae bipartitnog uparivaa.

Razmotrimo detanije ove transformacije. Ci je poveati broj upare-nih qvorova. Polazimo od neuparenog qvora v i pokuxavamo da ga uparimo.Poxto polazimo od maksimalnog uparivaa, svi susedi qvora v su ve upa-reni; zbog toga smo prinueni da iz uparivaa uklonimo neku od grana koje"pokrivaju" susede v. Pretpostavimo da smo izabrali qvor u, susedan sa v,koji je prethodno bio uparen sa qvorom w, na primer. Raskidamo uparivae usa w, i uparujemo v sa u. Sada preostaje da pronaemo para za qvor w. Ako jew povezan granom sa nekim neuparenim qvorom, onda smo postigli ci; takavje bio prvi od gorih sluqajeva. Ako to nije sluqaj, onda nastavamo dae saraskidaem parova i formiraem novih parova. Da bismo na osnovu ove idejekonstruisali algoritam, potrebno je da uradimo dve stvari: da obezbedimo dase procedura uvek zavrxava, i da pokaemo da ako je poboxae mogue, ondae ga procedura sigurno pronai. Najpre emo formalizovati navedenu ideju.

Alternirajui put P za dato uparivae M je put od neuparenog qvorav ∈ V do neuparenog qvora u ∈ U , pri qemu su grane puta P naizmeniqno uE \ M , odnosno M . Drugim reqima, prva grana (v, w) puta P ne pripada M(jer je v neuparen), druga grana (w, x) pripada M , i tako dae do posledegrane (z, u) puta P koja ne pripada M . Zapazimo da su upravo alternirajui

6.9. UPARIVAE 163

putevi u gorim primerima omoguavali poveavae uparivaa. Broj granana putu P mora biti neparan, jer P polazi iz V i zavrxava u U . Pored toga,meu granama puta P , grana u E \M ima za jednu vixe od grana u M . Prematome, ako iz uparivaa izbacimo sve grane P koje su u M , a ukuqimo svegrane P koje su u E \ M , dobiemo novo uparivae sa jednom granom vixe.Na primer, prvi alternirajui put korixen za poveae uparivaa na sli-ci 29(a)) bio je (1A,A2, 2B), i on je omoguio zamenu grane A2 granama 1Ai 2B; drugi alternirajui put (C3, 3D,D4, 4E, E5) omoguio je zamenu grana3D i 4E granama C3, D4 i E5.

Jasno je da ako za dato uparivae M postoji alternirajui put, onda Mne moe biti optimalno uparivae. Ispostava se da je i obrnuto tvreetaqno.

Teorema 6.1 (Teorema o alternirajuem putu). Uparivae je optimalnoako i samo ako nema alternirajuih puteva.

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

vono uparivae koje nije optimalno ima alternirajui put, a alternirajuiput daje poveano uparivae. Zapoqiemo sa pohlepnim algoritmom, dodajuigrane u uparivae sve dok je to mogue. Onda prelazimo na traee alterni-rajuih puteva i poveavae uparivaa, sve do trenutka kad vixe nema al-ternirajuih puteva. Dobijeno uparivae je tada optimalno. Poxto alterni-rajui put poveava uparivae za jednu granu, a u uparivau ima najvixen/2 grana (gde je n broj qvorova), broj iteracija je najvixe n/2. Preostaje joxjedan problem | kako pronalaziti alternirajue puteve? On se moe rexitina sledei naqin. Transformixemo neusmereni graf G u usmereni graf G′

usmeravajui grane iz M od U ka V , a grane iz E \M od V ka U . Slika 30(a)prikazuje polazno maksimalno uparivae za graf sa slike 29(a), a slika 30(b)prikazuje odgovarajui usmereni graf G′. Alternirajui put u G tada odgo-vara usmerenom putu od neuparenog qvora u V do neuparenog qvora u U . Takavusmereni put moe se pronai bilo kojim postupkom obilaska grafa, npr.pomou DFS. Sloenost obilaska (pretrage) je O(|V | + |E|), pa je sloenostalgoritma O(|V |(|V |+ |E|)).

6.9.2.1. Poboxae. Poxto kompletan obilazak grafa u najgorem sluqajumoe da traje koliko i nalaee jednog puta, moe se pokuxati sa nalaeemvixe alternirajuih puteva jednom pretragom. Potrebno je, meutim, da bude-mo sigurni da ovi putevi ne meaju jedan drugog. Jedan naqin da se garantujenezavisnost takvih alternirajuih puteva je uvoee ograniqea da skupoviqvorova na pojedinim putevima budu disjunktni. Ako su putevi disjunktni,onda utiqu na uparivae razliqitih qvorova, pa se mogu istovremeno isko-ristiti. Novi, poboxani algoritam za nalaee alternirajuih puteva jesledei. Najpre primeujemo BFS na graf G′ od skupa neuparenih qvorova uV , sloj po sloj, do sloja u kome su pronaeni neupareni qvorovi iz U . Zatim izgrafa indukovanog pretragom u xirinu vadimo maksimalni skup disjunktnih

164 6. GRAFOVSKI ALGORITMI

d

d1

A

d d d d d

d d d d d2 3 4 5 6

B C D E FV

d

d1

A

d d d d d

d d d d d2 3 4 5 6

B C D E FV

(a) (b)

U U

t

t t

t

µ

U U

¸6 6 6 6 6

Ris. 30. Nalaee alternirajuih puteva

puteva u G′, kojima odgovaraju alternirajui putevi u G. To se izvodi pro-nalaeem prvog puta, uklaaem egovih qvorova, pronalaeem narednogputa, uklaaem egovih qvorova, itd. (rezultat nije optimalni, nego samomaksimalni skup). Biramo maksimalni skup, da bismo posle pretrage dobilixto vee uparivae; svaki novi disjunktni put poveava uparivae za jednugranu. Na kraju poveavamo uparivae korixeem pronaenog skupa dis-junktnih puteva. Proces se nastava sve dok je mogue pronai alternirajueputeve, odnosno dok je u grafu G′ neki neupareni qvor iz V dostian iz nekogneuparenog qvora iz U .

Sloenost. Ispostava se da je u poboxanom algoritmu broj iteracijaO(

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

tvree dajemo bez dokaza). Ukupna vremenska sloenost algoritma je dakleO((|V |+ |E|)

√|V |).

6.10. Transportne mreeProblem transportne mree je jedan od osnovnih problema u teoriji gra-

fova i kombinatornoj optimizaciji. Intenzivno je prouqavan vixe od 40 godi-na, pa su za ega razvijeni mnogi algoritmi i strukture podataka. Problemima mnogo varijanti i uopxtea. Osnovna varijanta problema transportnemree moe se formulisati na sledei naqin. Neka je G = (V, E) usmerenigraf sa dva posebno izdvojena qvora, s (izvor), sa ulaznim stepenom 0, i t(ponor) sa izlaznim stepenom 0. Svakoj grani e ∈ E pridruena je pozitivnateina c(e), kapacitet grane e. Kapacitet grane je mera toka koji moe bitipropuxten kroz granu. Za ovakav graf kaemo da je mrea. Zbog udobnostise nepostojeim granama dodeuje kapacitet 0. Tok je funkcija f definisanana E koja zadovoava sledee uslove:

(1) 0 ≤ f(e) ≤ c(e): tok kroz proizvonu granu ne moe da premaxien kapacitet;

6.10. TRANSPORTNE MREE 165

(2) za sve v ∈ V \ s, t je∑

u f(u, v) =∑

w f(v, w): ukupan tok kojiulazi u proizvoni qvor v jednak je ukupnom toku koji izlazi izega ("nestixivost", zakon oquvaa, odnosno konzervacije toka).

Ova dva uslova imaju za posledicu da je ukupan tok koji izlazi iz s jed-nak ukupnom toku koji ulazi u t. U to se moemo uveriti na sledei naqin.Uvexemo najpre pojam preseka. Neka je A proizvoan podskup V takav dasadri s, a ne sadri t. Oznaqimo sa B = V \ A skup preostalih qvorova.Presek odreen skupom A je skup grana (v, u) ∈ E takvih da v ∈ A i u ∈ B.Intuitivno, presek je skup grana koje razdvajaju s od t. Indukcijom po brojuqvorova u A lako se pokazuje da ukupan tok kroz presek ne zavisi od A. Speci-jalno, za A = s presek obuhvata grane koje izlaze iz s, a za A = V \t presekqine grane koje ulaze u t. Prema tome, ukupan tok koji izlazi iz s jednak jeukupnom toku koji ulazi u t. Problem koji nas zanima je maksimizirae toka.U sluqaju kad su kapaciteti grana realni brojevi, nije oqigledno qak ni damaksimalni tok uvek postoji; pokazaemo da on uvek postoji. Jedan naqin dase opisani problem shvati kao realan fiziqki problem, je da zamislimo damreu qine cevi za vodu. Svaka cev ima svoj kapacitet, a uslovi koje tok trebada zadovoi su prirodni. Ci je "proterati" kroz mreu xto veu koliqinuvode u jedinici vremena.

Pokazaemo najpre da se problem bipartitnog uparivaa moe svestina problem mrenog protoka. To moe na prvi pogled da izgleda beskorisno,poxto ve znamo da reximo problem uparivaa, a ne znamo rexee problematransportne mree | redukcija je dakle u pogrexnom smeru. Meutim, zarexavae problema transportne mree moe se primeniti postupak sliqanpostupku za nalaee bipartitnog uparivaa.

Zadatom bipartitnom grafu G = (V, E, U) u kome treba pronai upari-vae sa najveim moguim brojem grana (optimalno uparivae) dodajemo dvanova qvora s i t, povezujemo s granama sa svim qvorovima iz V , a sve qorove izU povezujemo sa t. Oznaqimo dobijeni graf sa G′ (videti sliku 31, na kojoj susve grane usmerene sleva udesno). Poxto svim granama dodelimo kapacitet 1,dobijamo regularan problem transportne mree na grafu G′. Neka je M nekouparivae u G. Uparivau M moe se na prirodan naqin pridruiti tok uG′. Dodeujemo tok 1 svim granama iz M i svim granama koje s ili t povezujusa uparenim qvorovima. Svim ostalim granama dodeujemo tok 0. Ukupan tokjednak je tada broju grana u uparivau M . Moe se pokazati da je M optimal-no uparivae ako i samo ako je odgovarajui celobrojni tok u G′ optimalan.U jednom smeru dokaz je jednostavan: ako je tok optimalan i odgovara upari-vau, onda se ne moe nai vee uparivae, jer bi mu odgovarao vei tok. Dabismo izveli dokaz u drugom smeru, potrebno je da nekako primenimo idejualternirajuih puteva na tok u transportnoj mrei, i da pokaemo da akonema alternirajuih puteva, onda je odgovarajui tok optimalan.

Poveavajui put u odnosu na zadati tok f je usmereni put od s do t,koji se sastoji od grana iz G, ne obavezno u istom smeru; svaka od tih grana(v, u) treba da zadovoi taqno jedan od sledea dva uslova:

166 6. GRAFOVSKI ALGORITMI

s t

t t

t

t

t

t

t

t

t

t

t

t

tt

Ris. 31. Svoee bipartitnog uparivaa na transportnemree (sve grane usmerene su sleva udesno).

(1) (v, u) ima isti smer kao i u G, i f(v, u) < c(v, u). U tom sluqajugrana (v, u) je direktna grana Direktna grana ima kapacitet veiod toka, pa se moe poveati tok kroz u. Razlika c(v, u) − f(v, u)zove se slek te grane.

(2) (v, u) ima suprotan smer u G, i f(v, u) > 0. U ovom sluqaju grana(v, u) je povratna grana. Deo toka iz povratne grane moe se "poza-jmiti".

Poveavajui put je uopxtee alternirajueg puta, i ima isti smisao zatransportne mree kao alternirajui put za bipartitno uparivae. Ako pos-toji poveavajui put u odnosu na tok f (odnosno f dozvoava poveavajuitok), onda f nije optimalni tok. Tok f moe se poveati poveavaem tokakroz poveavajui put na sledei naqin. Ako su sve grane poveavajueg putadirektne grane, onda se kroz ih moe poveati tok, tako da sva ograniqeai dae ostanu zadovoena. Poveae toka je u ovom sluqaju taqno jednako min-imalnom sleku meu granama puta. Sluqaj povratnih grana je nexto sloeni-ji, videti sliku 32. Svaka grana oznaqena je sa dva broja a/b, pri qemu jea kapacitet, a b trenutni tok. Jasno je da se ukupan tok ne moe direktnopoveati, jer ne postoji put od s do t koji se sastoji samo od direktnih grana.Ipak, postoji naqin da se ukupan tok povea.

Put s−v−u−w− t je poveavajui put. Dopunski tok 2 moe se sprovestido u od s (2 je minimalni slek na direktnim granama do u). Tok 2 moe seoduzeti od f(w, u). Time se postie zadovoee uslova (2) (zakona oquvaatoka) za qvor u, jer je u imao poveae toka za 2 iz poveavajueg puta, a zatimsmaee dotoka za 2 iz povratne grane. U qvoru w je sada izlazni tok smaenza 2, pa ga treba poveati kroz neku izlaznu granu. Sa "proterivaem" tokamoe se nastaviti na isti naqin od w, poveavaem toka kroz direktne granei smaivaem toka kroz povratne grane. U ovom sluqaju postoji samo joxjedna direktna grana (w, t) koja dostie t, i problem je rexen. Poxto samodirektne grane mogu da izlaze iz s, odnosno da ulaze u t, ukupan tok je povean.Poveae je jednako maem od sledea dva broja: minimalnog sleka direktnih

6.10. TRANSPORTNE MREE 167

u

u

u

u

µ

u

u

u

u-

R

-

-

-

R-µ

R

R

6s t

5/5

7/3

6/5

4/3

3/2

4/2

1/1

5/5

3/3

7/7

4/3

6/3

w

uv

Ris. 32. Primer mree sa poveavajuim putem.

grana, odnosno minimalnog toka povratnih grana. Na slici 33 prikazana jeista mrea sa promeenim tokom; novi tok je ustvari optimalan.

u

u

u

u

µ

u

u

u

u-

R

-

-

-

R-µ

R

R

6s t

5/5

7/5

6/5

4/3

3/2

4/4

1/1

5/5

3/3

7/7

4/1

6/5

w

uv

Ris. 33. Rezultat poveavaa toka u mrei sa slike 32.

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

Teorema 6.2 (Teorema o poveavajuem putu). Tok kroz mreu je opti-malan ako i samo ako u odnosu na ega ne postoji poveavajui put.

Dokazatel~stvo. Dokaz u jednom smeru smo ve videli | ako u mreipostoji poveavajui put, onda tok nije optimalan. Pretpostavimo sada da uodnosu na tok f ne postoji ni jedan poveavajui put, i dokaimo da je tadaf optimalni tok. Za proizvoan presek (odreen skupom A, s ∈ A, t ∈ B ≡V \ A) definixemo kapacitet, kao zbir kapaciteta egovih grana koje vodeiz nekog qvora A u neki qvor B. Jasno je da ni jedan tok ne moe biti veiod kapaciteta proizvonog preseka. Zaista, ukupan tok iz s jednak je zbiru

168 6. GRAFOVSKI ALGORITMI

tokova kroz grane preseka od A ka B, umaenom za tok kroz grane presekaod B ka A, pa je mai ili jednak od zbira kapaciteta grana koje vode odA ka B, odnosno od kapaciteta preseka. Prema tome, ako pronaemo tok savrednoxu jednakom kapacitetu nekog preseka, onda je taj tok optimalan. Sadokazom nastavamo u tom pravcu: pokazaemo da ako u odnosu na tok ne postojipoveavajui put, onda je ukupan tok jednak kapacitetu nekog preseka, pa dakleoptimalan.

Neka je f tok u odnosu na koji ne postoji poveavajui put. Neka je A ⊂ Vskup qvorova v takvih da u odnosu na tok f postoji poveavajui put od s dov (preciznije, postoji put od s do v takav da na emu za sve direktne granee vai f(e) < c(e), a za sve povratne grane e′ vai f(e′) > 0). Jasno je das ∈ A i t /∈ A, jer po pretpostavci za f ne postoji poveavajui put. Prematome, A definixe presek. Tvrdimo da za sve grane (v, w) tog preseka vaif(v, w) = c(v, w) ako je v ∈ A, w ∈ B ("direktne" grane), odnosno f(v, w) = 0ako je v ∈ B, w ∈ A ("povratne grane"). Zaista, u protivnom bi direktna grana(v, w) produavala poveavajui put do qvora w /∈ A, suprotno pretpostavcida takav put postoji samo do qvorova iz A. Sliqno, povratna grana (v, w)produavala bi poveavajui put do qvora v /∈ A. Dakle, ukupan tok jednak jekapacitetu preseka odreenog skupom A, pa je tok f optimalan. ¤

Dokazali smo sledeu vanu teoremu.Teorema 6.3 (Teorema o maksimalnom toku i minimalnom preseku). Op-

timalni tok u mrei jednak je minimalnom kapacitetu preseka.Teorema o poveavajuem putu ima za posledicu i sledeu teoremu.Teorema 6.4 (Teorema o celobrojnom toku). Ako su kapaciteti svih gra-

na u mrei celobrojni, onda postoji optimalni tok sa celobrojnom vred-noxu.

Dokazatel~stvo. Tvree je posledica teoreme o poveavajuem putu.Svaki algoritam koji koristi samo poveavajue puteve dovodi do celobrojnogtoka ako su svi kapaciteti grana celobrojni. Ovo je oqigledno, jer se moekrenuti od toka 0, a onda se ukupan tok posle svake upotrebe poveavajuegputa poveava 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 G odgovara poveavajuem putu u G′, i obrnuto. Posledicateoreme o poveavajuem putu je teorema o alternirajuem putu iz prethodnogodeka. Ako je M optimalno uparivae, onda za ega ne postoji alternirajuiput, pa u G′ 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 V povezan samo jednom granom (sa kapacitetom1) sa s; zbog toga, ukupan tok kroz svaki qvor iz V moe da bude najvixe 1.Isto vai i za qvorove iz skupa U . Ovo uparivae mora biti optimalno, jerako bi se moglo poveati, onda bi postojao vei ukupni tok.

6.10. TRANSPORTNE MREE 169

Teorema o poveavajuem putu neposredno se transformixe u algoritam.Polazi se od toka 0, trae se poveavajui putevi, i na osnovu ih poveavase tok, sve do trenutka kad poveavajui putevi vixe ne postoje. Traeepoveavajuih puteva moe se izvesti na sledei naqin. Definixemo rezi-dualni graf u odnosu na mreu G = (V, E) i tok f , kao mreu R = (V, F )sa istim qvorovima, istim izvorom i ponorom, ali promeenim skupom granai ihovih teina. Svaku granu e = (v, w) sa tokom f(e) zameujemo sa naj-vixe dve grane e′ = (v, w) (ako je f(e) < c(e); kapacitet e′ jednak je slekugrane e: c(e′) = c(e) − f(e)), odnosno e′′ = (w, v) (ako je f(e) > 0; kapacitete′′ je c(e′′) = f(e)). Ako se na ovaj naqin dobiju dve paralelne grane, zame-uju se jednom, sa kapacitetom jednakom zbiru kapaciteta paralelnih grana.Na slici 34 prikazan je rezidualni graf za mreu sa slike 32, u odnosu natok zadat na toj slici. Grane rezidualnog grafa odgovaraju moguim granamapoveavajueg puta. ihovi kapaciteti odgovaraju moguem poveau tokakroz te grane. Prema tome, poveavajui put je obiqan usmereni put od s do t urezidualnom grafu. Konstrukcija rezidualnog grafa zahteva O(|E|) koraka,jer se svaka grana proverava taqno jednom.

u

u

u

u

u

u

u

u-

R

-

R6

s t

5

4 2

5

3

7ªI

¾

¾

I

iO

=y

i

)

31

5

3

1

21

21 1

3 3

Ris. 34. Rezidualni graf mree sa slike 32 u odnosu na tokdefinisan na toj slici.

Na nesreu, izbor poveavajueg puta na proizvoan naqin moe se poka-zati vrlo neefikasnim. Vreme izvrxea takvog algoritma u najgorem sluqajumoe da qak i ne zavisi od veliqine grafa. Posmatrajmo mreu na slici 35.Optimalni tok je oqigledno 2M . Meutim, mogli bismo da krenemo od pove-avajueg puta s − a − b − t kroz koji se tok moe poveati samo za 1. Zatimbismo mogli da izaberemo poveavajui put s − b − a − t koji opet poveavatok samo za 1. Proces moe da se ponovi ukupno 2M puta, gde M moe bitivrlo veliko, bez obzira xto graf ima samo qetiri qvora i pet grana. Poxtose vrednost M moe predstaviti sa O(log M) bita, sloenost ovog algoritmaje u najgorem sluqaju eksponencijalna funkcija veliqine ulaza (broj M je deoulaza).

170 6. GRAFOVSKI ALGORITMI

e

e

e e

µ

R

µR

?

s 1 t

a

b

M

M M

M

Ris. 35. Primer mree na kojoj traee poveavajuih pute-va moe biti neograniqeno neefikasno.

Gore navedena mogunost je vrlo nepoena, ali se moe izbei. Edmondsi Karp (Edmonds, Carp ) su 1972. godine pokazali da ako se meumoguim poveavajuim putevima uvek bira onaj sa najmaim brojem grana,onda je broj poveavaa najvixe (|V |3 − |V |)/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, avixe ih dostie goru granicu sloenosti O(|V |3) u najgorem sluqaju. Ovdeih neemo opisivati.

6.11. Hamiltonovi ciklusiOvo poglave zapoqeli smo razmatraem ciklusa koji sadre sve grane

u grafu. Zavrxiemo je osvrtom na cikluse koji sadre sve qvorove grafa.Ovo je takoe poznati problem, koji je ime dobio po irskom matematiqaruVilijemu Hamiltonu (W. R. Hamilton ), koji je predloio popularnuigru zasnovanu na ovom problemu 1857. godine.

Problem. Zadat je graf G = (V,E). Pronai u G prosti ciklus kojisvaki qvor iz V sadri taqno jednom.

Takav ciklus zove se Hamiltonov ciklus. Grafovi koji sadre takvecikluse zovu seHamiltonovi grafovi. Problem ima usmerenu i neusmerenuverziju; mi emo se baviti samo neusmerenom varijantom.

Za razliku od problema Ojlerovih ciklusa, problem nalaea Hamil-tonovih ciklusa (odnosno karakterizacije Hamiltonovih grafova) je vrloteak. Da bi se proverilo da li je graf Ojlerov, dovono je znati stepeneegovih qvorova. Za utvrivae da li je graf Hamiltonov, to nije dovono.Zaista, dva grafa prikazana na slici 36 imaju po 16 qvorova stepena 3, alije prvi Hamiltonov, a drugi oqigledno nije. Ovaj problem spada u klasu NP-kompletnih problema, koji e biti razmatrani u poglavu 11. U ovom odekuprikazaemo jednostavan postupak nalaea Hamiltonovog ciklusa u speci-jalnoj klasi vrlo gustih grafova.

6.11. HAMILTONOVI CIKLUSI 171

e

e

ee

e

e

ee

e

e

ee

e

e

ee

e

eee

e e

ee

ee

e ee

ee

e

Ris. 36. Dva grafa sa po 16 qvorova stepena 3, od kojih jeprvi Hamiltonov, a drugi nije.

Neka je G = (V, E) povezan neusmeren graf i neka za proizvoan qvorv ∈ V d(v) oznaqava egov stepen. Sledei problem odnosi se na nalaeeHamiltonovog ciklusa u vrlo gustim grafovima. Pokazaemo da uslovi prob-lema garantuju da je graf Hamiltonov.

Problem. Dat je povezan neusmeren graf G = (V, E) sa n ≥ 3 qvorova,takav da svaki par nesusednih qvorova v i w zadovoava uslov d(v)+d(w) ≥ n.Pronai u G Hamiltonov ciklus.

Algoritam se zasniva na indukciji po broju grana koje treba ukloniti izkompletnog 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 n(n−1)/2−m grana.

Sada treba da pokaemo kako pronai Hamiltonov ciklus u grafu san(n − 1)/2 − (m + 1) grana koji zadovoava uslove problema. Neka je G =(V, E) takav graf. Izaberimo proizvona dva nesusedna qvora v i w u G (to jemogue ako graf nije kompletan), i posmatrajmo graf G′ koji se od G dobijadodavaem grane (v, w). Prema induktivnoj hipotezi mi umemo da pronaemoHamiltonov ciklus u grafu G′. Neka je x1, x2, . . . , xn, x1 takav ciklus u G′

(videti sliku 37). Ako grana (v, w) nije deo ciklusa, onda je isti ciklus deografa G, pa je problem rexen. U protivnom, bez smaea opxtosti moe sepretpostaviti da je v = x1 i w = xn. Prema datim uslovima je d(v)+d(w) ≥ n.Potrebno je u grafu pronai novi Hamiltonov ciklus.

Posmatrajmo sve grane grafa G susedne sa qvorovima v ili w. Tvrdimoda pod zadatim uslovima postoje dva qvora xi i xi+1 takva da u G postojegrane (w, xi) i (v, xi+1). Da bismo to dokazali, pretpostavimo suprotno, da niza jedno i, 2 ≤ i ≤ n − 2, ne postoje istovremeno obe grane (w, xi) i (v, xi+1).Neka je qvor w vezan sa qvorom xn−1 i k qvorova xi1 , xi2 , . . . , xik

, pri qemu

172 6. GRAFOVSKI ALGORITMI

e

e

ee

e

e

ee

e

e

ee

e

e

ee

w

xn−1

xi+1 xi

vx2

x3

º

W 6²

Ris. 37. Modifikacija Hamiltonovog ciklusa posle izbaci-vaa grane (v, w).

je 2 ≤ i1 < i2 < · · · < ik ≤ n − 2. Tada qvor v ne sme biti vezan ni sajednim od qvorova xi1+1, xi2+1, . . . , xik+1, pa je d(v) ≤ n − 2 − k (od ukupnon− 1 moguih grana iz v ne postoje grane ka w, niti ka k navedenih qvorova,razliqitih od w). Zbog toga je d(w) + d(v) ≤ (k + 1) + (n − 2 − k) = n − 1;ovo je u kontradikciji sa pretpostavkom da je d(w) + d(v) ≥ n. Dakle, za nekoi postoje grane (w, xi) i (v, xi+1). Od ovih dveju grana moe se formiratinovi Hamiltonov ciklus v(= x1), xi+1, xi+2, . . . , w(= xn), xi, xi−1, . . . , v, koji nesadri granu (v, w), videti sliku 37.

Realizacija. Direktna primena ovog dokaza polazi od kompletnog gra-fa, iz koga se jedna za drugom izbacuju grane koje ne pripadaju zadatom grafu.Boe je rexee poqeti sa mnogo maim grafom, na sledei naqin. U datomgrafu G najpre pronalazimo dugaqak put (na primer, pomou DFS), a ondadodajemo nove grane tako da put produimo do Hamiltonovog ciklusa. Takoje dobijen vei graf G′. Obiqno je dovono dodati samo nekoliko grana. Me-utim, qak i u najgorem sluqaju bie dodata najvixe n − 1 grana. Polazeiod G′, dokaz teoreme se zatim primeuje iterativno, sve dok se ne pronaeHamiltonov ciklus u G. Ukupan broj koraka za zamenu jedne grane je O(n).Potrebno je zameniti najvixe n grana, pa je vremenska sloenost algoritmaO(n2).

6.12. RezimeGrafovi se koriste kao modeli za odnose meu parovima objekata. Pox-

to veina algoritama zahteva ispitivae kompletnog ulaza, prvi problem nakoji se obiqno nailazi je obilazak grafa. Analizirali smo dva tipa obilas-ka grafova: pretragu u dubinu (DFS) i pretragu u xirinu (BFS). Videlismo nekoliko primera kod kojih je DFS pogodnija od BFS. Moe se daklepreporuqiti da se uvek najpre pokuxa sa DFS (iako postoji mnogo primera

ZADACI 173

gde je BFS superiornija). DFS je posebno pogodna za rekurzivne algoritmena grafovima. BFS obiqno zahteva vixe prostora (xto opet nije pravilo |zavisi od grafa). Videli smo takoe primer pretrage sa prioritetom, ko-ja je korixena za izraqunavae duina najkraih puteva od zadatog qvora.Pretraga sa prioritetom je sloenija od obiqne pretrage. Ona je korisna kodoptimizacionih problema sa teinskim grafovima.

Ciklusi qesto predstavaju problem u grafovskim algoritmima. Obiqnosu zbog toga algoritmi za stabla ili usmerene acikliqke grafove jednostavni-ji za realizaciju i bri.

Druga korisna tehnika kod grafova je redukcija (svoee). Poxto grafovimogu biti predstaveni matricama, postoji prirodna povezanost izmeu gra-fovskih i algoritama sa matricama. Problemi transportnih mrea i upari-vaa su oblast u kojoj se redukcije xiroko primeuju. U poglavu 11 razma-traemo klasu problema, takozvane NP-kompletne probleme, koji se verovatnone mogu rexiti algoritmima sloenosti koja je polinomijalna funkcija odveliqine ulaza u najgorem sluqaju. Ta klasa sadri veliki broj grafovskihproblema. Razlike izmeu lakih i texkih problema ponekad su veoma male.Bitno je razumeti ih i razviti intuitivni oseaj za te razlike. Zbog toga jematerijal iz poglava 11 jako vaan za razumevae grafovskih algoritama.

Zadaci6.1. Rexiti problem odreivaa faktora ravnotee qvorova u binarnom stablu iz

odeka 4.7 pomou DFS (potrebno je samo precizirati uzlanu i izlaznu obradu).

6.2. Konstruisati algoritam koji za dati usmereni graf G = (V, E) i egov qvor v ∈ Vispituje da li je G korensko stablo sa korenom v (smatra se da su u korenskom stablu graneusmerene od korena ka listovima).

6.3. Dat je povezan neusmeren graf G = (V, E), egovo povezujue stablo T i qvorv ∈ V . Konstruisati algoritam sloenosti O(|E| + |V |) koji treba da ustanovi da li je Tregularno DFS stablo grafa G sa korenom v. Drugim reqima, treba ustanoviti moe li Tbiti izlaz DFS iz v za neko ureee grana.

6.4. Okarakterisati neusmerene grafove u kojima za neki qvor v postoji DFS stablosa korenom u v, koje je identiqno sa BFS stablom sa korenom v (dva stabla su podudarna akosu im jednaki skupovi grana | redosled obilaska tih grana ovde nije bitan).

6.5. Modifikovati algoritam za topoloxko sortirae acikliqkog grafa (slika 16)tako da za proizvoan zadati graf G = (V, E), ako je G acikliqki, onda algoritam dajeegovo topoloxko ureee qvorova, a u protivnom pronalazi neki ciklus u G. Sloenostalgoritma treba da bude O(|E|+ |V |).

6.6. Neka je T = (V, F ) podgraf koji se sastoji od svih grana na najkraim putevimaod qvora v u grafu G = (V, E). Pokazati da je T korensko stablo sa korenom v.

6.7. Neka je G = (V, E) neusmereni teinski graf i neka je T egovo stablo najkraihputeva od qvora v ∈ V . Ako se teine grana G poveaju za jednu istu konstantu c, da li jeT i dae stablo najkraih puteva od v?

6.8. Dokazati ili opovrgnuti kontraprimerom: algoritam Najkr putevi (slika 20) ra-di korektno za teinske grafove qije neke grane imaju negativne teine, pod uslovom dane postoji ciklus negativne teine.

174 6. GRAFOVSKI ALGORITMI

6.9. Promeniti algoritam MCST (slika 23) tako da pronalazi povezujue stablo mak-simalne cene u grafu.

6.10. (a) Navesti primer povezanog neusmerenog teinskog grafa G = (V, E) i qvorav ∈ V tako da je MCST grafa G istovremeno i stablo najkraih puteva od v. (b) Navestiprimer povezanog neusmerenog teinskog grafa G = (V, E), tako da se MCST grafa G istablo najkraih puteva u G od v razlikuju. (c) Da li je mogue da ova dva stabla nemajuzajedniqkih grana?

6.11. Konstruisati algoritam sloenosti O(|E|+ |V |) za nalaee savrxenog upari-vaa u vrlo gustom grafu, tj. grafu sa 2n qvorova takvom da za svaka dva egova nesusednaqvora u i v vai d(u) + d(v) ≥ n, odeak 6.11.

6.12. Nai potreban i dovoan uslov da graf G sa n qvorova ima sledeu osobinu.Postoji niz qvorova v1, v2, . . . , vn, tako da je za i = 1, 2, . . . , n stepen qvora vi u grafu Gi, kojise od G dobija izbacivaem qvorova v1, v2, . . . , vi−1 zajedno sa granama koje su im susedne,jednak 1.

6.13. Konstruisati algoritam linearne vremenske i prostorne sloenosti za nalaen-je Ojlerovog puta u Ojlerovom grafu.

6.14. Neka je G = (V, E) neusmereni graf u kome svaki qvor ima paran stepen. Konstru-isati algoritam linearne vremenske sloenosti za usmeravae grana u G, tako da ulaznistepen svakog qvora bude jednak egovom izlaznom stepenu.

6.15. Usmereni Ojlerov ciklus je usmereni ciklus koji svaku granu usmerenog grafasadri taqno jednom. Dokazati da usmereni graf sadri usmereni Ojlerov ciklus akkoje ulazni stepen svakog qvora jednak egovom izlaznom stepenu, a odgovarajui neusmerenigraf (dobijen pretvaraem usmerenih u neusmerene grane) je povezan.

6.16. Neka je G = (V, E) neusmereni povezan graf sa k qvorova neparnog stepena. (a)Dokazati da je k paran broj. (b) Konstruisati algoritam za nalaee k/2 otvorenih putevatakvih da je svaka grana G sadrana u taqno jednom od tih puteva.

6.17. Neka je dat neusmereni povezan graf G. Konstruisati algoritam linearne vre-menske sloenosti za nalaee takvog qvora u G qijim uklaaem se G ne raspada na dveili vixe komponente povezanosti.

6.18. Binarni de Bruijnov niz je (cikliqki) niz od N = 2n bita a0a1 . . . aN−1

takav da se svaki binarni blok s od n bita nalazi negde u ovom nizu. Drugim reqima,postoji jedinstveni indeks i takav da je s = aiai+1 . . . ai+n−1 (gde se indeksi raqunaju pomodulu N). Na primer, niz 11010001 je binarni de Bruijnov niz za n = 3. Neka je Gn = (V, E)usmereni graf definisan na sledei naqin. Skup qvorova V je skup svih binarnih blokovaod n − 1 bita (|V | = 2n−1). Iz qvora b1b2 . . . bn−1 vodi grana ka qvoru c1c2 . . . cn−1 akko jeb2b3 . . . bn−1 = c1c2 . . . cn−2. Dokazati da je Gn usmereni Ojlerov graf i objasniti smisaote qienice za de Bruijnove nizove.

6.19. Dato je n prirodnih brojeva d1, d2, . . . , dn kojima je zbir 2n − 2. Konstruisatistablo sa n qvorova, kojima su stepeni d1, d2, . . . , dn.

6.20. Neka je (u1, i1), (u2, i2), . . . , (un, in), niz parova celih nenegativnih brojeva takvihda je u1 = 0, uk = 1 za 1 < k ≤ n, i1 > 0 i

∑nj=1 ij = n−1. Konstruisati korensko stablo sa n

qvorova takvo da je ulazni, odnosno izlazni stepen qvora k jednak uk, odnosno ik. Sloenostalgoritma treba da bude O(n).

6.21. Neka je G = (V, E) usmereni graf (ne obavezno acikliqki). Konstruisati efi-kasan algoritam koji numerixe qvorove grafa brojevima od 1 do |V |, tako da redni brojsvakog qvora v bude mai od rednog broja bar jednog qvora w takvog da postoji grana (w, v)(ako ima takvih qvorova w), ili utvruje da takva numeracija ne postoji.

ZADACI 175

6.22. Za neusmereni graf G = (V, E) kae se da je k-obojiv ako se svi qvorovi Gmogu obojiti sa k razliqitih boja, tako da ne postoje dva susedna qvora obojena istom bo-jom. Konstruisati algoritam linearne sloenosti za bojee grafa sa dve boje, odnosno zautvrivae qienice da graf nije 2-obojiv (ili bipartitan!).

6.23. Neka je G = (V, E) 2-obojiv neusmereni graf (videti zadatak 6.22). Pokazati daje bojee G sa dve boje jedinstveno (do na permutaciju boja) akko je G povezan graf.

6.24. Neka je T neusmereno stablo (u opxtem sluqaju ne binarno) sa korenom r, zadatolistom povezanosti. Svakom qvoru T pridruen je znak iz fiksiranog alfabeta. Neka jestring P uzorak (predstaven vektorom znakova). Konstruisati algoritam koji proveravada li se uzorak pojavuje bar jednom na putu od korena do nekog lista. Sloenost algoritmau najgorem sluqaju treba da bude O(n+m), gde je n broj qvorova stabla, a m duina uzorka.

6.25. Dat je povezan neusmereni graf G = (V, E) koji sadri taqno jedan ciklus.Potrebno je usmeriti sve grane tako da ulazni stepeni svih qvorova budu najvixe 1 (takavgraf moe se nazvati injektivnim, jer odgovara injektivnom preslikavau V → V ). Kon-struisati algoritam za opisano usmeravae grana i oceniti egovu sloenost.

6.26. Neka je G = (V, E) neusmereni graf. Konstruisati algoritam za orijentisaegrana grafa G tako da ulazni stepen svakog qvora bude bar 1 | ako je mogue, odnosno da uprotivnom ustanovi da je to nemogue.

6.27. Dat je neusmereni graf G = (V, E). Potrebno je usmeriti egove grane tako dabudu ispuena sledea dva uslova:

• dobijeni usmereni graf sadri usmereno korensko stablo T (tj. stablo qije su sve graneusmerene od korena);

• svaka grana koja ne pripada stablu T zatvara usmereni ciklus sa granama iz T .Kolika je sloenost konstruisanog algoritma?

6.28. Dat je usmereni acikliqki graf G = (V, E). Konstruisati algoritam linearnevremenske sloenosti za nalaee najdueg usmerenog prostog puta u G (bilo kog meuima ako ih ima vixe).

6.29. Neka je G = (V, E) usmereni acikliqki graf i neka je k najvei broj grana nekogputa u G. Konstruisati algoritam linearne sloenosti koji qvorove grafa deli u najvixek + 1 grupa, tako da za bilo koja dva qvora v, w iz iste grupe ne postoji put od v do w, niput od w do v.

6.30. Neka je G = (V, E) usmereni graf i neka su v, w dva qvora u G. Konstruisatialgoritam linearne sloenosti za odreivae broja razliqitih najkraih puteva od v dow (ne obavezno sa disjunktnim skupom qvorova; granama nisu pridruene teine).

6.31. Kako treba promeniti algoritam Najkr putevi (slika 20) tako da mu vremenskasloenost u najgorem sluqaju bude O(|V |2), nezavisno od |E|?

6.32. Neka je G = (V, E) teinski usmereni graf. Konstruisati algoritam za odrei-vae ciklusa minimalne teine u G.

6.33. Granama grafa G = (a, b, c, d, e, E) pridruene su duine kao na slici 38.Odrediti duine najkraih puteva izmeu svaka dva qvora grafa.

6.34. Algoritmi za nalaee najkraih puteva iz odeka 6.5 biraju proizvoan odnekoliko najkraih puteva. Kako treba promeniti te algoritme da, ako ima vixe razliqitihputeva iste duine, onda se bira onaj sa najmaim brojem grana? U sluqaju da ima vixenajkraih puteva sa najmaim brojem grana, dozvoeno je izabrati proizvoan meu ima.Pretpostavka je da su duine grana celi brojevi.

176 6. GRAFOVSKI ALGORITMI

d

d d

dda e5

10 4 1 4

db

5 3

c

Ris. 38. Uz zadatak 6.33.

6.35. Neka je G = (V, E) usmeren teinski graf, pri qemu su sve teine grana pozi-tivne. Neka su v i w dva qvora u G i neka je k ≤ |V | prirodan broj. Konstruisati algoritamza nalaee najkraeg puta od v do w koji se sastoji od taqno k grana. Put ne mora da budeprost.

6.36. Neka je G = (V, E) usmereni acikliqki teinski graf kome su teine nekihgrana negativne. Konstruisati algoritam linearne vremenske sloenosti za odreivaenajkraih puteva od datog qvora v ∈ V .

6.37. Nai potreban i dovoan uslov da se skup grana E neusmerenog grafa G =(V, E) moe razloiti na disjunktne podskupove E1, E2, . . . , Er koji odgovaraju prostimciklusima. Konstruisati efikasan algoritam za nalaee takvog razlagaa u grafu Gkoji zadovoava taj uslov.

6.38. Dokazati da postoji neusmeren graf sa n qvorova i O(n) grana koji sadri 2Ω(n)razliqitih prostih ciklusa (odnosno bar 2cn razliqitih ciklusa za neko c > 0).

6.39. Dat je usmeren graf G = (V, E) sa n+1 qvorom i n grana, takav da je odgovarajuineusmereni graf stablo, pri qemu je svaka grana (u, w) oznaqena jedinstvenim brojem λ(u, w)iz skupa A = 1, 2, . . . , n. Potrebno je odrediti funkciju S koja qvorove preslikava upodskupove skupa A, tako da budu zadovoena sledea dva uslova: 1) ako je (u, w) ∈ E, ondaS(w) = S(u) ∪ λ(u, w), i 2) ako u 6= w, onda je S(u) 6= S(w). Pri tome S(u) moe bitiproizvoan podskup A, ukuqujui ∅ i A. Konstruisati algoritam za odreivae funkcijeS.

6.40. Jezgro usmerenog grafa G = (V, E) je takav podskup V ′ ⊆ V u kome qvorovinisu meusobno povezani granama, a za svaki qvor w /∈ V ′ postoji takva grana (v, w) dav ∈ V ′. Zadat je usmeren graf G = (V, E) sa n+1 qvorom i n grana, takav da je odgovarajuineusmereni graf stablo. Konstruisati algoritam koji pronalazi jezgro G ili utvruje daG ne sadri jezgro.

6.41. Neka je G = (V, E) povezan usmeren graf, takav da ako (v, w) ∈ E, onda i (w, v) ∈ E,za svaki par v, w ∈ V . Neka je f : E → R takva funkcija, da za svaku granu (v, w) ∈ E vaif(v, w) = −f(w, v), a za proizvoni ciklus koji qine grane e1, e2, . . . , ek vai

∑ki=1 f(ei) = 0.

Konstruisati algoritam linearne vremenske sloenosti za odreivae funkcije p : V → R,takve da za svaku granu (v, w) ∈ E vai f(v, w) = p(w)− p(v).

6.42. Minimalno povezujue stablo (MCST) grafa moe se odrediti i na sledeinaqin. Umesto da se radi sa jednim stablom kome se dodaje grana po grana, moe se raditisa kolekcijom disjunktnih stabala (koja su deo MCST) i povezivati ih dodajui jednu pojednu granu. Na poqetku su svi qvorovi disjunktna stabla sa po 0 grana. U svakom korakualgoritam pronalazi granu najmae cene qiji krajevi pripadaju razliqitim stablima, ipovezuje ta dva stabla dodajui naenu granu. Konstruisati algoritam zasnovan na ovompristupu. Kolika je sloenost algoritma?

ZADACI 177

6.43. Neka je G = (V, E) neusmeren teinski graf, i neka je F xuma, podgraf grafaG (tj. F ne sadri cikluse). Konstruisati efikasan algoritam za odreivae povezujuegstabla G koje sadri sve grane F , i (pod tim uslovima) ima minimalnu cenu.

6.44. Neka je e grana maksimalne teine u nekom ciklusu grafa G = (V, E). Dokazatida postoji MCST grafa G′ = (V, E \ e) koje je istovremeno i MCST grafa G.

6.45. Neka je G = (V, E) povezan neusmeren teinski graf. Moe se pretpostavitida su teine grana pozitivne i razliqite. Za proizvonu granu e ∈ E neka T (e) oznaqavapovezujue stablo G sa minimalnom cenom meu svim povezujuim stablima G koja sadree. Konstruisati algoritam sloenosti O(|V |2), koji odreuje T (e) za sve grane e ∈ E.

6.46. Neka je G = (V, E) neusmeren teinski graf i neka je T neko minimalno pove-zujue stablo (MCST) grafa G. Pretpostavimo da su teine svih grana u G poveane zakonstantu c. Da li je T i dae MCST?

6.47. Neka je G = (V, E) povezan neusmereni graf sa n qvorova numerisanih od 1 do n.Konstruisati efikasan algoritam za odreivae najmaeg k takvog da ako se redom ukloneqvorovi 1, 2, . . . , k, onda se dobija graf qije sve komponente sadre najvixe n/2 qvorova.Uklaae qvora podrazumeva i uklaae svih emu susednih grana.

6.48. Neka je G = (V, E) neusmeren graf. Skup grana F ⊆ E zove se skup povratnihgrana ako svaki ciklus u G sadri bar jednu granu iz F . Konstruisati algoritam zanalaee minimalnog skupa povratnih grana.

6.49. Dokazati da algoritam za odreivae svih najkraih puteva sa slike 25 radikorektno za teinske grafove sa nekim negativnim teinama, pod uslovom da teina nijednog ciklusa nije negativna.

6.50. Neka je G = (V, E) usmeren teinski graf u kome neke teine mogu biti nega-tivne, ali nema ciklusa negativne teine (ciklusa u kome je zbir teina grana negativan).Neka je T povezujue stablo G sa korenom v. Konstruisati algoritam linearne sloenostikoji utvruje da li T sadri samo najkrae puteve od v do svih ostalih qvorova G (izlazje samo odgovor "da" ili "ne").

6.51. Neka je G = (V, E) usmeren teinski graf u kome neke grane imaju negativnuteinu. Konstruisati efikasan algoritam za utvrivae da li graf sadri ciklus nega-tivne teine (dovono je odgovoriti sa "da" ili "ne").

6.52. Hamiltonov put je prosti put koji sadri sve qvorove grafa. Konstruisatialgoritam linearne sloenosti koji utvruje da li zadati acikliqki usmereni graf G =(V, E) sadri neki Hamiltonov put.

6.53. Algoritam Tranzit zatvorenje2, (slika 27) ima tri umetnute pete. Spoaxapeta bira kolonu, druga vrstu, a trea obrauju izabranu vrstu. Pretpostavimo da jezameen redosled prve i druge pete. Pokazati kontraprimerom da ovaj algoritam ne nalaziuvek tranzitivno zatvoree.

6.54. Baza qvorova usmerenog grafa G = (V, E) je podskup B ⊆ V najmae veliqinesa osobinom da za svaki qvor v ∈ V postoji qvor b ∈ B, takav da postoji put duine veeili jednake od 0 od b do v. Dokazati sledea dva tvrea.

(a) Qvor koji ne pripada ni jednom ciklusu i ima ulazni stepen vei od nule ne moebiti ni u jednoj bazi qvorova.

(b) Acikliqki usmereni graf ima jedinstvenu bazu qvorova, koju je lako odrediti.6.55. Konstruisati algoritam linearne sloenosti za odreivae optimalnog upari-

vaa u stablu.6.56. Dat je bipartitni graf G, qiji su qvorovi a, b, c, d, e, f , g i 1, 2, 3, 4, 5, 6,

7, odnosno grane (a, 1), (a, 2), (a, 5), (b, 1), (b, 2), (b, 6), (c, 1), (c, 2), (c, 3), (c, 7), (d, 1), (d, 2),(e, 1), (e, 4), (f, 5), (g, 6), videti sliku 39. Odrediti optimalno uparivae u G.

178 6. GRAFOVSKI ALGORITMI

c cg 7

cccccc

cccccc

f

e

d

c

b

a

6

5

4

3

2

1

Ris. 39. Uz zadatak 6.56.

6.57. Dat je usmereni graf (mrea) G = (V, E) sa dva izdvojena qvora s i t (videtisliku 40). Granama grafa pridrueni su brojevi, ihovi kapaciteti. Odrediti optimalni(najvei mogui) tok kroz mreu.

d-

d

d

d

d

-

-

d d

µ

-

R

j

j

>-~ t

7

3

5

5

5

3

7

28

9

7

s

d

Ris. 40. Uz zadatak 6.57.

6.58. Zvezda je stablo sa bar dva qvora u kome je jedan qvor susedan svim ostalimqvorovima. Neka je G = (V, E) neusmeren povezan graf. Zadatak je konstruisati algoritamza nalaee (bilo koje) kolekcije disjunktnih zvezda (bez zajedniqkih qvorova), takve dasvaki qvor pripada nekoj zvezdi. Drugim reqima, zvezde treba da pokrivaju sve qvorove,ali ne obavezno i sve grane grafa.

(a) Pronai grexku u sledeem algoritmu zasnovanom na indukciji. Induktivna hipotezaje da umemo da reximo problem za grafove sa mae od n qvorova. Za dati graf G = (V, E) san qvorova, biramo egov proizvoan qvor v i uklaamo ga iz G zajedno sa svim susedima.U preostalom grafu se zatim svaka komponenta povezanosti posebno razmatra i na u seprimeuje algoritam koji po induktivnoj hipotezi postoji.

(b) Konstruisati efikasan (i korektan) algoritam za rexavae ovog problema.6.59. Zadat je teinski bipartitni graf G = (V, E) sa n qvorova i m grana Kritiq-

na teina uparivaa M (u G) je teina najtee grane u M . Konstruisati algoritamsloenosti O(

√nm log n) za nalaee optimalnog uparivaa sa minimalnom kritiqnom

teinom.6.60. Rezultati turnira izmeu n igraqa, u kome se svaki uqesnik odmerava sa svima

ostalim i nema nerexenih rezultata, dati su matricom. U opxtem sluqaju uqesnici se nemogu rangirati, jer se moe desiti npr. da je A pobedio B, B pobedio C, i C pobedioA (tj. rezultati ne moraju biti tranzitivni). Zadatak je odrediti takav redosled igraqaP1, P2, . . . , Pn, da je Pi pobedio Pi+1 za i = 1, 2, . . . , n−1. Algoritam treba da bude sloenostiO(n log n).

6.61. ∗ Bojee grafa je pridruivae boja granama grafa, takvo da grane susedne is-tom qvoru imaju razliqite boje. Neka je k stepen dvojke. Konstruisati algoritam sloenostiO(|E| log k) za bojee neusmerenog bipartitnog grafa qiji svi qvorovi imaju stepen k.

ZADACI 179

6.62. Pokrivaq grana neusmerenog grafa G = (V, E) je skup qvorova U takav daje svaka grana iz E susedna bar jednom qvoru iz U . Konstruisati efikasan algoritam zanalaee najmaeg pokrivaqa grana datog stabla.

6.63. Neka je G = (V, E) stablo, qijem je svakom qvoru dodeena teina jednaka egov-om stepenu. Konstruisati algoritam za nalaee pokrivaqa grana minimalne teinegrafa G.

6.64. Neka je G = (V, E) povezan neusmeren graf, i neka je k prirodan broj. Konstru-isati algoritam za utvrivae da li u G postoji pokrivaq grana (videti zadatak 6.62) sanajvixe k qvorova, koji je istovremeno i nezavisan skup (tj. ne postoji grana izmeu bilokoja dva od tih k qvorova).

6.65. Konstruisati algoritam koji za dati graf G = (V, E) utvruje da li sadripodskup U qvorova koji je istovremeno i minimalni pokrivaq grana i maksimalni nezavisniskup. Algoritam treba da pronae takav skup U ako postoji.

6.66. Intervalni graf je neusmereni graf qiji qvorovi odgovaraju intervalimana realnoj osi, a dva qvora su povezana ako se odgovarajui intervali seku. Neka je Gintervalni graf nekog skupa intervala. Konstruisati efikasan algoritam za nalaeemaksimalnog nezavisnog skupa u G (maksimalnog skupa qvorova takvog da nikoja dva egovaqvora nisu povezana granom).

6.67. (a) Konstruisati algoritam sloenosti O(|V |3) za utvrivae da li zadati ne-usmereni graf G = (V, E) sadri kvadrat (ciklus duine qetiri) kao podgraf.

(b) Usavrxiti algoritam, tako da mu sloenost bude O(|V ||E|). Moe se koristitimatrica povezanosti ili lista povezanosti grafa.

6.68. Pokazati da ne postoji algoritam sloenosti O(|V ||E|) za nalaee svih kvad-rata (videti zadatak 6.67) koji su podgrafovi neusmerenog grafa G = (V, E).

Glava 7

Geometrijski algoritmi

7.1. UvodGeometrijski algoritmi igraju vanu ulogu u mnogim oblastima, na pri-

mer u raqunarskoj grafici, projektovau pomou raqunara, projektovau VLSI(integrisanih kola visoke rezolucije), robotici i bazama podataka. U raqu-narski generisanoj slici moe biti na hiade ili qak milione taqaka, li-nija, kvadrata ili krugova; projektovae kompjuterskog qipa moe da zahtevarad sa milionima elemenata. Svi ovi problemi sadre obradu geometrijskihobjekata. Poxto veliqina ulaza za ove probleme moe biti vrlo velika, veomaje znaqajno znati efikasne algoritme za ihovo rexavae.

Postoje dve u izvesnoj meri razdvojene oblasti u kojima se pojavuju ge-ometrijski algoritmi, ali se, na alost, obe zovu raqunarska grafika. Jed-na od ih bavi se kontinualnim, a druga diskretnim aspektima geome-trijskih objekata. Granica nije precizna, pa postoje mnogi sliqni problemii tehnike. Ovde emo se vixe baviti diskretnom raqunarskom grafikom. Uovom poglavu razmotriemo nekoliko osnovnih geometrijskih algoritama |onih koji se mogu koristiti kao elementi za izgradu sloenijih algoritama,odnosno algoritama koji ilustruju zanimive tehnike.

Objekti sa kojima se radi su taqke, prave, dui i mnogouglovi. Algorit-mi obrauju ove objekte, odnosno izraqunavaju neke ihove karakteristike.Najpre dajemo osnovne definicije i navodimo strukture podataka pogodne zapredstavae pojedinih objekata. Taqka p u ravni predstava se kao parkoordinata (x, y) (pretpostava se da je izabran fiksirani koordinatni sis-tem). Prava je predstavena parom taqaka p i q (proizvone dve razliqitetaqke na pravoj), i oznaqava se sa −p − q−. Du se pak predstava paromtaqaka p i q | krajeva dui, i oznaqava sa p − q. Put P je niz taqaka p1,p2, . . . , pk i dui p1 − p2, p2 − p3,. . . , pk−1 − pk koje ih povezuju. Dui kojeqine put su egove ivice (stranice). Zatvoreni put je put qija se posled-a taqka poklapa sa prvom. Zatvoreni put zove se i mnogougao. Taqke kojedefinixu mnogougao su egova temena. Na primer, trougao je mnogougao satri temena. Mnogougao se predstava nizom, a ne skupom taqaka, jer je bitanredosled kojim se taqke zadaju (promenom redosleda taqaka iz istog skupa uopxtem sluqaju dobija se drugi mnogougao). Prosti mnogougao je onaj kodkoga odgovarajui put nema preseka sa samim sobom; drugim reqima, jedineivice koje imaju zajedniqke taqke su susedne ivice sa ihovim zajedniqkim

181

182 7. GEOMETRIJSKI ALGORITMI

temenom. Prosti mnogougao ograniqava jednu oblast u ravni, unutraxostmnogougla. Konveksni mnogougao je mnogougao qija unutraxost sa svakedve taqke koje sadri, sadri i sve taqke te dui. Konveksni put je putod taqaka p1, p2, . . . , pk takav je mnogougao p1p2 . . . pk konveksan.

Pretpostava se da je qitalac upoznat sa osnovama analitiqke geometrije.U algoritmima koje emo razmatrati nailazi se, na primer, na izraqunavaepreseqne taqke dveju dui, utvrivae da li taqka lei sa zadate straneprave, izraqunavae rastojaa izmeu dve taqke. Sve ove operacije mogu seizvesti za vreme ograniqeno konstantom, pomou osnovnih aritmetiqkih ope-racija. Pri tome, na primer, pretpostavamo da se kvadratni koren moeizraqunati za konstantno vreme; ovaj problem bie spomenut u odeku 7.3.

Qesta neugodna karakteristika geometrijskih problema je postojae mno-gih "specijalnih sluqajeva". Na primer, dve prave u ravni obiqno se seku ujednoj taqki, sem ako su paralelne ili se poklapaju. Pri rexavau problemasa dve prave, moraju se predvideti sva tri mogua sluqaja. Komplikovanijiobjekti prouzrokuju pojavu mnogo veeg broja specijalnih sluqajeva, o kojimatreba voditi raquna. Obiqno se veina tih specijalnih sluqajeva neposred-no rexava, ali potreba da se oni uzmu u obzir qini ponekad konstrukcijugeometrijskih algoritama vrlo iscrpujuom. Mi emo namerno ignorisatidetae koji nisu od suxtinskog znaqaja za razumevae osnovnih ideja algori-tama.

7.2. Utvrivae da li zadata taqka pripada mnogougluRazmatrae zapoqiemo jednim jednostavnim problemom.Problem. Zadat je prost mnogougao P i taqka q. Ustanoviti da li je taqka

u ili van mnogougla P .Problem izgleda jednostavno na prvi pogled, ali ako se razmatraju slo-

eni nekonveksni mnogouglovi, kao onaj na slici 1, problem sigurno nijejednostavan. Prvi intuitivni pristup je pokuxati nekako "izai napoe",polazei od zadate taqke. Posmatrajmo proizvonu polupravu sa temenom q.Vidi se da je dovono prebrojati preseke sa stranicama mnogougla, sve dodostizaa spoaxe oblasti. U primeru na slici 1, idui na severoistok oddate taqke (pratei isprekidanu liniju), nailazimo na xest preseka sa mno-gouglom do dostizaa spoaxe oblasti (istina, ve posle qetiri presekastie se van mnogougla, ali to raqunar "ne vidi"; zato se broji ukupan brojpreseka poluprave sa stranicama mnogougla). Poxto nas posledi presek preizlaska izvodi iz mnogougla, a pretposledi nas vraa u mnogougao, itd, taq-ka je van mnogougla. Uopxte (specijalne sluqajeve na trenutak zanemarujemo)taqka je u mnogouglu ako i samo ako je neparan. Imamo dakle skicu algoritma,videti sliku 2.

Kao xto je reqeno u prethodnom odeku, obiqno postoje neki specijalnisluqajevi koje treba posebno razmotriti. Neka je s taqka van mnogougla, i ne-ka je L du koja spaja q i s. Ci je utvrditi da li q pripada unutraxosti

7.2. UTVRIVAE DA LI ZADATA TAQKA PRIPADA MNOGOUGLU 183

q

Ris. 1. Utvrivae pripadnosti taqke unutraxosti pros-tog mnogougla.

Algoritam Tacka u mnogouglu 1(P, q); prvi pokuxajUlaz: P (prost mnogougao sa temenima p1, p2, . . . , pn i ivicama e1, e2, . . . , en), i q (taqka).Izlaz: Pripada (Bulova promeniva, true akko q pripada P ).begin

Izabrati proizvonu taqku s van mnogougla;Neka je L du q − s;

broj := 0;

for sve grane ei mnougla do

if ei seqe L then

pretpostavamo da presek nije ni teme ni ivica, videti tekstbroj := broj + 1;

if broj je neparan then pripada := true

else pripada := false

end

Ris. 2. Provera pripadnosti taqke unutraxosti zadatogprostog mnogougla.

P na osnovu broja preseka L sa ivicama P . Meutim, du L moe se delompreklapati sa nekim ivicama P . Ovo preklapae oqigledno ne treba brojatiu preseke. Drugi specijalni sluqaj je presek L sa temenom mnogougla. Na sli-ci 3(a) vidi se primer sluqaja kad presek L sa temenom ne treba brojati, ana slici 3(b) primer kad taj presek treba brojati. Precizirae algoritma uovom smislu prepuxta se qitaocu (videti zadatak 7.1).

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. Usluqaju mnogougla datog nizom koordinata, to nije lako. Najvei deo vremenatroxi se na izraqunavae preseka. Taj deo posla moe se bitno uprostitiako je du q − s paralelna jednoj od osa | na primer y-osi. Broj preseka sa

184 7. GEOMETRIJSKI ALGORITMI

s

sq

s s

sq

s(a) (b)

Ris. 3. Specijalni sluqajevi kad prava seqe ivicu kroz teme.

ovom specijalnom dui moe biti mnogo vei nego sa optimalnom dui (kojunije lako odrediti | videti zadatak 7.3), ali je nalaee preseka mnogojednostavnije. Modifikovani algoritam prikazan je na slici 4.

Algoritam Tacka u mnogouglu 2(P, q); drugi pokuxajUlaz: P (prosti mnogougao sa temenima p1, p2, . . . , pn i stranicama e1, e2, . . . , en),i q (taqka sa koordinatama (x0, y0)).Izlaz: Pripada (bulova promeniva, true akko q pripada P ).begin

Broj := 0;

for sve grane ei mnogougla do

if prava x = x0 seqe ei then

Pretpostavamo da presek nije ni teme ni stranica mnogouglaNeka je yi y-koordinata preseka prave x = x0 sa ei;

if yi < y0 then presek je ispod qBroj := Broj + 1;

if Broj je neparan then Pripada := true

else Pripada := false

end

Ris. 4. Usavrxena varijanta algoritma za proveru da li taq-ka pripada zadatom prostom mnogouglu.

Sloenost. Za izraqunavae preseka dve dui potrebno je konstantnovreme. Neka je n broj ivica mnogougla. Kroz osnovnu petu algoritma prolazise n puta. U svakom prolasku nalazi se presek dve dui i izvrxavaju sejox neke operacije za konstantno vreme. Dakle, ukupno vreme izvrxavaaalgoritma je O(n).

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.Pristup rexavau problema postupkom koji se vizuelno namee je obiqno do-bar izbor. Time se moe doi do vixe korisnih zapaaa o problemu. U

7.3. KONSTRUKCIJA PROSTOG MNOGOUGLA 185

ovom sluqaju, posmatrajui sliku, primetili smo da se problem moe rexitipratei neki put od taqke do spoaxosti mnogougla.

7.3. Konstrukcija prostog mnogouglaSkup taqaka u ravni definixe mnogo razliqitih mnogouglova, zavisno

od izabranog redosleda taqaka. Razmotriemo sada pronalaee prostog mno-gougla sa zadatim skupom temena.

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

Postoji vixe metoda za konstrukciju traenog prostog mnogougla; uosta-lom, jasno je da u opxtem sluqaju problem nema jednoznaqno rexee. Prikaza-emo najpre geometrijski pristup ovom problemu. Neka je C veliki krug, qijaunutraxost sadri sve taqke. Za nalaee takvog kruga dovono je O(n)operacija | izraqunavaa najveeg meu rastojaima proizvone taqke ravni(centra kruga) do svih n taqaka. Povrxina C moe se "prebrisati" (pregle-dati) rotirajuom polupravom kojoj je poqetak centar C, videti sliku 5. Pret-postavimo zasad da rotirajua poluprava u svakom trenutku sadri najvixejednu taqku. Oqekujemo da emo spajaem taqaka onim redom kojim polupra-va nailazi na ih, dobiti prost mnogougao. Pokuxajmo da to dokaemo. Oz-naqimo taqke, ureene u skladu sa redosledom nailaska poluprave na ih, sap1, p2, . . . , pn (prva taqka bira se proizvono). Za svako i, 1 ≤ i ≤ n, stra-nica pi − pi−1 (odnosno p1 − pn za i = 1) sadrana je u novom (disjunktnom)iseqku kruga, pa se ne seqe ni sa jednom drugom stranom. Ako bi ovo tvreebilo taqno, dobijeni mnogougao bi morao da bude prost. Meutim, ugao izmed-ju polupravih kroz neke dve uzastopne taqke pi i pi+1 moe da bude vei odπ. Tada iseqak koji sadri du pi − pi+1 sadri vixe od pola kruga i nijekonveksna figura, a du pi − pi+1 prolazi kroz druge iseqke kruga, pa moeda seqe druge strane mnogougla. Da bismo se uverili da je to mogue, dovonoje da zamislimo krug sa centrom van kruga sa slike 5. Ovo je dobar primerspecijalnih sluqajeva na koje se nailazi pri rexavau geometrijskih proble-ma. Potrebno je da budemo paivi, da bismo bili sigurni da su svi sluqajevirazmotreni. Na ovu pojavu nailazi se kod svih vrsta algoritama, ali je onakod geometrijskih algoritama drastiqnije izraena.

Da bi se rexio uoqeni problem, mogu se, na primer, fiksirati proizvonetri taqke iz skupa, a za centar kruga izabrati neku taqku unutar ima odree-nog trougla (na primer teixte, koje se lako nalazi). Ovakav izbor garantujeda ni jedan od dobijenih sektora kruga nee imati ugao vei od π. Mogueje izabrati i drugo rexee, da se za centar kruga uzme jedna od taqaka izskupa | taqka z sa najveom x-koordinatom (i sa najmaom y-koordinatom, akoima vixe taqaka sa najveom x-koordinatom). Zatim koristimo isti osnovnialgoritam. Sortiramo taqke prema poloaju u krugu sa centrom z. Preciznije,sortiraju se uglovi izmeu x-ose i polupravih od z ka ostalim taqkama. Ako

186 7. GEOMETRIJSKI ALGORITMI

r

rrr

rr

r r

b?

Ris. 5. Prolazak taqaka u krugu rotirajuom polupravom.

dve ili vixe taqaka imaju isti ugao, one se dae sortiraju prema rastojauod taqke z. Na kraju, z se povezuje sa taqkom sa najmaim i najveim uglom,a ostale taqke povezuju se u skladu sa dobijenim ureeem, po dve uzastopne.Poxto sve taqke lee levo od z, do degenerisanog sluqaja o kome je bilo reqine moe doi. Prost mnogougao dobijen ovim postupkom za taqke sa slike 5prikazan je na slici 6.

s

ss

sss

ss

z

Ris. 6. Konstrukcija prostog mnogougla.

Opisani metod moe se usavrxiti na dva naqina. Prvo, uglovi se ne mora-ju eksplicitno izraqunavati. Uglovi se koriste samo za nalaee redosledakojim treba povezati taqke. Isti redosled dobija se ureeem nagiba (odnos-no odnosa priraxtaja y- i x-koordinata) odgovarajuih polupravih; to qi-ni nepotrebnim izraqunavae arkustangensa. Iz istog razloga nepotrebno jeizraqunavae rastojaa kad dve taqke imaju isti nagib | dovono je izraqu-nati kvadrate rastojaa. Dakle, nema potrebe za izraqunavaem kvadratnihkorenova. Algoritam je prikazan na slici 7.

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

7.4. Konveksni omotaqKonveksni omotaq skupa taqaka definixe se kao najmai konveksni

mnogougao koji sadri sve taqke skupa. Konveksni omotaq se predstava naisti naqin kao obiqan mnogougao, temenima navedenim u cikliqkom redosledu.

7.4. KONVEKSNI OMOTAQ 187

Algoritam Prost mnogougao(p1, p2, . . . , pn);

Ulaz: p1, p2, . . . , pn (taqke u ravni).Izlaz: P (prost mnogougao sa temenima p1, p2, . . . , pn u nekom redosledu).begin

promeniti oznake tako da p1 bude ekstremna taqka;taqka sa najveom x-koordinatom, a ako takvih ima vixe,ona od ih koja ima najmauy-koordinatufor i := 2 to n do

izraqunati ugao αi izmeu prave −p1 − pi− i x-ose;sortirati taqke prema uglovima α2, . . . , αn;

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

end

Ris. 7. Algoritam za konstrukciju prostog mnogougla sa za-datim skupom temena.

Problem. Konstruisati konveksni omotaq zadatih n taqaka u ravni.Obrada konveksnih mnogouglova jednostavnija je od obrade proizvonih

mnogouglova. Na primer, postoji algoritam sloenosti O(log n) za utvri-vae pripadnosti taqke konveksnom n-touglu (videti zadatak 7.11). Temenakonveksnog mnogougla su neke od taqaka iz zadatog skupa. Kaemo da taqkapripada omotaqu ako je teme omotaqa. Koveksni omotaq moe se sastojati odnajmae tri, a najvixe n taqaka. Konveksni omotaqi imaju xiroku primenu,pa su zbog toga razvijeni mnogobrojni algoritmi za ihovu konstrukciju.

7.4.1. Direktni pristup. Kao i obiqno, pokuxaemo najpre sa direk-tnim induktivnim pristupom. Konveksni omotaq za tri taqke lako je nai.Pretpostavimo da umemo da konstruixemo konveksni omotaq skupa od < ntaqaka, i pokuxajmo da konstruixemo konveksni omotaq skupa od n taqaka.Kako n-ta taqka moe da promeni konveksni omotaq za prvih n − 1 taqaka?Postoje dva mogua sluqaja: ili je nova taqka u prethodnom konveksnom omo-taqu (tada on ostaje nepromeen), ili je ona van ega, pa se omotaq "xiri"da obuhvati i novu taqku, videti sliku 8. Potrebno je dakle rexiti dva pot-problema: utvrivae da li je nova taqka unutar omotaqa i proxirivaeomotaqa novom taqkom. Oni nisu jednostavni. Stvar se moe uprostiti pogod-nim izborom n-te taqke. Zvuqi izazovno pokuxati sa izborom taqke unutaromotaqa; to, meutim, nije uvek mogue jer u nekim sluqajevima sve taqke pri-padaju omotaqu. Druga mogunost, koja se pokazala uspexnom u prethodnomproblemu, je izbor ekstremne taqke za n-tu taqku.

Izaberimo ponovo taqku sa najveom x-koordinatom (i minimalnom y-ko-ordinatom ako ima vixe taqaka sa najveom x-koordinatom). Neka je to taq-ka q. Jasno je da taqka q mora biti teme konveksnog omotaqa. Pitae je kako

188 7. GEOMETRIJSKI ALGORITMI

t

t

t

tt

ttt t

ttt p2

p1

p6

p5 p4p3

q

Ris. 8. Proxirivae konveksnog omotaqa novom taqkom.

promeniti konveksni omotaq ostalih n−1 taqaka tako da obuhvati i q. Potreb-no je najpre pronai temena starog omotaqa koja su u unutraxosti novog omo-taqa (p3 i p4 na slici 8) i ukloniti ih; zatim se umee novo teme q izmeudva postojea (p2 i p5 na slici 8). Prava oslonca konveksnog mnogougla jeprava koja mnogougao seqe u taqno jednoj taqki. Mnogougao uvek ceo lei sajedne strane svoje prave oslonca. Posmatrajmo sada prave oslonca −q − p2−i −q − p5− na slici 8. Obiqno samo dva temena mnogougla povezivaem saq odreuju prave oslonca (ignorisaemo specijalni sluqaj kad dva ili vixetemena mnogougla lee na istoj pravoj sa q). Mnogougao lei izmeu dve praveoslonca, xto ukazuje kako treba izvesti modifikaciju omotaqa. Prave oslon-ca zaklapaju minimalni i maksimalni ugao sa x-osom meu svim pravim krozq i neko teme mnogougla. Da bismo odredili ta dva temena, treba da raz-motrimo prave iz q ka svim ostalim temenima, da izraqunamo uglove kojeone zaklapaju sa x-osom, i meu tim uglovima izaberemo minimalan i maksi-malan (videti zadatak 7.4). Posle pronalaea dva ekstremna temena lako jekonstruisati modifikovani omotaq. Izostaviemo detae algoritma, jer, kaoxto emo videti, postoji i efikasniji algoritam.

Sloenost. Za svaku taqku treba izraqunati uglove pravih ka svimprethodnim temenima i x-ose, pronai minimalni i maksimalni ugao, dodatinovi qvor i izbaciti neke qvorove. Sloenost dodavaa k-te taqke je dakleO(k), a videli smo ve da je rexee diferencne jednaqine T (n) = T (n−1)+cnoblika O(n2). Prema tome, sloenost ovog algoritma je O(n2). Algoritam napoqetku takoe zahteva i sortirae, ali je vreme sortiraa asimptotski maeod vremena potrebnog za ostale operacije.

7.4.2. Uvijae poklona. Kako se moe poboxati opisani algoritam?Kad proxirujemo mnogougao teme po teme, dosta vremena troximo na formi-rae konveksnih mnogouglova od taqaka koje mogu biti unutraxe za konaqnikonveksni omotaq. Moe li se to izbei? Umesto da pravimo omotaqe pod-skupova datog skupa taqaka, moemo da posmatramo kompletan skup taqaka ida direktno pravimo egov konveksni omotaq. Moe se, kao i u prethodnomalgoritmu, krenuti od ekstremne taqke (koja uvek pripada omotaqu), pronaioj susedna temena omotaqa nalazei prave oslonca, i nastaviti na isti naqin

7.4. KONVEKSNI OMOTAQ 189

od tih suseda. Ovaj algoritam iz razumivih razloga zove se uvijae pok-lona. Polazi se od jednog temena "poklona", i onda se on uvija u konveksniomotaq pronalazei teme po teme omotaqa. Algoritam je prikazan na slici 9.Algoritam se moe prepraviti tako da radi i u prostorima vee dimenzije.

Algoritam Uvijanje poklona(p1, p2, . . . , pn);

Ulaz: p1, p2, . . . , pn (skup taqaka u ravni).Izlaz: P (konveksni omotaq taqaka p1, p2, . . . , pn).begin

Neka je P prazan skup;

Neka je p taqka sa najveom x-koordinatom(i sa najmaom y-koordinatom, ako ima vixetaqka sa najveom x-koordinatom);

Ukuqi p u skup P ;

Neka je L prava kroz p paralelna sa x-osom;

while omotaq P nije zavrxen do

Neka je q taqka za koju je najmai ugao izmeu L i −p− q−;

Ukuqi q u skup P ;

L := prava − p− q−;

p := q

end

Ris. 9. Algoritam "uvijae poklona" za konstrukciju kon-veksnog omotaqa zadatog skupa taqaka.

Algoritam uvijae poklona je direktna posledica primene sledee in-duktivne hipoteze (po k):

Induktivna hipoteza. Za zadati skup od n taqaka u ravni, umemo dapronaemo konveksni put duine k < n koji je deo konveksnog omotaqa skupa.

Kod ove hipoteze naglasak je na proxirivau puta, a ne omotaqa. Umestoda pronalazimo konveksne omotaqe maih skupova, mi pronalazimo deo konaq-nog konveksnog omotaqa.

Sloenost. Da bismo dodali k-to teme omotaqu, treba da pronaemopravu sa najmaim i najveim uglom u skupu od n − k pravih. Zbog toga jevremenska sloenost algoritma uvijae poklona O(n2), xto asimptotski ni-je boe od algoritma zasnovanog na proxirivau omotaqa.

7.4.3. Grahamov algoritam. Sada emo razmotriti algoritam za na-laee konveksnog omotaqa sloenosti O(n log n). Zapoqie se sortiraemtaqaka prema uglovima, sliqno kao pri konstrukciji prostog mnogougla uodeku 7.3. Neka je p1 taqka sa najveom x-koordinatom (i sa najmaom y-koordinatom, ako ima vixe taqaka sa najveom x-koordinatom). Za svaku taqku

190 7. GEOMETRIJSKI ALGORITMI

pi izraqunavamo ugao izmeu prave −p1−pi− i x-ose, i sortiramo taqke premaveliqini ovih uglova, videti sliku 10. Taqke prolazimo redosledom kojimse pojavuju u (prostom) mnogouglu, i pokuxavamo da identifikujemo teme-na konveksnog omotaqa. Kao i kod algoritma uvijae poklona pamtimo putsastaven od dela proenih taqaka. Preciznije, to je konveksni put qiji kon-veksni mnogougao sadri sve do sada pregledane taqke (odgovarajui konvek-sni mnogougao dobija se povezivaem prve i poslede taqke puta). Zbog toga,u trenutku kad su sve taqke pregledane, konveksni omotaq skupa taqaka jekonstruisan. Osnovna razlika izmeu ovog algoritma i uvijaa poklona je uqienici da tekui konveksni put ne mora da bude deo konaqnog konveksnogomotaqa. To je samo deo konveksnog omotaqa do sada pregledanih taqaka. Putmoe da sadri taqke koje ne pripadaju konaqnom konveksnom omotaqu; tetaqke bie eliminisane kasnije. Na primer, put od p1 do qm na slici 10 jekonveksan, ali qm i qm−1 oqigledno ne pripadaju konveksnom omotaqu. Ovorazmatrae sugerixe algoritam zasnovan na sledeoj induktivnoj hipotezi.

r r

r

r

r

rr

rp1

qm−1

qm

pk+1

Ris. 10. Grahamov algoritam za nalaee konveksnog omo-taqa skupa taqaka.

Induktivna hipoteza. Ako je dato n taqaka u ravni, ureenih premaalgoritmu Prost mnogougao (odeak 7.3), onda umemo da konstruixemo kon-veksni put preko nekih od prvih k taqaka, takav da odgovarajui konveksnimnogougao obuhvata prvih k taqaka.

Sluqaj k = 1 je trivijalan. Oznaqimo konveksni put dobijen (induktivno)za prvih k taqaka sa P = q1, q2, . . . , qm. Sada treba da proxirimo induktivnuhipotezu na k + 1 taqaka. Posmatrajmo ugao izmeu pravih −qm−1 − qm− i−qm − pk+1− (videti sliku 10). Ako je taj ugao mai od π (pri qemu se ugaomeri iz unutraxosti mnogougla), onda se pk+1 moe dodati postojeem putu(novi put je zbog toga takoe konveksan), qime je korak indukcije zavrxen. Uprotivnom, tvrdimo da qm lei u mnogouglu dobijenom zamenom qm u P taqkompk+1, i povezivaem pk+1 sa p1. Ovo je taqno jer su taqke ureene preme odgo-varajuim uglovima. Prava −p1 − pk+1− lei "levo" od prvih k taqaka. Zbogtoga qm jeste unutar gore definisanog mnogougla, moe se izbaciti iz P , apk+1 se moe dodati. Da li je time sve uraeno? Ne sasvim. Iako se qm moe

7.4. KONVEKSNI OMOTAQ 191

eliminisati, modifikovani put ne mora uvek da bude konveksan. Zaista, sli-ka 10 jasno pokazuje da postoje sluqajevi kad treba eliminisati jox taqaka. Naprimer, taqka qm−1 moe da bude unutar mnogougla definisanog modifiko-vanim putem. Moramo da (unazad) nastavimo sa proverama poslede dve graneputa, sve dok ugao izmeu ih ne postane mai od π. Put je tada konveksan,a hipoteza je proxirena na k + 1 taqku. Detai algoritma prikazani su naslici 11.

Algoritam Grahamov algoritam(p1, p2, . . . , pn);

Ulaz: p1, p2, . . . , pn (skup taqaka u ravni).Izlaz: q1, q2, . . . , qm (konveksni omotaq taqaka p1, p2, . . . , pn).begin

Neka je p1 taqka sa najveom x-koordinatom (a najmaom y-koordinatom,ako ima vixe taqaka sa najveom x-koordinatom);

Pomou algoritma Prost mnogougao urediti taqke u odnosu na p1;

neka je to redosled p1, p2, . . . , pn;

q1 := p1;

q2 := p2;

q3 := p3; put P se na poqetku sastoji od p1, p2 i p3m := 3;

for k := 4 to n do

while ugao izmeu − qm−1 − qm − i − qm − pk−) ≥ π do

m := m− 1;

m := m + 1;

qm := pk na slici 10 to je pk+1end

Ris. 11. Grahamov algoritam za konstrukciju konveksnogomotaqa zadatog skupa taqaka.

Sloenost. Glavni deo sloenosti algoritma potiqe od poqetnog sor-tiraa. Ostatak algoritma izvrxava se za vreme O(n). Svaka taqka skupa raz-matra se taqno jednom u induktivnom koraku kao pk+1. U tom trenutku taqkase uvek dodaje konveksnom putu. Ista taqka bie razmatrana i kasnije (modaqak i vixe nego jednom) da bi se proverila ena pripadnost konveksnom putu.Broj taqaka na koje se primeuje ovakav povratni test moe biti veliki, alise sve one, sem dve (tekua taqka i taqka za koju se ispostava da dae pripadakonveksnom putu) eliminixu, jer taqka moe biti eliminisana samo jednom!Prema tome, troxi se najvixe konstantno vreme za eliminaciju svake taqkei konstantno vreme za eno dodavae. Ukupno je za ovu fazu potrebno O(n)koraka. Zbog sortiraa je vreme izvrxavaa kompletnog algoritma O(n log n).

192 7. GEOMETRIJSKI ALGORITMI

7.5. Najblii par taqakaPretpostavimo da su zadate lokacije n objekata i da je zadatak da prove-

riti postoje li meu ima dva, koji su preblizu jedan drugom. Ovi objektimogu biti, na primer, delovi mikroprocesorskog qipa, zvezde u galaksiji ilisistemi za navodavae. Ovde emo razmotriti samo jednu varijantu ovogproblema, kao predstavnika xire klase.

Problem. U zadatom skupu od n taqaka u ravni pronai dve koje su nanajmaem meusobnom rastojau.

Sliqni ovom su problemi nalaea najblie taqke (ili k najbliihtaqaka) za svaku taqku zadatog skupa, ili nalaee najblie taqke novododa-toj taqki.

7.5.1. Direktni pristup. Mogu se izraqunati rastojaa izmeu svakedve taqke, i zatim pronai najmae meu rastojaima. To obuhvata n(n− 1)/2izraqunavaa rastojaa i n(n− 1)/2− 1 uporeivaa. Direktno induktivnorexee moglo bi se zasnivati na uklaau jedne taqke, rexavau problemaza n−1 taqaka, i dodavau nove taqke. Meutim, jedina korisna informacijakoja se dobija rexavaem problema za n − 1 taqaka je minimalno rastojae,pa se moraju proveriti rastojaa nove taqke do svih prethodnih n− 1 taqaka.Zbog toga ukupan broj T (n) izraqunavaa rastojaa za n taqaka zadovoavadiferencnu jednaqinu T (n) = T (n − 1) + n − 1, T (2) = 1, qije je rexeeT (n) = O(n2). Dva opisana rexea suxtinski su ekvivalentna. Ci je dapronai efikasniji algoritam za velike n.

7.5.2. Algoritam zasnovan na dekompoziciji. Umesto da razmatramotaqke jednu po jednu, moemo da skup taqaka podelimo na dva jednaka dela.Induktivna hipoteza ostaje nepromeena, izuzev xto problem svodimo ne najedan problem sa n − 1 taqkom, nego na dva problema sa n/2 taqaka. Zbog jed-nostavnosti pretpostavimo da je n stepen dvojke, tako da je skup uvek moguepodeliti na dva jednaka dela. Postoji vixe naqina da se skup podeli na dvajednaka dela. Biramo naqin koji najvixe odgovara naxim cievima. Volelibismo da dobijemo xto vixe korisnih informacija iz rexea maih proble-ma, odnosno da xto vei deo tih informacija vai i za kompletan problem.Izgleda razumno da se skup podeli na dva dela podelom ravni na dva disjunk-tna dela, tako da svaki od ih sadri polovinu taqaka. Poxto se pronaenajmaa rastojaa u svakom delu, treba razmotriti samo rastojaa izmeutaqaka bliskih granici skupova. Najjednostavniji naqin podele je sortiratitaqke prema (na primer) x-koordinatama i podeliti ravan pravom paralel-nom sa y-osom, koja deli skup na dva jednaka dela, videti sliku 12 (ako vixetaqaka lei na pravoj podele, taqke se mogu na proizvoan naqin razdelitiizmeu skupova). Naqin podele izabran je tako da se maksimalno pojednos-tavi objediavae rexea maih problema. Sortirae treba izvrxiti samojednom.

7.5. NAJBLII PAR TAQAKA 193

-¾ -¾d1 d1

s

s

s

s

s

s

ss

s

s

s

s

s s

s

s

-¾d1-¾

d2

Ris. 12. Problem nalaea dve najblie taqke.

Zbog jednostavnosti ograniqiemo se na nalaee vrednosti najmaegrastojaa izmeu taqaka (a ne i para taqaka za koje se ono dostie). Prona-laee dve najblie taqke izvodi se minimalnom doradom algoritma. Nekaje P skup taqaka i neka je n stepen dvojke. Najpre se skup P deli na dvaistobrojna podskupa P1 i P2 na opisani naqin. Najmae rastojae u svakompodskupu pronalazi se na osnovu induktivne hipoteze. Neka je d1 minimalnorastojae u P1, a d2 minimalno rastojae u P2. Bez smaea opxtosti moese pretpostaviti da je d1 ≤ d2. Potrebno je pronai najmae rastojae u celomskupu, odnosno ustanoviti da li u P1 postoji taqka na rastojau maem od d1

od neke taqke u P2. Primetimo najpre da je dovono razmatrati taqke u tracixirine 2d1, simetriqnoj u odnosu na pravu podele (videti sliku 12). Ostaletaqke ne mogu biti na rastojau maem od d1 od neke taqke iz drugog podskupa.Na osnovu ovog zapaaa obiqno se iz razmatraa eliminixe veliki brojtaqaka. Meutim, u najgorem sluqaju sve taqke mogu biti u traci, pa ne moemoda sebi priuxtimo primenu trivijalnog algoritma na ih.

Drugo mae oqigledno zapaae je da za proizvonu taqku p u tracipostoji samo mali broj taqaka u suprotnoj traci qije rastojae od p moe bitimae od d1. Iskoristiemo qienicu da je

√2/2 > 0.7. Neka je sa yp oznaqena

y-koordinata taqke p. Konstruiximo pravougaonik visine 2.1d1 < 32

√2d1 i

xirine 1.4d1 <√

2d1 u suprotnoj traci (videti sliku 13), tako da nalee napravu podele i da mu je y-koordinata preseka dijagonala jednaka yp. Podelimoga jednom vertikalnom pravom i sa dve horizontalne prave na xest jednakihkvadrata stranice 0.7d1 (kojima je dijagonala maa od d1!). U svakom od malihkvadrata moe se nai najvixe jedna taqka, jer je rastojae bilo koje dvetaqke u kvadratu mae od d1. Sve taqke u drugom podskupu, sa rastojaem od pmaim od d1, oqigledno se moraju nalaziti u pravougaoniku. Dakle, u drugompodskupu se moe nalaziti najvixe xest taqaka na rastojau od p maem odd1: taqka kandidat sa y-koordinatom yq mora da zadovoi i uslov |yp−yq| < d1,pa se mora nalaziti u jednom od 6 kvadrata. Prema tome, ako sve taqke u traci

194 7. GEOMETRIJSKI ALGORITMI

sortiramo prema y-koordinatama i pregledamo ih tim redom, dovono je da zasvaku taqku proverimo rastojae osam suseda u suprotnoj traci, qetiri ispodi qetiri iznad (a ne od svih n−1 taqaka u najgorem sluqaju). Skica algoritmadata je na slici 14.

-¾ -¾

d1 d1

v

0.7d1 0.7d1

0.7d1

0.35d1

0.35d1

0.7d1

p

v

v

v

v

v

v

6

?6

?

?

6

6

6

?

¾ -¾ -

v

v

Ris. 13. Ocena maksimalnog broja taqaka iz suprotnog pod-skupa, bliskih fiksiranoj taqki.

Sloenost. Sortirae sloenosti O(n log n) izvrxava se samo jednom.Zatim se rexavaju dva potproblema veliqine n/2. Eliminacija taqaka vancentralne trake moe se izvesti za O(n) koraka. Za sortirae taqaka u tracipo y-koordinatama u najgorem sluqaju potrebno je O(n log n) koraka. Konaq-no, potrebno je O(n) koraka da se pregledaju taqke u traci, i da se provererastojaa svake od ih od konstantnog broja suseda u sortiranom redosledu.Ukupno, da bi se rexio problem veliqine n, treba rexiti dva potproblemaveliqine n/2 i izvrxiti O(n log n) koraka za kombinovae ihovih rexea(plus O(n log n) koraka za jednokratno sortirae taqaka po x-koordinatama napoqetku). Dobijamo diferencnu jednaqinu T (n) < 2T (n/2)+cn log2 n, T (2) =1, pri qemu u T (n) nije ukuqeno poqetno sortirae po x-koordinatama. In-dukcijom se pokazuje da je eno rexee T (n) = O(n log2 n), odnosno preciznijeT (n) < cn log2

2 n: iz T (n/2) < c(n/2) log22(n/2) i diferencne jednaqine sledi da

za n > 2 vai T (n) < cn(log2 n−1)2+cn log2 n = cn(log22 n−log2 n+1) < cn log2

2 n.

7.5. NAJBLII PAR TAQAKA 195

Algoritam Najblizi par1(p1, p2, . . . , pn); prvi pokuxajUlaz: p1, p2, . . . , pn (skup taqaka u ravni).Izlaz: d (rastojae izmeu dve najblie taqke skupa).begin

Sortirati taqke prema x-koordinatama;ovo sortirae izvrxava se samo jednom, na poqetkuPodeliti skup na dva istobrojna podskupa;Rekurzivno izraqunati minimalno rastojae u oba podskupa;Neka je d mae od dva minimalna rastojaa;Eliminisati taqke koje su na rastojau veem od d od prave podele;Sortirati preostale taqke prema y-koordinatama;Za preostale taqke proveriti ihova rastojaa od 4 prethodne

i 4 naredne taqke iz suprotne trake;dovono je proveriti i samo 4 prethodne taqke!

if neko od ovih rastojaa je mae od d then

popraviti d

end

Ris. 14. Prva varijanta algoritma za nalaee najbliegpara taqaka.

Sloenost O(n log2 n) je asimptotski je boa od kvadratne, ali videemo dase moe jox malo poboxati.

7.5.3. Algoritam sloenosti O(n log n). Osnovna ideja je pojaqati in-duktivnu hipotezu. U toku objediavaa rexea potproblema izvodi se O(n log n)koraka zbog sortiraa taqaka po y-koordinatama. Moe li se sortirae izvestiusput u toku nalaea dveju najbliih taqaka? Drugim reqima, ci je po-jaqati induktivnu hipotezu za problem dve najblie taqke tako da obuhvatii sortirae.

Induktivna hipoteza. Za zadati skup od < n taqaka u ravni umemo dapronaemo najmae rastojae i da skup taqaka sortiramo po y-koordinatama.

Ve smo videli kako se moe pronai minimalno rastojae ako se taqkeu svakom koraku sortiraju po y-koordinatama. Dakle, potrebno je jox samoproxiriti induktivnu hipotezu tako da obuhvati sortirae n taqaka kad sudva podskupa veliqine n/2 ve sortirana. Meutim, to je upravo sortiraeobjediavaem (odeak 5.3.3). Osnovna prednost ovog pristupa je u tome xtose pri objediavau rexea ne mora izvesti kompletno sortirae, nego samoobjediavae dva ve sortirana podniza. Poxto se objediavae sortiranihpodnizova izvodi za O(n) koraka, diferencna jednaqina za sloenost (bezpoqetnog sortiraa po x-koordinatama) postaje T (n) < 2T (n/2)+cn, T (2) = 1.eno rexee je T (n) = O(n log n), xto je asimptotski jednako sloenosti

196 7. GEOMETRIJSKI ALGORITMI

poqetnog sortiraa taqaka po x-koordinatama. Poboxani algoritam prika-zan je na slici 15.

Algoritam Najblizi par2(p1, p2, . . . , pn); Poboxana verzijaUlaz: p1, p2, . . . , pn (skup taqaka u ravni).Izlaz: d (rastojae izmeu dve najblie taqke skupa).begin

Sortirati taqke prema x-koordinatama;ovo sortirae izvrxava se samo jednom, na poqetkuPodeliti skup na dva istobrojna podskupa;Rekurzivno izvrxiti sledee:

izraqunati minimalno rastojae u oba podskupa;sortirati taqke u svakom delu prema y-koordinatama;

Objediniti dva sortirana niza u jedan;

Objediavae se mora izvrxiti pre eliminacije:sledeem nivou rekurzije mora se isporuqiti sortiran kompletan skupNeka je d mae od dva minimalna rastojaa;Eliminisati taqke koje su na rastojau veem od d od prave podele;Za preostale taqke proveriti ihova rastojaa od 4 prethodne

i 4 naredne taqke iz suprotne trake;dovono je proveriti i samo 4 prethodne taqke!

if neko od ovih rastojaa je mae od d then

popraviti d

end

Ris. 15. Poboxana varijanta algoritma za nalaee na-jblieg para taqaka.

7.6. Preseci horizontalnih i vertikalnih duiQesto se nailazi na probleme nalaea preseka. Ponekad je potrebno

izraqunavae preseka vixe objekata, a ponekad samo treba otkriti da li jepresek neprazan skup. Problemi detekcije su obiqno lakxi. U ovom odekuprikazaemo jedan problem nalaea preseka, koji ilustruje vanu tehnikuza rexavae geometrijskih problema. Ista tehnika moe se primeniti i nadruge probleme.

Problem. Za zadati skup od n horizontalnih i m vertikalnih duipronai sve ihove preseke.

Ovaj problem vaan je, na primer, pri projektovau VLSI kola(integrisanih kola sa ogromnim brojem elemenata). Kolo moe da sadri na

7.6. PRESECI HORIZONTALNIH I VERTIKALNIH DUI 197

hiade "iqica", a projektant treba da bude siguran da ne postoje neoqeki-vani preseci. Na problem se takoe nailazi pri eliminaciji skrivenih lini-ja; taj problem je obiqno komplikovaniji, jer se ne radi samo o horizontalnimi vertikalnim linijama. Primer problema prikazan je na slici 16.

L

Ris. 16. Preseci horizontalnih i vertikalnih dui.

Nalaee svih preseka vertikalnih dui je jednostavan problem, koji seostava qitaocu za vebae (isto se odnosi i na horizontalne dui). Pret-postavimo zbog jednostavnosti da ne postoje preseci izmeu proizvone dvehorizontalne, odnosno proizvone dve vertikalne dui. Ako pokuxamo daproblem reximo uklaaem jedne po jedne dui (bilo horizontalne, bilovertikalne), onda e biti neophodno da se pronau preseci ukloene duisa svim ostalim duima, pa se dobija algoritam sa O(mn) nalaea presekadui. U opxtem sluqaju broj preseka moe da bude O(mn), pa algoritam moeda utroxi vreme O(mn) ve samo za prikazivae svih preseka. Meutim, brojpreseka moe da bude mnogo mai od mn. Voleli bismo da konstruixemo al-goritam koji radi dobro kad ima malo preseka, a ne previxe loxe ako presekaima mnogo. To se moe postii kombinovaem dveju ideja: izbora specijalnogredosleda indukcije i pojaqavaa induktivne hipoteze.

Redosled primene indukcije moe se odrediti pokretnom pravom kojaprelazi ("skenira") ravan sleva udesno; dui se razmatraju onim redom kojimna ih nailazi pokretna prava. Pored nalaea preseqnih taqaka, treba qu-vati i neke podatke o duima koje je pokretna prava ve zahvatila. Ti podacibie korisni za efikasnije nalaee narednih preseka. Ova tehnika zove setehnika pokretne linije.

Zamislimo vertikalnu pravu koja prelazi ravan sleva udesno. Da bismoostvarili efekat prebrisavaa, sortiramo sve krajeve dui prema ihovimx-koordinatama. Dve kraje taqke vertikalne dui imaju iste x-koordinate,pa je dovona jedna od ih. Za horizontalne dui moraju se koristiti obakraja. Posle sortiraa krajeva, dui se razmatraju jedna po jedna utvre-nim redosledom. Kao i obiqno pri induktivnom pristupu, pretpostavamoda smo pronaxli preseqne taqke prethodnih dui, i da smo obezbedili nekedopunske informacije, pa sada pokuxavamo da obradimo sledeu du i daunesemo neophodne dopune informacija. Prema tome struktura algoritma je

198 7. GEOMETRIJSKI ALGORITMI

u osnovi sledea. Razmatramo krajeve dui jedan po jedan, sleva udesno. Ko-ristimo informacije prikupene do sada (nismo ih jox specificirali) daobradimo kraj dui, pronaemo preseke u kojima ona uqestvuje, i dopuuje-mo informacije da bismo ih koristili pri sledeem nailasku na neki krajdui. Osnovni deo posla je definisae informacija koje treba prikupati.Pokuxajmo da pokrenemo algoritam da bismo otkrili koje su to informacijepotrebne.

Prirodno je u induktivnu hipotezu ukuqiti poznavae svih preseqnihtaqaka dui koje se nalaze levo od trenutnog poloaja pokretne prave. Dali je boe proveravati preseke kad se razmatra horizontalna ili vertikalnadu? Kad razmatramo vertikalnu du, horizontalne dui koje je mogu seijox uvek se razmatraju (poxto nije dostignut ihov desni kraj). S drugestrane, kad posmatramo bilo levi, bilo desni kraj horizontalne dui, miili nismo naixli na vertikalne dui koje je seku, ili smo ih ve zabo-ravili. Dakle, boe je preseke brojati prilikom nailaska na vertikalnudu. Pretpostavimo da je pokretna prava trenutno preklopila vertikalnudu L (videti sliku 16). Kakve informacije su potrebne da se pronau svipreseci dui L? Poxto se pretpostava da su svi preseci levo od trenutnogpoloaja pokretne prave ve poznati, nema potrebe razmatrati horizontalnudu ako je en desni kraj levo od pokretne prave. Prema tome, treba razma-trati samo one horizontalne dui qiji su levi krajevi levo, a desni krajevidesno od trenutnog poloaja pokretne prave (na slici 16 takvih dui imaxest). Potrebno je quvati listu takvih horizontalnih dui. Kad se naiena vertikalnu du L, potrebno je proveriti da li se ona seqe sa tim hor-izontalnim duima. Vano je primetiti da za nalaee preseka sa L ovdex-koordinate krajeva dui nisu od znaqaja. Mi ve znamo da horizontalnedui iz liste imaju x-koordinate koje "pokrivaju" x-koordinatu dui L.Potrebno je proveriti samo y-koordinate horizontalnih dui iz liste, da bise proverilo da li su one obuhvaene opsegom y-koordinata dui L. Sada smospremni da formulixemo induktivnu hipotezu.

Induktivna hipoteza. Neka je zadata lista od k sortiranih x-koordi-nata krajeva dui kao xto je opisano, pri qemu je xk najvea od x-koordinata.Umemo da pronaemo sve preseke dui koji su levo od xk, i da eliminixemosve horizontalne dui koje su levo od xk.

Za horizontalne dui koje se jox uvek razmatraju rei emo da su kan-didati (to su horizontalne dui qiji su levi krajevi levo, a desni krajevidesno od tekueg poloaja pokretne prave). Formiraemo i odravati struk-turu podataka koja sadri skup kandidata. Odloiemo za trenutak analizurealizacije ove strukture podataka.

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

7.6. PRESECI HORIZONTALNIH I VERTIKALNIH DUI 199

(1) (k + 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) (k+1)-i kraj dui je levi kraj horizontalne dui; du se tada dodajeu spisak kandidata. Poxto desni kraj dui jox nije dostignut, duse ne sme jox eliminisati, pa je i u ovom sluqaju induktivna hipotezaproxirena na ispravan naqin.

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

Algoritam je sada kompletan. Broj uporeivaa e obiqno biti mnogo man-ji od mn. Na alost, u najgorem sluqaju ovaj algoritam ipak zahteva O(mn)uporeivaa, qak iako je broj preseka mali. Ako se, na primer, sve horizon-talne dui prostiru sleva udesno ("celom xirinom"), onda se mora proveritipresek svake vertikalne dui sa svim horizontalnim duima, xto impli-cira sloenost O(mn). Ovaj najgori sluqaj pojavuje se qak i ako ni jednavertikalna du ne seqe ni jednu horizontalnu du.

Da bi se usavrxio algoritam, potrebno je smaiti broj uporeivaa y-koordinata vertikalne dui sa y-koordinatama horizontalnih dui u skupukandidata. Neka su y-koordinate dui koja se trenutno razmatra yD i yG,i neka su y-koordinate horizontalnih dui iz skupa kandidata y1, y2, . . . , yr.Pretpostavimo da su horizontalne dui u skupu kandidata zadate sortira-no prema y-koordinatama (odnosno niz y1, y2, . . . , yr je rastui). Horizontalnedui koje se seku sa vertikalnom mogu se pronai izvoeem dve binarne pre-trage, jedne za yD, a druge za yG. Neka je yi < yD ≤ yi+1 ≤ yj ≤ yG < yj+1.Vertikalnu du seku horizontalne sa koordinatama yi+1, yi+2,. . . yj , i samoone. Moe se takoe izvrxiti jedna binarna pretraga za npr. yD, a zatimprolaziti y-koordinate dok se ne doe do yj . Iako je polazni problem dvodi-menzionalan, nalaee yi+1, . . . yj je jednodimenzionalni problem. Traeebrojeva u jednodimenzionalnom opsegu (u ovom sluqaju od yD do yG) zove sejednodimenzionalna pretraga opsega. Ako su brojevi sortirani, onda je vremeizvrxea jednodimenzionalne pretrage opsega proporcionalno zbiru vreme-na traea prvog preseka i broja pronaenih preseka. Naravno, ne moemoda priuxtimo sebi sortirae horizontalnih dui pri svakom nailasku navertikalnu du.

Prisetimo se jox jednom zahteva. Potrebna je struktura podataka pogodnaza quvae kandidata, koja dozvoava umetae novog elementa, brisae ele-menta i efikasno izvrxee jednodimenzionalne pretrage opsega. Na sreu,postoji vixe struktura podataka | na primer, uravnoteeno stablo | kojaomoguuju izvrxee umetaa, brisaa i traea sloenosti O(log n) po op-eraciji (gde je n broj elemenata u skupu), i linearno pretraivae za vreme

200 7. GEOMETRIJSKI ALGORITMI

proporcionalno broju pronaenih elemenata. Algoritam je prikazan na sli-ci 17.

Algoritam Preseci((v1, v2, . . . , vm), (h1, h2, . . . , hn));

Ulaz: v1, v2, . . . , vm (skup vertikalnih dui), ih1, h2, . . . , hn (skup horizontalnih dui).yG(vi) i yG(vi) su maa i vea y-koordinata dui viIzlaz: Skup svih parova dui koje imaju presek.begin

Sortirati sve x-koordinate u neopadajui niz i smestiti ih u Q;

V := ∅;V je skup horizontalnih dui, trenutnih kandidata za preseke; organizovanje kao uravnoteeno stablo prema y-koordinatama horizontalnih duiwhile Q je neprazan do

ukloniti iz Q naredni kraj dui, p;

if p je desni kraj dui hk then

ukloniti hk iz V

else if p je levi kraj dui hk then

ukuqiti hk u V

else if p je x-koordinata vertikalne dui vi then

nalaee preseka kandidata sa vertikalnom duijednodimenzionalna pretraga opsega od yG(vi) do yG(vi) u V

end

Ris. 17. Algoritam za nalaee preseka horizontalnih ivertikalnih dui u ravni.

Sloenost. Poqetno sortirae prema x-koordinatama krajeva dui za-hteva O((m + n) log(m + n)) koraka. Poxto svako umetae i brisae zahtevaO(log n) koraka, ukupno vreme za obradu horizontalnih dui je O(n log n).Obrada vertikalnih dui zahteva jednodimenzionalnu pretragu opsega, kojase moe izvrxiti za vreme O(log n + r), gde je r broj preseka ove vertikalnedui. Vremenska sloenost algoritma je dakle

O((m + n) log(m + n) + R),

gde je R ukupan broj preseka.

7.7. RezimeGeometrijski algoritmi su na neki naqin mae apstraktni od grafovskih,

jer smo navikli da vidimo i radimo sa geometrijskim objektima. Meutim, toje samo prvi utisak. Raditi sa ogromnim brojem objekata nije isto xto i radi-ti sa malim slikama, pa moramo biti oprezni da nas predstava koju imamo ne

ZADACI 201

navede na pogrexne zakuqke. Moraju se predvideti mnogi specijalni sluqa-jevi. Algoritam za utvrivae pripadnosti taqke unutraxosti mnogougla(odeak 7.2) je dobar primer. Zbog toga konstrukcija geometrijskih algorita-ma zahteva poseban oprez.

Tehnike za konstrukciju (diskretnih) geometrijskih algoritama sliqnesu tehnikama koje smo razmatrali u prethodnim poglavima. Indukcija utome igra vanu ulogu. Tehnika pokretne prave, zasnovana na indukciji, za-jedniqka je za vixe geometrijskih algoritama; jedan od ih prikazan je uodeku 7.6. Takoe se qesto koristi dekompozicija. Geometrijski algoritmi(izuzev najjednostavnijih) qesto zahtevaju komplikovane strukture podataka,pa su mnoge sloene strukture podataka razvijene upravo za tu namenu. Ovdenismo razmatrali ni jednu od takvih specijalnih struktura podataka.

Zadaci7.1. Precizirati algoritam Tacka u mnogouglu (slika 7.2), tako da budu obuhvaeni

specijalni sluqajevi kad poluprava L sadri teme ili stranicu mnogougla.7.2. Konstruisati algoritam koji utvruje da li je datih n taqaka u ravni kolinearno.

Kolika je vremenska sloenost tog algoritma?7.3. Neka je S proizvoan skup taqaka u ravni. Da li postoji samo jedan mnogougao

sa skupom temena S? Ako je tvree taqno, dokazati ga, a u protivnom ga opovrgnuti kon-traprimerom.

7.4. Dat je konveksni mnogougao P0P1 . . . Pn−1 i taqka A van ega. Kako se mogu kon-struisati dve prave oslonca mnogougla kroz taqku A algoritmom sloenosti O(log n).

7.5. Neka su taqke P1P2 . . . Pn ureene cikliqki u odnosu na krug sa centrom negdeunutar konveksnog omotaqa ovih taqaka. Modifikovati Grahamov algoritam tako da moeda radi sa ovim skupom taqaka bez poqetnog sortiraa.

7.6. Pokazati da Grahamov algoritam moe da odbaci uzastopce p taqaka za proizvonoveliko p.

7.7. Navesti primer n taqaka u ravni sa razliqitim x-koordinatama za koje izvrxa-vae algoritma Najblizi par2 sa slike 15 traje Ω(n log n) koraka.

7.8. Dat je skup od n horizontalnih dui u ravni. Pronai sve ihove preseke. Algo-ritam treba da bude sloenosti O(n log n) u najgorem sluqaju.

7.9. Dato je n taqaka u ravni i prava p. Konstruisati algoritam linearne sloenostiza nalaee prave paralelne sa p koja dati skup taqaka razbija na dva podskupa jednakeveliqine (ako taqka lei na toj pravoj, moe se uraqunati u bilo koji od podskupova).

7.10. Neka je P prost (ne obavezno konveksni) mnogougao sadran u datom pravougaonikuR, i neka je q proizvona taqka unutar R. Konstruisati efikasni algoritam za odreivaetakve taqke r van R da je broj ivica P koje seqe du q − r minimalan.

7.11. Neka je P konveksni mnogougao zadat nizom temena (navedenih redom kojim supovezana). Konstruisati algoritam vremenske sloenosti O(log n) koji treba da za datutaqku q ustanovi da li je unutar P .

7.12. Konstruisati algoritam za formirae konveksnog omotaqa skupa od n taqakau ravni, koji odgovara sortirau umetaem. U svakoj iteraciji treba razmatrati novutaqku i eventualno je ukuqiti u konveksni omotaq prethodno razmotrenih taqaka. Taqketreba razmatrati proizvonim redosledom (nije dozvoeno poqetno sortirae). Algoritam

202 7. GEOMETRIJSKI ALGORITMI

treba da koristi efikasnu strukturu podataka za utvrivae da li je data taqka unutarkonveksnog mnogougla. Kolika je vremenska sloenost algoritma u najgorem sluqaju?

7.13. Pretpostavimo da nam je na raspolagau crna kutija koja pronalazi konveksniomotaq unije dva disjunktna konveksna mnogougla P1 i P2 za vreme proporcionalno zbirubroja ihovih temena. Konstruisati algoritam vremenske sloenosti O(n log n) koji ko-risti ovu crnu kutiju da bi odredio konveksni omotaq datog skupa od n taqaka u ravni.

7.14. d-priblian konveksni omotaq skupa taqaka P je konveksni mnogougao Q,qija su sva temena iz P , pri qemu su sve taqke iz P ili u Q, ili na rastojau najvixe d odQ (rastojae taqke od mnogougla je najmae od rastojaa taqke do neke taqke u mnogouglu).Neka je P skup od n taqaka takav da je najvea razlika izmeu x-koordinata neke dve taqke uP jednaka X. Konstruisati algoritam za nalaee d-priblinog konveksnog omotaqa skupaP , vremenske i prostorne sloenosti O(n + X/d).

7.15. (a) Za taqku p u ravni kae se da dominira nad taqkom q ako su x- i y-koordinatataqke p vee od odgovarajuih koordinata taqke q. Taqka p je maksimalna u datom skuputaqaka P ako ni jedna taqka iz P ne dominira nad om. Konstruisati algoritam sloenostiO(n log n) za nalaee svih maksimalnih taqaka datog skupa P od n taqaka.

(b) Rexiti odgovarajui problem u tri dimenzije (definicija dominiraa treba daobuhvati sve tri koordinate).

7.16. Neka je S skup taqaka u ravni. Za svako p ∈ S neka je D(p) skup taqaka iz S nadkojima dominira p (videti zadatak 7.15). Konstruisati algoritam vremenske sloenostiO(n log n) za izraqunavae veliqina svih skupova D(p), p ∈ S.

7.17. Dato je n taqaka u ravni. Odrediti meu ima takve dve, da du koja ih povezujeima najvei nagib. Sloenost algoritma treba da bude O(n log n).

7.18. Dato je n taqaka u ravni, predstavenih vektorom povezanih lista na sledeinaqin. Svaki elemenat vektora ima dva poa: X, koje sadri x-koordinatu, i Naredni,koje pokazuje na (nepraznu) povezanu listu svih taqaka skupa sa x-koordinatom jednakomX, sortiranih prema svojim y-koordinatama. Vektor je sortiran prema x-koordinatama.Konstruisati algoritam sloenosti O(n) koji pronalazi najblii par taqaka sa jednakimx-koordinatama, ili sa x-koordinatama koje su susedne u nizu. Da li je u okviru algoritmaneophodno izraqunavae kvadratnih korenova? Da li algoritam pronalazi najblii partaqaka (bez ikakvih ograniqea)?

7.19. Dat je skup dui u ravni, koje sa x-osom zaklapaju ugao kπ/4, k = 0, 1, 2, 3. Kon-struisati algoritam za nalaee svih preseka ovih dui iste sloenosti kao algoritamza nalaee preseka horizontalnih i vertikalnih dui sa slike 17.

7.20. Dato je n dui u ravni. Konstruisati algoritam sloenosti O(n log n) kojiutvruje da li meu ima postoji bar jedan presek.

7.21. Na pravoj je dato n plavih i n crvenih dui. Konstruisati algoritam sloenos-ti O(n log n) za proveru da li postoji zajedniqka taqka neke plave i neke crvene dui (moese pretpostaviti da ne postoje dve dui sa zajedniqkim temenom).

7.22. Dat je skup intervala na pravoj, predstavenih koordinatama krajeva. Konstru-isati algoritam sloenosti O(n log n) za nalaee svih intervala sadranih u nekomdrugom intervalu iz skupa.

7.23. Dato je n pravougaonika u ravni sa stranicama paralelnim osama. Pomou algo-ritma iz zadatka 7.22 pronai sve pravougaonike sadrane u nekom drugom pravougaoniku.Moete li da konstruixete algoritam sloenosti O(n log n)?

7.24. Dato je n pravougaonika u ravni sa stranicama paralelnim osama. Konstruisatialgoritam za nalaee preseka svih tih pravougaonika.

ZADACI 203

7.25. Dato je n krunica u ravni. Konstruisati algoritam sloenosti O(n log n) kojiutvruje da li se neke dve od tih krunica seku.

7.26. Dat je skup od n k-uglova. Konstruisati algoritam koji proverava da li meuima postoje neka dva sa nepraznim presekom. Kolika egova sloenost algoritma?

7.27. Data su dva konveksna mnogougla listama svojih temena (cikliqkim redosledom).Konstruisati algoritam linearne vremenske sloenosti za odreivae preseka ovih mno-gouglova. Izlaz (takoe konveksni mnogougao) treba da bude predstaven cikliqki ureenomlistom temena.

7.28. Dato je n trouglova u ravni (trojkama svojih temena). Konstruisati algoritamsloenosti O(n log n) za nalaee ihovog preseka.

7.29. Konveksni n-tougao dat je cikliqki ureenom listom svojih temena. Konstru-isati algoritam linearne vremenske sloenosti za odreivae n trouglova qiji je presekdati mnogougao.

7.30. Konstruisati algoritam sloenosti O(n2 log n), koji utvruje da li su koline-arne neke tri od zadatih n taqaka u ravni.

7.31. Konstruisati algoritam sloenosti O(n2 log n), koji utvruje da li postoji kvad-rat sa temenima u neke qetiri od zadatih n taqaka u ravni.

7.32. Dato je n taqaka u ravni sa celobrojnim koordinatama. Potrebno je odreditinajmai skup pravih, paralelnih bilo nekoj osi, bilo nekoj simetrali kvadranta, a kojisadri svih n taqaka.

Glava 8

Algebarski algoritmi

8.1. UvodKad god izvrximo neku algebarsku operaciju, mi ustvari izvrxavamo

jedan algoritam. Do sada smo te operacije prihvatali kao nexto obiqno, kaoalgoritme koji postoje sami po sebi. Meutim, bez obzira da li je u pitaumnoee, deee ili neka sloenija algebarska operacija, uobiqajeni algo-ritam nije uvek najboi ako se radi sa vrlo velikim brojevima ili nizovimabrojeva. Ista pojava na koju smo nailazili u prethodnim poglavima ispoa-va se i ovde: algoritmi koji su dobri za mali ulaz postaju neefikasni za veeulaze.

Sloenost algoritma meri se brojem "operacija" koje algoritam izvr-xava. U najveem broju sluqajeva pretpostavamo da se osnovne aritmetiqkeoperacije (kao xto su sabirae, mnoee, deee) izvrxavaju za jediniqnovreme. To je razumna pretpostavka kad se operandi mogu predstaviti sa jednomili dve raqunarske reqi (na primer, ne preveliki celi brojevi, realni bro-jevi jednostruke ili dvostruke taqnosti). Postoje meutim situacije kad suoperandi ogromni, na primer brojevi sa 2000 cifara. Tada se mora uzmeti uobzir i veliqina operanada, a osnovne operacije prestaju da budu jednostavne.Ako se ignorixu veliqine operanada, mogue je da na prvi pogled dobar al-goritam bude ustvari vrlo neefikasan.

Znaqee "veliqine ulaza" ponekad nije sasvim jasno. Neka je dat celibroj n sa kojim treba izvrxiti neku aritmetiqku operaciju. Na prvi pogledizgleda prirodno da se za veliqinu ulaza smatra sama vrednost n. Ovo se, med-jutim, ne uklapa u neformalnu definiciju veliqine ulaza kao meri veliqinememorijskog prostora potrebnog za egovo smextae. Razlika je vrlo veli-ka. Sabirae dva broja od po 100 cifara moe se izvrxiti vrlo brzo, qaki ruqno. S druge strane, brojae do vrednosti predstavene 100-cifrenimbrojem praktiqno je nemogue, qak i na najbrem raqunaru. Poxto se brojn moe predstaviti sa dlog2 ne bita, za egovu veliqinu moe se smatratidlog2 ne = O(log n). Tako se algoritam koji zahteva O(log n) operacija kad jeulaz n smatra linearnim (na primer izraqunavae 2n), jer je O(log n) line-arna funkcija veliqine ulaza. Algoritam koji zahteva izvrxavae O(

√n)

operacija za ulaz n (na primer faktorizacija n proverom deivosti n svimbrojevima maim ili jednakim od √n) ima eksponencijalnu sloenost.

205

206 8. ALGEBARSKI ALGORITMI

Kao i obiqno, u ovom poglavu emo pau usmeriti na interesantnetehnike konstrukcije algoritama. Najpre se razmatra stepenovae datog broja,zatim verovatno najstariji netrivijalni algoritam, Euklidov algoritam zaizraqunavae najveeg zajedniqkog delioca dva broja. Vrlo je interesantnoda moderni raqunari koriste 2200 godina star algoritam. Ova dva algoritmakoriste se u poznatom asimetriqnom xifarskom sistemu RSA, videti sledeepoglave. Zatim se razmatraju algoritmi za mnoee polinoma i matrica, apoglave se zavrxava jednim od najvanijih i najlepxih algoritama | brzomFurijeovom transformacijom.

8.2. StepenovaeZapoqiemo jednom od osnovnih aritmetiqkih operacija.Problem. Data su dva prirodna broja n i k. Izraqunati nk.Problem se lako moe svesti na izraqunavae nk−1, jer je nk = n · nk−1.

Prema tome, problem se moe rexiti indukcijom po k; dobijeni direktnialgoritam prikazan je na slici 1. Smaena je vrednost k, ali ne i ego-va veliqina. Trivijalni algoritam zahteva k mnoea. Poxto je veliqinapodatka k priblino log2 k, broj iteracija je eksponencijalna funkcija veli-qine k (k = 2log2 k). Ovo nije loxe za male, ali je neprihvativo za velikevrednosti k.

Algoritam Stepen(n, k); prvi pokuxajUlaz: n i k (dva prirodna broja).Izlaz: P (vrednost izraza nk).begin

P := n;

for i := 1 to k − 1 do

P := n · Pend

Ris. 1. Trivijalni algoritam za stepenovae.

Drugi naqin da se problem rexi je svoee na problem sa dvostruko ma-im eksponentom pomou jednakosti nk = (nk/2)2. Polovee k odgovara sma-eu egove veliqine za konstantu. Zbog toga e broj mnoea biti linearnafunkcija od veliqine k. Najjednostavniji sluqaj je k = 2j , za neki prirodanbroj j:

nk = n2j

=

j puta︷ ︸︸ ︷((n2

)2)...2

.

Xta ako k nije stepen dvojke? Razmotrimo jox jednom primeeni postu-pak redukcije. Poxavxi od parametara n i k, problem je sveden na mai, sa

8.3. EUKLIDOV ALGORITAM 207

parametrima n i k/2. Ako k/2 nije celi broj, onda (k − 1)/2 jeste, pa se moeprimeniti sliqna redukcija:

nk = n(n(k−1)/2

)2

.

Sada je algoritam kompletiran. Ako je k parno, jednostavno kvadriramo rezul-tat stepenovaa izloiocem k/2. Ako je pak k neparno, kvadriramo rezultatstepenovaa izloiocem (k−1)/2 i mnoimo ga sa n. Broj mnoea je najvixe2 log2 k. Algoritam je prikazan na slici 2.

Algoritam Stepen kvadriranjem(n, k);

Ulaz: n i k (dva prirodna broja).Izlaz: P (vrednost izraza nk).begin

if k = 1 then P := n

else

z := Stepen kvadriranjem(n, k div 2);

if k mod 2 = 0 then

P := z · zelse

P := n · z · zend

Ris. 2. Stepenovae kvadriraem.

Sloenost. Ukupan broj mnoea je O(log k). Meutim, kako se napre-duje sa izvrxavaem algoritma, meurezultati postaju sve vei, pa mnoeapostaju sve komplikovanija. Ostavamo qitaocu da analizira sloenost ovogalgoritma pod realnijom pretpostavkom o sloenosti mnoea (videti za-datak 8.8). Ako se mnoee obava u prstenu ostataka po nekom modulu, ondameurezultati ne rastu u toku izvrxea algoritma i taqna je navedena oce-na vremenske sloenosti stepenovaa; jednu primenu ovakvo stepenovae jenaxlo u okviru algoritma za xifrovae RSA (videti odeak 9.5).

8.3. Euklidov algoritamNajvei zajedniqki delilac dva prirodna broja n i m (oznaqava se sa

NZD(n,m)) je jedinstveni prirodni broj d koji 1) deli m i n, i 2) vei je ilijednak od svakog drugog prirodnog broja d′ koji deli n i m.

Problem. Odrediti najvei zajedniqki delilac dva data prirodna broja.Kao i obiqno, ideja je svesti polazni problem na problem sa maim ula-

zom. Mogu li se n ili m nekako smaiti, a da se rezultat ne promeni? Euklid

208 8. ALGEBARSKI ALGORITMI

je primetio da je to mogue: ako d deli n i m, onda deli i ihovu razliku.Vai i obrnuto; ako je na primer n ≥ m, a d deli m i n −m, onda d deli izbir m+(n−m) = n. Drugim reqima, NZD (n,m) = NZD (n−m, m), i dobijenje mai ulaz. Meutim, oduzimaem su smaene vrednosti brojeva sa kojimase radi, ali ne i ihove veliqine. Da bi algoritam bio efikasan, moraju sesmaiti veliqine brojeva. Na primer, ako je n vrlo veliki broj (npr. 1000cifara) i m = 24, od n treba oduzeti 24 priblino n/24 puta. Ovo raqunaesastoji se od O(n) koraka, xto je eksponencijalna funkcija od veliqine n.

Razmotrimo ovu ideju jox jednom. Posle oduzimaa m od n isti algoritamtreba primeniti na n − m i m. Ako je n − m i dae vee od m, od egatreba oduzeti m. Sa oduzimaem m nastava se sve dok razlika ne postanemaa od m. Broj ovakvih oduzimaa moe biti ogroman; sreom, rezultatkoji se tako dobija je jednak ostatku n modm pri deeu n sa m. Prema tome,NZD(n,m) = NZD (nmodm, m). Deee sa ostatkom izvrxava se efikasno.

Polazei od brojeva r0 = n i r1 = m, izraqunava se ostatak r2 = r0 mod r1,zatim ostatak r3 = r1 mod r2, itd. Tako se dobija opadajui niz ostataka(8.1) ri−1 = qiri + ri+1, 0 ≤ ri+1 < ri, za i = 1, 2, . . . , k

(pri deeu ri−1 sa ri koliqnik je qi, a ostatak ri+1). Dobijeni niz je konaqanjer je opadajui i sastoji se od prirodnih brojeva. Neka je npr. rk+1 = 0 i nekaje rk 6= 0 posledi qlan ovog niza razliqit od nule. Kako je

NZD(r0, r1) = NZD (r1, r2) = . . . = NZD (rk−1, rk) = NZD (rk, 0) = rk,

vidimo da je d = NZD(n,m) upravo jednako rk, posledem ostatku razliqitomod nule. Opisani postupak za izraqunavae najveeg zajedniqkog delioca dvabroja zove se Euklidov algoritam, videti sliku 3.

Algoritam NZD(m, n);

Ulaz: m i n (dva prirodna broja).Izlaz: nzd (najvei zajedniqki delilac brojeva m i n).begin

a := max(n, m);

b := min(n, m);

r := 1; vrednost koja omoguuje ulazak u petuwhile r > 0 do r je ostatak

r := a mod b;

a := b;

b := r;

nzd := a

end

Ris. 3. Euklidov algoritam.

8.3. EUKLIDOV ALGORITAM 209

Sloenost. Tvrdimo da Euklidov algoritam ima linearnu vremenskusloenost u odnosu na veliqinu broja m+n; drugim reqima, egova vremenskasloenost je O(log(m+n)) (ako se pretpostavi da se sve elementarne operacijeizvrxavaju za jediniqno vreme, nezavisno od veliqine operanada). Da se todokae, dovono je dokazati da vrednost a u algoritmu postaje bar dva putamaa posle dve iteracije. Posle prve iteracije par (a, b) (a > b) zameujese parom (b, a mod b), a posle druge iteracije parom (amod b, b mod (a mod b)).Prema tome, posle dve iteracije je broj a zameen brojem a mod b, koji je uvekmai od a/2. Zaista, ako b ≤ a/2 onda je amod b < b ≤ a/2; u protivnom, zab > a/2, takoe se dobija a mod b = a− b = a/2− (b− a/2) < a/2.

Uz malu dopunu, Euklidov algoritam se moe iskoristiti i za rexavaesledeeg problema.

Problem. Najvei zajedniqki delilac d dva prirodna broja n i m izra-ziti kao ihovu celobrojnu linearnu kombinaciju. Drugim reqima, odrediticele brojeve x, y, tako da vai d = NZD (n,m) = nx + my.

Ci je d izraziti u obliku linearne kombinacije d = r0x + r1y ostatakar0 = n i r1 = m. Problem se moe rexiti indukcijom. Polazi se od baze,izraza za d u obliku linearne kombinacije ostataka rk−1 = n i rk−2 = m:d = rk = rk−2 − qk−1rk−1; ovaj izraz je ekvivalentan pretposledem deeuu Euklidovom algoritmu (izraz (8.1) za i = k − 1). Korak indukcije bio biizraavae d u obliku linearne kombinacije ostataka ri−1 i ri, polazei odizraza d = x′ri + y′ri+1 | celobrojne linearne kombinacije ri i ri+1. Zaista,zamenom ri+1 u ovom izrazu sa ri+1 = ri−1 − qiri, dobija se

d = x′ri + y′(ri−1 − qiri) = y′ri−1 + (x′ − qiy′)ri,

tj. izraz za d u obliku celobrojne linearne kombinacije ostataka ri−1 i ri.Dakle, indukcijom po i, i = k − 2, k − 1, . . . , 1, 0 dokazano je da se d moeizraziti kao celobrojna linearna kombinacija bilo koja dva uzastopna qlanari, ri+1 niza ostataka. Specijalno, za i = 0, dobija se traeni izraz.

Sloenost. Broj operacija je proporcionalan sa brojem operacija u Eu-klidovom algoritmu, tj. O(m + n).

Znaqaj ove dopune Euklidovog algoritma je u tome xto ona omoguuje re-xavaa tzv. linearnih Diofantovih jednaqina ax+ by = c, gde su a, b, c daticeli brojevi, a x i y su celi brojevi koje treba odrediti. Bez smaea opx-tosti moe se pretpostaviti da je a, b > 0. Da bi navedena jednaqina imala barjedno rexee, potrebno je da d = NZD (a, b) deli c (poxto d deli levu stranujednaqine, mora da deli i desnu). Ako je ovaj uslov ispuen, jedno od rexealako se dobija opisanim postupkom. Poxto se d izrazi u obliku d = ax′ + by′,mnoeem sa celim brojem c/d dobija se c = a(x′c/d)+b(y′c/d), tj. vidi se da jejedno rexee jednaqine par (x, y) = (x′c/d, y′c/d). Primer odreivaa brojevax i y, koeficijenata linearne kombinacije d = nx + my, dat je u odeku 9.5.

210 8. ALGEBARSKI ALGORITMI

8.4. Mnoee polinomaNeka su P =

∑n−1i=0 pix

i i Q =∑n−1

i=0 qixi dva polinoma stepena n − 1.

Polinom je predstaven nizom svojih koeficijenata.Problem. Izraqunati proizvod dva zadata polinoma stepena n− 1.Prirodno je poi od izraza

PQ =(pn−1x

n−1 + · · ·+ p0

) (qn−1x

n−1 + · · ·+ q0

)=(8.2)

pn−1qn−1x2n−2 + · · ·+ (pn−1qi+1 + pn−2qi+2 + · · ·+ pi+1qn−1)xn+i + · · ·+ p0q0.

Koeficijenti polinoma PQ mogu se izraqunati direktno iz (8.2), priqemu je jasno da e tada broj mnoea i sabiraa biti O(n2). Moe li se istiposao obaviti efikasnije? Do sada smo videli vixe primera da se trivijalnikvadratni algoritmi mogu poboxati, pa nije iznenaujue da je i u ovomsluqaju odgovor pozitivan. Komplikovani algoritam sloenosti O(n log n)bie razmotren u odeku 8.6. Ovde emo razmotriti jednostavan algoritamzasnovan na dekompoziciji.

Pretpostavimo zbog jednostavnosti da je n stepen dvojke. Svaki od polino-ma delimo na dva jednaka dela. Neka je dakle P = P1+xn/2P2 i Q = Q1+xn/2Q2,gde jeP1 = p0 + p1x + · · ·+ pn/2−1x

n/2−1, P2 = pn/2 + pn/2+1x + · · ·+ pn−1xn/2−1,

odnosnoQ1 = q0 + q1x + · · ·+ qn/2−1x

n/2−1, Q2 = qn/2 + qn/2+1x + · · ·+ qn−1xn/2−1.

Sada imamoPQ = (P1 + P2x

n/2)(Q1 + Q2xn/2) = P1Q1 + (P1Q2 + P2Q1)xn/2 + P2Q2x

n.

U izrazu za PQ pojavuju se proizvodi polinoma stepena n/2−1, koji se moguizraqunati indukcijom (rekurzivno). Sabiraem dobijenih rezultata dobijase rexee. Uzimajui u obzir da je mnoee polinoma stepena 0 isto xtoi mnoee brojeva, ovim je kompletno definisan rekurzivni algoritam zamnoee polinoma. Ukupan broj operacija T (n) koje se izvrxavaju u okviruovog algoritma zadovoava sledeu diferencnu jednaqinu:

T (n) = 4T (n/2) + O(n), T (1) = 1.

Faktor 4 odgovara izraqunavau qetiri proizvoda maih polinoma, a qlanO(n) odgovara sabirau proizvoda. Rexee diferencne jednaqine je T (n) =O(n2) (videti odeak 2.5.4), pa ovaj algoritam nije boi od prethodnog.

Da bi se doxlo do poboxaa u odnosu na kvadratni algoritam, potrebnoje, na primer, da problem reximo svoeem na mae od qetiri potproblema.Oznaqimo proizvode P1Q1, P2Q1, P1Q2, P2Q2 redom sa A,B, C, D. Treba daizraqunamo A+(B+C)xn/2+Dxn. Zapaa se da nisu neophodni sami proizvodiB i C, nego samo ihov zbir. Ako znamo proizvod E = (P1 + P2)(Q1 + Q2),onda je traeni zbir B + C = E − A − D. Dakle, dovono je izraqunatisamo tri proizvoda maih polinoma: A, D i E. Sve ostalo su sabiraa i

8.5. MNOEE MATRICA 211

oduzimaa polinoma, xto ionako ulazi u qlan O(n) u diferencnoj jednaqini.Diferencna jednaqina za sloenost poboxanog algoritma je

T (n) = 3T (n/2) + O(n),

a eno rexee je T (n) = O(nlog2 3) = O(n1.59).Zapaamo da su polinomi P1+P2 i Q1+Q2 sa polaznim polinomima vezani

neobiqan naqin: dobijeni su od ih sabiraem koeficijenata qiji indeksi serazlikuju za n/2. Ovaj neintuitivni naqin mnoea polinoma znatno smaujebroj operacija za velike vrednosti n.

Primer 8.1. Neka je n = 4, P = 1 − x + 2x2 − x3 i Q = 2 + x− x2 + 2x3.Izraqunajmo proizvod PQ na opisani naqin. Ako se linearni polinomi mnoedirektno, rekurzija se primeuje samo jednom,

A = (1− x)(2 + x) = 2− x− x2,

D = (2− x)(−1 + 2x) = −2 + 5x− 2x2,

E = (3− 2x)(1 + 3x) = 3 + 7x− 6x2.

Na osnovu E, A i D izraqunava se B + C = E −A−D:B + C = 3 + 3x− 3x2.

Sada je PQ = A + (B + C)xn/2 + Dxn, odnosnoPQ = (2− x− x2) + (3 + 3x− 3x2)x2 + (−2 + 5x− 2x2)x4 =

= 2− x + 2x2 + 3x3 − 5x4 + 5x5 − 2x6.

Primeuje se da je izvrxeno 12 mnoea, u odnosu na 16 kod trivijalnogalgoritma, i 12 umesto 9 sabiraa/oduzimaa; broj mnoea bio bi svedenna 9 da je rekurzija primeena jox jednom. Uxteda je naravno mnogo vea zavelike n.

8.5. Mnoee matricaAko su P = (pij) i Q = (qij) date kvadratne matrice reda n, onda je

elemenat rij matrice R = PQ dat je izrazom

(8.3) rij =n∑

k=1

pikqkj .

Problem. Izraqunati proizvod R = PQ dve realne n× n matrice.

Direktni (i na prvi pogled jedini) postupak mnoea matrica zasnivase na definiciji (8.3), xto podrazumeva n3 mnoea i (n − 1)n2 sabiraa.Zapazimo da je n broj vrsta, odnosno kolona matrice, a ne veliqina ulaza,koja je u ovom sluqaju n2. Prikazaemo sada dva razliqita poboxaa ovogalgoritma.

212 8. ALGEBARSKI ALGORITMI

8.5.1. Vinogradov algoritam. (S. Winograd ) Pretpostavimo zbogjednostavnosti da je n parno. Uvedimo oznake

Pi =n/2∑

k=1

pi,2k−1pi,2k, i = 1, 2, . . . , n,

Qj =n/2∑

k=1

q2k−1,jq2k,j , j = 1, 2, . . . , n.

Pregrupisavaem sabiraka dobija se

rij =n/2∑

k=1

(pi,2k−1 + q2k,j)(pi,2k + q2k−1,j)− Pi −Qj .

Brojevi Pi i Qj izraqunavaju se samo jednom za svaku vrstu P , odnosno kolonuQ, za xta je potrebno samo n2 mnoea. Ukupan broj mnoea je dakle sman-jen na n3/2 + n2. Broj sabiraa povean je priblino za n3/2. Algoritam jeprema tome boi od direktnog u sluqaju kad se sabiraa izvrxavaju bre odmnoea (xto je tipiqno).

Komentar. Vinogradov algoritam pokazuje da se promenom redosleda iz-raqunavaa moe postii uxteda, qak i kod izraza kao xto je proizvod matri-ca, koji imaju jednostavan oblik. Sledei algoritam istu ideju eksploatixemnogo efikasnije.

8.5.2. Xtrasenov algoritam. Na mnoee matrica moe se primeni-ti postupak dekompozicije, sliqno kao na mnoee polinoma, odeak 8.4. Zbogjednostavnosti pretpostaviemo da je n stepen dvojke. Neka je

(8.4) P =(

a bc d

), Q =

(A BC D

),

gde su a, b, c, d, odnosno A,B, C,D n/2× n/2 matrice. Primenom dekompozici-je se problem svodi na izraqunavae qetiri n/2 × n/2 podmatrice matriceR. Proizvod blok matrica izraqunava se na isti naqin kao kad se blokovizamene elementima, pa se problem moe shvatiti kao traee efikasnog naqi-na za izraqunavae proizvoda dve 2 × 2 matrice. Od algoritma za mnoee2 × 2 matrica dobija se algoritam za mnoee n × n matrica tako xto seumesto proizvoda elemenata umetnu rekurzivni pozivi procedure za mnoen-je. Obiqan algoritam za mnoee 2 × 2 matrica koristi 8 mnoea. Zame-ujui svako mnoee rekurzivnim pozivom, dobijamo diferencnu jednaq-inu T (n) = 8T (n/2) + O(n2) (kombinovae maih rexea sastoji se od neko-liko sabiraa matrica reda n/2, sloenosti O(n2)), qije je rexee T (n) =O(nlog2 8) = O(n3). Ovo nije iznenaujue, jer se koristi obiqan algoritam zamnoee. Ako bismo uspeli da izraqunamo proizvod 2 × 2 matrica izvodeimae od 8 mnoea elemenata, dobili bismo algoritam koji je asimptotskibri od kubnog.

8.5. MNOEE MATRICA 213

Faktor koji najvixe utiqe na rekurziju je broj mnoea potrebnih zaizraqunavae proizvoda 2 × 2 matrica. Broj sabiraa nije tako vaan, jermea samo qinilac uz qlan O(n2) u diferencnoj jednaqini, pa ne utiqe naasimptotsku sloenost (on meutim utiqe na konstantni faktor). Xtrasen(Strassen ) je otkrio da je dovono sedam mnoea elemenata da seizraquna proizvod dve matrice reda dva Ako matrice P , Q (8.4) shvatimo kaomatrice reda dva, onda se ihov proizvod moe izraqunati na sledei naqin:

PQ =(

z1 + z4 z2 − z3 + z4 + z5

z1 + z3 + z6 + z7 z2 + z6

),

pri qemu su sa z1, z2, . . . , z7 oznaqeni sledei proizvodi z1 = b(A + C), z2 =c(B + D), z3 = (c− b)(A + D), z4 = (a− b)A, z5 = (a− c)(B −A), z6 = (d− c)Di z7 = (d− b)(C −D).

Sloenost. U algoritmu se izraqunava sedam proizvoda matrica dvaputa mae dimenzije i konstantni broj sabiraa takvih matrica. Sabiraasu mae vana od proizvoda, jer se dve matrice reda n sabiraju za vreme O(n2),xto je linearna funkcija od veliqine ulaza. Qlan O(n2) nije dominantanu diferencnoj jednaqini T (n) = 7T (n/2) + O(n2). Rexee ove diferencnejednaqine je T (n) = O(nlog2 7), odnosno priblino O(n2.81), xto znaqi da jeXtrasenov algoritam asimptotski bri od obiqnog mnoea matrica.

Komentar. Xtrasenov algoritam ima tri vana nedostatka:(1) Praktiqne provere pokazuju da n mora biti vee od 100 da biXtrasen-

ov algoritam bio bri od obiqnog mnoea matrica sloenostiO(n3).

(2) Xtrasenov algoritam mae je stabilan od obiqnog. Za iste veliqinegrexke ulaznih podataka, Xtrasenov algoritam obiqno dovodi doveih grexaka u izlaznim podacima.

(3) Xtrasenov algoritam je komplikovaniji i tei za realizaciju odobiqnog. Pored toga, ega nije lako paralelizovati.

Bez obzira na ove nedostatke, Xtrasenov algoritam je veoma vaan. Brije od obiqnog za velike n, a moe se iskoristiti i u drugim problemima samatricama, kao xto su inverzija matrice i izraqunavae determinante. Upoglavu 10 videemo da se nekoliko drugih problema svodi na mnoee mat-rica. Xtrasenov algoritam se u praksi moe poboxati korixeem samoza velike matrice, i izlaskom iz rekurzije kad dimenzija matrice postanemaa od oko 100. To je sliqno ideji paivog izbora baze indukcije, kojaje razmotrena u odeku 5.3.4. Xtrasenov algoritam je direktno poboxaoneke druge algoritme i postavio mnogo pitaa o sliqnim problemima koji suizgledali nerexivi.

214 8. ALGEBARSKI ALGORITMI

8.6. Brza Furijeova transformacijaBrza Furijeova transformacija (ili FFT, xto je skraenica od fast Fouri-

er transform ) je vana iz vixe razloga. Ona efikasno rexava vaanpraktiqan problem, elegantna je, i otvara nove, neoqekivane oblasti primene.Zbog toga je ona jedan od najvanijih algoritama od svog otkria sredinomxezdesetih godina.

Algoritam FFT nije jednostavan, i do ega se ne dolazi direktno. Ogra-niqiemo se na samo jednu egovu primenu, mnoee polinoma.

Problem. Izraqunati proizvod dva zadata polinoma p(x) i q(x).

Formulacija problema je precizna samo na prvi pogled, jer nije pre-ciziran naqin predstavaa polinoma. Obiqno se polinom

P = an−1xn−1 + an−2x

n−2 + . . . + a1x + a0

predstava nizom svojih koeficijenata uz 1, x, x2, . . . , xn−1; ali to nije jed-ina mogunost. Alternativa je predstavae polinoma stepena n − 1 svojimvrednostima u n razliqitih taqaka: te vrednosti jednoznaqno odreuju poli-nom. Drugi naqin predstavaa je interesantan zbog jednostavnosti mnoea.Proizvod dva polinoma stepena n− 1 je polinom stepena 2n− 2, pa je odreensvojim vrednostima u 2n− 1 taqaka. Ako pretpostavimo da su vrednosti poli-noma qinilaca date u 2n− 1 taqaka, onda se proizvod polinoma izraqunavapomou 2n− 1, odnosno O(n) obiqnih mnoea.

Naalost, predstavae polinoma vrednostima za neke primene nije po-godno. Primer je izraqunavae vrednosti polinoma u zadatim taqkama; prireprezentaciji vrednostima, ovo je mnogo tee nego ako su zadati koeficijen-ti polinoma. Meutim, ako bismo mogli da efikasno prevodimo polinome izjedne u drugu predstavu, dobili bismo odliqan algoritam za mnoee poli-noma. Upravo to se postie primenom FFT.

Prelaz od predstave polinoma koeficijentima na predstavu vrednostimau taqkama, rexava se izraqunavaem vrednosti polinoma. Vrednost polinomap(x) (zadatog koeficijentima) u bilo kojoj taqki moe se pomou Hornerovexeme (odeak 4.2) izraqunati pomou n mnoea. Izraqunavae vrednostip(x) u n proizvonih taqaka izvodivo je dakle pomou n2 mnoea. Prelazod predstave polinoma vrednostima na predstavu koeficijentima zove se in-terpolacija. Interpolacija u opxtem sluqaju takoe zahteva O(n2) operaci-ja. Ovde je kuqna ideja (kao i u mnogim drugim primerima koje smo videli)da se ne koristi proizvonih n taqaka: mi imamo slobodu da po ei izabere-mo proizvoan skup od n razliqitih taqaka. Brza Furijeova transformacijakoristi specijalan skup taqaka, tako da se obe transformacije, izraqunavaevrednosti i interpolacija, mogu efikasno izvrxavati.

8.6.1. Direktna Furijeova transformacija. Razmotrimo problemizraqunavaa vrednosti polinoma. Potrebno je izraqunati vrednosti dvapolinoma stepena n − 1 u 2n − 1 taqaka, da bi se ihov proizvod, polinom

8.6. BRZA FURIJEOVA TRANSFORMACIJA 215

stepena 2n−2, mogao interpolirati. Meutim, polinom stepena n−1 moe sepredstaviti kao polinom stepena 2n−2 izjednaqavaem sa nulom vodeih n−1koeficijenata. Zbog toga se bez gubitka opxtosti moe pretpostaviti da jeproblem izraqunati vrednosti proizvonog polinoma P =

∑n−1j=0 ajx

j stepenan−1 u n razliqitih taqaka. Ci je pronai takvih n taqaka, u kojima je lakoizraqunati vrednosti polinoma. Zbog jednostavnosti pretpostavamo da je nstepen dvojke.

Koristiemo matriqnu terminologiju da bismo uprostili oznaqavae.Izraqunavae vrednosti polinoma P u n taqaka x0, x1, . . . , xn−1 moe sepredstaviti kao izraqunavae proizvoda matrice i vektora:

1 x0 x20 . . . xn−1

0

1 x1 x21 . . . xn−1

1

. . . . . . . . . . . . . . .1 xn−1 x2

n−1 . . . xn−1n−1

a0

a1

. . .an−1

=

P (x0)P (x1)

. . .P (xn−1)

.

Pitae je kako izabrati vrednosti x0, x1, . . . , xn−1, tako da se ovo mnoeeuprosti. Posmatrajmo dve proizvone vrste r i s. Voleli bismo da ih uqi-nimo xto sliqnijim, da bismo uxtedeli na mnoeima. Ne moe se stavitixr = xs, jer su taqke razliqite, ali se x2

r = x2s moe postii stavajui

xs = −xr. Ovo je dobar izbor, jer je svaki paran stepen xr jednak odgovara-juem parnom stepenu xs; neparni stepeni razlikuju se samo po znaku. Istose moe uraditi i sa ostalim parovima vrsta. Nasluuje se u kom pravcutreba traiti n specijalnih vrsta, za koje bi se gori proizvod svodio nasamo n/2 proizvoda vrsta matrice sa kolonom koeficijenata. Rezultat bi biopolovee veliqine ulaza, a time i vrlo efikasan algoritam. Pokuxajmo dapostavimo ovaj problem kao dva odvojena problema dvostruko mae veliqine.

Podela polaznog problema na dva potproblema veliqine m = n/2 moe seopisati sledeim izrazom

(8.5)

1 x0 x20 . . . xn−1

0

1 x1 x21 . . . xn−1

1

. . . . . . . . . . . . . . .1 xm−1 x2

m−1 . . . xn−1m−1

1 −x0 (−x0)2 . . . (−x0)

n−1

1 −x1 (−x1)2 . . . (−x1)

n−1

. . . . . . . . . . . . . . .1 −xm−1 (−xm−1)

2 . . . (−xm−1)n−1

a0

a1

. . .an−1

=

P (x0)P (x1)

. . .P (xm−1)P (−x0)

. . .P (−xm−1)

.

Polazna n × n matrica podeena je na dve vrlo sliqne podmatrice di-menzija n/2 × n. Za svako j = 0, 1, . . . , n/2 − 1, vai xn/2+j = −xj . Zgodno jedakle napisati izraze za P (xj) i P (−xj), odnosno uopxte P (x), sa razdvojenimqlanovima parnog i neparnog stepena:

P (x) =n/2−1∑

j=0

a2jx2j +

n/2−1∑

j=0

a2j+1x2j+1.

216 8. ALGEBARSKI ALGORITMI

Ako sa P0(x) =∑n/2−1

j=0 a2jxj , odnosno P1(x) =

∑n/2−1j=0 a2j+1x

j oznaqimo poli-nome stepena n/2−1 sa koeficijentima polinoma P parnog, odnosno neparnogindeksa, dolazimo do jednakosti

(8.6) P (x) = P0(x2) + xP1(x2).

Zamenom x sa −x dobijamo P (−x) = P0(x2)+ (−x)P1(x2). Izraqunavae P (xj),j = 0, 1, . . . , n− 1 svodi se na raqunae P (xj) i P (−xj) za j = 0, 1, . . . , n/2− 1,odnosno na izraqunavae samo n/2 vrednosti P0(x2

j ), n/2 vrednosti P1(x2j ),

i dopunskih n/2 sabiraa, n/2 oduzimaa i n mnoea. Dakle, imamo dvapotproblema veliqine n/2 i O(n) dopunskih operacija.

Moe li se nastaviti rekurzivno na isti naqin? Ako bi nam to poxloza rukom, doxli bismo do poznate diferencne jednaqine T (n) = 2T (n/2) +O(n), qije je rexee T (n) = O(n log n). Problem izraqunavaa P (x) (polinomastepena n − 1) u n taqaka sveli smo na izraqunavae P0(x2) i P1(x2) (dvapolinoma stepena n/2 − 1) u n/2 taqaka. To je regularna redukcija, izuzevjednog detaa: vrednosti x u P (x) mogu se proizvono birati, ali vrednosti x2

u izrazu (na primer) P0(x2) mogu biti samo pozitivne. Poxto smo do redukcijedoxli korixeem negativnih brojeva, ovo predstava problem. Izdvojimoiz (8.5) matricu koja odgovara izraqunavau vrednosti P0(x2):

1 x20 x4

0 . . . xn−20

1 x21 x4

1 . . . xn−21

. . . . . . . . . . . . . . .1 x2

n/2−1 x4n/2−1 . . . xn−2

n/2−1

a0

a2

. . .an−2

=

P0(x20)

P0(x21)

. . .P0(x2

n/2−1)

.

Da bismo jox jednom izveli redukciju na isti naqin, morali bismo da stavi-mo npr. x2

n/4 = −(x0)2. Poxto su kvadrati realnih brojeva uvek pozitivni,ovo je nemogue, bar ako se ograniqimo na realne brojeve. Potexkoa se pre-vazilazi prelaskom na kompleksne brojeve. Problem se moe opet podeliti nadva dela stavajui xj+n/4 = ixj , za j = 0, 1, . . . , n/4 − 1 (i je ovde koren iz−1, kompleksan broj). Ovo razdvajae zadovoava iste uslove kao i prethodno.Prema tome, problem veliqine n/2 moe se rexiti svoeem na dva problemaveliqine n/4, izvodei O(n) dopunskih operacija.

Za sledee razdvajae potreban nam je broj z takav da je z8 = 1 i zj 6= 1 za0 < j < 8, odnosno primitivni osmi koren iz jedinice; tada je z4 = −1 i z2 = i.Opxtije, potreban nam je primitivni n-ti koren iz jedinice. Oznaqimo ga saω (zbog jednostavnosti se n ne spomie eksplicitno; u okviru ovog odekaradi se uvek o jednom istom n). Broj ω zadovoava sledee uslove:

(8.7) ωn = 1, ωj 6= 1 za 0 < j < n.

8.6. BRZA FURIJEOVA TRANSFORMACIJA 217

Za n taqaka x0, x1, . . . , xn−1 biramo brojeve 1, ω, ω2, . . . , ωn−1. Prema tome,izraqunava se sledei proizvod:

(8.8)

1 1 1 . . . 11 ω ω2 . . . ωn−1

1 ω2 ω2·2 . . . ω2·(n−1)

. . . . . . . . . . . . . . .1 ωn−1 ω(n−1)·2 . . . ω(n−1)·(n−1)

a0

a1

. . .an−1

=

P (1)P (ω). . .

P (ωn−1)

.

Ovaj proizvod se zoveFurijeova transformacija vektora (a0, a1, . . . , an−1).Zapazimo najpre da je ispuen uslov

xn/2+j = ωn/2+j = ωn/2ωj = −xj , j = 0, 1, . . . , n/2− 1.

Prema tome, prva redukcija problema veliqine n na dva maa je i dae is-pravna. Dae, dva potproblema proizaxla iz ove redukcije imaju po n/2 taqa-ka 1, ω2, ω4, . . . , ωn−2, xto je upravo problem veliqine n/2, u kome umesto ωfigurixe ω2 | primitivni n/2-ti koren iz jedinice. Da je ω2 primitivnin/2-ti koren iz jedinice neposredno sledi iz uslova (8.7). Prema tome, daese moe nastaviti rekurzivno. Sloenost algoritma zadovoava diferen-cnu jednaqinu T (n) = 2T (n/2) + O(n), qije je rexee O(n log n). Algoritamomoguuje efikasno izraqunavae Furijeove transformacije vektora koefi-cijenata polinoma, pa je dobio ime brza Furijeova transformacija, odnosnoFFT. Algoritam je prikazan na slici 4.

Algoritam FFT(n, a0, a1, . . . , an−1, ω, var V );

Ulaz: n (prirodni broj), a0, a1, . . . , an−1 (niz elemenata tipa koji zavisi od primene)i ω (primitivni n-ti koren iz jedinice).Izlaz: V (niz izlaznih elemenata, sa indeksima od 0 do n− 1).

pretpostava se da je n stepen dvojkebegin

if n = 1 then

V [0] := a0;

else

FFT (n/2, a0, a2, . . . , an−2, ω2, U);

FFT (n/2, a1, a3, . . . , an−1, ω2, W );

for j := 0 to n/2− 1 do prema (8.6) za x = ωjV [j] := U [j] + ωjW [j];

V [j + n/2] := U [j]− ωjW [j];

end

Ris. 4. Algoritam brze Furijeove transformacije, FFT.

218 8. ALGEBARSKI ALGORITMI

Primer 8.2. Demonstriraemo izraqunavae FFT na primeru polinomasa koeficijentima (0, 1, 2, 3, 4, 5, 6, 7). Da bismo izbegli zabunu, potproblemeemo oznaqavati sa Pj0,j1,...,jk

(x0, x1, . . . , xk), gde j0, j1, . . . , jk oznaqavaju koefi-cijente polinoma, a x0, x1, . . . , xk taqke u kojima se izraqunavaju vrednostipolinoma. Zadatak je dakle rexiti problem P0,1,2,3,4,5,6,7(1, ω, ω2, . . . , ω7), i tona osnovu (8.6).

Prvi korak je svoee P0,1,2,3,4,5,6,7(1, ω, ω2, . . . , ω7) na P0,2,4,6(1, ω2, ω4, ω6)i P1,3,5,7(1, ω2, ω4, ω6). Nastavamo rekurzivno i svodimo P0,2,4,6(1, ω2, ω4, ω6)na P0,4(1, ω4) i P2,6(1, ω4). P0,4(1, ω4) se zatim svodi na P0(1) = 0, i P4(1) = 4.Kombinovaem ovih rezultata dobijamo

P0,4(1) = P0(1) + 1 · P4(1) = 0 + 1 · 4 = 4,

P0,4(ω4) = P0(ω8) + ω4P4(ω8) = 0 + ω4 · 4.

Poxto je ω4 = −1, dobijamo P0,4(ω4) = −4, odnosno posle objediavaaP0,4(1, ω4) = (4,−4). Na isti naqin dobijamo P2,6(1, ω4) = (8,−4).

Sada kombinovaem ova dva vektora dobijamo P0,2,4,6(1, ω2, ω4, ω6):P0,2,4,6(1) = P0,4(1) + 1 · P2,6(1) = 4 + 8 = 12,

P0,2,4,6(ω2) = P0,4(ω4) + ω2P2,6(ω4) = −4 + ω2(−4),

P0,2,4,6(ω4) = P0,4(ω8) + ω4P2,6(ω8) = P0,4(1)− 1P2,6(1) = 4− 8 = −4,

P0,2,4,6(ω6) = P0,4(ω12) + ω6P2,6(ω12) = P0,4(ω4)− ω2P2,6(ω4) = −4− ω2(−4),

odnosnoP0,2,4,6(1, ω2, ω4, ω6) = (12,−4(1 + ω2),−4,−4(1− ω2)).

Na sliqan naqin dobija seP1,3,5,7(1, ω2, ω4, ω6) = (16,−4(1 + ω2),−4,−4(1− ω2)).

Preostaje jox izraqunavae 8 vrednosti P0,1,2,3,4,5,6,7(1, ω, ω2, . . . , ω7). Na pri-mer, P0,1,2,3,4,5,6,7(1) = 12 + 1 · 16 = 28, i sliqno P0,1,2,3,4,5,6,7(ω4) = 12− 1 · 16 =−4; P0,1,2,3,4,5,6,7(ω) = (−4(1+ω2))+ω ·(−4(1+ω2)), i sliqno P0,1,2,3,4,5,6,7(ω5) =(−4(1 + ω2))− ω · (−4(1 + ω2)), itd. Rezultat je

P0,1,2,3,4,5,6,7(1, ω, ω2, . . . , ω7) =

4(7,−1− ω − ω2 − ω3,−1− ω2,−1 + ω2 − ω3 + ω5,

−1,−1 + ω − ω2 + ω3,−1 + ω2,−1 + ω2 + ω3 − ω5).

8.6.2. Inverzna Furijeova transformacija. Brza Furijeova trans-formacija rexava samo pola problema: vrednosti zadatih polinoma p(x) iq(x) mogu se efikasno izraqunati u taqkama 1, ω, . . . , ωn−1, izmnoiti parovidobijenih vrednosti, i tako nai vrednosti polinoma p(x)q(x) u navedenimtaqkama. Ostaje problem interpolacije, odnosno odreivaa koeficijenataproizvoda polinoma na osnovu vrednosti u taqkama. Na sreu, ispostava seda je problem interpolacije vrlo sliqan problemu izraqunavaa vrednosti,i da ga rexava praktiqno isti algoritam.

8.7. REZIME 219

Vratimo se matriqnoj notaciji. Neka AT transponovana matrica matriceA. Oznaqimo vektor koeficijenata polinoma sa a = (a0, a1, . . . , an−1)T , a vek-tor vrednosti polinoma sa v = (P (1), P (ω), . . . , P (ωn−1))T . Neka je V (ω) mat-rica iz jednakosti (8.8). Ako su zadati su koeficijenti polinoma a, egovevrednosti v u n taqaka 1, ω, . . . , ωn−1 dobijaju se prema (8.8) izraqunavaemproizvoda v = V (ω)a. S druge strane, ako su zadate vrednosti polinomav = (P (1), P (ω), . . . , P (ωn−1))T = (v0, v1, . . . , vn−1)T , a potrebno je izraqunatiegove koeficijente, jednakost (8.8), odnosno V (ω)a = v je sistem linearnihjednaqina po a. Rexavae sistema jednaqina ima u opxtem sluqaju dosta ve-liku vremensku sloenost O(n3), ali se ovde radi o jednom specijalnom sis-temu jednaqina. Lako se proverava da je

V (ω)V (ω−1) = nI,

gde je sa I oznaqena jediniqna matrica reda n. Zaista, ako je r 6= s, onda jeproizvod (r+1)-e vrste matrice V (ω) i (s+1)-e kolone matrice V (ω−1) jednak

n−1∑

k=0

ωrkω−sk =n−1∑

k=0

ωk(r−s) =1− ωn(r−s)

1− ωr−s= 0.

Ako je pak r = s, onda je taj proizvod∑n−1

k=0 ωrkω−rk = n. Time je dokazanasledea teorema.

Teorema 8.1. Inverzna matrica matrice V (ω) Furijeove transforma-cije je

V (ω)−1 =1n

V (ω−1).

Rexavae sistema jednaqina v = V (ω)a svodi se dakle na izraqunavaeproizvoda

a =1n

V (ω−1)v.

Posao se dae pojednostavuje zahvaujui sledeoj teoremi.Teorema 8.2. Ako je ω onda je ω−1 takoe primitivni n-ti koren iz

jedinice.Prema tome, proizvod 1

nV (ω−1)v moe se izraqunati primenom brze Fu-rijeove transformacije, zameujui ω sa ω−1. Ova transformacija zove seinverzna Furijeova transformacija.

Sloenost. Uzimajui sve u obzir, proizvod dva polinoma moe se izraqu-nati izvodei O(n log n) operacija (sa kompleksnim brojevima).

8.7. RezimeAlgoritmi prikazani u ovom poglavu samo su mali izbor iz skupa poz-

natih numeriqkih algoritama. Jox jednom smo se uverili da direktni algo-ritmi nisu uvek i najboi. Xtrasenov algoritam je jedan od najistaknutijih

220 8. ALGEBARSKI ALGORITMI

primera potpuno neintuitivnog algoritma za rexavae na prvi pogled jed-nostavnog problema. Videli smo jox nekoliko primera korixea indukcije,i specijalno, algoritama zasnovanih na dekompoziciji. Druga tehnika, uo-biqajena naroqito kod problema sa matricama, je svoee jednog problema nadrugi. Taj metod bie ilustrovan novim primerima u poglavu 10.

Zadaci8.1. Okarakterisati vezu izmeu algoritma za izraqunavae nk ponovenim kvadri-

raem (slika 2) i binarne predstave broja k.

8.2. Algoritam Stepen kvadriranjem (slika 2) za izraqunavae nk ne minimizira uvekbroj mnoea. Navesti primer izraqunavaa nk (k > 10) sa maim brojem mnoea nego uovom algoritmu.

8.3. Pretpostavamo da se pozitivni racionalni brojevi x predstavaju parovimaprirodnih brojeva (a, b) takvim da je x = a/b. Konstruisati algoritam koji za dati broj(a, b) odreuje minimalnu reprezentaciju (a′, b′) broja x = a/b.

8.4. Dokazati da direktni algoritam za mnoee polinoma zasnovan na dekompoziciji,koji izraqunava sva qetiri proizvoda maih polinoma, izvrxava identiqne operacije kaoi obiqan algoritam mnoea (8.2). Pretpostaviti da je n stepen dvojke.

8.5. Metod dekompozicije moe se iskoristiti za efikasnije mnoee binarnih bro-jeva. Konstruisati odgovarajui algoritam i razmotriti razlike izmeu ega i algoritmaza mnoee polinoma. Uopxtiti algoritam na mnoee brojeva u sistemu sa osnovom b > 1.

8.6. Kako se mogu pomnoiti dva kompleksna broja (a + bi)(c + di) pomou samo trirealna mnoea?

8.7. Pretpostavimo da se izraqunavae proizvoda dve kvadratne matrice reda qetirimoe svesti na k proizvoda elemenata. Kolika bi bila asimptotska sloenost opxteg al-goritma za izraqunavae proizvoda dve kvadratne matrice reda n zasnovanog na ovom svod-jeu? Za koju najveu vrednost k bi ovakav algoritam bio jox uvek bri od Xtrasenovogalgoritma?

8.8. Posmatrajmo dva algoritma za izraqunavae stepena nk iz odeka 8.2, ponovenomnoee i ponoveno kvadrirae. Neka je n prirodan broj sa d cifara. Pretpostavimoda se mnoee celih brojeva vrxi obiqnim algoritmom, koji se sastoji od d1d2 koraka akose mnoe brojevi sa d1 i d2 cifara. Koliko traje stepenovae nk pomou spomenuta dvaalgoritma? (Moe se pretpostaviti da je k stepen dvojke, i da je proizvod dva broja sa d1

i d2 cifara broj sa d1 + d2 cifara.)

8.9. Konstruisati algoritam za odreivae NZD k zadatih prirodnih brojeva.

8.10. Konstruisati algoritam za odreivae najmaeg zajedniqkog sadraoca (NZS)datih prirodnih brojeva a i b (odnosno najmaeg prirodnog broja deivog i sa a i sa b).

8.11. Konstruisati algoritam za odreivae najveeg zajedniqkog sadraoca (NZS)datih k prirodnih brojeva.

8.12. Fibonaqijevi brojevi su definisani sledeom diferencnom jednaqinom:F (n) = F (n− 1) + F (n− 2), (n > 2), F (1) = F (2) = 1.

(a) Dokazati da se svaki prirodan broj n > 2 moe predstaviti u obliku zbira najvixerazliqitih log2 n Fibonaqijevih brojeva. (b) Konstruisati algoritam za odreivae takvepredstave datog broja n.

ZADACI 221

8.13. Kae se da polinom b = b(x) deli polinom a, ako postoji polinom q takav da jea = bq. Polinom d je najvei zajedniqki delilac (NZD) polinoma a i b ako je to polinomnajveeg stepena, sa najstarijim koeficijentom 1, koji deli a i b. (a) Dokazati da je NZD dvapolinoma definisan jednoznaqno. (b) Pokazati da se pomou Euklidovog algoritma moeodrediti NZD dva data polinoma.

8.14. Hamiltonovi kvaternioni su sume oblika a + bi + cj + dk, gde su a, b, c id realni brojevi, a i, j i k su specijalni simboli. Kvaternioni se sabiraju i mnoe poobiqnim pravilima, pri qemu se koriste jednakosti: i2 = j2 = k2 = −1, ij = −ji = k,jk = −kj = i, ki = −ik = j (simboli i, j i k komutiraju sa realnim brojevima). Koliko jepotrebno izvrxiti mnoea realnih brojeva da bi se izraqunao proizvod dva kvaternionana obiqan naqin? Pokazati kako se moe broj realnih mnoea smaiti na 10.

8.15. Pokazati kako se kvadrat kvadratne matrice reda dva moe izraqunati pomoupet mnoea.

8.16. Permutaciona matrica je kvadratna matrica reda n u qijoj se svakoj vrstii koloni nalazi taqno jedan elemenat razliqit od nule, jednak jedinici. Permutacionamatrica moe se predstaviti vektorom P , tako da bude P [i] = j, ako i-ta vrsta sadrijedinicu u j-toj koloni, i = 1, 2, . . . , n. (a) Dokazati da je proizvod dve permutacione matricetakoe permutaciona matrica. (b) Konstruisati algoritam sloenosti O(n) za mnoee dvepermutacione matrice predstavene vektorima.

8.17. Neka je B = 0, 1. Svaka Bulova funkcija f od n promenivih moe se pred-staviti polinomom f =

∑σ∈Bn aσxσ, pri qemu je sabirae eksluzivna disjunkcija (sabi-

rae po modulu dva), mnoee je konjunkcija, xσ =∏n

i=1 xσii , a x

σii oznaqava xi ako je σi = 0,

odnosno negaciju xi ako je σi = 1. Tako na primer, x1∨x2 = 1·x1x2+1·x1x2+1·x1x2+0·x1x2,tj. za ovu funkciju je a00 = a01 = a10 = 1, i a11 = 0. Konstruisati algoritam vremenskesloenosti O(n2n) za izraqunavae koeficijenata aσ , σ ∈ Bn, Bulove funkcije f od npromenivih, zadate tablicom svojih vrednosti f(σ), σ ∈ Bn.

8.18. Za dve Bulove funkcije f i g od n promenivih rastojae d(f, g) moe se defi-nisati kao broj argumenata x = (x1x2 . . . xn) ∈ 0, 1n na kojima im se vrednosti razlikuju.Funkcija f je linearna Bulova funkcija od n promenivih ako se moe izraziti u oblikuf(x) = a0 +

∑ni=1 aixi, gde je sabirae eksluzivna disjunkcija (sabirae po modulu dva),

a mnoee je konjunkcija. Konstruisati algoritam vremenske sloenosti O(n2n) koji zadatu Bulovu funkciju f odreuje bar jednu oj najbliu linearnu funkciju.

8.19. Neka su elementi kvadratnih matrica A i B reda n realizacije nezavisnih slu-qajnih promenivih koje sa jednakim verovatnoama uzimaju vrednosti iz skupa 0, 1. Ako∧, ∨ oznaqavaju konjunkciju, odnosno disjunkciju, pokazati da se "proizvod" C = AB saelementima cij = ∨n

k=1(aik ∧ bkj), 1 ≤ i, j ≤ n, moe izraqunati algoritmom oqekivane(srede) vremenske sloenosti O(n2).

8.20. Neka su A i B kvadratne matrice reda n qije su vrste otvoreni Grejovi kodovi(elementi su im iz skupa 0, 1, a svake dve uzastopne vrste razlikuju se na taqno jednommestu). Konstruisati algoritam sloenosti O(n2) za mnoee ovakvih matrica.

8.21. Dato je n realnih matrica M1, M2, . . . , Mn. Matrica Mi je dimenzija ai × ai+1,1 ≤ i ≤ n. Pretpostavimo da se proizvod matrica dimenzija ai × ai+1 i ai+1 × ai+2 izraqu-nava obiqnim algoritmom sloenosti O(aiai+1ai+2). U proizvodu M1M2 . . . Mn treba ras-porediti zagrade (i time izabrati redosled mnoea) tako da bude minimalan ukupanbroj operacija. Konstruisati algoritam za nalaee optimalnog redosleda izraqunavaaproizvoda.

Glava 9

Primene u kriptografiji

9.1. UvodKriptografija je oblast u kojoj algoritmi imaju znaqajnu primenu. Znaqaj

kriptografije moe se oceniti pored ostalog i na osnovu qienice da su prviraqunari napraveni u toku drugog svetskog rata, i korixeni za razbijaenemaqkih xifri, xto je verovatno presudno uticalo na ishod rata. Svrhaovog poglava je da qitalac dobije uvid u neke osnovne pojmove i problemeove oblasti, danas izuzetno vane. Za dube upoznavae sa kriptografijomdobro moe da poslui kiga [6]

Uvexemo najpre neophodne pojmove. Pretpostavimo da osoba A (poxi-alac) eli da poxae poruku osobi B (primaocu). Poxialac eli dabude siguran da niko sem primaoca ne moe da proqita tu poruku.

Za poruku kaemo da je otvoreni tekst. Proces maskiraa poruke, ko-je za svrhu ima sakrivae enog sadraja zove se xifrovae. Rezultatxifrovaa otvorenog teksta je xifrat. Dexifrovaem xifrata dobija seoriginalna poruka, videti sliku 1.

Xifrovae-Otvoreni tekst

Dexifrovae- -Xifrat Polazna poruka

Ris. 1. Xifrovae i dexifrovae.

Vextina ili nauka koja na ovaj naqin obezbeuje sigurnost poruka zove sekriptografija. Kriptoanaliza je vextina ili nauka razbijaa xifrata,odnosno qitaa xifrovanih poruka. Oblast matematike koja obuhvata i krip-tografiju i kriptoanalizu zove se kriptologija. U danaxe vreme skoro svikriptolozi su matematiqari | oni to moraju da budu.

Otvoreni tekst oznaqavaemo sa P . To moe da bude niz bita, tekstualnifajl, digitalizovani govorni signal ili npr. digitalizovana slika. Kad seradi o raqunaru, P su prosto binarni podaci. Otvoreni tekst se ili xaeili smexta u memoriju. U oba sluqaja poruka P se prethodno xifruje.

Xifrat emo oznaqavati sa C. To su takoe binarni podaci, ponekad isteveliqine kao i P , ponekad dui (ili krai, xto se postie kombinovaemkompresije i xifrovaa). Funkcija xifrovaa E deluje na P i tako se do-bija C: C = E(P ). Suprotan proces je dejstvo funkcije dexifrovaa D na C

223

224 9. PRIMENE U KRIPTOGRAFIJI

da bi se dobilo P , odnosno P = D(C). Xifrovae i dexifrovae su daklefunkcije koje zadovoavaju uslov D(E(P )) = P .

Kriptografski algoritam ili xifra je matematiqka funkcija kojase koristi za xifrovae, odnosno dexifrovae. Otvoreni tekst se xifrujeprimenom algoritma za xifrovae, a xifrat se dexifruje algorit-mom za dexifrovae. Da bi se obezbedila sigurnost poruka, svi savre-meni algoritmi za xifrovae koriste kuq k | parametar koji utiqe naxifrovae, odnosno dexifrovae: C = Ek(P ), odnosno P = Dk(C) (slika 2).Razume se da za svaki kuq k vai Dk(Ek(P )) = P . Kuq uzima jednu od vixemoguih vrednosti iz prostora kuqeva. Iz razumivih razloga poenoje da prostor kuqeva ima xto vei broj elemenata. Postoje algoritmi saposebnim kuqem za xifrovae k1, odnosno za dexifrovae k2, slika 3. Utom sluqaju je C = Ek1(P ), P = Dk2(C), i Dk2(Ek1(P )) = P .

Xifrovae-Otvoreni tekst

Dexifrovae- -Xifrat Polazna poruka?

Kuq

?

Kuq

Ris. 2. Xifrovae i dexifrovae jednim kuqem.

Xifrovae-Otvoreni tekst

Dexifrovae- -Xifrat Polazna poruka

Kuq za xifrovae Kuq za dexifrovae

? ?

Ris. 3. Xifrovae i dexifrovae sa dva kuqa.

Algoritmi sa kuqem mogu se podeliti na simetriqne i asimetriqne. Si-metriqni su algoritmi kod kojih se kuq za xifrovae moe izraqunatipolazei od kuqa za dexifrovae, i obrnuto. U mnogim simetriqnim sis-temima su kuqevi za xifrovae i dexifrovae identiqni. Za upotrebutakvih algoritama, koji se takoe zovu i algoritmi sa tajnim kuqem,neophodno je da se poxialac i primalac dogovore koji e kuq koristi-ti pre nego xto poqnu da razmeuju xifrovane poruke. Sigurnost simet-riqnog algoritma zasniva se na kuqu; neko ko sazna kuq (a zna i algoritamxifrovaa/dexifrovaa) moe da xifruje i dexifruje poruke u tom sis-temu. Xifrovae, odnosno dexifrovae simetriqnim algoritmom mogu seoznaqiti sa Ek(P ) = C, odnosno Dk(C) = P .

Simetriqni algoritmi mogu se uslovno podeliti u dve kategorije. Nekiod ih obrauju otvoreni tekst bit po bit; oni se zovu lanqane xifre.Drugi rade na otvorenom tekstu podeenom na grupe bita. Te grupe bita zovuse blokovi, a algoritmi su blokovske xifre. Tipiqna veliqina bloka je

9.1. UVOD 225

64 bita | dovono velika da otea analizu, a dovono mala da bude praktiq-na. Kod oba tipa algoritama za xifrovae i dexifrovae koristi se istikuq. Pre pojave raqunara algoritmi su xifrovali otvoreni tekst znak poznak. Takav algoritam moe se shvatiti kao lanqani (koji transformixe nizznakova) ili blokovski, sa blokom veliqine 8 bita.

Asimetriqni, odnosno algoritmi sa javnim kuqem su drugaqiji. Zamixenisu tako da kuq za xifrovae bude razliqit od kuqa za dexifrovae. Poredtoga, kuq za dexifrovae ne moe se (u bilo kom razumnom vremenskomintervalu) izraqunati polazei od kuqa za xifrovae. Naziv sistemi sajavnim kuqem potiqe od qienice da se kuq za xifrovae moe dostavitisvima: osoba, koju primalac nikad nije sreo, moe da xifruje poruku kuqemza xifrovae, ali samo onaj ko ima odgovarajui kuq za dexifrovae moeda dexifruje tu poruku. U takvim sistemima kuq za xifrovae zove sejavni kuq, a kuq za dexifrovae | tajni kuq. Xifrovae javnimkuqem oznaqava se sa C = Ek(P ). Iako su javni i tajni kuq razliqiti,dexifrovae odgovarajuim tajnim kuqem oznaqava se sa C = Dk(P ).

Ponekad se poruke xifruju tajnim, a dexifruju javnim kuqem; ovo sekoristi za takozvani digitalni potpis, (zamenu za obiqan potpis) koji semoe prikuqiti xifratu poruke. Ako se sa CRC(P ) oznaqi "kontrolnasuma" poruke (blok fiksirane duine od npr. 32, 64 ili vixe bita za kontroluispravnosti poruke), a sa Ea, Da, odnosno Eb, Db, xifrovae i dexifrovae(javni i tajni kuq) uqesnika A, odnosno B, onda se kao potpis poruke Eb(P )koju A xae B moe iskoristiti xifrat Da(CRC(P )). Primalac B dexif-ruje Eb(P ) svojim tajnim kuqem Db, izraqunava kontrolnu sumu CRC(P ) iverodostojnost potpisa proverava tako xto izraqunatu kontrolnu sumu upo-redi sa rezultatom dexifrovaa potpisa Da(CRC(P )) (javnim kuqem Ea).Ako se ta dva rezultata slau, onda je primalac uveren da je poruku mogaodobiti samo od nekoga ko zna tajni kuq Da, dakle od uqesnika A.

Osnovni ci kriptografije je oquvae tajnosti poruke, odnosno odbranatajnosti enog sadraja od nekoga ko "prisluxkuje" kanal veze (u daem tek-stu napadaq. Kriptoanaliza je nauka ili vextina odreivaa otvorenog tek-sta poruke bez poznavaa kuqa. Kriptoanaliza takoe moe da pronae ne-dostatke xifarskog sistema koji bi doveli do takvog rezultata.

Pokuxaj kriptoanalize zove se napad. Uspexan napad (dekriptirae)podrazumeva da napadaq detano poznaje algoritam za xifrovae. U stvarnomivotu to nije uvek sluqaj, ali je to uobiqajena pretpostavka pri kriptoa-nalizi. Ta pretpostavka je razumna: ako sigurnost sistema zavisi od tajnostialgoritma, onda to nije velika sigurnost.

Postoji nekoliko tipova kriptoanalitiqkih napada, prema koliqini in-formacija koje stoje na raspolagau napadaqu. U svim varijantama pret-postava se da napadaq potpuno poznaje algoritam za xifrovae.

• Napad na osnovu xifrata. Kriptoanalitiqar ima xifrate vixeporuka, dobijene istim algoritmom za xifrovae. Posao kriptoa-nalitiqara je da rekonstruixe tekstove xto vixe poruka, ili jox

226 9. PRIMENE U KRIPTOGRAFIJI

boe, da rekonstruixe kuq korixen za xifrovae poruka, da bi semogle dexifrovati druge poruke xifrovane istim kuqem. Dakle,dato je C1 = Ek(P1), C2 = Ek(P2), . . . , Cn = Ek(Pn), a treba odreditiP1, P2, . . . , Pn; k; ili algoritam za odreivae Pn+1 na osnovu Cn+1 =Ek(Pn+1).

• Napad na osnovu parova (otvoreni tekst, xifrat). Kripto-analitiqar zna ne samo xifrate vixe poruka, nego i odgovarajueotvorene tekstove. Zadatak je rekonstruisati kuq korixen za xifrovan-je poruka, ili pronai postupak za otvarae narednih poruka xif-rovanih istim kuqem. Dakle, dato je P1, C1 = Ek(P1), P2, C2 =Ek(P2), . . . , Pn, Cn = Ek(Pn), a treba odrediti k ili algoritam zaodreivae Pn+1 na osnovu Cn+1 = Ek(Pn+1).

• Napad na osnovu izabranog otvorenog teksta. Kriptoanalitiqarzna parove (otvoreni tekst, xifrat) za vixe poruka, pri qemu on sa

m moe da bira otvorene tekstove. Ovo je moniji napad odprethodnog, jer kriptoanalitiqar moe da izabere takve otvorenetekstove sa xifratom, koji daju mnogo vixe informacije o kuqu.Zadatak je rekonstruisati kuq korixen za xifrovae poruka,ili pronai postupak za otvarae novih poruka xifrovanih is-tim kuqem. Dakle, dato je P1, C1 = Ek(P1), P2, C2 = Ek(P2), . . . ,Pn, Cn = Ek(Pn), pri qemu kriptoanalitiqar bira P1, P2, . . . , Pn,a treba odrediti k ili algoritam za odreivae Pn+1 na osnovuCn+1 = Ek(Pn+1).

Drugi i trei tip napada su qexi nego xto to izgleda na prvi pogled:moe se ukrasti poruka koja je ve xifrovana, ili se moe potplatiti nekoda xifruje izabranu poruku. Qak ni podmiivae ne mora da bude neophodno:ako predate provokativnu poruku ambasadoru strane zeme, moete sa sigur-noxu oqekivati da e je on xifrovanu poslati na razmatrae u svoju zemu.

Razliqiti xifarski sistemi obezbeuju razliqite nivoe sigurnosti, uzavisnosti od toga koliko ih je texko razbiti. Teorijski je mogue razbiti(dekriptirati) svaki algoritam sem jednog (sluqajna xifra, odeak 9.3), podpretpostavkom da je na raspolagau dovono vremena i raqunarskih resursa.Ako je cena dekriptiraa algoritma vea od vrednosti xifrovanih podataka,onda je xifrovae verovatno bezbedno. Raqunari postaju sve bri i jeftini-ji, a proseqna vrednost podataka postaje sve vea. Vano je obezbediti da sete dve linije ne preseku.

Neki algoritmi se mogu razbiti samo ako se utroxi vreme due od starostisvemira, i uz pomo raqunara veeg od sve materije u svemiru. Takvi algo-ritmi se teorijski mogu razbiti, ali ne i praktiqno, i mogu se smatratisigurnim.

Algoritam je bezuslovno siguran ako, bez obzira na koliqinu xifratakoji napadaq ima na raspolagau, ta koliqina nije dovona za rekonstrukcijuotvorenog teksta. Jedino se sluqajna xifra, (odeak 9.3) ne moe razbiti,qak ni ako su na raspolagau neograniqeni resursi. Kriptografija se vixe

9.2. KLASIQNA KRIPTOGRAFIJA 227

bavi sistemima za koje je razbijae praktiqno neizvodivo sa raspoloivim(sadaxim ili buduim) resursima; to su takozvani praktiqno sigurnixifarski sistemi. Pri tome se naravno "praktiqno raspoloivi resursi"ne mogu precizno definisati.

Mera sigurnosti algoritma za xifrovae je broj operacija koje trebaizvrxiti prilikom egovog razbijaa. Ako je, na primer, za neki algoritamtaj broj 2128, i na raspolagau je milion procesora koji izvrxavaju po biliontakvih operacija u sekundi, onda je za razbijae algoritma potrebno vixeod 1016 godina (treba imati na umu da se starost svemira proceuje na 1010

godina). Razumno je takav algoritam smatrati praktiqno sigurnim.Za razliku od broja operacija za razbijae algoritma, koji je konstan-

tan, brzina raqunara sigurno nije konstantna. U toku poslede polovine ve-ka mo raqunara je fantastiqno poveana, i nema razloga pretpostaviti da seovaj trend nee nastaviti. Mnogi kriptoanalitiqki napadi su savrxeno pri-lagoeni paralelnim raqunarima. Posao se moe razbiti na milione delova,tako da ih pojedini procesori obrauju potpuno nezavisno (tj. nije potrebnanikakva komunikacija izmeu paralelnih procesora). Rei da je neki algori-tam siguran zato xto se ne moe razbiti sadaxom tehnologijom, najqexeje neozbino. Dobri sistemi napraveni su tako da budu sigurni i protivnapada raqunarima kakvi e biti praveni u dalekoj budunosti.

9.2. Klasiqna kriptografijaPre pojave raqunara kriptografija se bavila sistemima zasnovanim na

xifrovau slova (znakova). Kriptografski algoritmi zameivali su slovajedno drugim ili su ih meusobno premextali. Boi sistemi radili su obeove stvari, i to vixe puta.

Danaxi algoritmi su komplikovaniji, ali je filozofija ostala prak-tiqno nepromeena. Osnovna promena je u tome da algoritmi xifruju biteumesto slova. To je, meutim, samo promena veliqine alfabeta, sa npr. 26na dva. Veina dobrih algoritama za xifrovae i dae kombinuje elementezamene (supstitucije) i transpozicije (premextaa).

Xifre zamene su one kod kojih se otvoreni tekst maskira tako xto seslova otvorenog teksta zameuju drugim u xifratu. Primalac primeuje in-verzne zamene i tako dobija polazni otvoreni tekst. U klasiqnoj kriptografi-ji postoji nekoliko osnovnih tipova xifri zamene.

• Xifra proste zamene je ona kod koje se slova otvorenog teks-ta zameuju odgovarajuim slovom (uvek na isti naqin) u xifratu.Kriptogrami u enigmatskim qasopisima spadaju u ovu kategoriju

• Homofonska xifra sliqna je xifri proste zamene, izuzev xto seznak otvorenog teksta na nekoliko naqina moe zameniti znakovimaxifrata. Na primer, "A" se moe zameniti sa 5, 13, 25 ili 56, "B"se moe zameniti sa 7, 19, 31 ili 42, itd.

228 9. PRIMENE U KRIPTOGRAFIJI

• Polialfabetska xifra zamene formira se od vixe xifaraproste zamene. Moe se, na primer, koristiti pet razliqitih xi-fara proste zamene; koja od ih e biti korixena zavisi od rednogbroja slova u otvorenom tekstu.

Quvena Cezarova xifra, kod koje se svako slovo zameuje slovom koje jetri slova udesno do ega (po modulu 26) (A se zameuje sa D, B sa E, . . . , Wsa Z, . . . , X sa A, Y sa B i Z sa C) je xifra proste zamene. Ako se u imenuHAL raqunara iz filma "Odiseja u svemiru 2001" slova zamene sledeim uabecedi, dobija se IBM, xto verovatno nije sluqajno. Xifre proste zamene semogu lako razbiti, jer ne meaju skup uqestanosti slova u otvorenom tekstu.

Homofonske xifre su bile koriwene ve oko 1401. godine. Mnogo ih jetee razbiti od xifre proste zamene, ali one ipak ne maskiraju potpunostatistiqke osobine otvorenog teksta. Napad sa poznatim otvorenim tekstomje trivijalan. Napad sa poznavaem xifrata je tei, ali se pomou raqunaraizvrxava za nekoliko sekundi.

Polialfabetske xifre otkrio je Leon Batista 1568. godine. Koristilaih je armija Unije u ameriqkom graanskom ratu. Iako se dosta lako razbija-ju (naroqito pomou raqunara), mnogi komercijalni programi za xifrovaekoriste ovakve xifre (na primer, xifrovae u okviru tekst procesora Word-Perfect ).

Polialfabetske xifre zamene imaju vixe jednoslovnih kuqeva, koji sekoriste za xifrovae po jednog slova otvorenog teksta. Prvi kuq xifrujeprvo slovo otvorenog teksta, drugi kuq xifruje drugo slovo otvorenog tek-sta, itd. Poxto se iskoriste svi kuqevi, poqie se ponovo ispoqetka. Akoima ukupno 20 jednoslovnih kuqeva, onda e svako dvadeseto slovo otvorenogteksta biti xifrovano istim kuqem. Ovo je period xifre. U klasiqnojkriptografiji xifre sa dugim periodom bilo je znatno tee razbiti od onihsa kratkim periodom. Postoje tehnike koje (pomou raqunara) lako razbijajuovakve xifre sa vrlo dugaqkim periodom.

Xifra sa tekstualnim kuqem je ona kod koje se jedan tekst (u xpi-junskim filmovima je to qesto biblija) koristi za xifrovae drugog teks-ta; to je takoe primer polialfabetske xifre. Iako ova xifra ima periodduine jednake duini otvorenog teksta, ona se lako moe razbiti.

Xifra transpozicije je ona kod koje slova otvorenog teksta ostajunepromeena, ali im se mea redosled. Na primer, moe se otvoreni tekstprepisati u vrste jednake duine, pa zatim xifrat proqitati po kolonama.

Oko 1920. godine pojavile su se prve maxine nameene automatizacijiprocesa xifrovaa. Zasnivale su se na konceptu rotora, mehaniqkog diskanameenog za izvoee proizvone zamene. Najpoznatija rotorska maxina jeEnigma, koju su Nemci znatno poboxanu, koristili u drugom svetskom ratu.Ma koliko da je bila komplikovana, Enigma je razbijena, xto je bitno uticalona ishod rata.

Razmotriemo sada nekoliko primera savremenih algoritama za xifro-vae: sluqajnu xifru, DES i RSA.

9.3. SLUQAJNA XIFRA 229

9.3. Sluqajna xifraModa zvuqi neobiqno, ali postoji apsolutno tajni xifarski sistem.

To je takozvana xifra sa jednokratnim kuqem , ili sluqajna xifra,koju su 1917. godine patentirali Moborn i Vernam (J. Mauborgne, G. Vernam

). U svom klasiqnom obliku, ova xifra je prosto veliki skup sluqajnih,nezavisnih znakova kuqa, ispisanih na listove papira i spojenih zajednou svesku. Poxialac koristi svaki znak kuqa za xifrovae taqno jednogznaka otvorenog teksta. Primalac ima identiqnu svesku, i koristi slova ize da dexifruje odgovarajue znakove xifrata.

Svaki kuq se koristi samo jednom, za samo jednu poruku. Poxialacxifruje poruku, a zatim unixtava iskorixene listove iz sveske kuqe-va | to je uobiqajena mera predostronosti. Primalac postupa isto posledexifrovaa poruke. Nova poruka | nova strana, i nova slova kuqa.

Pod pretpostavkom da napadaq ne moe doi do strana sveske iskorix-enih za xifrovae, ovaj sistem je savrxeno siguran. Od zadatog xifratase dexifrovaem (uz sluqajni izbor odgovarajueg kuqa, sa uniformnomraspodelom verovatnoe) sa jednakom verovatnoom moe dobiti svaki ot-voreni tekst iste duine. Na primer, pretpostavimo da su slova alfabetanumerisana na sledei naqin

A B C C C D D- E F G H I J K1 2 3 4 5 6 7 8 9 10 11 12 13 14L M N O P R S S T U V Z Z

15 16 17 18 19 20 21 22 23 24 25 26 27

Xifrovae znaka otvorenog teksta vrxi se egovim sabiraem sa slovomkuqa (preciznije, sabiraju se ihovi redni brojevi; ako se dobije zbir veiod 27, umauje se za 27; dobijeni broj zameuje se znakom prema goroj tabli-ci). Pretpostavimo da je poruka POCNITENAPAD , a da je odgovarajuiniz kuqa iz sveske TBFRGFARFMZC . Tada je xifrat LRJGSCFGGEAG .Poxto je svaki niz kuqa jednako verovatan (jer se kuqevi generixu nasluqajan naqin), protivnik nema informaciju kojom bi dexifrovao xifrat.Niz kuqa moe da bude, na primer, BDIZAMNAKRBB posle qega birezultat dexifrovaa bio SUMNJIVOLICE , ili, na primer, BD- UCITENAPAMsa rezultatom dexifrovaa SVASTIKINBUT .

Ideja je, da istaknemo jox jednom, da, poxto je svaki otvoreni tekst jed-nako verovatan, kriptoanalitiqar nema naqina da ustanovi koji otvorenitekst je poslat. Sliqno, ako se niz sluqajnih bita kuqa XOR-uje (saberepo modulu dva, bit po bit) sa porukom, dobija se xifrat potpuno sluqajanogizgleda, pa je kriptoanalitiqar bespomoan, bez obzira koliki su mu raqu-narski resursi na raspolagau.

Problem sa ovim sistemom, i to ozbian, je da se znakovi kuqa morajugenerisati sluqajno. Svi napadi na ovaj sistem ustvari su napadi na metod

230 9. PRIMENE U KRIPTOGRAFIJI

korixen za generisae niza znakova kuqa. Ako se u tu svrhu koristi krip-tografski slab algoritam, to moe da izazove nevoe. Ako se koristi praviizvor sluqajnih brojeva | xto je mnogo tee izvodivo, nego xto izgleda naprvi pogled | sistem je siguran.

Korixee generatora pseudosluqajnih brojeva u opxtem sluqaju ne re-xava problem. Postoji mnogo sistema kod kojih se sluqajni brojevi zameujupseudosluqajnim (generisanim nekim algoritmom), a koji se mogu dekripti-rati. Nizovi koje oni generixu samo izgledaju sluqajno, ali paiva ana-liza otkriva pravilnosti, koje kriptoanalitiqar moe da iskoristi. Ipak,mogue je generisati i prave sluqajne brojeve, qak i pomou mikroraqunara.

Postoji jox jedan problem sa ovakvim sistemom. Duina niza znakovakuqa jednaka je duini poruke. To moe da bude praktiqno rexee za prenosnekoliko kratkih poruka, ali texko moe da funkcionixe sa kanalom zaprenos podataka brzinom od milion bita u sekundi. Moe se na CD-ROMsmestiti 650 megabajta niza kuqa, i tako praktiqno realizovati sluqajnuxifru za prenos podataka malom brzinom. Tada ostaje problem sigurnog qu-vaa CD-ROM -a za vreme dok se ne koristi, odnosno egovog unixtavaau trenutku kad je egov sadraj iskorixen do kraja.

Qak i ako se rexi problem prenosa kuqa do primaoca, mora se obezbeditida poxialac i primalac budu potpuno sinhronizovani. Ako se xifrat priprijemu "pomeri" za makar jedan bit, dobie se potpuno besmislena poruka. Sdruge strane, ako se neki biti pogrexno prenesu, samo oni e biti dexifro-vani pogrexno (tj. nema tzv. xirea grexaka).

Sluqajna xifra se koristi i u danaxe vreme, pre svega za ultrasigurnekanale male brzine. Na primer, govorilo se da je veza "crvenim telefoni-ma" izmeu bivxeg SSSR i SAD (da li je ta veza i danas aktivna?) bilaxifrovana sluqajnom xifrom.

9.4. DES

Algoritam DES (skraenica od Data Encryption Standard ) korixenje xirom sveta kao standard vixe od 20 godina. Iako se pojavuju prvi simp-tomi egovog zastarevaa, on je dosta dobro izdrao vixegodixe pokuxajekriptoanalize.

Do oko 1970. godine nevojna istraivaa iz kriptografije bila su retka,i bilo je malo objavenih radova iz ove oblasti. Postojalo je vixe komer-cijalnih algoritama i ureaja za xifrovae, xto je naravno onemoguavaloxifrovanu komunikaciju izmeu dva razliqita ureaja. Nekadaxi ameriq-ki Biro za standarde pokrenuo je program za zaxtitu raqunarskih podata-ka, u okviru koga je bilo zamixeno projektovae standardnog algoritmaza xifrovae, koji bi xtitio podatke prilikom prenosa i smextaa. Al-goritam je trebalo da zadovoi propisane kriterijume: da obezbedi visokinivo zaxtite, da bude kompletno specificiran i razumiv, da egova sig-urnost bude zasnovana na tajnosti kuqa (a ne algoritma), da moe da bude

9.4. DES 231

dostupan svim korisnicima, prilagodiv svim primenama, da se moe efikas-no realizovati u elektronskim ureajima, da bude efikasan pri korixeu,da se moe verifikovati taqnost egove realizacije i da se moe izvozi-ti (drugim reqima, da ipak ne bude previxe siguran). Tek na drugi konkursjavio se ozbiniji kandidat, firma IBM sa algoritmom zasnovanim na sliq-nom algoritmu, zvanom Lucifer, razvijenim oko 1970. Predloeni algori-tam, iako komplikovan, sastoji se samo od jednostavnih logiqkih operacija samalim grupama bita, pa se dosta efikasno moe realizovati bilo hardvers-ki, bilo programski. Algoritam je usvojen za standard, dostupan svima, iakoje prethodno bio patentiran. U usvajau konaqnog rexea za ovaj algoritamuqestvovala je i NSA (skraenica od National Security Agency ; ameriq-ka vladina ustanova koja se izmeu ostalog bavi i kriptografijom, odnosnokriptoanalizom), pa neki autori sumaju da je ustvari algoritam Luciferoslaben. Najozbinija primedba te vrste odnosi se na veliqinu kuqa (128bita za Lucifer, 56 bita za DES). Bez obzira na sve primedbe, algoritam jeusvojen kao ameriqki standard za xifrovae nevojnih vladinih komunikaci-ja 1976. godine. Kasnije su usledili drugi (takoe ameriqki) standardi zanaqine korixea ovog algoritma. U leto 1998. godine nesigurnost DES-a jedemonstrirana, tako xto je specijalizovani raqunar od 250000 dolara za 56sati odredio kuq za DES. Problem sa veliqinom kuqa moe se rexiti npr.trostrukim xifrovaem DES-om, sa tri nezavisna kuqa. Trenutno je u tokukonkurs za AES (Advanced Encryption Standard ), naslednika DES-a.

DES je blokovska xifra, koja xifruje blokove od 64 bita i daje blokoveod 64 bita xifrata. Duina kuqa je 56 bita. U osnovi, algoritam je kombi-nacija dve vrste transformacija, "konfuzije" i "difuzije". Osnovni eleme-nat DES-a (takozvana runda) je kompozicija dve takve transformacije (smenei permutacije) teksta, odreene kuqem. DES ima 16 rundi: istu kombinacijutransformacija DES primeuje na otvoreni tekst 16 puta, videti sliku 4.Posle poqetne permutacije IP, blok se razdvaja na levu i desnu polovinu,duine po 32 bita. Postoji ukupno 16 identiqnih rundi, u kojima se koristifunkcija oznaqena sa f za kombinovae podataka sa kuqem (u svakoj rundikoristi se drugi deo od 48 bita kuqa). Posle 16-te runde leva i desna polov-ina se objediuju, pa zavrxna permutacija (inverzna permutacija poqetne per-mutacije) zakuquje obradu bloka.

U svakoj rundi se biti kuqa cikliqki pomeraju odreen broj puta a ondase uvek sa istih pozicija bira 48 od 56 bita kuqa. Desna polovina podatakase proxiruje na 48 bita "proxirujuom permutacijom" i XOR-uje (sabirapo modulu 2, bit po bit) sa odgovarajuim bitima kuqa, zatim se zameujesa 32 bita (qitaem po 4 bita iz 8 tablica) i jox jednom permutuje. Oveqetiri operacije qine funkciju f . Izlaz iz bloka f kombinuje se zatim salevom polovinom podataka operacijom XOR. Rezultat ovih operacija postajenova desna polovina. Stara desna polovina postaje nova leva polovina. Oveoperacije (slika 5) qine rundu algoritma DES, i ponavaju se 16 puta.

232 9. PRIMENE U KRIPTOGRAFIJI

?L0 R0

?

µ´¶³

n?+ f t¾¾k K1

L1 = R0 R1 = L0 ⊕ f(R0, K1)

µ´¶³

n?+ f t¾¾

?

k K2

L2 = R1 R2 = L1 ⊕ f(R1, K2)

? ?...

?L15 = R14 R15 = L14 ⊕ f(R14, K15)

µ´¶³

n?+ f t¾¾

?

k K16

R16 = L15 ⊕ f(R15, K16) L16 = R15

? ?

Otvoreni tekst

?®­

©ªIP

®­

©ªIP−1

?Xifrat

?

?

?

?

?

?

Ris. 4. Algoritam za xifrovae DES.

Ako je Bi rezultat i-te runde, Li i Ri su leva i desna polovina Bi, Ki je48-bitni kuq za rundu i, a f je funkcija koja obuhvata smene, permutovae iXOR-ovae sa kuqem, onda se i-ta runda opisuje jednakostima

Li = Ri−1(9.1)Ri = Li−1 ⊕ f(Ri−1,Ki)

Poqetna permutacija koja premexta bite u okviru ulaznog bloka zadata je tabe-lom 1. Ova, kao i naredne tabele, qita se sleva udesno, odozgo na dole. Na primer,poqetna permutacija 1. bit premexta na poziciju 58, 2. bit na poziciju 50, itd. Jasnoje da poqetna i zavrxna permutacija ne utiqu na sigurnost DES-a.

9.4. DES 233

28 bita 28 bita

¾Pomerenih

28 bita¾

Pomerenih

28 bita

Permutovani izbor56 bita

Ki, 48 bita

permutacijaRi−1

32 bita

Proxirujua

48 bitatabeleblok S

32 bita

blok P

permutacijak k

Li−1

Ri

Li

?- - - - -+ +

6

?

Kuq

Ris. 5. Jedna runda algoritma DES.

58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 462 54 46 38 30 22 14 6 64 56 48 40 32 24 16 857 49 41 33 25 17 9 1 59 51 43 35 27 19 11 361 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7

Tablica 1. Poqetna permutacija DES-a.

Prvi korak u transformisau 64-bitnog kuqa je izbacivae svakog osmog bi-ta, videti tabelu 2. Izostaveni biti koriste se za proveru ispravnosti unoxeakuqa. Od dobijenog 56-bitnog kuqa za svaku rundu DES-a generixe se novi 48-bitni kuq Ki, 1 ≤ i ≤ 16, na sledei naqin. Najpre se 56-bitni kuq deli na dve28-bitne polovine. Posle toga se polovine cikliqki pomeraju ulevo za jednu ili dvepozicije, zavisno od rednog broja runde, videti tabelu 3. Posle cikliqkog pomeraa,bira se 48 od 56 bita kuqa. Ova operacija bira podskup bita kuqa i istovremenoih permutuje, pa se zove permutovani izbor; opisana je tabelom 4. Na primer, bitna poziciji 14 (17, 33) pomerenog kuqa premexta se na poziciju 1 (2, 35) potkuqaKi, a 18-ti bit pomerenog kuqa se ignorixe.

57 49 41 33 25 17 9 1 58 50 42 34 26 1810 2 59 51 43 35 27 19 11 3 60 52 44 3663 55 47 39 31 23 15 7 62 54 46 38 30 2214 6 61 53 45 37 29 21 13 5 28 20 12 4

Tablica 2. Permutacija bita kuqa za DES.

234 9. PRIMENE U KRIPTOGRAFIJI

Proxirujua permutacija je operacija koja blok Ri−1 proxiruje sa 32 na 48bita. Dobijeni blok se XOR-uje sa delom kuqa Ki. Zatim se duina ponovo smaujena 32 bita supstitucijom. Time xto jedan bit moe da utiqe na dve supstitucije,zavisnost od ulaznih bita prostire se bre (takozvani lavinski efekat. Jedna odosnovnih zamisli pri projektovau DES-a je upravo postizae cia da jedan ulaznibit utiqe na xto vixe izlaznih bita, i to xto ranije. Proxirujua permutacijazadata je tabelom 5, odnosno slikom 6. Svaki ulazni 4-bitni blok (b0, b1, b2, b3) daje6 bita izlaza, tako da se b0 i b3 pojavuju po dva puta, a b1 i b2 po jednom. Tabelana mestu i, 1 ≤ i ≤ 48, sadri indeks ulaznog bita koji se kopira na poziciju i uizlazu. Na primer, bit na poziciji 3 u ulaznom bloku kopira se na poziciju 4 uizlaznom bloku, a bit na poziciji 21 u ulaznom bloku kopira se na pozicije 30 i 32u izlaznom bloku.

1

2

2 3 4

3 4 56 7

5 9 13

8 14 20

6 10 147 11 158 12 16

9 15 2110 16 2211 17 2312 18 2413 19

ªI

48

32

1

±

~· · ·

Ris. 6. Proxirujua permutacija DES-a.

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

Tablica 3. Broj cikliqkih pomeraa kuqa za pojedinerunde DES-a.

14 17 11 24 1 5 3 28 15 6 21 1023 19 12 4 26 8 16 7 27 20 13 241 52 31 37 47 55 30 40 51 45 33 4844 49 39 56 34 53 46 42 50 36 29 32Tablica 4. Permutovani izbor bita kuqa.

32 1 2 3 4 5 4 5 6 7 8 98 9 10 11 12 13 12 13 14 15 16 1716 17 18 19 20 21 20 21 22 23 24 2524 25 26 27 28 29 28 29 30 31 32 1Tablica 5. Proxirujua permutacija DES-a.

9.4. DES 235

Poxto se blok Ki XOR-uje sa proxirenim blokom, dobijenih 48 bita vodi sena blok za supstituciju. Ova operacija izvodi se pomou 8 tablica, supstitu-cionih blokova S1, S2, . . . , S8, videti tabelu 6. Ulaznih 48 bita deli se na os-am 6-bitnih blokova, adresa za blokove S. Ako ulaz bloka S predstava xest bita(b1, b2, b3, b4, b5, b6), onda je b1b6 binarno zapisan redni broj vrste (od 0 do 3), a b2b3b4b5

je binarno zapisan redni broj kolone (od 0 do 15). Osam proqitanih elemenata (4-bitnih brojeva) iz tablica se objediavaju i vode na izlaz.

Supstitucioni blok S1

14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 70 15 7 4 14 2 13 1 10 6 12 11 9 5 3 84 1 14 8 13 6 2 11 15 12 9 7 3 10 5 015 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13Supstitucioni blok S2

15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 103 13 4 7 15 2 8 14 12 0 1 10 6 9 11 50 14 7 11 10 4 13 1 5 8 12 6 9 3 2 1513 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9Supstitucioni blok S3

10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 813 7 0 9 3 4 6 10 2 8 5 14 12 11 15 113 6 4 9 8 15 3 0 11 1 2 12 5 10 14 71 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12Supstitucioni blok S4

7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 1513 8 11 5 6 15 0 3 4 7 2 12 1 10 14 910 6 9 0 12 11 7 13 15 1 3 14 5 2 8 43 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14Supstitucioni blok S5

2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 914 11 2 12 4 7 13 1 5 0 15 10 3 9 8 64 2 1 11 10 13 7 8 15 9 12 5 6 3 0 1411 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3Supstitucioni blok S6

12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 1110 15 4 2 7 12 9 5 6 1 13 14 0 11 3 89 14 15 5 2 8 12 3 7 0 4 10 1 13 11 64 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13Supstitucioni blok S7

4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 113 0 11 7 4 9 1 10 14 3 5 12 2 15 8 61 4 11 13 12 3 7 14 10 15 6 8 0 5 9 26 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12Supstitucioni blok S8

13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 71 15 13 8 10 3 7 4 12 5 6 11 0 14 9 27 11 4 1 9 12 14 2 0 6 10 13 15 3 5 82 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11

Tablica 6. Supstitucioni blokovi DES-a.

236 9. PRIMENE U KRIPTOGRAFIJI

Neka je, na primer, ulaz za tabelu S6 (drugim reqima, biti na pozicijama od 31do 36 u bloku dobijenom posle XOR-ovaa sa Ki) 110011. Prvi i xesti bit daju bi-narni broj 11, xto odgovara qetvrtoj vrsti tabele. Sreda qetiri bita daju binarnibroj 1001, odnosno 9, xto odgovara 10-oj koloni tabele. Time je zadat elemenat (4, 10)tabele S6, odnosno 14, ili binarno 1110. Dakle, 6-bitni blok 110011 zameuje se 4-bitnim blokom 1110.

Ovo je kritiqan korak algoritma. Sve ostale operacije su linearne i lako ihje analizirati. Supstitucioni blokovi su nelinearni, i vixe od ostalih elemenatadoprinose sigurnosti DES-a.

Rezultat faze supstitucije je osam 4-bitnih blokova, koji se kombinuju u jedin-stveni 32-bitni blok. Ovaj blok obrauje se "permutacionim blokom", koji dobijenebite permutuje na naqin odreen tabelom 7 Tabela za svaki bit pokazuje na kojupoziciju e biti premexten; na primer, bit 4 premexta se na poziciju 21, a bit 23na poziciju 3.

Na kraju se permutovani blok XOR-uje sa levom polovinom Li−1 prethodnog 64-bitnog bloka. Poxto se zamene leva i desna polovina, moe se poqeti sa narednomrundom.

Izlaz iz 16-te runde permutuje se zavrxnom permutacijom, koja je ustvari in-verzna permutacija polazne permutacije, videti tabelu 8. Pri tome se posle posled-e runde leva i desna polovina ne zameuju, tj. blok R16L16 se dovodi na ulaz zavr-xne permutacije (videti sliku 4).

Posle svih ovih supstitucija, permutacija, XOR-ovaa i pomeraa bita, moglobi se pomisliti da je algoritam za dexifrovae potpuno drugaqiji, i isto tako kom-plikovan kao i algoritam za xifrovae. Naprotiv, ove operacije su kombinovanetako da isti algoritam izvodi i xifrovae i dexifrovae. Zaista, jednakosti-ma (9.1) ekvivalentne su jednakosti

Ri−1 = Li

Li−1 = Ri ⊕ f(Li, Ki)

koje izraavaju ulaz u i-tu rundu preko izlaza iz e (operacija XOR je inverznasamoj sebi). Jedina razlika je u tome xto se kuqevi Ki moraju koristiti obrnutimredosledom (K16, K15, . . . , K1 umesto K1, K2, . . . , K16). Algoritam formiraa kuqe-va za runde isti je kao kod xifrovaa, izuzev xto se cikliqka pomeraa izvodeudesno, a broj pomeraa se iz tabele 3 qita zdesna ulevo, umesto sleva udesno (uku-pan broj pomeraa je 4× 1 + 12× 2 = 28, pa se posle 16-te runde obe polovine kuqanalaze u poqetnom poloaju).

16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 102 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25

Tablica 7. Permutacioni blok DES-a.

40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 3138 6 46 14 54 22 62 30 37 5 45 13 53 21 61 2936 4 44 12 52 20 60 28 35 3 43 11 51 19 59 2734 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25

Tablica 8. Zavrxna permutacija DES-a.

9.4. DES 237

Sigurnost DES-a u toku dueg perioda analiziralo je mnogo udi. Razmatranisu duina kuqa, broj iteracija i struktura supstitucionih blokova. Posebno sumisteriozni supstitucioni blokovi toliko konstanti, bez vidivog razloga zaxtosu izabrane bax takve ihove vrednosti. Iznoxene su sume da je NSA ugradila uDES skrivenu manu, xto joj omoguuje jednostavno dekriptirae poruka. Te sumetrebalo je da budu opovrgnute izvextajem posebnog senatskog komiteta 1978. godine.Izvextaj meutim nije objaven zbog tajnosti; objaven je samo egov rezime, u komese kae da je NSA uticala na razvoj DES-a tako xto je

• IBM ubedila da je dovono da duina kuqa bude 56 bita,• indirektno pomogla u razvoju supstitucionih blokova, i• potvrdila da, uz sve ihovo poznavae problematike, DES nema bilo kakve

statistiqke ili matematiqke slabosti.Kasnije, 1992. godine jedan od qlanova IBM-ovog tima je qak i to opovrgao, tvrdeida je DES u potpunosti delo udi iz IBM-a.

O karakteristikama DES-a objaveno je vixe rezultata. U skupu svih 256 moguihkuqeva, posebno se izdvajaju qetiri sa osobinom da potkuqevi Ki imaju iste vred-nosti u svim rundama (takozvani slabi kuqevi). Ako se kuqevi za DES birajusluqajno, onda je verovatnoa da se izabere neki od slabih kuqeva beznaqajno mala.

Najozbinija primedba na DES odnosi se na duinu kuqa. Jox 1979.godine proceeno je da bi se za 20 miliona dolara mogao napraviti paralelniraqunar, koji bi odreivao jedan kuq dnevno. Kao xto je ve reqeno, 1998.godine je sliqan raqunar napraven za 250000 dolara.

9.4.1. Naqini korixea DES-a. Pored samog algoritma DES, stan-dardizovani su i egovi naqini korixea. Osnovni je ECB (skraeno odElectronic Codebook , elektronska kodna kiga), a sastoji se u podeliotvorenog teksta na blokove od po 64 bita Pi, koji se xifruju istim kuqemK, Ci = DESK(Pi), i = 1, 2, . . .. Nedostatak ovog naqina je u tome xto ako se uotvorenom tekstu pojave dva ista bloka, onda e i ihovi xifrati biti jed-naki. Da bi se to izbeglo, predloena su dva druga naqina, CBC (skraeno odCipher Block Chaining , ulanqavae blokova xifrata) i CFB (skraenood Cipher Feedback ,

U okviru postupka CBC blok otvorenog teksta se pre xifrovaa XOR-ujesa prethodnim blokom xifrata: Ci = DESK(Pi ⊕ Ci−1), i = 1, 2, . . . (videtisliku 7). Blok C0 nije xifrat, nego takozvani inicijalizacioni vektor(na primer, vektor od 64 nule). Jasno je da xifrovae svakog bloka zav-isi od svih prethodnih blokova. Dexifrovae je inverzna operacija, Pi =DES−1

K (Ci)⊕ Ci−1.Postupak CBC identiqne blokove otvorenog teksta zameuje razliqitim

xifratima samo ako su neki prethodni blokovi otvorenog teksta razliqiti.Dve identiqne poruke i dae daju isti xifrat. Jox gore, dve poruke sa is-tim poqetkom imae isti xifrat, do pojave prve razlike. Naqin da se ovajproblem izbegne je umetae sluqajnog bloka bita ispred poruke. Xifrat togbloka (XOR-ovanog sa inicijalizacionim vektorom) je ustvari pravi ini-cijalizacioni vektor, koji se prenosi kao deo xifrata, a neophodan je za

238 9. PRIMENE U KRIPTOGRAFIJI

Pin DES

6

+- -

Ci−1

?- · · · DES−1 - n+ - Pi

linija

(a) Xifrovae (b) Dexifrovae

C0 = I0

Ci−1-

?

C0 = I0

-

6KK

¾

t t

Ris. 7. Upotreba DES-a u okviru postupka CBC.

ispravno dexifrovae. Vano je da se za svaku poruku koristi drugi inici-jalizacioni vektor. To se moe postii sluqajnim izborom inicijalizacionogvektora za svaku poruku. Drugi naqin je da se iskoristi redni broj poruke.Dodavaem inicijalizacionog vektora za identiqne otvorene tekstove dobi-jaju se razliqiti xifrati. Prema tome, napadaq ne moe na osnovu xifratada zakuqi bilo xta o otvorenom tekstu.

Postupak CBC rexava problem ponavaa poruka, ali ima i jedan ne-dostatak. Pretpostavimo da se u toku prenosa zbog grexke u prenosu prome-nio neki bit xifrata iz bloka Ci−1. Ako promeeni blok Ci−1 oznaqimo saC ′i−1, dexifrovaem se dobija blok P ′i−1 = DES−1

K (C ′i−1)⊕Ci−2, koji je bitnodrugaqiji od originalnog otvorenog teksta | to je posledica osobine DES-ada sliqne blokove (one koji se razlikuju na samo nekoliko bitskih pozici-ja) transformixe xifrovaem/dexifrovaem u bitno razliqite blokove.Naredni blok Pi = DES−1

K (Ci) ⊕ C ′i−1 ima samo jednu bitsku grexku, na is-toj bitskoj poziciji gde je grexka u Ci−1. Svi ostali blokovi dexifrujuse bez grexke. Dakle, jedna grexka u xifratu kvari dva uzastopna blokapri dexifrovau. Ta osobina zove se prostirae grexaka. Da bi se ovajproblem rexio, odnosno ublaio, potrebno je zaxtitnim kodiraem smaitiverovatnou grexke na kanalu.

Grexka drugog tipa, kad se pri prenosu u xifrat umetne (suvixan) bit,ili iz ega "ispadne" neki bit, fatalna je za dexifrovae, jer kvari sveblokove xifrata posle grexke. Zato je neophodno da se pri prenosu oquvastruktura blokova, odnosno granice izmeu ih.

Sa dexifrovaem xifrata dobijenog postupkom CBC, ne moe se zapo-qeti pre nego xto se primi kompletan blok xifrata, xto za neke primenepredstava problem. Postupak CFB xifruje podatke podeene na delove maeod veliqine bloka. Moe se, na primer, xifrovati jedan po jedan ASCIIznak otvorenog teksta (takozvani 8-bitni CFB). Na sliqan naqin, moe sexifrovati bit po bit, korixeem 1-bitnog CFB.

Na slici 8 prikazan je 8-bitni CFB. Za xifrovae i-tog znaka otvorenogteksta, pi, koristi se, na primer, najniih osam bita zi rezultata xifrovaa

9.4. DES 239

prethodnih osam znakova xifrata, DESK(ci−8ci−7 . . . ci−1)

ci = pi ⊕ zi = pi ⊕DESK(ci−8ci−7 . . . ci−1), i ≥ 1.

Moe se zamisliti da novi znak xifrata ulazi sa desne strane u pomeraqkiregistar, sa qije leve strane "ispada" najstariji znak xifrata; time je spre-man ulaz za DES za xifrovae narednog znaka pi+1 otvorenog teksta. Da bise proces xifrovaa mogao ispravno odvijati od samog poqetka, mora se u po-meraqki registar upisati inicijalizacioni vektor (c−7c−6 . . . c0). Kao i kodCBC, za svako naredno xifrovae mora se upotrebiti novi, drugaqiji ini-cijalizacioni vektor. egov sadraj nije tajna, i moe se poslati otvoreno,zajedno sa porukom. Dexifrovae je inverzan proces,

pi = ci ⊕ zi = ci ⊕DESK(ci−8ci−7 . . . ci−1) i ≥ 1.

I na prijemnoj i predajnoj strani DES izvrxava samo xifrovae; u i-tom ko-raku xifrovaa i dexifrovaa ulazi u DES su identiqni. Iz goreg izrazavidi se da dexifrovani znak zavisi od prethodnih devet znakova xifrata.Drugim reqima, jedna grexka u prenosu prouzrokuje grexku kod najvixe devetdexifrovanih znakova.

ci−8 ci−7 ci−6 ci−5 ci−4 ci−3 ci−2 ci−1

Pomeraqki registar

DES-Kuq K

?zi

Kraji levi bajt

npi ci- -?

(a) Xifrovae

- · · ·t

¾ ci−8 ci−7 ci−6 ci−5 ci−4 ci−3 ci−2 ci−1

Pomeraqki registar

DES-Kuq K

?zi

Kraji levi bajt

nci pi- -?

(b) Dexifrovae

¾

- ++ t

¾¾

linija

Ris. 8. Upotreba DES-a u okviru 8-bitnog CFB.

Spomenimo da se DES moe koristiti i u tzv. brojaqkom reimu. Nizulaza za DES su uzastopni 64-bitni brojevi (uzastopna staa brojaqa). Sliqno1-bitnom CFB, u svakom koraku se od izlaznih 64 bita uzima samo jedan (naprimer najnii bit), koji se XOR-uje sa narednim bitom otvorenog teksta.Dexifrovae se vrxi XOR-ovaem bita xifrata sa istim nizom izlaznihbita iz DES-a.

240 9. PRIMENE U KRIPTOGRAFIJI

9.5. RSA

Sistem RSA je najpoznatiji primer asimetriqnog xifarskog sistema. Odvixe asimetriqnih algoritama predloenih do sada, RSA je najjednostavnijiza razumevae i realizaciju, a takoe i najpopularniji. Ime je dobio po svojimpronalazaqima (Rivest, Shamir i Adleman ), a objaven je 1978. godine.Analiza do sada nije ni dokazala, ni opovrgla sigurnost ovog sistema.

Sigurnost RSA zasniva se na sloenosti faktorizacije velikih broje-va. Javni i tajni kuqevi odreeni su parom velikih prostih brojeva (od 100do 200 i vixe dekadnih cifara). Smatra se da je odreivae otvorenog tek-sta na osnovu xifrata i kuqa za xifrovae ekvivalentno faktorizacijiproizvoda dva velika prosta broja.

Da bi se formirao par kuqeva, treba najpre izabrati dva velika prostabroja p i q. Veliki prost broj sa k cifara dobija se tako xto se redom gene-rixu sluqajni brojevi sa k cifara, i odbacuju | dok se ne naie na prostbroj. Poznato je da je meu brojevima sa k dekadnih cifara "gustina" prostihbrojeva priblino 1/ln 10k = 1/(k ln 10). To obezbeuje da se posle odreenog(ne prevelikog) broja pokuxaja mora naii na prost broj. S druge strane,postoje efikasni algoritmi za proveru da li je zadati broj prost (xto nije usuprotnosti sa qienicom da se ne znaju efikasni algoritmi za faktoriza-ciju velikih brojeva). Neka je n = pq proizvod naenih prostih brojeva.

Neka je sa φ(n) oznaqena tzv. Ojlerova funkcija od broja n, jednaka brojubrojeva maih od n koji su uzajamno prosti sa n. Nije texko proveriti da zaza proste brojeve p i q vai φ(pq) = (p − 1)(q − 1). Sledei korak je izborsluqajnog kuqa e za xifrovae, kao broja izmeu 1 i φ(n), uzajamno prostogsa φ(n). Postupak za nalaee e sliqan je onom za nalaee brojeva p i q:generixu se sluqajni brojevi sa zadatim brojem cifara i za ih se proveravada li su uzajamno prosti sa φ(n); dobijeni brojevi se odbacuju sve dok se nenaie na nekog, koji jeste uzajamno prost sa φ(n). I u ovom sluqaju se zna da seposle odreenog broja pokuxaja sa velikom verovatnoom mora naii na brojuzajamno prost sa φ(n).

Posledi korak je odreivae kuqa za dexifrovae | takvog broja dza koji vai

ed ≡ 1 (mod (p− 1)(q − 1)),

odnosno ed − 1 = l(p − 1)(q − 1) za neki celi broj l. Ovaj problem ekvivalen-tan je rexavau linearne Diofantove jednaqine ed − l(p − 1)(q − 1) = 1, ukojoj su nepoznate d i l. Ova jednaqina ima rexee, jer je najvei zajedniqkidelilac enih koeficijenata e i (p−1)(q−1) jednak 1. Kao xto smo videli uodeku 8.3, za ovaj problem postoji efikasan algoritam sloenosti O(log n),zasnovan na Euklidovom algoritmu.

Par (e, n) je javni kuq, a broj d je tajni kuq. Brojevi p i q vixe nisupotrebni i treba ih obrisati (treba spreqiti da ih sazna bilo ko sem vlasnikatajnog kuqa).

9.5. RSA 241

Da bi se xifrovala poruka m, treba je podeliti na blokove, tako da sesvaki od ih moe jednoznaqno predstaviti brojem izmeu 0 i n−1 (za binarnepodatke moe se izabrati najvei stepen dvojke mai od n). Ako su, na primer,p i q brojevi od 100 dekadnih cifara, onda n ima 200 cifara, pa svaki blok mi

otvorenog teksta treba da bude duine nexto ispod 200 cifara. Xifrat e sesastojati od blokova ci sliqne duine. Postupak xifrovaa je jednostavan:

ci = mei mod n.

Dexifrovae na prijemnom kraju vrxi se na sliqan naqin, stepenovaemizloiocem d po modulu n, xto pokazuje sledea teorema.

Teorema 9.1. Pod gorim uslovima je cdi ≡ mi (mod n).

Dokaz teoreme direktno koristi Ojlerovu teoremu, odnosno en specijal-ni sluqaj, Fermaovu teoremu.

Teorema 9.2 (Ojlerova teorema). Ako je m > 1 i broj a je uzajamno prostsa m, onda je

aφ(m) ≡ 1 (mod m).

Dokazatel~stvo. Neka su r1, r2, . . . , rs svi razliqiti pozitivni brojevimai od m, koji su uzajamno prosti sa m. Skup ostataka brojeva ari za i =1, 2, . . . , s pri deeu sa m jednak je skupu r1, r2, . . . , rs, jer su svaka dvaostatka ari (mod m) i arj (mod m) za i 6= j | razliqita: ihova razlikaa(ri − rj) ne moe biti deiva sa m, jer je a uzajmno prosto sa m, a razlikari−rj po modulu je maa od m. Odatle sledi da je

∏si=1(ari) ≡

∏si=1 ri (mod m).

Skraivaem ove kongruencije proizvodom∏s

i=1 ri, uzajamno prostim sa m,dobija se tvree teoreme. ¤

Fermaova teorema, (P. Fermat , 1601-1665.) specijalni sluqaj Ojleroveteoreme, dobija se kad je m jednako prostom broju p. Tada je φ(m) = p− 1, pa jeap−1 ≡ 1 (mod p) za svako a koje nije deivo sa p. Mnoeem ove kongruencijesa a dobija se kongruencija ap ≡ a (mod p), koja je taqna za svaki celi broja (ona je oqigledno taqna i ako je a deivo sa p). Drugim reqima, za prostbroj p i proizvoan celi broj a, broj ap − a uvek je deiv sa p. Na sliqannaqin dobija se da je a1+l(p−1) − a deivo sa p za proizvoan prirodan broj l.Prelazimo na dokaz teoreme 9.1.

Dokazatel~stvo. Zamenom se dobijacdi = med

i = m1+l(p−1)(q−1)i ,

jer je ed−1 umoak broja φ(n) = (p−1)(q−1). Zbog posledice Ojlerove teoremerazlika m

1+l(p−1)(q−1)i −mi je deiva prostim brojem p; analogno, ona je deiva

i sa q. Prema tome, ova razlika je deiva proizvodom pq = n, odnosno

cdi = m

1+l(p−1)(q−1)i ≡ mi (mod n).

¤

242 9. PRIMENE U KRIPTOGRAFIJI

Pregled elemenata sistema RSA dat je u tabeli 9. Postupak formiraakuqeva i xifrovaa ilustrovaemo jednim primerom.

Primer 9.1. Neka je p = 47 i q = 71; tada je n = pq = 3337. Eksponent zaxifrovae e treba da bude uzajamno prost sa φ(n) = (p− 1)(q − 1) = 46 · 70 =3220. Neka je e = 79. Da bi se odredio multiplikativni inverz d = 79−1

(mod 3220), najpre se primeuje Euklidov algoritam na brojeve 3220 i 79:

3220 = 40 · 79 +60

79 = 1 · 60 +19

60 = 3 · 19 +3

19 = 6 · 3 +1

3 = 3 · 1.

Odatle se dobija predstava jedinice (najveeg zajedniqkog delioca 3220 i 79)u obliku linearne kombinacije dva posleda qlana niza ostataka 3220, 79,60, 19, 3: 1 = 19−6·3. Qlanovi niza ostataka su zbog preglednosti podebani.Korixeem gorih jednakosti unazad, dobijamo izraz za jedinicu u oblikulinearne kombinacije prva dva elementa niza ostataka, odnosno brojeva e = 79i (p− 1)(q − 1) = 3220:

1 = 19− 6 · 3 = 19− 6 · (60− 3 · 19)= −6 · 60 + 19 · 19 = −6 · 60 + 19 · (79− 60)= 19 · 79− 25 · 60 = 19 · 79− 25 · (3220− 40 · 79)= 1019 · 79− 25 · 3220

Prema tome, d = 1019. Brojevi e i n predstavaju javni kuq, a d je tajnikuq. Brojevi p i q se odbacuju (brixu). Da bi se xifrovala poruka

m = 6882326879666683,

ona se prvo mora razbiti na mae blokove. U ovom sluqaju poruka se moepodeliti na trocifrene blokove m1 = 688, m2 = 232, m3 = 687, m4 = 966,m5 = 668 i m6 = 3. Xifrovaem prvog bloka dobija se

68879 mod 3337 = 1570 = c1.

Javni kuq n proizvod dva prosta broja p i q (quvaju se u tajnosti)e uzajamno prost sa (p− 1)(q − 1)

Tajni kuq d e−1 (mod (p− 1)(q − 1))

Xifrovae c = me (mod n)

Dexifrovae m = cd (mod n)Tablica 9. Elementi sistema RSA.

ZADACI 243

Nastavajui na isti naqin dobija se xifrovana porukac = 1570 2756 2714 2276 2423 0158.

Dexifrovae se postie stepenovaem kuqem d = 1019. Dakle,15701019 (mod 3337) = 688 = m1.

Ostatak poruke dexifruje se na isti naqin.Jasno je da se poruka moe xifrovati eksponentom d, a dexifrovati

eksponentom e, jer je uloga eksponenata simetriqna.Sigurnost sistema RSA zavisi od teine problema faktorizacije velik-

ih brojeva. Strogo govorei ovo nije taqno; radi se o hipotezi, koja nikadnije dokazana, da je izraqunavae m, na osnovu c i e ekvivalentno sa fakto-rizacijom broja n. Postoji mogunost da se pronae bitno drugaqiji postupakkriptoanalize RSA. Meutim, ako takav postupak kriptoanalize omoguujeodreivae d, onda se moe iskoristiti za faktorizaciju. U svakom sluqaju,najprirodniji naqin napada na RSA je faktorizacija modula n (videti za-datak 9.6). Trenutno se mogu rastavati na qinioce brojevi od oko 120 dekad-nih cifara. Ako se n izabere tako da ima 1024 bita (308 cifara), moe sesmatrati da ovakav napad praktiqno nije izvodiv. RSA ima jedan praktiqannedostatak: najbre realizacije RSA su od 100 do 1000 puta sporije od DES-a.Zbog toga se obiqno RSA koristi samo za razmenu kuqeva za DES (ili nekidrugi blokovski sistem), a onda se za sva ostala xifrovaa koristi DES.

9.6. RezimeKriptografija je oblast u kojoj efikasni algoritmi imaju znaqajnu pri-

menu. Razmotreni su primeri nekih klasiqnih sistema. Kao predstavnicisavremenih kriptografskih sistema prikazani su DES i RSA, jedan simet-riqni i jedan asimetriqni sistem.

Zadaci9.1. Sledei tekst dobijen je xifrovaem Cezarovom xifrom sa nepoznatim pomakom

(abeceda je ista kao u odeku 9.3):EJCDVTCDZNKVDZDUTSDPTSUJAKako glasi otvoreni tekst?9.2. Na raspolagau je jedan par (P, C = DESK(P )), pri qemu se o kuqu K zna da se

sastoji od ASCII znakova iz skupa A, B, . . . , Z . Pod pretpostavkom da se jednoxifrovae algoritmom DES moe izvrxiti za 1ms, odnosno 1µs, koliko traje odreivaekuqa K proverom svih moguih sluqajeva?

9.3. Neka x oznaqava negaciju bloka x, bit po bit. Dokazati da iz DESK(P ) = C slediDESK(P ) = C.

9.4. Osoba A koristi za xifrovae svojih poruka dvostruki algoritam DES: C =DESK2 (DESK1 (P )), gde su P , C 64-bitni blokovi poruke i xifrata, a K1 i K2 su dvanezavisna 56-bitna kuqa. Konstruisati algoritam za odreivae K1 i K2 polazei od 10parova (Pi, Ci) takvih da je Ci = DESK2 (DESK1 (Pi)). Na raspolagau je memorija veliqine264 bajtova, a broj xifrovaa algoritmom DES treba da bude mai od 261.

244 9. PRIMENE U KRIPTOGRAFIJI

9.5. Odrediti sve slabe kuqeve algoritma DES (kuqeve za koje svi delovi kuqa Ki

imaju iste vrednosti).

9.6. Pokazati da se, polazei od javnog kuqa (n, e) i tajnog kuqa d za RSA, moedoi do faktorizacije broja n = pq.

9.7. Korisnik A sistema RSA sa parametrima n = pq, e i d odluqi da promeni kuqevee i d (ali ne i n = pq), jer suma da je neko saznao kuq d. Moe li osoba B, znajuiprethodni par (d, e), da qita naredne poruke za A? Kako?

9.8. Pokazati da se umesto φ(n) u sistemu RSA moe koristiti tzv. Karmajklovafunkcija χ(n) = NZS (p− 1, q − 1).

9.9. U primeru RSA xifrovaa 9.1 postoji potencijalni problem: posledi blok jepri xifrovau interpretiran kao broj 3, isto kao i da je posledi blok bio npr. 003.Samim tim, nije sigurno da e se dexifrovaem dobiti originalna poruka. Kako se moerexiti ovaj problem?

Glava 10

Redukcije

10.1. UvodZapoqeemo ovo poglave jednom anegdotom. Matematiqaru je objaxeno

kako 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 u vodu.A onda su ga pitali: kako moe da skuva qaj ako ima qajnik, pun vrele vode?Jednostavno, kae on; prosue vodu i tako svesti problem na ve rexen.

U ovom poglavu pozabaviemo se idejom redukcije, odnosno svoea jednogproblema na drugi. Pokazaemo da redukcije, iako ponekad neracionalne,mogu biti i vrlo korisne. Na primer, ako ubacite u sanduqe poxte na NovomBeogradu pismo za qoveka koji stanuje odmah pored te poxte, pismo e, bezobzira na blizinu odredixta, prei put do Glavne poxte u Beogradu, panazad do poxte na Novom Beogradu, i tek onda e ga poxtar odneti vaxempoznaniku. Qesti su sluqajevi kad nije lako prepoznati specijalni sluqaj iza ega skrojiti efikasnije specijalno rexee. U praksi je qesto efikasnijesve specijalne sluqajeve tretirati na isti naqin. Na takvu situaciju qesto senailazi i pri konstrukciji algoritama. Kad naiemo na problem koji se moeshvatiti kao specijalni sluqaj drugog problema, koristimo poznato rexee.To rexee ponekad moe biti previxe opxte ili previxe skupo. Meutim, umnogim sluqajevima je korixee opxteg rexea najlakxi, najbri i naje-legantniji naqin da se problem rexi. Ovaj princip se qesto koristi. Za nekeraqunarske probleme, na primer rad sa nekom bazom podataka, obiqno nijeneophodno napisati program koji rexava samo taj problem. Opxte rexee nemora biti najefikasnije, ali je mnogo jednostavnije iskoristiti upravo ega.

Pretpostavimo da je dat problem P , koji izgleda komplikovano, ali liqina poznati problem Q. Moe se nezavisno (od poqetka) rexavati problemP , ili se moe iskoristiti neki od metoda za rexavae Q i primeniti gana P . Postoji, meutim, i trea mogunost. Moe se pokuxati sa nalae-em redukcije, odnosno svoea jednog problema na drugi. Neformalno, re-dukcija je rexavae jednog problema korixeem "crne kutije" koja rexavadrugi problem. Redukcijom se moe postii jedan od dva cia, zavisno odsmera. Rexee P , koje koristi crnu kutiju za rexavae Q, moe se trans-formisati u algoritam za rexavae P , ako se zna algoritam za rexavae Q.S druge strane, ako se za P zna da je teak problem, i zna se doa grani-ca sloenosti za algoritme koji rexavaju P , onda je to istovremeno i doa

245

246 10. REDUKCIJE

granica sloenosti za problem Q. U prvom sluqaju je redukcija iskorixenaza dobijae informacije o P , a u drugom | o Q.

Na primer, u odeku 10.4.2 razmatraju se problemi mnoea i kvadri-raa matrica. Jasno je da se kvadrirae moe izvesti primenom algoritmaza mnoee; prema tome, kvadrirae matrice moe se svesti na mnoeematrica. U odeku 10.4.2 se pokazuje da je mogue pomnoiti dve matriceprimenom algoritma za kvadrirae; drugim reqima, mnoee matrica svodise na kvadrirae. Svrha ove druge redukcije je izvoee dokaza da se kvadri-rae matrice ne moe izvesti asimptotski bre od izraqunavaa proizvodadve proizvone matrice (pod uslovima koji su razmotreni u odeku 10.4.2).

U ovom poglavu videemo nekoliko primera redukcija. Nalaee reduk-cije jednog problema na drugi moe biti korisno qak i ako ne daje novu douili goru granicu sloenosti problema. Redukcija omoguuje boe razumevan-je oba problema. Ona se moe iskoristiti za nalaee novih tehnika za napadna problem ili egove varijante. Na primer, redukcija se moe iskoristitiza konstrukciju paralelnog algoritma za rexavae problema.

Jedan od efikasnih naqina za upotrebu redukcija je definisae vrloopxteg problema, na koga se mogu svesti mnogi drugi problemi. Takav problemtreba da bude dovono opxti, da pokrije xiroku klasu problema, dok sa drugestrane treba da bude dovono jednostavan, da bi imao efikasno rexee. Li-nearno programirae, jedan od takvih problema, razmotriemo u odeku 10.3.

I ranije smo ve sretali sa primerima redukcija | na primer, redukcijuproblema nalaea tranzitivnog zatvorea na problem nalaea svih naj-kraih puteva (odeak 6.8). Redukcije su dovono vane da zasluuju da imse posveti posebno poglave. One su pored toga osnova i za materijal sledeegpoglava.

10.2. Primeri redukcijaU ovom odeku razmotriemo nekoliko primera upotrebe redukcija kao

metoda za konstrukciju efikasnih algoritama.

10.2.1. Cikliqko uporeivae stringova. Poqiemo sa jednostav-nom varijantom problema pronalaea uzorka u tekstu.

Problem. Neka su A = a0a1 . . . an−1 i B = b0b1 . . . bn−1 dva stringa duinen. Ustanoviti da li je string B cikliqki pomeraj stringa A.

Problem je ustanoviti da li postoji indeks k, 0 ≤ k ≤ n − 1, takav daje ai = b(k+i) mod n za sve i, 0 ≤ i ≤ n − 1. Oznaqimo ovaj problem sa CUS, aosnovni problem traea uzorka u tekstu sa TUT (odeak 5.6). Problem CUSmoe se rexiti, na primer, izmenom algoritma KMP, opisanog u odeku 5.6.Postoji boi naqin da se doe do rexea. Ideja je formulisati CUS kao reg-ularni primer ulaza za problem TUT. Drugim reqima, traimo neki tekstT i uzorak P , tako da je pronalaee P u T ekvivalentno utvrivau da jeB cikliqki pomeraj A. Ako nam to poe za rukom, onda se rexee TUT sa

10.2. PRIMERI REDUKCIJA 247

stringovima T i P moe iskoristiti za rexavae CUS sa stringovima A iB. Kad se problem razmotri na ovaj naqin, lako je videti rexee: za T trebauzeti AA (odnosno string A nadovezan na samog sebe). Jasno je da je B cikliq-ki pomeraj A ako i samo ako je B podstring stringa AA. Poxto problem TUTumemo da reximo za linearno vreme, doxli smo do algoritma za rexavaeCUS linearne sloenosti.

10.2.2. Redukcije sa uporeivaem nizova. Razmotrimo problem upo-reivaa nizova iz odeka 5.7: dati su nizovi znakova A = a1a2 . . . an, B =b1b2 . . . bm su dva niza znakova, a zadatak je promeniti A znak po znak, i takoga uqiniti jednakim nizu B. Dozvoene su tri edit operacije | umetae,brisae i zamena znaka. Znaju se cene svake operacije, a ci je minimizacijacene editovaa. Rexee dato u odeku 5.7 zasniva se na popuavau tabele di-menzija n×m, u kojoj svaki elemenat odgovara parcijalnom editovau: eleme-nat tabele u preseku i-te vrste i j-te kolone je najmaa cena transformisaaprvih i znakova A u j prvih znakova B. Ci se postie izraqunavaem el-ementa u doem desnom uglu tabele. Videli smo da se svaki elemenat moeizraqunati na osnovu samo tri "prethodna" elementa, xto odgovara trimamoguim varijantama za posledu edit operaciju.

Isti problem moe se posmatrati na drugi naqin ako tabeli pridruimousmereni graf. Svaki elemenat tabele odgovara qvoru grafa, odnosno parci-jalnom editovau. Grana (v, w) u grafu postoji ako se editovae koje odgo-vara qvoru w dobija dodavaem jedne edit operacije editovau koje odgovaraqvoru v. Primer takvog grafa dat je na slici 1, gde je A = caa i B = aba.Horizontalne grane odgovaraju umetaima, vertikalne brisaima, a dijago-nalne zamenama znakova. Tako, na primer, put istaknut na slici 1 odgovarabrisau c, zameni a sa a, umetau b i jox jednoj zameni a sa a. U osnovnojvarijanti problema cene grana su 1, izuzev dijagonalnih grana kod kojih sezamena vrxi nepromeenim znakom, qija je cena 0. Problem se na taj naqintransformixe u obiqan problem nalaea svih rastojaa od zadatog qvora ugrafu. Svakoj grani dodeena je teina, i mi traimo najkrai put od qvora(0, 0) do qvora (n,m). Dakle, problem nalaea edit rastojaa sveden je naproblem nalaea svih rastojaa od zadatog qvora u grafu.

Nalaee svih rastojaa od zadatog qvora u opxtem sluqaju nije lakxeod direktnog rexavaa problema. Ova redukcija ipak nije beskorisna. Razmo-trimo, na primer, sledeu varijantu problema uporeivaa nizova. Cene editoperacija ne moraju da zavisi samo od pojedinaqnih znakova. Cena umetaabloka znakova unutar drugog niza moe biti razliqita od umetaa istog bro-ja znakova jednog po jednog, na razliqitim mestima. Isto moe da bude sluqaji sa brisaima. Drugim reqima, umesto da cene dodeujemo pojedinaqnimumetaima, brisaima i zamenama, cene se mogu dodeliti blokovima umetan-ja, brisaa i zamena, nezavisno od ihove veliqine. Ili drugaqije, umetaubloka od k znakova moe se dodeliti cena c1 + c2k, gde je c1 "poqetna cena", ac2 cena za svaki naredni znak. Postoji mnogo drugih korisnih metrika. One semnogo lakxe modeliraju korixeem formulacije u vidu problema najkraih

248 10. REDUKCIJE

6u

6 6u u u∅ a b a

∅ - - -

? ? ? ?R R R6

6

u

u

6

6

6

6

u

u

u

u

u

u

c

a

-

-

-

-

-

-?

?

?

?

?

?

?

?

R

R

R

R

R

R6

u6 6

u u u- - -a

0

0

0

0

Ris. 1. Graf koji odgovara nizovima A = caa i B = aba.

puteva, nego prilagoavaem polaznog problema. Isto tako, mogu se dodatinove grane sa podgodno izabranim cenama, ne meajui suxtinu problema.

10.2.3. Nalaee trouglova u neusmerenom grafu. Postoji tesnaveza izmeu grafova i matrica. Graf G = (V, E) sa n qvorova v1, v2, . . . vn,moe se predstaviti svojommatricom povezanosti|kvadratnom matricomA = (aij) reda n, takvom da je aij = 1 ako (vi, vj) ∈ E, odnosno aij = 0 u ostalimsluqajevima. Ako je G neusmereni graf, matrica A je simetriqna. Ako jeG teinski graf, onda se takoe moe predstaviti kvadratnom matricomA = (aij) reda n, pri qemu je elemenat aij jednak teini grane (vi, vj), odnosno0, ako te grane nema u grafu. Postoje i drugi naqini da se matrica pridruigrafu. Tako se grafu G = (V,E) sa n qvorova i m grana moe pridruitin × m matrica u kojoj je (i, j) elemenat jednak 1 ako i samo ako je i-ti qvorsusedan sa j-tom granom.

Veze grafova i matrica ne zadravaju se samo na reprezentaciji. Mnogeosobine grafova mogu se boe razumeti analizom odgovarajuih matrica. Sliq-no, mnoge osobine matrica otkrivaju se posmatraem odgovarajuih grafova.Nije iznenaujue da se mnogi algoritamski problemi mogu rexiti korixe-em ove analogije. To emo ilustrovati jednim primerom.

Problem. Neka je G = (V, E) neusmereni povezani graf sa n qvorova i mgrana. Potrebno je ustanoviti da li u G postoji trougao, odnosno takva triqvora da izmeu svaka dva od ih postoji grana.

Direktno rexee obuhvata proveru svih troqlanih podskupova skupa qvo-rova. Podskupova ima

(n3

)= n(n−1)(n−2)/6, a poxto se svaki od ih moe pro-

veriti za konstantno vreme, vremenska sloenost ovakvog algoritma je O(n3).

10.3. REDUKCIJE NA PROBLEM LINEARNOG PROGRAMIRAA 249

Moe se konstruisati i algoritam sloenosti O(mn) (zasnovan na proverisvih parova (grana, cvor) | da li grade trougao), koji je boi ako graf nijegust. Moe li se ovo dae poboxati? Prikazaemo sada algoritam koji jeasimptotski bri, i suxtinski je drugaqiji. Svrha primera je da ilustrujevezu izmeu grafovskih i matriqnih algoritama.

Neka je A matrica povezanosti grafa G. Poxto je graf G neusmeren,matrica A je simetriqna. Razmotrimo vezu elemenata matrice B = A2 =AA (proizvod je obiqan proizvod matrica) i grafa G. Prema definicijiproizvoda matrica je

B[i, j] =n∑

k=1

A[i, k] ·A[k, j].

Iz ove jednakosti sledi da je uslov B[i, j] > 0 ispuen akko postoji indeks k,takav da su oba elementa A[i, k] i A[k, j] jedinice. Drugim reqima, B[i, j] > 0je ispueno ako i samo ako postoji qvor vk, takav da je k 6= i, k 6= j i da suoba qvora vi i vj povezana sa vk (pretpostavamo da graf nema peti, odnosnoA[i, i] = 0 za i = 1, 2, . . . , n). Prema tome, u grafu postoji trougao koji sadritemena vi i vj akko je vi povezan sa vj i B[i, j] > 0. Konaqno, u G postoji trougaoakko postoje takvi indeksi i, j da je A[i, j] = 1 i B[i, j] > 0.

Navedena analiza sugerixe algoritam. Treba izraqunati matricu B = A2

i proveriti ispuenost uslova A[i, j] = 1, B[i, j] > 0 za svih n2 parova(i, j). Sloenost provere ovog uslova je O(n2), pa preovlaujui deo vremenskesloenosti algoritma potiqe od mnoea matrica. Time je problem nalaen-ja trougla u grafu sveden na problem mnoea matrica (preciznije, kvadri-raa matrice, ali kao xto emo videti u odeku 10.4.2, ta dva problema su ek-vivalentna). Za mnoee matrica moe se iskoristiti Xtrasenov algoritami tako dobiti algoritam za nalaee trougla u grafu sloenosti O(n2.81).Preciznije, opisana redukcija pokazuje da je sloenost ovog grafovskog prob-lema O(M(n)), gde je M(n) sloenost mnoea Bulovih matrica reda n.

10.3. Redukcije na problem linearnog programiraaPrethodni odeak sadri primere redukcija izmeu algoritama u razli-

qitim oblastima. Pokuxali smo da transformixemo jedan problem u drugi,da bismo mogli da iskoristimo poznati algoritam. U ovom odeku emo takod-je razmatrati redukcije, ali sa drugaqijim pristupom. Umesto da traimokandidata za redukciju svaki put kad naiemo na novi problem, razmatramo"superprobleme", na koje se mogu svesti mnogi drugi problemi. Jedan takavsuperproblem (moda najvaniji) je linearno programirae.

10.3.1. Uvod i definicije. Sadraj mnogih problema je maksimizi-rae ili minimizirae neke funkcije, koja zadovoava zadate uslove. Naprimer, kod transportnog problema ci je maksimizirae fukcije toka, poduslovom da su zadovoeni uslovi kapaciteta grana i konzervacije toka. Line-arno programirae je opxta formulacija takvih problema, kad su funkcijai ograniqea linearni. Neka je x = (x1, x2, . . . , xn)T vektor promenivih.

250 10. REDUKCIJE

Cina funkcija je linearna funkcija promenivih | komponenti vektorax:

(10.1) c(x) =n∑

i=1

cixi,

gde su ci konstante. Ci linearnog programiraa je pronai vrednost x kojazadovoava zadata ograniqea (koja e biti navedena) i maksimizira cinufunkciju. Kasnije emo videti da je lako zameniti minimizirae cinefunkcije enim maksimiziraem. Prethodno navodimo opxti oblik zadatkalinearnog programiraa sa tri tipa ograniqea, pri qemu se u konkretnimproblemima ne moraju pojavivati sva tri tipa ograniqea. Pokazaemo dase opxti problem moe svesti na problem sa samo dva tipa ograniqea.

Neka su a1,a2, . . . ,ak realni vektori vrste jednake duine n, i neka sub1, b2, . . . , bk realni brojevi. Nejednakosna ograniqea su ograniqea ob-lika

(10.2) aj · x ≤ bj , 1 ≤ j ≤ k,

pri qemu su svi simboli sem x konstante. Sliqna su jednakosna ograniqea

(10.3) ej · x = dj , 1 ≤ j ≤ m,

pri qemu su e1, e2, . . . , em takoe vektori vrste duine n, a d1, d2, . . . , dm surealni brojevi.

Obiqno se dodaju i posebna nenegativna ograniqea (iako se ona mogushvatiti kao specijalni sluqaj prethodnih ograniqea)

(10.4) xj ≥ 0 za sve j ∈ P,

gde je P zadati podskup skupa 1, 2, . . . , n.Problem linearnog programiraa moe se formulisati na sledei naqin:

maksimizirati funkciju c(x) (10.1), pri qemu treba da budu zadovoena ne-jednakosna (10.2), jednakosna (10.3) i nenegativna ograniqea (10.4). Razumese da konkretni problemi ne moraju da sadre ograniqea svih tipova.

Za ovako definisan problem u opxtem sluqaju postoji vixe ekvivalent-nih formulacija. Na primer, jednakosna ograniqea tipa ej · x = dj mogu seekvivalentno zameniti sa dva nejednakosna ograniqea ej ·x ≤ dj i ej ·x ≥ dj .Sliqno, nejednakosno ograniqee ai · x ≤ bi moe se zameniti sa dva ekviva-lentna, ai · x + yi = bi i yi ≥ 0, pri qemu je yi nova promeniva. U oba sluqajazamena jednog skupa ograniqea drugim moe da povea broj ograniqea.

Na ovom mestu neemo se baviti algoritmom za rexavae problema li-nearnog programiraa. Napomenimo samo da su postojei algoritmi dovonoefikasni u praksi, i da svoee nekog problema na linearno programiraenije samo uvebae redukcija, nego moe da bude i dobar naqin da se tajproblem rexi.

10.3. REDUKCIJE NA PROBLEM LINEARNOG PROGRAMIRAA 251

10.3.2. Primeri redukcije na linearno programirae. U praksisu problemi retko direktno zadati kao problemi linearnog programiraa.Obiqno je neophodno uvesti odgovarajue definicije da bi se problem uklopiou ovu formulaciju.

10.3.2.1. Transportni problem. Ovaj problem razmatran je u odeku 6.10.Neka promenive x1, x2, . . . , xn predstavaju vrednosti toka za svih n granae1, e2, . . . , en, Cina funkcija je vrednost ukupnog toka

c(x) =∑

j∈S

xj ,

gde je S skup grana koje izlaze iz izvora s. Nejednakosna ograniqea odgo-varaju ograniqeima kapaciteta

xi ≤ ci, 1 ≤ i ≤ n,

gde je ci kapacitet grane ei. Jednakosna ograniqea odgovaraju uslovima odran-ja toka ∑

ei izlazi iz v

xi =∑

ej ulazi u v

xj , za sve v ∈ V \ s, t.

Na kraju, sve promenive treba da zadovoe nenegativna ograniqea xi ≥ 0za i ∈ 1, 2, . . . , n. Vrednosti x koje maksimiziraju cinu funkciju uz ovaograniqea odgovaraju oqigledno optimalnom toku.

10.3.2.2. Problem statiqkog usmeravaa. Neka je G = (V, E) graf kojipredstava komunikacionu mreu. Pretpostavimo da svaki qvor vi ∈ V moeu jedinici vremena da primi samo Bi poruka (zbog jednostavnosti pretpostavl-ja se sve poruke imaju istu duinu). Pretpostavimo da nema ograniqea nabroj poruka koje se mogu preneti bilo kojom granom, i da svaki qvor moeda quva neograniqenu zalihu poruka za slae. Problem je ustanoviti kolikoporuka treba da prenesu pojedine grane u jedinici vremena, da bi se mak-simizirao ukupan broj poruka koje mrea prenosi u jedinici vremena. Ovoje problem statiqkog usmeravaa, jer se pretpostava da qvorovi uvek imajuporuke za slae; u praksi potrebe za prenosom zavise od vremena. U grafovskojformulaciji problem glasi: dodeliti teine granama, tako da je zbir teinagrana susednih qvoru vi mai ili jednak od Bi, a da zbir teina svih granabude maksimalan.

Ovaj grafovski problem lako se moe formulisati kao problem linearnogprogramiraa. Svakoj grani ei = (v, w) moe se dodeliti promeniva xi,koja predstava broj poruka kroz ei u jedinici vremena. Cina funkcija jec(x) =

∑i xi, a ograniqea su

ei je susedna v

xi ≤ Bi, za sve v ∈ V,

xi ≥ 0, za sve i.

252 10. REDUKCIJE

10.3.2.3. Dobrotvorni problem. Pretpostavimo da n osoba ele da uputepomo u k ustanova. Osoba i ima ograniqee si na ukupan prilog u toku godine,kao i ograniqee aij na iznos priloga ustanovi j (na primer, aij moe da bude0 za neke ustanove). U opxtem sluqaju si je mae od

∑kj=1 aij , pa svaka osoba

treba da donese odluku o tome kome da uputi koliki prilog. Pretpostavimodae da svaka ustanova j ima ograniqee tj na ukupan iznos koji moe daprimi (ovo ograniqee moda nije realno, ali je ipak interesantno). Ci jenapraviti algoritam koji maksimizira zbir priloga.

Ovaj problem je uopxtee problema uparivaa iz odeka 6.9.2. Problem semoe rexiti postupkom sliqnim postupcima za nalaee optimalnog upari-vaa, a moe se formulisati i kao problem linearnog programiraa. Ukupnoima nk promenivih xij , 1 ≤ i ≤ n, 1 ≤ j ≤ k, gde je xij iznos koji osoba iuplauje ustanovi j. Cina funkcija je

c(x) =∑

i,j

xij .

Ograniqea su sledea:xij ≤ aij za sve i, j,

k∑

j=1

xij ≤ si za sve i,

n∑

i=1

xij ≤ tj za sve j.

Pored toga, sve promenive naravno moraju biti nenegativne.10.3.2.4. Problem pridruivaa. Promenimo malo dobrotvorni problem

tako da svaka osoba moe da uplati prilog samo jednoj ustanovi, i da svakaustanova moe da primi prilog od samo jedne osobe. Tako dobijamo standardniproblem uparivaa, ali sa teinama. Svakom moguem uparivau pridruenje zbir priloga, a ci je ne samo pronai optimalno uparivae, nego i da mak-simizirati sumu priloga. Ovo je teinski problem bipartitnog uparivaa,ili problem pridruivaa.

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 xij svakoj grani (i, j), tako da je xij = 1 akoje grana izabrana, odnosno xij = 0 u protivnom. Cina funkcija je

c(x) =∑

i,j

aijxij ,

a ograniqea suk∑

j=1

xij = 1 za sve i,

10.4. PRIMENA REDUKCIJA NA NALAEE DOIH GRANICA 253

n∑

i=1

xij = 1 za sve j.

Pored toga, sve promenive xij treba da budu nenegativne. Navedena ograni-qea 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 ograniqeada promenive mogu uzimati samo vrednosti 0 ili 1. U opxtem sluqaju takavproblem je texko rexiti. Linearni programi qije promenive moraju biticeli brojevi zovu se celobrojni linearni programi, a ihovo rexavaeje celobrojno linearno programirae. Mnogi problemi razmotreni uprethodnim poglavima mogu se na prirodan naqin formulisati kao problemicelobrojnog linearnog programiraa. Meutim, iako se linearni programimogu efikasno rexavati, celobrojni linearni programi su obiqno (ali neuvek) vrlo texki. Na ovaj problem vratiemo se i u sledeem poglavu.

10.4. Primena redukcija na nalaee doih granicaAko pokaemo da se proizvoan algoritam za rexavae problema A moe

modifikovati (ne poveavajui mu pri tome znaqajno vremensku sloenost)tako da rexava problem B, onda je doa granica za problem B istovremenoi doa granica za problem A. Zaista, svaki algoritam za A je istovremeno ialgoritam za B, pa je doa granica za B vea ili jednaka od doe granice zaA. Prikazaemo tri primera dokaza doe granice sloenosti zasnovana naredukciji.

10.4.1. Doa granica za konstrukciju prostog mnogougla. Posma-trajmo problem povezivaa skupa taqaka u ravni prostim mnogouglom (videtiodeak 7.3). Videli smo kako se taj problem moe rexiti korixeem sorti-raa. Ispostava se da, pod odreenim pretpostavkama, ovaj problem ne moeda se rexi bre od sortiraa. Zbog toga se algoritam koji smo videli zanalaee prostog mnogougla ne moe poboxati ako se ne poboxa sorti-rae (pod "poboxaem" se podrazumeva poboxae za vixe od konstantnogfaktora).

Teorema 10.1. Neka je poznat algoritam za konstrukciju prostog mno-gougla vremenske sloenosti O(T (n)). Tada postoji algoritam za sortiraesloenosti O(T (n) + n).

Dokazatel~stvo. Razmotrimo n taqaka na krunici, slika 2. Jedininaqin da se te taqke poveu prostim mnogouglom je da se svaka taqka poveesa svojim susedima na krunici. U protivnom, ako dve taqke koje su suse-di ne bi bile povezane, du koja sadri jednu od te dve taqke razdvajalabi preostale taqke na dve grupe, koje se ne mogu povezati ne presecajui ovudu. Posmatrajmo sada ulaz x1, x2, . . . , xn za problem sortiraa. Ako bismoimali algoritam ("crnu kutiju") za rexavae problema prostog mnogougla,

254 10. REDUKCIJE

brojeve bismo mogli da sortiramo na sledei naqin. Ulaz x1, x2, . . . , xn najprepreslikavamo u uglove y1, y2, . . . , yn, iz opsega od 0 do 2π, sa istim meusob-nim odnosima kao i x1, x2, . . . , xn. To se moe postii linearnom funkcijomy = 2π(xi−xmin)/(xmax−xmin) koja interval (xmin, xmax) preslikava u inter-val (0, 2π); ovde je (xmin, xmax) proizvoan interval koji sadri sve taqke xi.Uglovi se zatim na prirodan naqin preslikavaju u taqke na jediniqnoj kru-nici: broju xi odgovara taqka na krunici, qiji en polupreqnik sa fiksnompolupravom zaklapa ugao yi. Ovo preslikavae brojeva u taqke izvodi se zalinearno vreme. Sada se moe iskoristiti crna kutija za povezivae ovogskupa taqaka prostim mnogouglom, za vreme O(T (n)). Kao xto smo ve videli,mnogougao mora da spaja svaku taqku sa enim susedima na krunici. Zbogtoga, prolazei taqke onim redom kojim su one sloene da bi qinile teme-na mnogougla, dobijamo niz taqaka sortiran po uglovima, a time i sortiranpolazni niz brojeva. Sloenost ovakvog sortiraa je O(T (n) + n). ¤

u

uu

u

u

y5

y1y3

y4

y2

Ris. 2. Pridruivae taqaka na krunici brojevima.

Da bismo dobili dou granicu za problem nalaea prostog mnogougla,moramo biti paivi u pogledu podrazumevanog modela raqunaa. Doa grani-ca Ω(n log n) za problem sortiraa dokazana je u odeku 5.3.6 pod pretpostavkomda se radi o modelu stabla odluqivaa. Da bi ova granica mogla da se isko-risti za problem nalaea prostog mnogougla, mora se koristiti isti model.Drugim reqima, mora se pretpostaviti da crna kutija koja rexava problemnalaea prostog mnogougla koristi O(T (n)) uporeivaa, na naqin koji je uskladu sa modelom stabla odluqivaa. Teorema dakle mora da sadri tu pret-postavku. Zatim se mora pokazati da je i redukcija u skladu sa modelom stablaodluqivaa. U ovom sluqaju redukcija je regularna jer prilikom dokaza doegranice za sortirae nije bilo nikakvih ograniqea na tip pitaa dozvol-jenih u okviru stabla odluqivaa. Dakle, uporeivae koje radi sa x i ykoordinatama koje odgovaraju uglu yi raquna se kao jedno uporeivae u sta-blu odluqivaa. Stablo odluqivaa koje rexava problem nalaea prostog

10.4. PRIMENA REDUKCIJA NA NALAEE DOIH GRANICA 255

mnogougla moe se transformisati u stablo odluqivaa za sortirae, bezznaqajne promene visine.

Posledica 10.2. Ako se pretpostavi model stabla odluqivaa, kon-strukcija prostog mnogougla koji povezuje skup od zadatih n taqaka u ravnizahteva u najgorem sluqaju Ω(n log n) uporeivaa.

Ova redukcija ustanovava qienicu da je sortirae centralni deo re-xavaa problema konstrukcije prostog mnogougla.

10.4.2. Jednostavne redukcije sa matricama. U odeku 8.5 razmotrenje neobiqan, ali asimptotski brz postupak mnoea matrica. Na simetriqnematrice (one kojima je elemenat (i, j) jednak elementu (j, i) za svaki par in-deksa (i, j)) qesto se nailazi u praksi. Prirodno je upitati se da li je jednos-tavnije mnoiti simetriqne 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 simetriqne ma-trice, sa taqnoxu do na konstantni faktor, iste sloenosti kao i mnoeedve 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 specijalni sluqajPrM). Pretpostavimo sada da imamo algoritam koji rexava SimM. Pokazaemoda se taj algoritam moe iskoristiti kao crna kutija za rexavae opxti-jeg problema PrM. Neka su A i B dve proizvone kvadratne matrice reda n.Oznaqimo sa AT transponovanu matricu matrice A (tj. matricu dobijenuprebacivaem svakog elementa (i, j) matrice na poziciju (j, i)). Neposredno seproverava da je taqan sledei izraz u kome se pojavuje proizvod dve simet-riqne 2n× 2n matrice

(10.5)(

0 AAT 0

)(0 BT

B 0

)=

(AB 00 AT BT

).

Ovde 0 oznaqava n×n matricu qiji su svi elementi nule. Redukcija je posledi-ca qienice da su matrice sa leve strane simetriqne. ihov proizvod moese izraqunati korixeem algoritma za rexavae problema SimM. Meutim,gori levi blok ovog proizvoda je upravo proizvod AB. Prema tome, prob-lem PrM moe se rexiti primenom algoritma za rexavae SimM na matricedvostruko vee dimenzije. Tako dolazimo do sledeeg tvrea.

Teorema 10.3. Ako postoji algoritam za mnoee dve realne simet-riqne n×n matrice za vreme O(T (n)), pri qemu je T (2n) = O(T (n)), onda pos-toji algoritam za mnoee dve proizvone realne n × n matrice za vremeO(T (n) + n2).

Dokazatel~stvo. Ako su date dve proizvone n × n matrice A i B,ihov proizvod nalazimo korixeem algoritma za mnoee simetriqnih

256 10. REDUKCIJE

matrica na osnovu jednakosti (10.5). Potrebno je izvrxiti O(n2) operacijaza izraqunavae AT i BT i formirae dve simetriqne matrice, i T (2n)operacija da se pomnoe dve dobijene simetriqne matrice, iz qega neposrednosledi tvree teoreme. ¤

Pretpostavka da je T (2n) = O(T (n)) nije prejaka, jer je, na primer, sva-ka polinomijalna funkcija zadovoava. Navedena redukcija je interesantnasamo u okviru dokaza doe granice. Teorema tvrdi da je nemogue iskoristi-ti simetriju prilikom mnoea matrica, i tako dobiti asimptotski brialgoritam. Navodimo jox jednu sliqnu redukciju.

Teorema 10.4. Ako postoji algoritam koji izraqunava kvadrat realnen × n matrice za vreme O(T (n)), pri qemu je T (2n) = O(T (n)), onda posto-ji algoritam za mnoee dve proizvone realne n × n matrice za vremeO(T (n) + n2).

Dokazatel~stvo. Kao i u dokazu teoreme 10.3, treba pronai matricuqiji kvadrat sadri dovono informacija za izraqunavae proizvoda dvezadate matrice. Rexee se zasniva na sledeem izrazu:

(0 AB 0

)2

=(

AB 00 BA

).

Iz ega neposredno sledi tvree teoreme. ¤

10.5. Uobiqajene grexkeSa redukcijama treba biti oprezan. Navexemo primere uobiqajenih gre-

xaka koje se mogu napraviti pri pokuxaju redukcije. Najqexa grexka je dase redukcija izvede u pogrexnom smeru, a do e dolazi uglavnom pri reduk-cijama za dobijae doih granica. U tom sluqaju redukcija treba da pokaeda je neki problem P teak bar koliko drugi problem Q, qiju sloenostznamo. Tada treba poi od proizvonog ulaza za problem Q, i pokazati dase on moe rexiti crnom kutijom za rexavae problema P . Razmotrimo, naprimer, sledei pokuxaj redukcije problema sortiraa na problem kompresi-je podataka Hofmanovim kodom (odeak 5.5). Ci je pokazati da je Ω(n log n)doa granica sloenosti za Hofmanovo kodirae.

Polazi se od zapaaa da, ako su uqestanosti znakova jako razliqite,onda kodno stablo postaje toliko neuravnoteeno da se moe iskoristiti zasortirae uqestanosti, videti primer na slici 3. U tom sluqaju su znakovi ukodnom stablu poreani po opadajuim uqestanostima (sa najqexim znakomnajbliim korenu stabla). To upravo znaqi da se Hofmanovo kodirae moeiskoristiti za sortirae uqestanosti. Prema tome, formirae kodnog stablaje texko bar toliko koliko i sortirae, pa je time izgleda dokazana doagranica sloenosti Ω(n log n).

Grexka u dokazu krije se u qienici da smo poxli od specijalnog ulaza zaproblem sortiraa: razmatrali smo samo takve uqestanosti, koje su znaqajno

10.5. UOBIQAJENE GREXKE 257

u

u u16 u

u

u

u

u

u

u

u

u

8

4

2 1

Ris. 3. Hofmanovo kodno stablo kad se uqestanosti znakovadrastiqno razlikuju.

razdvojene. Da bi se doxlo do doe granice sloenosti za problem kodiraa,mora se poi od proizvonog ulaza za problem sortiraa: treba dokazatida se proizvoni brojevi mogu sortirati pomou algoritma za Hofmanovokodirae. Ovakvu grexku razmotriemo jox jednom u narednom poglavu.

Ispostava se da se u ovom sluqaju grexka moe ispraviti. Ideja je dase utroxi jox malo vremena da bi se promenio (proizvoni!) ulaz za problemsortiraa, tako da se on moe iskoristiti kao ulaz za kodirae. Neka je ulazniz razliqitih prirodnih brojeva X = x1, x2, . . . , xn. Moe se pretpostavitida su brojevi razliqiti, jer doa granica za sortirae vai i za ulaze od raz-liqitih brojeva (xta vixe, doa granica je dokazana za razliqite brojeve).Kodno stablo Hofmanovog koda za ove uqestanosti moe biti proizvonogoblika, pa je prethodno razmatrae neprimenivo. Meutim, svaki broj xi

moe se zameniti uqestanoxu yi = 2xi . Poxto za svaki prirodni broj mvai 2m >

∑i<m 2i, kodno stablo imae oblik kao na slici 3 (svaka uqes-

tanost u nizu vea je od zbira svih uqestanosti maih od e). Prema tome,algoritam za Hofmanovo kodirae moe se iskoristiti za sortirae brojevayi. Potrebno je jox uveriti se da broj operacija izvedenih pri redukciji nijenedozvoeno veliki. Stepenovae moe da sadri veliki broj operacija, alito ovde nije bitno, jer doa granica za sortirae obuhvata samo uporeivaa.U odeku 5.3.6 nisu uqiene nikakve pretpostavke o broju ostalih operaci-ja. Prema tome, dokazano je da, ako se pretpostavi model stabla odluqivaa,formirae Hofmanovog kodnog stabla u najgorem sluqaju zahteva Ω(n log n)uporeivaa (potencijalno je mogue bre formirati stablo algoritmom kojinije obuhvaen modelom stabla odluqivaa).

Kod algoritama dobijenih redukcijom vano je da sama redukcija ne uneseznaqajnu neefikasnost. Razmotrimo problem ranca iz odeka 4.10 i egovouopxtee kad se kopije svakog od predmeta mogu u ranac staviti neograniqenibroj puta. Direktna redukcija uopxtenog problema na polazni (u kome se svakipredmet moe iskoristiti samo jednom) je sledea. Neka je veliqina ranca K.U ranac moe da stane najvixe K/si kopija predmeta veliqine si. Prema tome,

258 10. REDUKCIJE

moe se svaki predmet zameniti sa K/si predmeta iste veliqine u polaznomproblemu. Iako je ova redukcija korektna, ona nije efikasna, jer je veliqinaproblema znaqajno poveana. Problem se moe se rexiti znatno efikasnije(videti zadatak 4.16).

10.6. RezimeUvek je korisno razmatrati sliqnosti izmeu problema. Analizom razli-

ka i sliqnosti izmeu dva problema, obiqno se stiqe boa predstava o obaproblema. Kad se naie na novi problem, u veini sluqajeva je korisno upi-tati se da li je on sliqan nekom ve poznatom problemu. Ponekad sliqnostizmeu dva problema postaje vidiva tek po izvrxeu komplikovane reduk-cije. Posebno su interesantne redukcije izmeu matriqnih i grafovskih al-goritama. U ovom poglavu videli smo vixe primera redukcija, a nove emorazmotriti i u sledeem poglavu.

Linearno i celobrojno programirae su ovde izloeni vrlo kratko. Tosu veoma vani problemi, i korisno je da se sa ima detanije upozna svakokoga interesuju algoritmi.

Zadaci10.1. Rexiti sledeu varijantu problema uporeivaa nizova. Trai se niz edit

operacija koje transformixu dati niz znakova A = a1a2 . . . an u drugi dati niz znakovaB = b1b2 . . . bm. Edit operacije su uobiqajene | umetae, brisae i zamena znaka, ali suihove cene promeene. Cena umetaa znaka na poziciju i je ci (c je konstanta), a cenabrisaa j-tog znaka je cj. Cena zamene drugaqijim znakom je i dae 1. Algoritam treba daodredi niz edit operacija koji transformixe A u B i ima minimalnu cenu.

10.2. Nai redukciju (u jednom od smerova) izmeu problema nalaea maksimalnihtaqaka u ravni (zadatak 7.15) i problema nalaea intervala na pravoj sadranih u drugimintervalima (zadatak 7.22).

10.3. Varijanta problema uparivaa. Ukupno 2n studenata konkurisalo je na n fakul-teta. Razmotrimo bipartitni graf formiran od dva skupa qvorova | studenata i fakulte-ta, pri qemu grana izmeu nekog studenta i nekog fakulteta postoji akko student zadovoavauslove za prijem na taj fakultet. Konstruisati algoritam za maksimizirae broja priml-jenih studenata, uz uslov da ni jedan fakultet ne primi vixe od dva studenta. Problemrexiti svoeem na obiqan problem bipartitnog uparivaa.

10.4. Uxkoli ima n kurseva i n nastavnika. Posmatra se bipartitni graf sa dva skupapo n qvorova (kursevi i nastavnici), pri qemu grana izmeu kursa i nastavnika postoji akoje nastavnik kvalifikovan za odravae kursa. Svaki kurs mogu da dre najvixe dvanastavnika, a svaki nastavnik moe da dri najvixe dva kursa. Konstruisati algoritam(svoeem na poznati problem) za maksimizirae ukupnog broja kurseva.

10.5. Neka je G = (V, E) neusmereni graf qijem je svakom qvoru v pridruen prirodnibroj b(v) ≤ d(v). b-uparivae u grafu G definixe se kao podskup grana M ⊂ E takav da jesvaki qvor v ∈ V susedan sa najvixe b(v) grana iz M (u sluqaju kad je b(v) = 1 za svako v ∈ V ,M je obiqno uparivae u G). Optimalno b-uparivae je b-uparivae sa najveim moguimbrojem grana. Svesti problem nalaea optimalnog b-uparivaa na problem nalaeaoptimalnog uparivaa.

ZADACI 259

10.6. U datom grafu G = (V, E) izdvojen je qvor v i svakom qvoru w ∈ V pridruenaje cena c(w). Cena usmerenog puta v, x1, x2, . . . , xk, u definixe se izrazom

∑ki=1 c(xi); speci-

jalno, ako (v, u) ∈ E, onda je cena puta v, u nula. Konstruisati efikasan algoritam zanalaee puteva minimalne cene od v do svih ostalih qvorova u G.

10.7. Opxtija formulacija problema linearnog programiraa od one iz odeka 10.3dozvoava oba tipa nejednakosnih ograniqea: prvi tip je sa relacijama "≤", a drugi sarelacijama "≥" (sa razliqitim koeficijentima, naravno). Pokazati da se ova formulacijaproblema moe svesti na prvobitnu.

10.8. Dat je neusmeren graf G = (V, E) i konstanta h > 0; potrebno je pridruitigranama e ∈ E teine w(e) tako da suma teina grana susednih proizvonom qvoru budemaa ili jednaka od h, a da suma teina svih grana bude maksimalna. Formulisati ovajproblem kao problem linearnog programiraa.

10.9. Razmotrimo jox jednom dobrotvorni problem iz odeka 10.3.2.3, uz pretpostavkuda nije ograniqen iznos koji ustanove mogu da prime. Svesti ovu varijantu problema nalinearno programirae.

10.10. Neka je S skup od n temena proizvonog konveksnog mnogougla, zadatih proiz-vonim redosledom. Dokazati da je vremenska sloenost ureea taqaka tako da odreujuuobiqajenu reprezentaciju mnogougla Ω(n log n).

10.11. U odeku 8.5 videli smo da je dovono 7 umesto 8 mnoea da se izraqunaproizvod dve proizvone 2 × 2 matrice, i da to vodi asimptotski boem algoritmu zamnoee matrica. Kvadrat realne 2×2 matrice moe se izraqunati pomou samo 5 mnoea(zadatak 8.15). Objasniti zaxto ovo zapaae ne protivreqi teoremi 10.4.

10.12. Doa (gora) trougaona matrica je kvadratna matrica u kojoj su elementiiznad (ispod) glavne dijagonale jednaki nuli. Dokazati da ako postoji algoritam sloenos-ti O(T (n)) za mnoee n×n doe trougaone matrice sa n×n gorom trougaonom matricom,onda postoji algoritam sloenosti O(T (n)+n2) za mnoee dve proizvone n×n matrice.Pri tome se moe koristiti pretpostavka da je T (cn) = O(T (n)) za proizvonu konstantuc > 0.

10.13. Dokazati da ako postoji algoritam sloenosti O(T (n)) za mnoee dve n × ndoe trougaone matrice, onda postoji algoritam sloenosti O(T (n) + n2) za mnoee dveproizvone n × n matrice. Moe se pretpostaviti da je T (cn) = O(T (n)) za proizvonukonstantu c > 0.

10.14. Neka je S skup od n taqaka u ravni. Taqke iz S definixu teinski neusmerenigraf na sledei naqin. Graf je kompletan (svaka dva egova qvora povezana su granom), ateine grana jednake su euklidskom rastojau izmeu odgovarajuih taqaka. Pokazati da jedoa granica sloenosti algoritma za nalaee minimalnog povezujueg stabla (MCST)u ovom grafu Ω(n log n).

10.15. Neka je S skup od n taqaka u ravni. Dijametar S je najvee rastojae nekihdveju taqaka iz S. Oznaqimo sa DM problem odreivaa dijametra skupa od n taqaka, a saDS problem utvrivaa da li su disjunktna dva skupa A i B od ukupno n realnih brojeva.Dokazati da ako postoji algoritam koji problem DM rexava za vreme O(T (n)), onda postojialgoritam sloenosti O(T (n) + n) za rexavae problema DS.

Glava 11

NP-kompletnost

11.1. UvodOvo poglave je bitno drugaqije od ostalih. U prethodnim poglavima

razmatrane su tehnike za rexavae algoritamskih problema i ihove primeneih na konkretne probleme. Bilo bi lepo kad bi svi problemi imali elegantneefikasne algoritme, do kojih dolazi korixeem malog skupa tehnika. Meu-tim, stvarni ivot nije tako jednostavan. Postoji mnogo problema koji se nepokoravaju do sada razmotrenim tehnikama. Mogue je da prilikom ihovogrexavaa nije uloeno dovono napora, ali se sa dosta razloga moe pret-postaviti da postoje problemi koji nemaju efikasno opxte rexee. U ovompoglavu opisaemo tehnike za prepoznavae nekih takvih problema.

Vremenska sloenost veine do sada razmatranih algoritama ograniqenaje nekim polinomom od veliqine ulaza. Za takve algoritme kaemo da suefikasni algoritmi, a za odgovarajue probleme da su rexivi. Drugimreqima, za algoritam kaemo da je efikasan ako je egova vremenska sloe-nost O(P (n)), gde je P (n) polinom od veliqine problema n. Podsetimo se da jeveliqina ulaza definisana kao broj bita potrebnih za predstavae ulaza.Ovo nije strogo formalna definicija: mogue je iste podatke predstavitibitima na vixe naqina; meutim, duine svih dovono efikasnih predstav-aa istih podataka ne mogu se znaqajno razlikovati. Klasu svih problemakoji se mogu rexiti efikasnim algoritmom oznaqavaemo sa P (polinomijal-no vreme). Ova definicija moe da izgleda qudno na prvi pogled. Tako, naprimer, algoritam sloenosti O(n10) se ni po kojim merilima ne moe sma-trati efikasnim; sliqno, algoritam sa vremenom izvrxavaa 107n texko jesmatrati efikasnim, iako je linearne sloenosti. Ipak, ova definicija imasmisla iz dva razloga. Prvo, ona omoguuje razvoj teorije kojom emo se sadapozabaviti; drugo, i vanije, ovu definiciju je lako primeniti. Ispostavase da ogromna veina rexivih problema ima praktiqno upotrebiva rexea.Drugim reqima, vremenska sloenost polinomijalnih algoritama na koje se upraksi nailazi je najqexe polinom malog stepena, retko iznad kvadratnog.Obrnuto je obiqno takoe taqno: algoritmi sa vremenskom sloenoxu veomod proizvonog polinoma obiqno se ne mogu praktiqno izvrxavati za velikeulaze.

Postoji dosta problema za koje se ne zna ni jedan algoritam polinomijalnesloenosti. Neki od tih problema e jednom moda biti rexeni efikasnim

261

262 11. NP-KOMPLETNOST

algoritmima. Meutim, ima razloga za verovae da se mnogi problemi ne mogurexiti efikasno. Voleli bismo da budemo u stau da prepoznamo takve prob-leme, da ne bismo gubili vreme na traee nepostojeeg algoritma. U ovompoglavu razmotriemo kako pristupati problemima za koje se ne zna da lisu u klasi P. Specijalno, razmotriemo jednu potklasu takvih problema, kla-su takozvanih NP-kompletnih problema. Ovi problemi mogu se grupisatiu jednu klasu jer su svi meusobno strogo ekvivalentni | efikasni algori-tam za neki NP-kompletan problem postoji ako i samo ako za svaki NP-kompletan problem postoji efikasni algoritam. Xiroko je rasprostraenoverovae da ne postoji efikasan algoritam za bilo koji NP-kompletan prob-lem, ali se ne zna dokaz ovakvog tvrea. Qak i kad bi postojali efikasnialgoritmi za rexavae NP-kompletnih problema, oni bi sigurno bili vrlokomplikovani, jer se takvim problemima mnogo istraivaqa bavilo tokomdugog niza godina. Do ovog trenutka se za stotine (moda hiade) problemazna da su NP-kompletni, xto ovu oblast qini vrlo znaqajnom.

Ovo poglave sastoji se iz dva dela. U prvom se definixe klasa NP-kompletnih problema i navode primeri dokaza pripadnosti nekih problematoj klasi. Zatim se razmatra nekoliko tehnika za priblino rexavae NP-kompletnih problema. Ta rexea nisu uvek optimalna, ili se ne mogu pri-meniti na proizvoan ulaz, ali je boe imati ih nego nixta.

11.2. Redukcije polinomijalne vremenske sloenostiU ovom odeku ograniqiemo se na probleme odluqivaa, tj. razma-

traemo samo one probleme na koje se posle izvrxavaa odreenog algoritmamoe odgovoriti sa "da" ili "ne". Ovo ograniqee uproxava razmatran-ja. Vei deo problema lako se moe prevesti u probleme odluqivaa. Naprimer, umesto da traimo optimalno uparivae u zadatom grafu, moe-mo da postavimo pitae da li za zadato k postoji uparivae veliqine bark. Ako umemo da reximo problem odluqivaa, obiqno moemo da reximo ipolazni problem | binarnom pretragom, na primer.

Problem odluqivaa moe se posmatrati kao problem prepoznavaajezika. Neka je U skup moguih ulaza za problem odluqivaa. Neka je L ⊆ Uskup svih ulaza za koje je rexee problema "da". Za L se kae da je jezikkoji odgovara problemu, pa pojmovi problem i jezik mogu da se koriste ravno-pravno. Problem odluqivaa je ustanoviti da li zadati ulaz pripada jezikuL. Sada emo uvesti pojam redukcije polinomijalne sloenosti izmeu jezika,kao osnovni alat u ovom poglavu.

Definicija 11.1. Neka su L1 i L2 dva jezika, podskupa redom skupovaulaza U1 i U2. Kaemo da je L1 polinomijalno svodiv na L2, ako pos-toji algoritam polinomijalne vremenske sloenosti, koji dati ulaz u1 ∈ U1

prevodi u ulaz u2 ∈ U2, tako da u1 ∈ L1 ako i samo ako u2 ∈ L2. Algoritamje polinomijalan u odnosu na veliqinu ulaza u1. Pretpostavamo da je pojam

11.2. REDUKCIJE POLINOMIJALNE VREMENSKE SLOENOSTI 263

veliqine dobro definisan u prostorima ulaza U1 i U2, tako da je, na primer,veliqina u2 ograniqena polinomom od veliqine u1.

Algoritam iz definicije svodi jedan problem na drugi. Ako znamo al-goritam za prepoznavae L2, onda ga moemo superponirati sa algoritmomredukcije i tako dobiti algoritam za rexavae L1. Oznaqimo algoritam re-dukcije sa AR, a algoritam za prepoznavae L2 sa AL2. Proizvoni ulazu1 ∈ U1 moe se primenom AR transformisati u ulaz u2 ∈ U2, i primenomAL2 ustanoviti da li u2 ∈ L2, a time i da li u1 ∈ L1. Posledica specijalnogsluqaja ovog razmatraa je sledea teorema.

Teorema 11.1. Ako je jezik L1 polinomijalno svodiv na jezik L2, i pos-toji algoritam polinomijalne vremenske sloenosti za prepoznavae L2,onda postoji algoritam polinomijalne vremenske sloenosti za prepozna-vae L1.

Dokazatel~stvo. Dokaz sledi iz prethodnog razmatraa. ¤Relacija polinomijalne svodivosti nije simetriqna: polinomijalna svod-

ivost L1 na L2 ne povlaqi uvek polinomijalnu svodivost L2 na L1. Ovaasimetrija potiqe od qienice da definicija svodivosti zahteva da seproizvoan ulaz za L1 moe transformisati u ekvivalentan ulaz za L2, aline i obrnuto. Mogue je da ulazi za L2, dobijeni na ovaj naqin, predstavajusamo mali deo svih moguih ulaza za L2. Prema tome, ako je L1 polinomijalnosvodiv na L2, onda moemo smatrati da je problem L2 tei.

Dva jezika L1 i L2 su polinomijalno ekvivalentni, ili jednostavnoekvivalentni, ako je svaki od ih polinomijalno svodiv na drugi. Speci-jalno, svi netrivijalni problemi iz klase P su ekvivalentni (videti za-datak 11.1). Relacija "polinomijalne svodivosti" je tranzitivna, kao xtopokazuje sledea teorema.

Teorema 11.2. Ako je L1 polinomijalno svodiv na L2 i L2 je polinomi-jalno svodiv na L3, onda je L1 polinomijalno svodiv na L3.

Dokazatel~stvo. Neka su jezici L1, L2 i L3 podskupovi skupova moguihulaza redom U1, U2 i U3. Superponiraem algoritama redukcije L1 na L2,odnosno L2 na L3 dobija se algoritam redukcije L1 na L3. Proizvoan ulazu1 ∈ U1 konvertuje se najpre u ulaz u2 ∈ U2, koji se zatim konvertuje u ulazu3 ∈ U3. Poxto su redukcije polinomijalne sloenosti, a kompozicija dvepolinomijalne funkcije je polinomijalna funkcija, rezultujui algoritamredukcije je takoe polinomijalne sloenosti (to je jedan od razloga zaxtosu za meru sloenosti rexivih problema izabrani polinomi). ¤

Suxtina metoda koji emo primeivati u ovom poglavu je da ako se za ne-ki problem ne moe nai efikasan algoritam, onda pokuxavamo da ustanovi-mo da li je on ekvivalentan nekom od problema za koje znamo da su texki.Klasa NP-kompletnih problema sadri stotine takvih meusobno ekvivalent-nih problema.

264 11. NP-KOMPLETNOST

11.3. Nedeterminizam i Kukova teoremaTeorija NP-kompletnosti zasnovana je znaqajnom Kukovom (S. A. Cook

) teoremom 1971. godine. Pre nego xto formulixemo ovu teoremu, potrebnoje da uvedemo jox neke pojmove. Pokuxaemo da izbegnemo tehniqke detaai da diskusiju zadrimo na intuitivnom nivou. Kiga Gerija i onsona [2](M. R. Garey, D. S. Johnson ) dobro pokriva ovu oblast. Teorija NP-kompletnosti je deo xire oblasti koja se zove sloenost izraqunavaa,qiji najvei deo nije predmet ove kige. Razmatrae emo ograniqiti na onedelove koji omoguuju korixee te teorije.

Do sada se nismo bavili preciznijim definisaem pojma algoritma. To nijevano sve dok se koriste uobiqajene operacije koje podravaju svi raqunari (naprimer sabirae, uporeivae, pristup memoriji). Precizna definicija algorit-ma je bitna npr. za dokazivae doih granica sloenosti (tako je model stablaodluqivaa korixen prilikom dokaza doe granice sloenosti sortiraa, ode-ak 5.3.6; meutim, taj model je vrlo ograniqen). Osnovni model izraqunavaa jeTjuringova maxina. Drugi qesto korixeni model je maxina sa uniformnimpristupom. Na sreu, ovi i drugi razumni modeli ekvivalentni su za naxe svrhe,jer se algoritam za jedan model uvek moe transformisati u algoritam za drugimodel, tako da se vreme izvrxavaa ne mea vixe nego za polinomijalni faktor.Kukova teorema je, na primer, dokazana korixeem Tjuringove maxine kao modelaizraqunavaa, ali je taqna i za druge modele. Na ovom mestu neemo eksplicit-no koristiti ni jedan specijalni model. Meutim, zbog jasnijeg razumevaa pojmanedeterministiqkog algoritma, osloniemo se na definiciju Tjuringove maxine inedeterministiqke Tjuringove maxine.

Kao model izraqunavaa moe se koristiti deterministiqka Tjuringovamaxina (DTM), koja je xematski prikazana na slici 1. DTM se sastoji od up-ravaqkog bloka sa konaqnim brojem staa, glave za qitae/pisae i dvostranoneograniqene trake, podeene na beskonaqni broj jednakih elija, numerisanih ce-lim brojevima . . . ,−2,−1, 0, 1, 2, 3, . . ..

· · ·

Traka

· · ·

−3 −2 −1 0 1 2 3 4

Upravaqkiblok

?Glava za qitae/pisae

Ris. 1. Xematski prikaz deterministiqke Tjuringovemaxine (DTM).

Program za DTM sastoji se od sledeih komponenti:

11.3. NEDETERMINIZAM I KUKOVA TEOREMA 265

(1) konaqnog skupa Γ simbola koji se zapisuju na traku, podskupa Σ ⊂ Γulaznih simbola, i posebno izdvojenog praznog simbola b ∈ Γ \ Σ;

(2) konaqnog skupa staa Q, qiji su elementi pored ostalih poqetno staeq0 i dva zavrxna staa qda i qNE ;

(3) funkcije prelaza δ : (Q \ qda, qne)× Γ → Q× Γ× −1, 1.Program se izvrxava na sledei naqin. Ulaz za program je req x ∈ Σ∗ (sastavenaod znakova iz skupa Σ). Req se zapisuje na traci u elijama sa rednim brojevi-ma 1, 2, . . . , |x|, po jedan simbol u svakoj eliji (ovde |x| oznaqava duinu reqi x).Sve druge elije u poqetnom trenutku sadre prazan simbol, pa se zato kae dasu prazne. Program poqie sa radom nalazei se u stau q0, pri qemu se glava zaqitae/pisae nalazi nad elijom sa brojem 1. Zatim se proces izraqunavaa nas-tava korak po korak. Ako je trenutno stae q jednako bilo qda, bilo qne, onda seproces izraqunavaa zavrxava, i to sa rezultatom "da" ako je q = qda, odnosno "ne"ako je q = qne. U protivnom, trenutno stae pripada skupu Q \ qda, qne, a glava zaqitae/pisae qita sa trake neki simbol s ∈ Γ, pa je definisana vrednost δ(q, s).Pretpostavimo da je δ(q, s) = (q′, s′, ∆). U tom sluqaju glava brixe znak s, umestoega pixe znak s′ i pomera se za jednu eliju ulevo ako je ∆ = −1, odnosno udesnoako je ∆ = +1. Istovremeno, upravaqki blok prelazi iz staa q u stae q′. Timese zavrxava jedan korak procesa izraqunavaa, i program je spreman za izvrxavaesledeeg koraka (ako on postoji).

U tabeli 1 prikazan je primer jednostavnog programa M za DTM. Funkcijaprelaza δ definisana je tablicom, u kojoj se u preseku vrste q i kolone s nalazivrednost δ(q, s). Na slici 2 prikazano je izvrxavae programa M sa ulazom x =10100; prikazani su stae, poloaj glave i sadraji nepraznih elija trake pre iposle svakog koraka.

Zapaamo da se izraqunavae zavrxava posle osam koraka u stau qda, pa se zaulaz 10100 dobija odgovor "da". U opxtem sluqaju kaemo da program M , koji imaulazni alfabet Σ, prihvata req x ∈ Σ∗, ako i samo ako se, primeen na ulaz x,zaustava u stau qda. Jezik LM koji prepoznaje program M , zadaje se izrazom

LM = x ∈ Σ∗|M prihvata x.Nije texko videti da program iz tabele 1 prepoznaje jezik

x ∈ 0, 1∗| dva posleda znaka x su nule ,

odnosno, ako x shvatimo kao binarne cifre ulaznog broja N , onda M proverava dali je N deivo sa 4.

Γ = 0, 1, b, Σ = 0, 1Q = q0, q1, q2, q3, qda, qne

q 0 1 b

q0 (q0, 0, +1) (q0, 1, +1) (q1, b,−1)

q1 (q2, b,−1) (q3, b,−1) (qne, b,−1)

q2 (qda, b,−1) (qne, b,−1) (qne, b,−1)

q3 (qne, b,−1) (qne, b,−1) (qne, b,−1)

δ(q, s)

Tablica 1. Primer programa za DTM M = (Γ, Q, δ).

266 11. NP-KOMPLETNOST

5q0 : · · · b 1 0 1 0 0 b · · ·

5q0 : · · · b 1 0 1 0 0 b · · ·

5q0 : · · · b 1 0 1 0 0 b · · ·

5q0 : · · · b 1 0 1 0 0 b · · ·

5q0 : · · · b 1 0 1 0 0 b · · ·

5q0 : · · · b 1 0 1 0 0 b · · ·

5q1 : · · · b 1 0 1 0 0 b · · ·

5q2 : · · · b 1 0 1 0 b b · · ·

5qda : · · · b 1 0 1 b b b · · ·

Ris. 2. Izvrxavae programa M iz tabele 1 sa ulazom 10100na DTM.

Primetimo da definicija prepoznavaa jezika ne zahteva da se program zaus-tava za sve ulaze iz Σ∗; dovono je da se M zaustava za ulaze iz LM . Ako x pripadaskupu Σ∗ \ LM , onda se izvrxavae programa M na ulazu x ili zavrxava u stauqne, ili traje neograniqeno. S druge strane, program za DTM koji odgovara naxemshvatau algoritma, trebalo bi da se zaustava na svim reqima ulaznog alfabeta.U tom smislu program iz tabele 1 jeste algoritamski, jer se, poqevxi izvrxavaesa bilo kojom reqi od simbola 0, 1, zaustava (dolazi do nekog od zavrxnih staa).

Imajui u vidu model DTM, lako je precizno definisati vremensku sloenost.Vreme potrebno programu M za DTM za izraqunavae sa ulazom x je broj korakakoje DTM izvrxava do zaustavaa. Neka je Z+ skup celih nenegativnih brojeva.Ako se program M zaustava za sve ulaze x ∈ Σ∗, onda se vremenska sloenostTM : Z+ → Z+ tog programa definixe kao

TM (n) = max

m

∣∣∣∣postoji takva req x ∈ Σ∗, |x| = n, da je vremeizvrxavaa M sa ulazom x jednako m

,

Program M je polinomijalni program za DTM ako postoji polinom p, takav da je zasve n ∈ Z+ ispueno TM (n) ≤ p(n).

Sada se moe i formalno definisati klasa jezika P:

P = L| postoji polinomijalni program M za DTM, za koji je LM = L .

Termin "polinomijalni algoritam" koristiemo uglavnom neformalno. egovformalni ekvivalent je polinomijalni program za DTM. Meutim, zbog onoga xtoje reqeno o ekvivalentnosti "realnih" modela raqunara u odnosu na pojam "poli-nomijalno vreme rada", ako se formalno klasa P definixe za proizvoni od tihmodela, dobie se ista klasa jezika.

11.3. NEDETERMINIZAM I KUKOVA TEOREMA 267

Zbog toga, dokazujui da se neki problem moe rexiti polinomijalnim algorit-mom, nema potrebe ulaziti u detae odgovarajue DTM. Kao i do sada, razmatraemoalgoritme u maxinski nezavisnom stilu, kao da oni rade direktno sa komponenta-ma samog problema (skupovima, grafovima, brojevima i sliqno), a ne sa kodiranimulazom za problem. U sluqaju postojaa ee i strpea, za svaki polinomijalnialgoritam moe konstruisati odgovarajui polinomijalni program za DTM. Naxaneformalna razmatraa algoritama treba shvatati kao uputstvo za takvu kostruk-ciju.

Sada emo definisati drugu vanu klasu jezika (odnosno problema od-luqivaa) | klasu NP. Pre nego xto preemo na formalnu definiciju zas-novanu na Tjuringovim maxinama, pokuxaemo da razjasnimo smisao pojmovana kojima se zasniva klasa NP. Razmotrimo kao primer problem trgovaqkogputnika.

Problem. Zadat je teinski graf G = (V,E) sa |V | = n qvorova (tako daje za proizvone qvorove gradove vi, vj ∈ V , teina grane (vi, vj) ∈ E jednakad(vi, vj)) i broj B ∈ Z+. Ustanoviti da li u G postoji Hamiltonov ciklus sazbirom teina grana maim ili jednakim od B. Drugim reqima, postoji litakav niz qvorova (vπ(1), vπ(2), . . . , vπ(n)) da je

n−1∑

i=1

d(vπ(i), vπ(i+1)) + d(vπ(n), vπ(1)) ≤ B?

Polinomijalni algoritam za rexavae ovog problema nije poznat. Pret-postavimo, meutim, da je za neki konkretan ulaz za ovaj problem dobijenodgovor "da". Ako u to posumamo, moemo zahtevati "dokaz" tog tvrea| niz qvorova koji ima traenu osobinu. Kad imamo ovakav niz qvorova,lako moemo da proverimo da li je to Hamiltonov ciklus, da izraqunamo e-govu duinu i uporedimo je sa zadatom granicom B. Pored toga, oqigledno jevremenska sloenost ovakvog algoritma provere polinomijalna u odnosu naveliqinu ulaza.

Upravo pojam polinomijalne proverivosti karakterixe klasu NP. Pri-metimo da proverivost za polinomijalno vreme ne povlaqi i mogunost re-xavaa za polinomijalno vreme. Utvrujui da se za polinomijalno vrememoe proveriti odgovor "da" za problem trgovaqkog putnika, mi ne uzimamou obzir vreme koje nam moe biti potrebno za pronalaee eenog ciklusau eksponencijalnom broju svih moguih ciklusa u grafu. Mi samo tvrdimo dase za svaki zadati niz qvorova i za konkretan ulaz u, za polinomijalno vrememoe proveriti da li taj niz "dokazuje" da je za ulaz u odgovor "da".

Klasa NP se neformalno moe definisati pomou pojma nedeterminis-tiqkog algoritma. Takav algoritam sastoji se od dve razliqite faze: fazepogaaa i faze provere. Za zadati ulaz u, u prvoj fazi se izvodi prosto"pogaae" neke strukture S. Zatim se u i S zajedno predaju kao ulaz faziprovere, koja se izvodi na obiqan (deterministiqki) naqin, pa se zavrxava

268 11. NP-KOMPLETNOST

odgovorom "da" ili "ne", ili se izvrxava beskonaqno dugo. Nedeterminis-tiqki algoritam "rexava" problem odluqivaa Π, ako su za proizvoni ulazu ∈ UΠ za ovaj problem ispuena sledea dva uslova:

(1) Ako u ∈ LΠ, onda postoji takva struktura S, qije bi pogaae za ulazu dovelo do toga da se faza provere sa ulazom (u, S) zavrxi odgovorom"da".

(2) Ako u /∈ LΠ, onda ne postoji takva struktura S, qije bi pogaae zaulaz u obezbedilo zavrxavae faze provere sa ulazom (u, S) odgov-orom "da".

Na primer, nedeterministiqki algoritam za rexavae problema trgo-vaqkog putnika mogao bi se konstruisati koristei kao fazu pogaaa izborproizvonog niza gradova (qvorova), a kao fazu provere | gore pomenutialgoritam "provere dokaza" za problem trgovaqkog putnika. Oqigledno je daza proizvoan konkretan ulaz u postoji takvo pogaae S, da se kao rezultatrada faze provere sa ulazom (u, S) dobija "da", onda i samo onda, ako za ulazu postoji Hamiltonov ciklus traene duine.

Kae se da nedeterministiqki algoritam koji rexava problem odluqi-vaa Π radi za "polinomijalno vreme", ako postoji polinom p takav da zasvaki ulaz u ∈ UΠ postoji takvo pogaae S, da se faza provere sa ulazom(u, S) zavrxava sa odgovorom "da" za vreme p(|u|). Iz toga sledi da je veliqi-na strukture S obavezno ograniqena polinomom od veliqine ulaza, jer se naproveru pogaaa S moe utroxiti najvixe polinomijalno vreme.

Klasa NP, definisana neformalno, | to je klasa svih problema od-luqivaa koji pri razumnom kodirau mogu biti rexeni nedeterministiqkim(N nondeterministic ) algoritmom za polinomijalno (P polynomial) vreme. Na primer, problem trgovaqkog putnika pripada klasi NP.

U sliqnim neformalnim definicijama termin "rexava" treba opreznokoristiti. Treba da bude jasno da je osnovni smisao "polinomijalnog nede-terministiqkog algoritma" u tome da objasni pojam "proverivosti za poli-nomijalno vreme", a ne u tome da bude realni metod rexavaa problema od-luqivaa. Za svaki konkretan ulaz takav algoritam ima ne jedno, nego neko-liko moguih izvrxavaa | po jedno za svako mogue pogaae.

Na kraju emo formalizovati navedenu definiciju u terminima jezika i Tjuringovihmaxina. Formalni ekvivalent nedeterministiqkog algoritma je program za nedeterminis-tiqku Tjuringovu maxinu sa jednom trakom (NDTM). Zbog jednostavnosti koristiemomalo nestandardni model NDTM. Model NDTM ima istu strukturu kao i DTM; razlikaje samo u tome xto NDTM ima pogaaqki blok sa svojom glavom, koja moe samo da pixepo traci (videti sliku 3). Pogaaqki blok kontrolixe zapisivae "pogaaa", i to mu jejedina svrha.

Program za NDTM definixe sa na isti naqin kao i program za DTM, i u tu svrhukoriste se: alfabet simbola trake Γ; ulazni alfabet Σ; prazan znak b; skup staa Q, qijisu elementi pored ostalih poqetno stae q0, zavrxna staa qda i qne; funkcija prelazaδ : (Q \ qda, qne)× Γ → Q× Γ× −1, 1. Izvrxavae programa za NDTM sa ulazom x ∈ Σ∗

za razliku od izvrxavaa programa za DTM ima dve razliqite faze. U prvoj fazi izvodi se"pogaae". U poqetnom trenutku req x zapisana je na traci u elijama sa rednim brojevima1, 2, . . . , |x| (ostale elije su prazne), glava za qitae/pisae "stoji" nad elijom sa brojem

11.3. NEDETERMINIZAM I KUKOVA TEOREMA 269

· · ·

Traka

· · ·

−3 −2 −1 0 1 2 3 4

Upravaqkiblok

Glava za qitae/pisae?

Pogaaqkiblok

?Pogaaqka glava

Ris. 3. Xematski prikaz nedeterministiqke Tjuringovemaxine sa jednom trakom (NDTM).

1, glava za pisae pogaaqkog bloka stoji kod elije sa brojem −1, a upravaqki blok je"pasivan". Zatim pogaaqki blok poqie da uprava pogaaqkom glavom, koja izvrxava pojedan korak u svakom trenutku, pa ili pixe jedan znak iz alfabeta Γ u eliju koja se nalazinaspram e i pomera se za jednu eliju ulevo, ili se zaustava. U drugom sluqaju pogaaqkiblok prelazi u pasivno stae, a upravaqki blok poqie rad iz staa q0. Pogaaqki blok(dok radi) odluquje da li da nastavi sa radom (a onda i koji znak iz Γ da napixe natraci), ili da pree u pasivno stae, pri qemu to radi potpuno proizvono. Na taj naqinpogaaqki blok do trenutka zavrxetka svog rada moe da ispixe proizvonu req iz Γ∗, paje qak mogue i da se nikad ne zaustavi.

Faza provere poqie onog trenutka kad upravaqki blok pree u stae q0. Poqevxiod tog trenutka, izvrxavae programa za NDTM ostvaruje se po istim pravilima kao izvr-xavae programa za DTM. Pogaaqki blok i egova glava postaju neaktivni, poxto suizvrxili svoju ulogu zapisujui na traci reqpogaae. Naravno, reqpogaae moe bitiuqitana (i obiqno jeste) od strane glave za qitae/pisae u procesu provere. Izraqunavaese zavrxava onda kad upravaqki blok pree u jedno od dva zavrxna staa (qda ili qne); onose zove prihvatajue izraqunavae ako se zaustava u stau qda. Sva ostala izraqunavaa,bez obzira da li se zavrxavaju ili ne, zovu se neprihvatajua izraqunavaa.

Primetimo da proizvoni program M za NDTM moe da ima beskonaqno mnogo moguihizraqunavaa za dati ulaz x, po jedno za svaku reqpogaae iz Γ∗. Kaemo da program Mza NDTM prihvata x, ako je bar jedno od egovih izraqunavaa sa ulazom x prihvatajue.Jezik koji program M prepoznaje je jezik

LM = x ∈ Σ∗|M prihvata x.Vreme potrebno NDTM programu M za prihvatae reqi x ∈ LM | to je minimalni

broj koraka koji se izvrxavaju u fazi pogaaa i fazi provere do trenutka zaustavaa ustau qda, pri qemu se minimum trai po svim prihvatajuim izraqunavaima programa Msa ulazom x. Vremenska sloenost programa M za NDTM | to je funkcija TM : Z+ → Z+

definisana na sledei naqin

TM (n) = max

(1 ∪

m

∣∣∣∣postoji takva req x ∈ LM , |x| = n, da je vreme prih-vataa x programom M jednako m

).

Primetimo da vremenska sloenost programa M zavisi samo od broja koraka koji se izvr-xavaju u prihvatajuim izraqunavaima, a takoe da stavamo TM (n) = 1 ako ne postojini jedan ulaz veliqine n koga prihvata program M .

NDTM program je NDTM program sa polinomijalnim vremenom izvrxavaa ako pos-toji polinom p, takav da je TM (n) ≤ p(n) za sve n ≥ 1. Na kraju, klasa NP formalno se

270 11. NP-KOMPLETNOST

definixe sa

NP =

L

∣∣∣∣postoji NDTM program M sa polinomijalnim vremenomizvrxavaa, za koji je LM = L

.

Nije texko ustanoviti vezu izmeu ovih formalnih i prethodnih neformalnih definicija.Ma jedan deta treba posebno obratiti pau Dok nedeterministiqki algoritam pogaastrukturu S koja na neki naqin zavisi od konkretnog ulaza za problem, pogaaqki blokNDTM potpuno ignorixe ulaznu req. Iako se proizvona req iz Γ∗ moe dobiti kao rezul-tat rada pogaaqkog bloka, to nije bitno, jer se program za NDTM uvek moe konstruisatitako da faza provere poqie proverom da li pogaae (pri implicitnoj interpretaci-ji koju program daje reqima) odgovara pogaajuoj strukturi za zadati ulaz. U protivnomprogram moe odmah da pree u zavrxno stae qne.

Poxto se svaki realistiqki model raqunara moe dopuniti analogom razmotrenog"pogaaqkog bloka sa glavom za pisae", naxe formalne definicije mogle bi se parafrazi-rati za svaki drugi standardni model raqunara. Svi takvi modeli ekvivalentni su sataqnoxu do deterministiqkih polinomijalnih izraqunavaa, pa e sve na taj naqin dobi-jene verzije klase NP biti identiqne. Prema tome, ispravno je poistoveivae formalnodefinisane klase NP sa klasom svih problema odluqivaa koji se mogu "rexiti" nedeter-ministiqkim algoritmima sa polimomijalnim vremenom izvrxea.

Nedeterministiqki algoritmi su vrlo moni, ali ihova snaga nije ne-ograniqena. Postoje problemi koji se ne mogu efikasno rexiti nedetermi-nistiqkim algoritmom. Na primer, posmatrajmo sledei problem: da li jeveliqina optimalnog uparivaa u zadatom grafu jednaka taqno k? Nedeter-ministiqkim algoritmom lako se moe pronai uparivae veliqine k, akoono postoji, ali se ne moe lako ustanoviti (qak ni nedeterministiqki) dane postoji vee uparivae.

Klasa problema za koje postoji nedeterministiqki algoritam polinomi-jalne vremenske sloenosti zove se NP. Izgleda razumno smatrati da su nede-terministiqki algoritmi moniji od deterministiqkih, ali da li je to taq-no? Jedan naqin da se to dokae bio bi da se pronae neki NP problem ko-ji nije u P. To do sada nikome nije poxlo za rukom. U protivnom, da bi sedokazalo da su ove dve klase jednake (odnosno P=NP), trebalo bi pokazati dasvaki problem iz klase NP moe da bude rexen deterministiqkim algorit-mom polinomijalne vremenske sloenosti. Ni ovakvo tvree niko nije uspeoda dokae (i malo je onih koji veruju u egovu taqnost). Problem utvrivaaodnosa izmeu P i NP poznat je kao problem P=NP.

Sada emo definisati dve klase, koje ne samo da sadre brojne vaneprobleme za koje se ne zna da li su u P, nego sadre najtee probleme u NP.

Definicija 11.2. Problem X je NP-teak problem ako je svaki prob-lem iz klase NP polinomijalno svodiv na X.

Definicija 11.3. Problem X je NP-kompletan problem ako (1) pri-pada klasi NP, i (2) X je NP-teak.

Posledice definicije klase NP-texkih problema je da, ako se za bilokoji NP-teak problem dokae da pripada klasi P, onda je P=NP.

11.3. NEDETERMINIZAM I KUKOVA TEOREMA 271

Kuk je 1971. godine dokazao da postoje NP-kompletni problemi. Speci-jalno, naveo je primer jednog takvog problema, koji emo uskoro prikaza-ti. Kada se zna jedan NP-kompletan problem, dokazi da su drugi problemiNP-kompletni postaju jednostavniji. Ako je dat novi problem X, dovono jedokazati da je Kukov problem (ili bilo koji drugi NP-kompletan problem)polinomijalno svodiv na X. To sledi iz sledee leme.

Lema 11.1. Problem X je NP-kompletan ako (1) X pripada klasi NP, i(2') postoji NP-kompletan problem Y koji je polinomijalno svodiv na X.

Dokazatel~stvo. Problem Y je prema uslovu (2) NP-teak, pa je svakiproblem u klasi NP je polinomijalno svodiv na Y . Poxto je Y polinomijal-no svodiv na X, a polinomijalna svodivost je tranzitivna relacija, svakiproblem u klasi NP je polinomijalno svodiv i na problem X. ¤

Mnogo je lakxe dokazati da su dva problema polinomijalno svodiva,nego direktno dokazati da je ispuen uslov (2). Zbog toga je Kukov rezul-tat kamen temeac cele teorije. Dae, sa pojavom novih problema za koje sezna da su NP-kompletni, raste broj mogunosti za dokazivae uslova (2').Ubrzo poxto je Kukov rezultat postao poznat, Karp (R. M. Karp )je za 24 vana problema pokazao da su NP-kompletni. Od tog vremena je zastotine problema (moda hiade, zavisno od naqina brojaa varijacija is-tog problema) dokazano da su NP-kompletni. U sledeem odeku prikazaemopet primera NP-kompletnih problema, sa dokazima ihove NP-kompletnosti.Navexemo takoe (bez dokaza) vixe NP-kompletnih problema. Najtei deodokaza je obiqno (ne uvek) dokaz ispuenosti uslova (2').

Izloiemo sada problem za koji je Kuk dokazao da je NP-kompletan,sa idejom dokaza. Problem je poznat kao problem zadovoivosti (SAT,skraenica od satisfiability ). Neka je S Bulov izraz u konjuktivnojnormalnoj formi (KNF). Drugim reqima, S je konjunkcija vixe klauza(disjunkcija grupa literala | simbola promenivih ili ihovih negacija).Na primer, S = (x + y + z) · (x + y + z) · (x + y + z), gde sabirae, odnosnomnoee odgovaraju disjunkciji, odnosno konjunkciji (ili, odnosno i), a sva-ka promeniva ima vrednost 0 (netaqno) ili 1 (taqno). Poznato je da se svakaBulova funkcija moe predstaviti izrazom u KNF. Za Bulov izraz se kae daje zadovoiv, ako postoji takvo dodeivae nula i jedinica promenivim,da izraz ima vrednost 1. Problem SAT sastoji se u utvrivau da li je zadatiizraz zadovoiv (pri qemu nije neophodno pronai odgovarajue vrednostipromenivih). U navedenom primeru izraz S je zadovoiv, jer za x = 1, y = 1i z = 0 ima vrednost S = 1.

Problem SAT je u klasi NP jer se za (nedeterministiqki) izabrane vred-nosti promenivih za polinomijalno vreme (od veliqine ulaza | ukupneduine formule) moe proveriti da li je izraz taqan. Problem SAT je NP-teak jer se izvrxavae programa NDTM za algoritam koji rexava proizvo-an izabrani problem iz klase NP moe opisati Bulovim izrazom (dokaz oveqienice nije jednostavan). Pod "opisati" se ovde podrazumeva da e izraz

272 11. NP-KOMPLETNOST

biti zadovoiv ako i samo ako Tjuringova maxina sa zadatim ulazom zavrxa-va rad i dolazi do prihvatajueg staa. To nije lako uraditi i takav izrazmoe da bude dugaqak i komplikovan, ali egova veliqina je ograniqena poli-nomom od broja koraka koje izvrxava Tjuringova maxina. Prema tome, ulaz zasvaki problem, za koji postoji nedeterministiqki polinomijalni algoritam,moe se transformisati u ulaz za problem SAT.

Teorema 11.3 (Kukova teorema). Problem SAT je NP-kompletan.

11.4. Primeri dokaza NP-kompletnostiU ovom odeku dokazaemo da su NP-kompletni sledeih pet problema:

pokrivaq grana, dominirajui skup, 3 SAT, 3-obojivost i problem klika. Sva-ki od ovih problema bie detanije izloen. Dokazivae NP-kompletnostizasniva se na tehnikama koje e biti rezimirane na kraju odeka. Da bi sedokazala NP-kompletnost nekog problema, mora se najpre dokazati da on pri-pada klasi NP, xto je obiqno (ali ne uvek!) lako, a zatim treba pronairedukciju polinomijalne vremenske sloenosti na nax problem nekog prob-lema za koji se zna da je NP-kompletan. Redosled redukcija u dokazima NP-kompletnosti pet navedenih problema prikazan je na slici 4. Da bi se ovidokazi lakxe razumeli, navedeni su redosledom prema teini, a ne premarastojau od korena stabla na slici 4; redosled dokaza prikazan je brojevimauz grane.

SAT

)

?

?

?

q4 3

1

2

5

Klike 3SAT

Pokrivaq grana

Dominirajui skup

3-obojivost

Ris. 4. Redosled dokaza NP-kompletnosti u tekstu.

11.4.1. Pokrivaq grana. Neka je G = (V, E) neusmereni graf. Pokri-vaq grana grafa G je takav skup qvorova, da je svaka grana G susedna barjednom od qvorova iz skupa.

11.4. PRIMERI DOKAZA NP-KOMPLETNOSTI 273

Problem. Zadat je neusmereni graf G = (V, E) i prirodni broj k. Us-tanoviti da li u G postoji pokrivaq grana sa ≤ k qvorova.

Teorema 11.4. Problem pokrivaq grana je NP-kompletan.Dokazatel~stvo. Problem pokrivaq grana je u klasi NP, jer se za pret-

postaveni podskup od ≤ k qvorova lako proverava za polinomijalno vremeda li je pokrivaq grana grafa. Da bismo dokazali da je problem pokrivaqgrana NP-kompletan, treba da na ega svedemo neki NP-kompletan problem.U tu svrhu iskoristiemo problem klika (dokaz da je problem klika NP-kompletan bie dat u odeku 11.4.4). U neusmerenom grafu G = (V, E) kli-ka je takav podgraf C grafa G u kome su svi qvorovi meusobno povezanigranama iz G. Drugim reqima, klika je kompletan podgraf. Problem klikaglasi: za zadati graf G i prirodni broj k, ustanoviti da li G sadri klikuveliqine k. Potrebno je transformisati proizvoan ulaz za problem klika uulaz za problem pokrivaq grana, tako da je rexee problema klika "da" akkoje "da" rexee odgovarajueg problema pokrivaq grana. Neka je G = (V, E), kproizvoan ulaz za problem klika. Neka je G = (V, E) komplement grafaG, odnosno graf sa istim skupom qvorova kao i G, i komplementarnim skupomgrana u odnosu na G (odnosno izmeu proizvona dva qvora u G grana postojiakko izmeu ta dva qvora u G ne postoji grana). Neka je n = |V |. Tvrdimo daje problem klika (G, k) sveden na problem pokrivaq grana grafa, sa ulazomG, n− k (videti primer na slici 5, gde su isprekidanim linijama prikazanegrane iz G). Pretpostavimo da je C = (U,F ) klika u G. Skup qvorova V \ Upokriva sve grane u G, jer u G nema grana koje povezuju qvorove iz U (sve tegrane su u G). Prema tome, V \U je pokrivaq grana za G. Drugim reqima, akoG ima kliku veliqine k, onda G ima pokrivaq grana veliqine n−k. Obrnuto,neka je D pokrivaq grana u G. Tada D pokriva sve grane u G, pa u G ne moeda postoji grana koja povezuje neka dva qvora iz V \D. Prema tome, V \D jeklika u G. Zakuqujemo da ako u G postoji pokrivaq grana veliqine n−k, on-da u G postoji klika veliqine k. Ova redukcija se oqigledno moe izvrxitiza polinomijalno vreme: potrebno je samo konstruisati graf G polazei odgrafa G i izraqunati razliku n− k. ¤

11.4.2. Dominirajui skup. Neka je G = (V,E) neusmereni graf. Do-minirajui skup je skup D ⊂ V , takav da je svaki qvor G u D, ili je susedanbar jednom qvoru iz D.

Problem. Dat je neusmereni graf G = (V,E) i prirodni broj k. Us-tanoviti da li u G postoji dominirajui skup sa najvixe k qvorova.

Teorema 11.5. Problem dominirajui skup je NP-kompletan.Dokazatel~stvo. Problem dominirajui skup je u klasi NP, jer se za

pretpostaveni podskup od najvixe k qvorova lako za polinomijalno vremeproverava da li je dominirajui skup. Izvexemo redukciju problema pokri-vaq grana na problem dominirajui skup. Ako je zadat proizvoan ulaz (G, k)

274 11. NP-KOMPLETNOST

t

t t

t

t tt

G: klika U G: pokrivaq grana V \ U

od k qvorova od n− k qvorova

Ris. 5. Redukcija problema klika na problem pokrivaq grana.

za problem pokrivaq grana, ci je konstruisati novi graf G′ koji ima do-minirajui skup odreene veliqine akko G ima pokrivaq grana veliqine na-jvixe k. Pri tome se, bez smaea opxtosti, moe pretpostaviti da G ne-ma izolovanih qvorova (oni ne utiqu na pokrivaq grana, ali moraju bitiukuqeni u dominirajui skup). Polazei od grafa G, dodajemo mu |E| novihqvorova i 2|E| novih grana na sledei naqin. Za svaku granu (v, w) iz G doda-jemo novi qvor vw i dve nove grane (v, vw) i (w, vw) (slika 6). Drugim reqima,svaku granu transformixemo u trougao. Oznaqimo novi graf sa G′. Graf G′

je lako konstruisati za polinomijalno vreme.

t t

tt

t

t

t

tt

v

z

vz

w

u

uv

vw

vu

zw

Ris. 6. Redukcija problema pokrivaq grana na problem do-minirajui skup.

Tvrdimo da G ima pokrivaq grana veliqine m akko G′ ima dominirajuiskup veliqine m. Neka je D dominirajui skup grafa G′. Ako D sadri bilokoji od novih qvorova vw, onda se takav qvor moe zameniti bilo qvoromv, bilo qvorom w, posle qega e i novi skup biti dominirajui skup (v i wpokrivaju sve qvorove koje pokriva vw). Prema tome, bez smaea opxtostimoe se pretpostaviti da D sadri samo qvorove iz G. Meutim, poxto D

11.4. PRIMERI DOKAZA NP-KOMPLETNOSTI 275

"dominira" nad svim novim qvorovima, on mora za svaku granu iz G da sadribar jedan en kraj, pa je zbog toga D istovremeno i pokrivaq grana grafa G.Obrnuto, ako je C pokrivaq grana u G, onda je svaka grana G susedna nekomqvoru iz C, pa je i svaki novi qvor iz G′ susedan nekom qvoru iz C. Stariqvorovi su takoe pokriveni qvorovima iz C, jer po pretpostavci qvorovi izC pokrivaju sve grane. ¤

11.4.3. 3 SAT. Problem 3 SAT je uproxena verzija obiqnog problema SAT.Ulaz za problem 3 SAT je KNF u kojoj svaka klauza ima taqno tri literala.

Problem. Zadat je Bulov izraz u KNF, u kome svaka klauza sadri taqnotri literala. Ustanoviti da li je izraz zadovoiv.

Teorema 11.6. Problem 3 SAT je NP-kompletan.

Dokazatel~stvo. Ovaj problem je na prvi pogled lakxi od obiqnog prob-lema SAT, zbog dopunskog ograniqea da svaka klauza ima po tri promenive.Pokazaemo da algoritam koji rexava 3 SAT moe da se iskoristi da rexiobiqan problem SAT (odnosno da se SAT moe svesti na 3 SAT). Pre toga, jas-no je da 3 SAT pripada klasi NP. Mogu se izabrati ("pogoditi") vrednostipromenivih i za polinomijalno vreme proveriti da li je izraz taqan. Ne-ka je E proizvoan ulaz za SAT. Svaku klauzu u E zameniemo sa nekolikoklauza od po taqno tri literala. Neka je C = (x1 + x2 + · · ·+ xk) proizvonaklauza iz E, takva da je k ≥ 4. Ovde je zbog udobnosti sa xi oznaqen literal,odnosno bilo promeniva, bilo negacija promenive. Pokazaemo kako se Cmoe ekvivalentno zameniti sa nekoliko klauza od po taqno tri literala.Ideja je uvesti nove promenive y1, y2, . . . , yk−3, koje klauzu transformixu udeo ulaza za 3 SAT, ne meajui zadovoivost izraza. Za svaku klauzu iz Euvode se nove, razliqite promenive; C se zameuje konjunkcijom klauza C ′,tako da jeC ′ = (x1+x2+y1)(x3+y1+y2)(x4+y2+y3) · · · (xk−2+yk−4+yk−3)(xk−1+xk+yk−3).

Tvrdimo da je izraz, dobijen od E zamenom C sa C ′, zadovoiv akko je zado-voiv izraz E. Ako je izraz E zadovoiv, onda bar jedan od literala xi moraimati vrednost 1. U tom sluqaju se mogu izabrati vrednosti promenivihyi u C ′ tako da sve klauze u C ′ budu taqne. Na primer, ako je x3 = 1, on-da se moe staviti y1 = 1 (xto qini taqnom prvu klauzu), y2 = 0 (drugaklauza je taqna zbog x3 = 1), i yi = 0 za sve i > 2. Uopxte, ako je xi = 1,onda stavamo y1 = y2 = · · · = yi−2 = 1 i yi−1 = yi = · · · = yk−3 = 0, xtoobezbeuje da bude C ′ = 1. Obrnuto, ako izraz C ′ ima vrednost 1, tvrdimoda bar jedan od literala xi mora imati vrednost 1. Zaista, ako bi svi lite-rali xi imali vrednost 0, onda bi izraz C ′ imao istu taqnost kao i izrazC ′′ = (y1) · (y1 + y2) · (y2 + y3) · · · (yk−4 + yk−3) · (yk−3), koji oqigledno nijezadovoiv (da bi bilo C ′′ = 1, moralo bi da bude redom y1 = 1, pa y2 = 1, itd,yk−3 = 1, yk−3 = 0, i yk−3 = 1, xto je kontradikcija).

276 11. NP-KOMPLETNOST

Pomou ove redukcije sve klauze sa vixe od tri literala mogu se zamenitisa nekoliko klauza od po taqno tri literala. Ostaje da se transformixuklauze sa jednim ili dva literala. Klauza oblika C = (x1 + x2) zameuje seekvivalentnom izrazom

C ′ = (x1 + x2 + z)(x1 + x2 + z),

gde je z nova promeniva. Konaqno, klauza oblika C = x1 moe se zamenitiizrazom

C ′ = (x1 + y + z)(x1 + y + z)(x1 + y + z)(x1 + y + z),u kome su y i z nove promenive.

Prema tome, proizvoni ulaz za problem SAT moe se svesti na ulaz zaproblem 3 SAT, tako da je prvi izraz zadovoiv akko je zadovoiv drugi. Jasnoje da se ova redukcija izvodi za polinomijalno vreme. ¤

11.4.4. Klike. Problem klika definisan je u odeku 11.4.1, u kome jerazmatran problem pokrivaq grana.

Problem. Dat je neusmereni graf G = (V,E) i prirodni broj k. Us-tanoviti da li G sadri kliku veliqine bar k.

Teorema 11.7. Problem klika je NP-kompletan.Dokazatel~stvo. Problem klika je u klasi NP, jer se za svaki pret-

postaveni podskup od k qvorova za polinomijalno vreme moe proveriti dali je klika. Pokazaemo sada da se problem SAT moe svesti na problem kli-ka. Neka je E proizvoni Bulov izraz u KNF, E = E1 ·E2 · · ·Em. Posmatrajmo,na primer, klauzu Ei = (x + y + z + w). oj pridruujemo "kolonu" od qe-tiri qvora, oznaqena literalima iz Ei (bez obzira xto se neki od ih modapojavuju i u drugim klauzama). Drugim reqima, graf G koji konstruixemoimae po jedan qvor za svaku pojavu bilo koje promenive. Ostaje pitae kakopovezati ove qvorove, tako da G sadri kliku veliqine bar k akko je izrazE zadovoiv. Primetimo da se vrednost k moe izabrati proizvono, jerje potrebno svesti problem SAT na problem klika, odnosno rexiti problemSAT koristei algoritam za rexavae problema klika. Naravno, algoritamza rexavae problema klika mora da radi za svaku vrednost k. Ovo je vanafleksibilnost, koja se qesto koristi u dokazima NP-kompletnosti. U ovomsluqaju za k emo izabrati vrednost jednaku broju klauza m.

Grane u grafu G mogu se zadati na sledei naqin. Qvorovi iz iste kolone(odnosno qvorovi pridrueni literalima iz iste klauze) ne povezuju se grana-ma. Qvorovi iz razliqitih kolona su skoro uvek povezani: izuzetak je sluqajdva qvora od kojih jedan odgovara promenivoj, a drugi komplementu te istepromenive. Primer grafa koji odgovara izrazu

E = (x + y + z) · (x + y + z) · (y + z)

prikazan je na slici 7. Jasno je da se G moe konstruisati za polinomijalnovreme.

11.4. PRIMERI DOKAZA NP-KOMPLETNOSTI 277

u

u

u

u

u

u

u

u

x

y

z

x

y

z

y

z

Ris. 7. Redukcija problema SAT sa ulazom (x + y + z) · (x +y + z) · (y + z) na problem klika.

Tvrdimo da G ima kliku veliqine bar m, akko je izraz E zadovoiv. Naj-pre zapaamo da zbog konstrukcije maksimalna klika ne moe imati vixeod m qvorova, nezavisno od E. Pretpostavimo da je izraz E zadovoiv. Tadapostoji takvo dodeivae vrednosti promenivim, da u svakoj klauzi pos-toji bar jedan literal sa vrednoxu 1. Qvor koji odgovara tom literaluprikuquje se kliki (ako ima vixe takvih literala, bira se proizvoan odih). Dobijeni podgraf jeste klika, jer jedini naqin da dva qvora iz razli-qitih kolona ne budu povezana je da jedan od ih bude komplement drugog| xto je nemogue, jer je svim izabranim literalima dodeena vrednost 1.Obrnuto, pretpostavimo da G sadri kliku veliqine bar m. Klika mora dasadri taqno jedan qvor iz svake kolone (jer po konstrukciji qvorovi iz istekolone nisu povezani). Odgovarajuim literalima dodeujemo vrednost 1. Akona ovaj naqin nekoj promenivoj nije dodeena vrednost, to se moe uqinitina proizvoan naqin. Izvdeno dodeivae vrednosti promenivima je nepro-tivreqno: ako bi nekoj promenivoj x i enom komplementu x, ukuqenim ukliku, istovremeno bila dodeena vrednost 1, to bi znaqilo da odgovarajuiqvorovi (po konstrukciji) nisu povezani | suprotno pretpostavci da su obaqvora u kliki. ¤

11.4.5. 3-obojivost. Neka je G = (V, E) neusmereni graf. Ispravnobojee (ili samo bojee) grafa G je takvo pridruivae boja qvorovima,da je svakom qvoru pridruena neka boja, a da su susednim qvorovima uvekpridruene razliqite boje.

Problem (3-obojivost ). Dat je neusmereni graf G = (V, E). Ustanovitida li se G moe obojiti sa tri boje.

Teorema 11.8. Problem 3-obojivost je NP-kompletan.

Dokazatel~stvo. Problem 3-obojivost pripada klasi NP, jer se moepretpostaviti proizvono bojee grafa sa 3 boje, a zatim za polinomijalno

278 11. NP-KOMPLETNOST

vreme proveriti da li je pretpostaveno bojee ispravno. Izvexemo reduk-ciju problema 3 SAT na problem 3-obojivost. Dokaz je nexto komplikovanijiiz dva razloga. Najpre, problemi se odnose na razliqite objekte | Buloveizraze u KNF, odnosno grafove. Drugo, ne moe se prosto zameniti jedan ob-jekat (na primer qvor ili grana) drugim (na primer klauzom); mora se voditiraquna o kompletnoj strukturi. Ideja je da se iskoriste sastavni elementi,koji se povezuju u celinu. Neka je E proizvoan ulaz za problem 3 SAT. Trebakonstruisati graf G, tako da je izraz E zadovoiv akko je G 3-obojiv. Najprekonstruixemo osnovni trougao M . Poxto je M trougao (kompletni graf satri qvora), za egovo bojee potrebne su taqno tri boje. Oznaqimo te boje sa T(taqno), F (netaqno) i A, videti doi trougao na slici 8. Pored toga, za svakupromenivu x dodajemo novi trougao Mx, qije qvorove oznaqavamo sa x, x iA, pri qemu se qvor oznaqen sa A poklapa sa qvorom iz M sa istom oznakom.Prema tome, ako se u izrazu pojavuje k promenivih, imamo k + 1 trouglovasa zajedniqkim qvorom A (slika 8). Ovo obezbeuje da, ako je, na primer, qvor xobojen bojom T , onda qvor x mora biti obojen bojom F (jer su oba qvora susednaqvoru obojenom bojom A), i obrnuto. Ovo je u skladu sa znaqeem x.

t t

t

tt

tt

t tt

T F

A

x x

y

y

z

z

Ris. 8. Prvi deo konstrukcije za redukciju 3 SAT na 3-obojivost grafa.

Potrebno je dodati uslov, koji bi obezbeivao da u svakoj klauzi bar jedanliteral ima vrednost 1. To se moe obezbediti na sledei naqin. Pretpostavi-mo, na primer, da se radi o klauzi (x + y + z). Ovde se x, y, z mogu smatratiliteralima, tj. nedostatak negacija nad simbolima x, y, z ne smauje opx-tost razmatraa. Za ovu klauzu uvodimo xest novih qvorova i povezujemo ihsa postojeim qvorovima na naqin prikazan na slici 9. Nazovimo tri novaqvora povezana sa T i x, y ili z spoaxim qvorovima (oznaqeni su sa O naslici), a tri nova qvora u trouglu | unutraxim qvorovima (oznaqeni susa I na slici). Tvrdimo da ova konstrukcija obezbeuje (ako je mogue bojeesa tri boje) da bar jedan od qvorova x, y ili z mora biti obojen bojom T . Nijedan od qvorova x, y, z ne moe biti obojen bojom A, jer su svi oni povezanisa qvorom A (videti sliku 8). Ako bi sva tri qvora x, y, z bili obojeni bojomF , onda bi tri nova spoaxa qvora povezana sa ima morali biti obojeni

11.4. PRIMERI DOKAZA NP-KOMPLETNOSTI 279

bojom A, pa se unutraxi trougao ne bi mogao obojiti sa tri boje! Kompletangraf koji odgovara izrazu (x + y + z) · (x + y + z) prikazan je na slici 10.

t

t

t

t

tt

t

t

t

t

t

t t

t

x

I

Oy

T

T

I

O z

T

O

I

Ris. 9. Podgrafovi koji odgovaraju klauzama u redukciji3 SAT na 3-obojivost.

t

t

t

tt

t

tt

t

t

tt

t

t

t

tt t t

t

t

tt

y y

x z

zx

A

F

T

Ris. 10. Graf koji odgovara izrazu (x + y + z) · (x + y + z) uredukciji 3 SAT na 3-obojivost.

Sada moemo da kompletiramo dokaz, i to u dva smera: (1) ako je izraz Ezadovoiv, G se moe obojiti sa tri boje, i (2) ako se G moe obojiti sa triboje, onda je izraz E zadovoiv. Ako je izraz E zadovoiv, onda postoji takvododeivae vrednosti promenivim, da u svakoj klauzi bar jedan literalima vrednost 1. Obojimo qvorove grafa u skladu sa ihovim vrednostima (saT ako je vrednost 1, odnosno sa F u protivnom). Trougao M obojen je bojama T ,F i A na opisani naqin. U podgrafu koji odgovara klauzi bar jedan literalima vrednost 1; odgovarajui spoaxi qvor bojimo sa F , a ostale spoaxe

280 11. NP-KOMPLETNOST

qvorove sa A, posle qega je bojee unutraxih qvorova lako izvesti. Prematome, G se moe obojiti sa tri boje. Obrnuto, ako se G moe obojiti sa tri boje,nazovimo boje u skladu sa bojeem trougla M (koji mora biti obojen sa triboje). Zbog trouglova na slici 8, boje promenivih omoguuju neprotivreqnododeivae vrednosti promenivim. Konstrukcija sa slike 9 obezbeuje daje bar jedan literal u svakoj klauzi obojen sa T . Konaqno, jasno je da se grafG moe konstruisati za polinomijalno vreme, qime je dokaz zavrxen. ¤

11.4.6. Opxta zapaaa. Razmotriemo ukratko nekoliko opxtih me-toda za dokazivae NP-kompletnosti nekog problema Q. Prvi uslov | daQ pripada klasi NP | obiqno se lako dokazuje (ne uvek). Posle toga trebaizabrati neki problem za koji se zna da je NP-kompletan, a za koji izgleda daje povezan, ili sliqan sa Q. Texko je definisati ovu "sliqnost", jer ponekadizabrani problem i Q izgledaju jako razliqito (na primer, problem klika iSAT). Izbor pravog problema koji e biti sveden na Q je ponekad izuzetnoteak, i zahteva veliko iskustvo. Mora se pokuxati sa nekoliko redukcija,dok se ne doe do pogodnog problema.

Vano je da se izvede redukcija na Q, polazei od proizvonog ulaza poz-natog NP-kompletnog problema. Najqexa grexka u ovakvim dokazima je izvod-jee redukcije u obrnutom smeru. Pravi smer obezbeuje npr. sledee pravilo:treba obezbediti da se poznati NP-kompletan problem moe rexiti crnom ku-tijom, koja izvrxava algoritam za rexavae Q. To moda malo protivreqiintuiciji. Prirodno bi bilo, pokuxati sa rexavaem problema Q, poxto jeto zadati problem. Ovde pak pokuxavamo da reximo drugi problem (poznatiNP-kompletan problem), koristei rexee problema Q. Mi i ne pokuxavamoda reximo Q!

Postoji vixe "stepeni slobode" koji se mogu koristiti pri redukciji. Naprimer, ako Q sadri neki parametar, onda se egova vrednost moe fiksi-rati na proizvoan naqin (suprotno od parametara u problemu koji se svodina Q, koji se ne smeju fiksirati!). Poxto je Q samo alat za rexavae poz-natog NP-kompletnog problema, moe se iskoristiti na proizvoan naqin.Pored fiksiraa parametara, mogu se koristiti restrikcije Q na specijalnesluqajeve dobijene i na druge naqine. Na primer, mogu se koristiti samo nekitipovi ulaza za Q (ako se radi o grafovima | bipartitni grafovi, stabla isliqno). Drugi vaan izvor fleksibilnosti je qienica da je efikasnost re-dukcije nebitna | dovono je da se redukcija moe izvesti za polinomijalnovreme. Mogu se ignorisati ne samo konstante, tako xto bi se, na primer, dupli-rala veliqina problema: isto tako moe se i kvadrirati veliqina problema!Moe se uvesti polinomijalno mnogo novih promenivih, moe se zamenitisvaki qvor u grafu novim velikim grafom i sliqno. Ne postoji potreba zaefikasnoxu (sve dok se ostaje u granicama polinomijalnog), jer svrha reduk-cije nije da se transformixe u algoritam.

Postoje neke uobiqajene tehnike za dobijae redukcija. Najjednostavnijaje dokazati da je poznati NP-kompletan problem specijalan sluqaj problema

11.4. PRIMERI DOKAZA NP-KOMPLETNOSTI 281

Q. Ako je tako, dokaz je direktan, jer je rexavae Q istovremeno i rexavaepoznatog NP-kompletnog problema. Posmatrajmo, na primer, problem pokri-vae skupova pokrivae skupova. Ulaz je kolekcija podskupova S1, S2, . . . , Sn

zadatog skupa U i prirodni broj k. Problem je ustanoviti da li postoji pod-skup W ⊆ U sa najvixe k elemenata, koji sadri bar po jedan elemenat svakogod podskupova Si. Zapaamo da je problem pokrivaq grana specijalni sluqajproblema pokrivaa skupova u kome U odgovara skupu qvorova V , a svakiskup Si odgovara jednoj grani i sadri dva qvora kojima je ta grana susedna.Prema tome, ako znamo da reximo problem pokrivaa skupova za proizvoneskupove, onda moemo da reximo i problem pokrivaq grana.

Moramo, meutim, biti paivi kad koristimo ovaj pristup. U opxtemsluqaju nije taqno da dodavae novih zahteva qini problem teim. Posma-trajmo problem pokrivaq grana. Pretpostavimo da smo dodali ograniqen-je da pokrivaq grana ne sme da sadri dva susedna qvora. Drugim reqima,traimo mali skup qvorova koji je istovremeno i pokrivaq grana i nezavi-san skup (nezavisan skup je podskup qvorova grafa, takav da izmeu egovadva proizvona elementa ne postoji grana). Ovaj problem je na prvi pogledtei i od problema pokrivaq grana i od problema nezavisan skup, jer trebabrinuti o vixe zahteva. Ispostava se, meutim, da je ovo lakxi problem, ida se moe rexiti za polinomijalno vreme (videti zadatak 6.65). Razlog ovojpojavi je u tome xto dopunski zahtevi toliko suavaju familiju podskupovakandidata, da se minimum lako nalazi.

Druga relativno jednostavna tehnika koristi lokalne redukcije. Ob-jekat, ulaz za jedan problem, preslikava se u objekat koji je ulaz za drugiproblem. Preslikavae se izvodi na lokalni naqin, nezavisno od ostalih ob-jekata. Dokaz NP-kompletnosti problema dominirajueg skupa izveden je naovaj naqin. Svaka grana u jednom grafu zameena je trouglom u drugom grafu.Potexkoa sa ovom tehnikom je kako na najboi naqin definisati odgovara-jue objekte.

Najkomplikovanija tehnika je upotreba sastavnih elemenata blokova, kaoxto je to uqieno pri dokazu NP-kompletnosti problema 3-obojivost. Blokoviobiqno zavise jedan od drugog, pa je ihovo nezavisno projektovae neizvodi-vo. Moraju se imati na umu svi cievi problema, da bi se moglo koordiniratiprojektovae razliqitih blokova.

11.4.7. Jox neki NP-kompletni problemi. Sledi spisak sadri joxnekoliko NP-kompletnih problema, koji mogu biti korisni kao polazna osnovaza nove redukcije. Pronalaee pravog problema za redukciju obiqno je vixeod polovine dokaza NP-kompletnosti.

Hamiltonov ciklus: Hamiltonov ciklus u grafu je prost ciklus kojisadri svaki qvor grafa taqno jednom. Problem je ustanoviti da li zadatigraf sadri Hamiltonov ciklus. Problem je NP-kompletan i za neusmerenei za usmerene grafove. (Redukcija problema pokrivaq grana.)

Hamiltonov put: Hamiltonov put u grafu je prosti put koji sadrisvaki qvor grafa taqno jednom. Problem je ustanoviti da li zadati graf

282 11. NP-KOMPLETNOST

sadri Hamiltonov put. Problem je NP-kompletan i za neusmerene i usmerenegrafove. (Redukcija problema pokrivaq grana.)

Problem trgovaqkog putnika: Neka je zadat teinski kompletan grafG i broj W . Ustanoviti da li u G postoji Hamiltonov ciklus sa zbiromteina grana ≤ W . (Direktna redukcija problema Hamiltonov ciklus.)

Nezavisan skup: Nezavisan skup u grafu je podskup qvorova grafa,takav da izmeu egova dva proizvona elementa ne postoji grana. Ako jezadat graf G i prirodni broj k, ustanoviti da li G sadri nezavisni skupsa bar k qvorova. (Direktna redukcija problema klika.)

3-dimenzionalno uparivae: Neka su X, Y i Z disjunktni skupoviod po k elemenata, i neka je M zadati skup trojki (x, y, z) takvih da je x ∈ X,y ∈ Y i z ∈ Z. Problem je ustanoviti da li postoji takav podskup skupaM koji svaki elemenat sadri taqno jednom. Odgovarajui dvodimenzional-ni problem uparivaa je obiqan problem bipartitnog uparivaa. (Redukcijaproblema 3 SAT.)

Particija: Ulaz je skup X qijem je svakom elementu x pridruena egovaveliqina s(x). Problem je ustanoviti da li je mogue podeliti skup na dvadisjunktna podskupa sa jednakim sumama veliqina. (Redukcija problema 3-di-menzionalno uparivae.)

Primetimo da se ovaj i sledei problem mogu efikasno rexiti algorit-mom Ranac iz odeka 4.10, ako su veliqine mali celi brojevi. Meutim, poxtoje veliqina ulaza srazmerna broju bita potrebnih da se predstavi ulaz, ovakvialgoritmi (koji se zovu pseudopolinomijalni algoritmi) su ustvari ek-sponencijalni u odnosu na veliqinu ulaza.

Problem ranca: Ulaz su dva broja S, V i skup X qijem je svakom elementux pridruena veliqina s(x) i vrednost v(x). Problem je ustanoviti da lipostoji podskup B ⊆ X sa ukupnom veliqinom ≤ S i ukupnom vrednoxu ≥ V .(Redukcija problema particije.)

Problem pakovaa: Ulaz je niz brojeva a1, a2, . . . , an i dva broja b, k.Problem je ustanoviti da li se ovaj skup moe razloiti u k podskupova, takoda je suma brojeva u svakom podskupu ≤ b. (Redukcija problema particije.)

11.5. Tehnike za rad sa NP-kompletnim problemimaPojam NP-kompletnosti je osnova za elegantnu teoriju koja omoguuje pre-

poznavae problema za koje najverovatnije ne postoji polinomijalni algo-ritam. Meutim, dokazivaem da je problem NP-kompletan, sam problem nijeeliminisan! I dae je potrebno rexiti ga. Tehnike za rexavae NP-kompletnihproblema su ponekad drugaqije od tehnika koje smo do sada razmatrali. Nijedan NP-kompletan problem se (najverovatnije) ne moe rexiti taqno i kom-pletno algoritmom polinomijalne vremenske sloenosti. Zbog toga smo prin-ueni na kompromise. Najqexi kompromisi odnose se na optimalnost, garan-tovanu efikasnost, ili kompletnost rexea. Postoje i druge alternative, odkojih svaka ponexto rtvuje. Isti algoritam se moe koristiti u razliqitimsituacijama, primeujui razliqite kompromise.

11.5. TEHNIKE ZA RAD SA NP-KOMPLETNIM PROBLEMIMA 283

Algoritam koji ne daje uvek optimalan (ili taqan) rezultatu zove se pri-blian algoritam. Posebno su zanimivi priblini algoritmi koji moguda garantuju granicu za stepen odstupaa od taqnog rexea. Nexto kasnijevideemo tri primera takvih algoritama.

U odeku 5.8 razmatrali smo probabilistiqke algoritme koji mogu dapogrexe. Najpoznatiji u toj klasi je algoritam za prepoznavae prostih bro-jeva. Za problem prepoznavaa prostih brojeva se ne zna da li je u P, ali sesmatra da nije NP-kompletan. Ovde se neemo baviti algoritmima za prepoz-navae prostih brojeva, jer zahtevaju predznae iz teorije brojeva. Raxirenoje verovae da se NP-kompletni problemi ne mogu rexiti algoritmom poli-nomijalne vremenske sloenosti, kod kojih je verovatnoa grexke mala za sveulaze. Takvi algoritmi su po svemu sudei efikasni za probleme, za koje sene zna da li su u klasi P, ali se ne veruje da su NP-kompletni. Takvi proble-mi nisu qesti. Probabilistiqki algoritmi se mogu koristiti kao deo drugihstrategija | na primer, kao deo priblinih algoritama.

Drugi kompromis mogu je u vezi sa zahtevom da polinomijalno bude vremeizvrxavaa u najgorem sluqaju. Moe se pokuxati sa rexavaem NP-komplet-nih problema za polinomijalno srede vreme. Potexkoa sa ovim pristupom jekako definisati proseqno vreme. Na primer, texko je iskuqiti ulaze za kojeje konkretan problem trivijalan (kao xto je graf koji ima samo izolovaneqvorove) iz izraqunavaa proseka. Takvi trivijalni ulazi mogu znatno dautiqu na prosek. Algoritmi predvieni za pojedine tipove sluqajnih ulazamogu da budu korisni ako je stvarna raspodela verovatnoa ulaza u skladusa pretpostavenom. Meutim, obiqno je nalaee taqne raspodele je obiqnovrlo texko. Najtei deo posla pri konstrukciji algoritama, koji u prosekudobro rade, je najqexe ihova analiza.

Konaqno, mogu se praviti kompromisi u vezi sa kompletnoxu algoritama;naime, moe se dozvoliti da algoritam radi efikasno samo za neke specijalneulaze. Na primer, problem pokrivaq grana moe se rexiti za polinomijal-no vreme za bipartitne grafove. Prema tome, kad se formulixe apstraktniproblem polazei od situacije iz realnog ivota, treba obezbediti da svidopunski uslovi koje ulaz zadovoava budu ukuqeni u apstraktnu definici-ju. Drugi primer su algoritmi sa eksponencijalnom vremenskom sloenoxu,koji se ipak mogu izvrxavati za male ulaze, xto je qesto potpuno zadovoava-jue.

U ovom odeku opisaemo vixe ovakvih tehnika i ilustrovati ih pri-merima. Zapoqiemo sa dve opxte i korisne tehnike koje se zovu pretragai granae sa odsecaem. Ove tehnike su sliqne. Mogu se koristiti kaoosnova za priblini algoritam, ili kao taqan algoritam za male ulaze. Nakraju navodimo nekoliko primera priblinih algoritama.

11.5.1. Pretraga i granae sa odsecaem. Ove tehnike opisaemo najednom primeru. Razmotrimo problem 3-bojee, odnosno dodeivaa boja qvo-rovima grafa uz izvesna ograniqea. Primer je iz klase problema nalaeaoptimalne vrednosti (broja boja u ovom sluqaju) za n parametara (ovde boja

284 11. NP-KOMPLETNOST

qvorova). U sluqaju problema 3-bojee svaki parametar ima tri mogue vred-nosti, xto odgovara trima bojama. Prema tome, broj potencijalnih rexea je3n, jer je to ukupan broj naqina na koje se n qvorova mogu obojiti sa tri boje.Naravno, sem ako graf nema grana, broj ispravnih bojea moe da bude znatnomai od 3n, jer grane nameu ograniqea na mogua bojea. Da bi se ispitalisvi mogui naqini bojea qvorova, moe se zapoqeti dodeivaem proizvoneboje jednom od qvorova, a zatim nastaviti sa bojeem ostalih qvorova, vodeiraquna o ograniqeima koje nameu grane | da susedni qvorovi moraju bitiobojeni razliqitim bojama. Pri bojeu qvora, pokuxava se sa svim moguimbojama, koje su konzistentne sa prethodno obojenim qvorovima. Ovaj procesmoe se obaviti algoritmom obilaska stabla, koji predstava suxtinu pre-trage i granaa sa odsecaem. Da bismo razlikovali qvorove grafa i stabla,qvorove stabla zvaemo temenima.

Koren stabla odgovara poqetnom stau problema, a svaka grana odgovaranekoj odluci o vrednosti nekog parametra. Oznaqimo tri boje sa C(rveno),P(lavo) i Z(eleno). Na poqetku se mogu izabrati neka dva susedna qvora v iw, i obojiti recimo sa P i Z. Poxto se oni ionako moraju obojiti razliqitimbojama, nije bitno koje e boje biti izabrane (konaqno bojee se uvek moeispermutovati), pa se zato moe zapoqeti sa bojeem dva umesto jednog qvora.Bojee ova dva qvora odgovara poqetnom stau problema, koje je pridruenokorenu. Stablo se konstruixe u toku samog obilaska. U svakom temenu t stablabira se sledei qvor grafa za bojee, i dodaje jedan, dva ili tri sina temenut, zavisno od broja boja kojima se moe obojiti qvor u. Na primer, ako je u prviizabrani qvor (posle v i w), a u je susedan qvoru w (koji je ve obojen bojomZ), onda postoje dve mogunosti za bojee u, P i C, pa se korenu dodaju dvaodgovarajua sina. Zatim se bira jedan od ova dva sina i proces se nastava.Kad se jedan qvor oboji, smauje se broj mogunosti za bojee ostalih qvoro-va; prema tome, broj sinova pokazuje tendenciju opadaa kako se napreduje udubinu stabla.

U sluqaju da su obojeni svi qvorovi grafa, problem je rexen. Verovatni-je je, meutim, da emo naii na qvor koji se ne moe obojiti (jer ima trisusedna qvora koji su ve obojeni razliqitim bojama). U tom trenutku qinimokorak nazad | vraamo se uz stablo (ka niim nivoima) i pokuxavamo sadrugim sinovima. Primer grafa, i stabla koje odgovara rexavau problema3-bojee na emu, prikazan je na slici 11. Primetimo da u ovom sluqaju, kadse fiksiraju boje qvorova 1 i 2, za bojee ostalih qvorova postoji samo jedannaqin, do koga se dolazi krajim desnim putem kroz stablo na slici.

Algoritam za obilazak stabla moe se formulisati indukcijom. Potrebnoje pojaqati induktivnu hipotezu, tako da obuhvati bojee grafova qiji su nekiqvorovi ve obojeni. Drugim reqima, induktivna hipoteza treba da obuhvatibojee ne samo neobojenih grafova, nego i dovrxavae zapoqetog bojea.

Induktivna hipoteza. Umemo da zavrximo 3-bojee grafa koji imamae od k neobojenih qvorova, ili da za takve grafove ustanovimo da se nemogu obojiti sa tri boje.

11.5. TEHNIKE ZA RAD SA NP-KOMPLETNIM PROBLEMIMA 285

s

ss

s

ss

4

3

2

1

5

s s

s

s

ss

s

s

s

1P, 2Z

3C

4Z 4P

3P

4Z4C

5C

(a) (b)

Ris. 11. Primer primene pretrage na 3-bojee grafa.

Ako je dat graf sa k neobojenih qvorova, biramo jedan od neobojenih qvo-rova i pronalazimo sve mogue boje kojima se on moe obojiti. Ako su sve bojeve iskorixene za susede tog qvora, zapoqeto 3-bojee se ne moe kompleti-rati. U protivnom, qvor bojimo jednom od moguih boja (jednom po jednom) irexavamo preostale probleme (koji imaju po k−1 neobojeni qvor) indukcijom.Algoritam je prikazan na slici 12.

Algoritam 3− bojenje(G, var U);

Ulaz: G = (V, E) (neusmereni graf) i U (skup ve obojenih qvorova).U je obiqno na poqetku prazan skupIzlaz: Pridruivae jedne od tri boja svakom qvoru G.begin

if U = V then print "bojee je zavrxeno"; halt

prekid svih rekurzivnih pozivaelse

izabrati neki qvor v koji nije u skupu U ;

for C := 1 to 3 do

if ni jedan sused v nije obojen bojom C then

dodaj qvor v obojen bojom C skupu U ;

3− bojenje(G, U)

end

Ris. 12. Algoritam 3− bojenje.

Nije texko nai primer grafa i redosled egovih qvorova, takav da sepri egovom bojeu dobija stablo sa eksponencijalnim brojem temena (vide-ti zadatak 11.11). Ovo je qesta situacija u algoritmima pretrage. Jedino semoemo nadati da emo, ako stablo budemo obilazili na pogodan naqin, narexee brzo naii. Algoritam koji smo opisali ne precizira naqin izbora

286 11. NP-KOMPLETNOST

sledeeg qvora. Poxto se kao sledei moe izabrati proizvoan qvor, imamoizvesnu fleksibilnost, koja se moe iskoristiti za formirae odgovarajueheuristike. Nexto kasnije vratiemo se na ovo pitae.

Granae sa odsecaem je varijacija pretrage, koja se moe primeniti akose trai minimum (ili maksimum) neke cine funkcije. Posmatrajmo opxtiproblem bojea grafa: ci je pronai najmai broj boja potreban za bojeezadatog grafa, a ne samo ustanoviti da li je graf mogue obojiti sa tri boje.Moe se formirati stablo sliqno kao za 3-bojee, ali broj sinova svakogqvora moe da bude vrlo veliki. Svaki novi qvor moe se obojiti nekom odve korixenih boja (sem ako je neki od egovih suseda ve obojen tom bojom),ili novom bojom. Prema tome, algoritam za 3-bojee mea se na dva mesta: (1)konstanta 3 zameuje se brojem do sada korixenih boja, i (2) algoritam se nezavrxava u trenutku kad je V = U , jer je mogue da postoji boi naqin da seoboji graf.

Potexkoe izaziva qienica da u algoritmu dolazi do vraaa unazadsamo kad se doe do lista u stablu (odnosno kad je V = U), jer se nova bojauvek moe dodeliti qvoru. Prema tome, skoro je sigurno da e ovakav algori-tam biti vrlo neefikasan (sem ako je graf vrlo gust). Efikasnost algoritmamoe se poboxati pomou sledeeg zapaaa, koje je u osnovi metoda granan-ja sa odsecaem. Pretpostavimo da smo proxli deo stabla do nekog lista itako pronaxli ispravno bojee sa k boja. Pretpostavimo dae da smo poslevraaa unazad krenuli drugim putem, i tako doxli do qvora koji zahtevauvoee (k + 1)-e boje. U tom trenutku moe se napraviti korak nazad, jerje ve poznato boe rexee. Prema tome, k slui kao granica za pretragu.U svakom temenu stabla izraqunavamo dou granicu za najboe rexee nakoje se moe naii meu sledbenicima tog temena. Ako je ta doa granicavea od nekog ve naenog rexea, qinimo korak nazad. Jedan od naqina dase algoritam granaa sa odsecaem uqini efikasnim je izraqunavae dob-rih doih granica (ili gorih granica, ako je ci maksimizirati cinufunkciju). Drugi vaan elemenat je nalaee dobrog redosleda obilaska,koji omoguuje brzo pronalaee dobrih rexea, a time i ranije napuxtaeneperspektivnih podstabala.

Ilustrovaemo ovu ideju problemom celobrojnog linearnog programiran-ja, spomenutog u odeku 10.3. Problem je sliqan linearnom programiran-ju, ali ima dopunsko ograniqee da promenive mogu uzimati samo celobro-jne vrednosti. Neka je x = (x1, x2, . . . , xn)T vektor kolona promenivih, nekasu a1,a2, . . . ,ak vektori vrste realnih brojeva jednake duine n, i neka sub1, b2, . . . , bk, c1, c2, . . . , cn realni brojevi. Problem je maksimizirati vrednostlinearne cine funkcije

z =n∑

i=1

cixi

pod uslovom da su koordinate vektora x celi brojevi iaj · x ≤ bj , j = 1, 2, . . . , k,

11.5. TEHNIKE ZA RAD SA NP-KOMPLETNIM PROBLEMIMA 287

pri qemu su svi simboli sem x konstante. Mnogi NP-kompletni problemi moguse lako formulisati kao problemi celobrojnog linearnog programiraa (unastavku emo videti jedan takav primer). Prema tome, celobrojno linearnoprogramirae je NP-teak problem. Preciznije, problem je NP-kompletan,ali je dokaz da je taj problem u klasi NP nexto komplikovaniji.

Pokazaemo sada kako se problem klika moe formulisati kao problemcelobrojnog linearnog programiraa Pri tome razmatramo varijantu u kojojse trai maksimalna klika, umesto da se proverava da li postoji klika zadateveliqine. Uvodimo n promenivih x1, x2, . . . , xn, koje odgovaraju qvorovima,tako da je xi = 1 ako vi pripada maksimalnoj kliki, odnosno xi = 0 u pro-tivnom. Cina funkcija je

z = x1 + x2 + · · ·+ xn,

jer je potrebno ukuqiti u kliku xto vei broj qvorova. Postoji po jednoograniqee za svaki qvor

0 ≤ xi ≤ 1, i = 1, 2, . . . , n,

i po jedno ograniqee za svaki par nesusednih qvorovaxi + xj ≤ 1 za svaki par qvorova vi, vj takvih da (vi, vj) /∈ E.

Prvi skup ograniqea ograniqava vrednosti promenivih na 0 ili 1. Drugiskup ograniqea obezbeuje da se dva nesusedna qvora ne mogu istovremenoizabrati u kliku; prema tome, qvorovi koji su izabrani qine kliku.

Ovakav problem celobrojnog linearnog programiraa moe se rexiti al-goritmom granaa sa odsecaem, korixeem odgovarajueg linearnog pro-grama (koji rexava isti problem, ali bez ograniqea celobrojnosti) za izraqu-navae granica. Rexee linearnog programa moe se sastojati samo od celihbrojeva; u tom sluqaju polazni problem je rexen. Meutim, verovatnije je dae u rexeu neke promenive imati necelobrojne vrednosti. Pretpostavimo,na primer, da je rexee linearnog programa pridruenog problemu klika(0.1, 1, . . . , 0.5) i z = 7.8. Poxto linearni program maksimizira cinu fun-kciju sa mae ograniqea od celobrojnog linearnog programa, maksimum kojion pronae je gora granica za maksimum koji moe da pronae celobrojni li-nearni program. Prema tome, ne moe se oqekivati pronalaee klike veli-qine vee od 7. Ova informacija moe biti korisna prilikom pretrage. Kaoi kod obiqne pretrage, biramo neke vrednosti parametara i napredujemo dustabla, pri qemu teme nie u stablu odgovara potproblemu polaznog problema.Na primer, potproblem moe da odgovara prikuqivau qvorova v, w kliki,i eliminisau iz e qvorova u, x, tj. pokuxava se sa nalaeem najvee klikesa v, w, a bez u, x. Ako se tom prilikom dobije rexee linearnog programakoje je mae od veliqine ve pronaene klike, onda qinimo korak nazad, i na-puxtamo tu varijantu. To je suxtina metoda granaa i odsecaa. Pokuxavamoda naemo gore granice (ili doe, ako se cina funkcija minimizira) kojee omoguiti odsecae neperspektivnih podstabala na xto niem nivou (xtoblie korenu stabla).

288 11. NP-KOMPLETNOST

Rezultat linearnog programa moe se iskoristiti i pri izboru redosledapretrage. Na primer, ako je x2 = 1 u necelobrojnom rexeu, moe se pret-postaviti da je x2 = 1 i u celobrojnom rexeu. Ta pretpostavka ne mora bititaqna, ali je primer vrste heuristika koje traimo. Pokuxavamo da poveamoverovatnou brzog nalaea optimalnog rexea; pri tome je jasno da ne mogusve takve odluke da budu "ispravne", jer je problem NP-kompletan. Moemo dastavimo x2 = 1, izmenimo u skladu sa tim ograniqea (npr. promenimo vred-nosti promenivih za sve qvorove nesusedne sa v2 na 0), i reximo rezultujuilinearni program. Ako u nekom trenutku modifikovani linearni programima maksimalnu vrednost z = a, pri qemu je a mae od veliqine najvee pron-aene klike, ta grana se moe napustiti.

Prema tome, linearni program koristi se na dva naqina: za dobijae gor-ih granica i time za napuxtae neperspektivinih podstabala (odsecae),odnosno za donoxea odluka o usmeravau pretrage. Oqekuje se da rexavan-je potproblema koji "najvixe obeava", uqini nepotrebnim rexavae velikogdela drugih potproblema. Uqestanost odsecaa, odnosno eifkasnost celog al-goritma, zavisi od heuristike za formirae potproblema i izbora narednogpotproblema za ispitivae. Heuristika zavisi od konkretnog problema, i uovoj oblasti sprovode se xiroka istraivaa.

Algoritmi sa granaem i odsecaem garantuju pronalaee optimalnogrexea ako se svi potproblemi istrae ili "odseku". Ako izvrxavae trajepredugo, moe se prekinuti, i tako dobiti aproksimaciju | najboe rexe-e pronaeno do tog trenutka. Obilazak stabla moe se izvesti pretragomu dubinu, pretragom u xirinu ili nekom ihovom kombinacijom. Ekstrem-ni primer ranijeg zavrxavaa pretrage je uzimae prvog puta (izabranog uskladu sa nekom heuristikom) koja vodi prihvativom rexeu (obiqno onokoje odgovara listu stabla) kao izlaza algoritma. Na primer, u algoritmu zabojee grafa, qvorovi se mogu bojiti redosledom prema rastuim stepenima;ideja je da se mae gubi na fleksibilnosti fiksiraem boje qvorova malogstepena. To je jednostavan pohlepni algoritam.

11.5.2. Priblini algoritmi sa garantovanim kvalitetom rexe-a. U ovom odeku razmotriemo pribline algoritme za tri NP-kompletnaalgoritma: pokrivaq grana, pakovae i euklidski problem trgovaqkog putni-ka. Sva tri algoritma imaju garantovani kvalitet rexea; drugim reqima,moe se dokazati da rexea koja oni daju nisu predaleko od optimalnih re-xea.

11.5.2.1. Pokrivaq grana. Najpre emo razmotriti jednostavan priblinialgoritam za nalaee pokrivaqa grana datog grafa. Algoritam garantujenalaee pokrivaqa sa najvixe dva puta vixe qvorova nego u minimalnompokrivaqu. Neka je G graf, i neka je M maksimalno uparivae u G. Poxto jeM uparivae, egove grane nemaju zajedniqkih taqaka, a poxto je M maksi-malno uparivae, sve ostale grane imaju bar jedan zajedniqki qvor sa nekomgranom iz M .

11.5. TEHNIKE ZA RAD SA NP-KOMPLETNIM PROBLEMIMA 289

Teorema 11.9. Skup qvorova susednih granama maksimalnog uparivaaM je pokrivaq grana, sa najvixe dva puta vixe qvorova nego xto ih imaminimalni pokrivaq.

Dokazatel~stvo. Skup qvorova koji pripadaju M qini pokrivaq grana,jer je M maksimalno uparivae. Svaki pokrivaq grana mora da pokrije svegrane | specijalno, sve grane uparivaa M . Poxto je M uparivae, bilokoji qvor iz M moe da pokrije najvixe jednu granu uparivaa M . Prematome, bar polovina qvorova iz M mora da pripada pokrivaqu grana. ¤

Maksimalno uparivae moe se nai prostim dodavaem grana sve dotledok je to mogue (odnosno dok postoje neka dva neuparena, a susedna qvora).

11.5.2.2. Jednodimenzionalno pakovae. Jednodimenzionalni problempakovaa odnosi se na pakovae objekata razliqite veliqine u kutije takoda se iskoristi najmai mogui broj kutija. Na primer, prilikom selidbe jeci preneti sve stvari, koristei kamion najmai mogui broj puta, paku-jui stvari xto je mogue boe. To je naravno trodimenzionalni problem;ovde emo se pozabaviti egovom jednodimenzionalnom verzijom. Zbog jednos-tavnosti se pretpostava da svi sanduci imaju veliqinu 1.

Problem. Neka je x1, x2, . . . , xn skup realnih brojeva izmeu 0 i 1. Po-deliti ih u najmai mogui broj podskupova, tako da suma brojeva u svakompodskupu bude najvixe 1.

Na jednodimenzionalni problem pakovaa nailazi se, na primer, u prob-lemima upravaa memorijom, kad postoje zahtevi za dodelom memorijskihblokova razliqite veliqine, a dodeivae se vrxi iz nekoliko jednakih ve-likih blokova memorije. Jednodimenzionalni problem pakovaa je NP-kompletan.

Jedna od moguih heuristika za rexavae ovog problema je staviti x1 uprvu kutiju, a zatim, za svako i, staviti xi u prvu kutiju u kojoj ima dovonomesta, ili zapoqeti sa novom kutijom, ako nema dovono mesta ni u jednoj odkorixenih kutija. Ovaj algoritam zove se prvi odgovarajui i, kao xtopokazuje sledea teorema, dovono je dobar u najgorem sluqaju.

Teorema 11.10. Algoritam prvi odgovarajui zahteva najvixe 2m ku-tija, gde je m najmai mogui broj kutija.

Dokazatel~stvo. Po zavrxetku algoritma prvi odgovarajui ne postojedve kutije sa iskorixeem maim od 1/2. Prema tome, ako sa k oznaqimobroj upotrebenih kutija, bie m ≥ ∑n

i=1 xi > (k− 1)/2, odakle je k < 2m + 1,odnosno k ≤ 2m. ¤

Ispostava se da je granica definisana ovom teoremom priliqno gruba.Konstanta 2 iz teoreme moe se smaiti na 1.7 posle nexto komplikovanijeanalize. Konstanta 1.7 ne moe se dae smaiti, jer postoje primeri u koji-ma algoritam prvi odgovarajui zahteva 1.7 puta vixe kutija od optimalnogalgoritma.

290 11. NP-KOMPLETNOST

Opisani algoritam moe se jednostavno poboxati. Do najgoreg sluqajadolazi kad se mnogo malih brojeva pojavuje na poqetku. Umesto da se bro-jevi pakuju u redom kojim nailaze, oni se najpre sortiraju u nerastui niz.Promeeni algoritam zove se opadajui prvi odgovarajui, i u najgoremsluqaju troxi najvixe oko 1.22 puta vixe kutija od optimalnog algoritma(teoremu dajemo bez dokaza).

Teorema 11.11. Algoritam opadajui prvi odgovarajui zahteva najvixe119 m + 4 kutija, gde je m najmai mogui broj kutija.

Konstanta 11/9 je takoe najboa mogua. Prvi odgovarajui i opadajuiprvi odgovarajui su jednostavne heuristike. Postoje drugi metodi koji garan-tuju jox mae konstante. ihova analiza je u veini sluqajeva komplikovana.

Strategije koje smo opisali tipiqne su za heuristiqke algoritme. Oneodraavaju prirodne pristupe, odnosno odgovaraju naqinu na koji bi nekoruqno rexavao ove probleme. Meutim, videli smo mnogo sluqajeva u kojimase direktni pristupi ponaxaju loxe za velike ulaze. Zbog toga je veoma vanoanalizirati ponaxae takvih algoritama.

11.5.2.3. Euklidski problem trgovaqkog putnika. Problem trgovaqkogputnika (TSP, skraenica od traveling salesman problem ) je vaanproblem sa mnogo primena. Razmotriemo ovde varijantu TSP sa dopunskimograniqeem da teine grana odgovaraju euklidskim rastojaima.

Problem. Neka je C1, C2, . . . , Cn skup taqaka u ravni koje odgovaraju polo-ajima n gradova. Pronai Hamiltonov ciklus minimalne duine (marxrututrgovaqkog putnika) meu ima.

Problem je i dae NP-kompletan (ovo tvree navodimo bez dokaza), alivideemo da pretpostavka da su rastojaa euklidska omoguuje konstrukci-ju priblinog algoritma za egovo rexavae. Preciznije, ova pretpostavkamoe se uopxtiti, zameujui je pretpostavkom da rastojaa zadovoavajunejednakost trougla, odnosno da je rastojae izmeu dva qvora uvek maeili jednako od duine proizvonog puta izmeu ih preko ostalih qvorova.

Najpre se konstruixe minimalno povezujue stablo (MCST; ovde su cenegrana ihove duine), xto je mnogo lakxi problem (videti odeak 6.6).Tvrdimo da cena stabla nije vea od duine najboeg ciklusa TSP. Zaista,ciklus TSP sadri sve qvorove, pa ga uklaae jedne grane qini povezujuimstablom, qija cena je vea ili jednaka od cene MCST.

Od povezujueg stabla se, meutim, ne dobija direktno ciklus TSP. Pos-matrajmo najpre ciklus koji se dobija pretragom u dubinu ovog stabla (po-lazei od proizvonog qvora), i sadri granu u obrnutom smeru uvek kad segrana prilikom vraaa prolazi u suprotnom smeru (ovaj ciklus odgovara,na primer, obilasku galerije u obliku stabla, sa slikama na oba zida svakoghodnika, idui uvek udesno). Svaka grana se tako prolazi taqno dva puta, pa jecena ovog ciklusa najvixe dva puta vea od cene MCST. Na kraju se ovaj cikluspreprava u ciklus TSP, idui preqicom uvek kad treba proi kroz granuve ukuqenu u ciklus (videti sliku 13). Drugim reqima, umesto povratka

11.5. TEHNIKE ZA RAD SA NP-KOMPLETNIM PROBLEMIMA 291

starom granom, idemo direktno do prvog nepregledanog qvora. Pretpostavkada su rastojaa euklidska je vana, jer obezbeuje da je uvek direktni putizmeu dva grada bar toliko dobar, koliko bilo koji zaobilazni put. Prematome, duina dobijenog ciklusa TSP je jox uvek maa od dvostruke duineminimalnog ciklusa TSP.

ttt

t

t

t

t

t t t

t

t

t

t(a)

ttt

t

t

t

t

t t t

t

t

t

t(b)

-

Ris. 13. (a) Minimalno povezujue stablo (MCST) (b) ciklusTSP dobijen od MCST polazei od sredeg qvora i idui uvekudesno.

Sloenost. Vremenska sloenost ovog algoritma odreena je brojem ko-raka u algoritmu za konstrukciju MCST.

11.5.2.4. Poboxae. Algoritam koji smo upravo opisali moe se pobo-xati na sledei naqin. egov "najgrubi" deo je pretvarae obilaska stablau ciklus TSP. Ta konverzija moe se posmatrati i na drugi naqin: ona formi-ra Ojlerov ciklus od stabla u kome je svaka grana udvostruqena. Posle togase konstruixe ciklus TSP korixeem preqica u Ojlerovom ciklusu. Kon-verzija stabla u Ojlerov ciklus moe se izvesti mnogo racionalnije. Ojlerovgraf moe da sadri samo qvorove parnog stepena. Posmatrajmo sve qvoroveneparnog stapena u stablu. Broj takvih qvorova mora biti paran (u protivnombi suma stepena qvorova bila neparna, xto je nemogue, jer je ta suma jednakadvostrukom broju grana). Ojlerov graf se od stabla moe dobiti dodavan-jem dovonog broja grana, qime se postie da stepeni svih qvorova postanuparni. Poxto se ciklus TSP sastoji od Ojlerovog ciklusa (sa nekim preqica-ma), voleli bismo da minimiziramo zbir duina dodatih grana. Razmotrimosada taj problem.

Dato je stablo u ravni, a ci je dodati mu neke grane, sa minimalnomsumom duina, tako da dobijeni graf bude Ojlerov. Svakom qvoru neparnogstepena mora se dodati bar jedna grana. Pokuxajmo da postignemo ci do-davaem taqno jedne grane svakom takvom qvoru. Pretpostavimo da ima 2kqvorova neparnog stepena. Ako dodamo k grana, tako da svaka od ih spaja dva

292 11. NP-KOMPLETNOST

qvora neparnog stepena, onda e stepeni svih qvorova postati parni. Problemtako postaje problem uparivaa. Potrebno je pronai uparivae minimalneduine koje pokriva sve qvorove neparnog stepena. Nalaee optimalnoguparivaa moe se izvesti za O(n3) koraka za proizvoni graf (ovo tvr-ee navodimo bez dokaza). Konaqni ciklus TSP se zatim dobija od Ojlerovoggrafa (koji obuhvata minimalno povezujue stablo i uparivae minimalneduine) korixeem preqica. Ciklus TSP dobijen ovim algoritmom od sta-bla sa slike 13 prikazan je na slici 14.

ttt

t

t

t

t

t t t

t

t

t

t(a)

ttt

t

t

t

t

t t t

t

t

t

t(b)

Ris. 14. Minimalni Ojlerov ciklus i odgovarajui ciklusTSP (a) minimalno povezujue stablo sa uparivaem, (b) cik-lus TSP dobijen od Ojlerovog ciklusa.

Teorema 11.12. Poboxani algoritam daje ciklus TSP qija je duinanajvixe 1.5 puta vea od duine minimalnog ciklusa TSP.

Dokazatel~stvo. Potrebno je oceniti duinu Ojlerovog ciklusa, jerse duina ciklusa posle uvoea eventualnih preqica moe samo smaiti.Ojlerov ciklus se sastoji od stabla i uparivaa. Oznaqimo sa Q minimal-ni ciklus TSP, a sa |Q| egovu duinu. Videli smo ve da je duina stablamaa ili jednaka od |Q|; prema tome, dovono je dokazati da duina upari-vaa ne prelazi |Q|/2. Ciklus Q sadri sve qvorove. Neka je D skup qvorovaneparnog stepena u polaznom stablu. Za skup D mogu se formirati dva disjunk-tna uparivaa sa zbirom duina ≤ |Q| na sledei naqin (videti sliku 15,na kojoj su zaokrueni qvorovi iz D). Zapoqiemo sa proizvonim qvoromv ∈ D i uparujemo ga sa sa najbliim qvorom (u smeru kazake na satu) duciklusa Q. Posle toga nastava se sa uparivaem u istom smeru. Ako upareniqvorovi nisu susedi u Q, onda je rastojae izmeu ih mae ili jednako odduine puta koji ih povezuje u Q (zbog nejednakosti trougla). Ovaj procesdaje jedno uparivae. Drugo uparivae dobija se ponavaem istog procesa usmeru suprotnom od kazake na satu. Suma duina oba uparivaa je najvixe|Q|, videti sliku 15. Meutim, poxto je M uparivae minimalne teine u

ZADACI 293

D, egova duina je maa ili jednaka od duine boeg od dva spomenutauparivaa (sa zbirom |Q|), pa je dakle maa ili jednaka od |Q|/2. ¤

t

t

t

tt

t

t

tt

t

h

h

h

h

hh

Ris. 15. Dva uparivaa qija suma duina ne prelazi duinuminimalnog ciklusa TSP.

Nalaee uparivaa minimalne teine znatno je sloenije od nalaeaminimalnog povezujueg stabla, ali se time dobija boa granica. Navedeniprimer ilustruje osnovnu karakteristiku ovog tipa algoritama: uopxtavase lakxi problem | ili se oslabuju (relaksiraju) neki elementi polaznogproblema | i tako se formira heuristika.

11.6. RezimePrethodna poglava su moda izazvale optimizam u vezi sa mogunoxu

konstrukcije dobrih algoritama. Ovo poglave treba da nas priblii real-nosti. Ima mnogo vanih problema koji se, naalost, ne mogu rexiti ele-gantnim, efikasnim algoritmima. Potrebno je da prepoznajemo takve prob-leme i da im pronalazimo neoptimalna, priblina rexea. Pri napadu naneki problem na raspolagau su dva pristupa. Moe se pokuxati sa tehnika-ma iz prethodnih poglava, da bi se problem rexio, ili mogu iskoristititehnike uvedene u ovom poglavu, i pokazati da je problem NP-kompletan. Dabi se izbegli mnogobrojni bezuspexni pokuxaji pre izbora ispravnog pristu-pa, potrebno je razviti intuiciju za ocenu teine problema.

Zadaci11.1. Pokazati da su svaka dva netrivijalna problema iz klase P polinomijalno ek-

vivalentna.11.2. Razmotrite sledei algoritam za utvrivae da li graf ima kliku veliqine

k. Najpre se generixu skupovi od po taqno k qvorova (ima ih O(nk)). Zatim se za svakipodgraf indukovan tim podskupom proverava da li je kompletan. Zaxto ovo nije algoritampolinomijalne vremenske sloenosti (xto bi imalo za posledicu P=NP)?

294 11. NP-KOMPLETNOST

11.3. Napisati 3 SAT izraz koji se dobija primenom postupka svoea SAT na 3 SAT(odeak 11.4.3) na izraz

(x + y + z + w + u + v)(x + y + z + w + u + v)(x + y + z + w + u + v)(x + y).

11.4. Dokazati da problem pokrivaq grana ostaje NP-kompletan qak i ako se uvedeograniqee da svi qvorovi u grafu moraju imati paran stepen.

11.5. Dokazati NP-kompletnost sledeeg problema. Za dati neusmereni povezan grafG = (V, E) i prirodni broj k ustanoviti da li G sadri kliku veliqine k i nezavisni skupveliqine k.

11.6. Dokazati da je sledei problem NP-kompletan. Dat je neusmereni graf G iprirodni broj k. Utvrditi da li G sadri podskup od k qvorova, qiji je indukovani pod-graf acikliqki.

11.7. Neka je E izraz u konjuktivnoj normalnoj formi (KNF), u kome se svaka promen-iva x pojavuje taqno jednom, i ena negacija x pojavuje se taqno jednom. Konstruisatialgoritam polinomijalne vremenske sloenosti za utvrivae da li je izraz E zadovoiv,ili dokazati da je ovaj problem NP-kompletan.

11.8. Dokazati da je sledea varijanta problema 3 SAT NP-kompletna. Ulaz je istikao i za problem 3 SAT. Potrebno je utvrditi da li postoji pridruivae vrednostipromenivim, takvo da je data formula taqna, i da u svakoj klauzi taqno jedan liter-al ima vrednost 1.

11.9. Zadat je regularni graf G (graf qiji svi qvorovi imaju isti stepen) i prirodnibroj k. Treba utvrditi da li G sadri kliku veliqine k. Dokazati da je ovaj problem NP-kompletan.

11.10. Neka je G = (V, E) neusmereni graf, qijem je svakom qvoru pridruen nekiposao. Dva qvora su povezana granom, ako se odgovarajui poslovi ne mogu izvrxavatiistovremeno (jer npr. zahtevaju isti resurs). Ovo su jedina ograniqea istovremenostiposlova: svaki skup poslova, takvih da bilo koja dva posla iz skupa nisu povezani, moese izvrxiti u jednom koraku. Dokazati da je sledei problem NP-kompletan. Dat je grafG = (V, E) i prirodni broj k. Ustanoviti mogu li se svi poslovi koji odgovaraju qvorovimaizvrxiti za k koraka.

11.11. Navesti primer familije grafova, za koju trajae bojea sa tri boje algorit-mom pretrage sa slike 12 raste eksponencijalno sa brojem qvorova n.

Glava 12

Paralelni algoritmi

12.1. UvodParalelno izraqunavae vixe nije egzotiqna oblast, i ve due vreme je

na glavnom pravcu razvoja raqunarstva. Razvija se vrlo brzo, qak i u odnosu nadruge raqunarske oblasti. U upotrebi je vixe tipova paralelnih raqunara, sabrojem procesora u opsegu od 2 do 65536, i veim. Razlike izmeu razliqitihpostojeih raqunara, qak i sa aspekta neobavextenog korisnika, vrlo su ve-like. Nemogue je usvojiti jedan opxti model izraqunavaa koji bi obuhvataosve 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 ihovu kon-strukciju. Poqie se sa zajedniqkim karakteristikama paralelnih algorita-ma. Zatim se ukratko opisuju neki osnovni modeli paralelnog izraqunavaa,a na kraju se navode primeri algoritama i tehnika.

Osnovne mere sloenosti za sekvencijalne algoritme su vreme izvrxa-vaa i veliqina korixene memorije. Ove mere su vane i kod paralelnihalgoritama, ali se mora voditi raquna i o drugim resursima, posebno o brojuprocesora. Postoje problemi koji su suxtinski sekvencijalni, koji se ne mogu"paralelizovati" qak ni ako je na raspolagau neograniqeni broj procesora.Ipak, veina ostalih problema moe se do nekog stepena paralelizovati. Xtovixe procesora se koristi | do neke granice | algoritam se bre izvrxa-va. Vano je prouqavati ograniqea paralelnih algoritama, i biti u stauokarakterisati probleme za koje postoje vrlo brza paralelna rexea. Pox-to je broj procesora ograniqen, isto tako je vano da se procesori efikasnokoriste. Sledei vaan elemenat je komunikacija izmeu procesora. Qesto jevixe vremena potrebno da dva procesora razmene podatke, nego da se izvr-xe jednostavne operacije sa podacima. Pored toga, trajae razmene podatakamoe da zavisi od "udaenosti" dva procesora u raqunaru. Prema tome, vanoje minimizirati komunikaciju i organizovati je na efikasni naqin. Sledeevano pitae je sinhronizacija, koja je veliki problem kod paralelnih algo-ritama kad se izvrxavaju na nezavisnim maxinama, povezanim nekom mreom

295

296 12. PARALELNI ALGORITMI

za komunikaciju. Takvi algoritmi se obiqno zovu distribuirani algorit-mi. ih zbog nedostatka prostora ovde neemo razmatrati; ograniqiemo sena modele sa potpunom sinhronizacijom.

Neki modeli paralelnog izraqunavaa sadre ograniqee da svi pro-cesori u jednom koraku izvrxavaju jednu istu instrukciju (nad eventualnorazliqitim podacima). Paralelni raqunari sa ovakvim ograniqeem zovu seSIMD (skraenica od Single–Instruction Multiple–Data ) raqunari. Par-alelni raqunari kod kojih svaki procesor moe da izvrxava razliqiti pro-gram zovu se MIMD (skraenica od Multiple–Instruction Multiple–Data )raqunari. Ukoliko se ne naglasi drugaqije, pretpostava se da su raqunari okojima je req MIMD raqunari.

12.2. Modeli paralelnog izraqunavaaDetaan pregled modela paralelnih raqunara zahtevao bi vixe prostora.

Spomenuemo samo osnovne modele, sa naglaskom na one koji se koriste u ovompoglavu. U ovom odeku izloiemo neka opxta razmatraa i definicijekoji se odnose na mnoge modele. Svaki od sledeih odeaka pokriva jedan odtipova modela, sadri egov detaniji opis i primere algoritama.

Vreme izvrxavaa algoritma oznaqavaemo sa T (n, p), gde je n veliqinaulaza, a p broj procesora. Odnos

S(p) = T (n, 1)/T (n, p)

zove se ubrzae algoritma. Paralelni algoritam je najefikasniji kad jeS(p) = p, kad algoritam dostie savrxeno ubrzae. Za vrednost T (n, 1)treba uzeti najboi poznati sekvencijalni algoritam. Vana mera iskor-ixenosti procesora je efikasnost paralelnog algoritma, koja se definixeizrazom

E(n, p) =S(p)

p=

T (n, 1)pT (n, p)

.

Efikasnost je odnos vremena izvrxavaa na jednom procesoru (kad izvrxa-va sekvencijalni algoritam) i ukupnog vremena izvrxavaa na p proceso-ra (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 E(n, p) = 1, onda je koliqinaraqunaa obavenog na svim procesorima u toku izvrxavaa algoritma jed-naka koliqini raqunaa koju zahteva sekvencijalni algoritam. U tom sluqajupostignuto je optimalno iskorixee procesora. Postizae optimalne efi-kasnosti je retko, jer se u paralelnim algoritmima moraju izvrxiti neka dop-unska izraqunavaa, koja nisu potrebna kod sekvencijalnog algoritma. Jedanod osnovnih cieva je maksimizirae efikasnosti.

Pri konstrukciji paralelnog algoritma moglo bi se fiksirati p, u skladusa brojem procesora na raspolagau, i pokuxati sa minimiziraem T (n, p).Ali nedostatak ovakvog pristupa je u tome xto bi on mogao da zahteva novialgoritam, kad god se promeni broj procesora. Zgodnije bi bilo konstruisati

12.2. MODELI PARALELNOG IZRAQUNAVAA 297

algoritam koji radi za xto je mogue vixe razliqitih vrednosti p. Raz-motriemo sada kako transformisati algoritam koji radi za neku vrednostp, u algoritam za mau vrednost p, bez znaqajne promene efikasnosti. U op-xtem sluqaju, algoritam sa T (n, p) = X moe se transformisati u algoritamsa T (n, p/k) ' kX, za proizvonu konstantu k > 1. Drugim reqima, moe sekoristiti za faktor k mae procesora, qije je vreme rada onda due za fak-tor k. Modifikovani algoritam moe se konstruisati zamenom svakog korakapolaznog algoritma sa k koraka, u kojima jedan procesor emulira (paralelno)izvrxavae jednog koraka na k procesora. Ovaj princip nije uvek primeniv.Na primer, mogue je da p nije deivo sa k, ili da algoritam zavisi od naqinapovezivaa procesora (o qemu e biti reqi u odeku 12.4), ili da donoxeeodluke o tome koje procesore emulirati zahteva takoe utroxak nekog vre-mena. Ipak, ovaj princip, takozvani princip imitiraa paralelizma,princip imitiraa paralelizma vrlo je opxti i koristan. On pokazuje da semoe smaiti broj procesora, ne meajui bitno efikasnost. Ako, na primer,polazni algoritam (koji je konstruisan za velike p) ima veliko ubrzae, on-da se mogu dobiti algoritmi koji postiu priblino isto ubrzae za bi-lo koju mau vrednost p. Prema tome, treba konstruisati algoritam sa xtoboim ubrzaem za maksimalni broj procesora, pri qemu efikasnost tre-ba da bude dobra (tj. bliska jedinici). Zatim, ako je na raspolagau maibroj procesora, i dae se moe koristiti isti algoritam. S druge strane,paralelni algoritmi sa malom efikasnoxu su korisni samo ako je na raspo-lagau veliki broj procesora. Pretpostavimo, na primer, da imamo algori-tam sa T (n, 1) = n i T (n, n) = log2 n, odnosno sa ubrzaem S(n) = n/log2 ni efikasnoxu E(n) = 1/log2 n. Pretpostavimo da nam je na raspolagaup = 256 procesora i da je n = 1024. Vreme izvrxavaa paralelnog algoritma jeT (1024, 256) = 4 log2 1024 = 40 (uz pretpostavku da je mogue imitirae para-lelizma bie T (n, p) = (n log2 n)/p), xto je ubrzae za faktor oko 25 u odnosuna sekvencijalni algoritam. S druge strane, za p = 16 vreme izvrxavaa je640, xto daje nedovono ubrzae (mae od 2 sa 16 procesora).

Modeli paralelnog izraqunavaa razlikuju se meusobno uglavnom po naq-inu komunikacije i sinhronizacije procesora. Razmatraemo samo modele kojipodrazumevaju potpunu sinhronizaciju i razliqite naqine povezivaa. Mod-eli sa zajedniqkom memorijom pretpostavaju da postoji zajedniqka mem-orija sa ravnomernim pristupom, tako da svaki procesor moe da pristupisvakoj promenivoj za jediniqno vreme. Ova pretpostavka o vremenu pristu-pa nezavisnom od broja procesora i veliqine memorije nije bax realna, alije dobra aproksimacija. Modeli sa zajedniqkom memorijom razlikuju se ponaqinu na koji obrauju konflikte prilikom pristupa memoriji. Pojedinealternative razmotriemo u odeku 12.3.

Zajedniqka memorija je obiqno najjednostavniji naqin za modelirae ko-munikacije, ali naqin koji je najtee hardverski realizovati. Drugi mode-li pretpostavaju da su procesori meusobno povezani posredstvom mree.

298 12. PARALELNI ALGORITMI

Mrea raqunara se moe predstaviti grafom, pri qemu qvorovi odgovara-ju procesorima, a dva qvora su povezana ako izmeu odgovarajuih procesorapostoji direktna veza. Svaki procesor obiqno ima lokalnu memoriju, kojojmoe da pristupa brzo. Komunikacija se ostvaruje porukama, koje moraju daprou vixe direktnih veza da bi doxle do odredixta. Prema tome, brzinakomunikacije zavisi od rastojaa izmeu procesora koji razmeuju poruke.Nekoliko razliqitih grafova je analizirano u ulozi skeleta mree raqu-nara. Vixe popularnih konfiguracija navedeno je u odeku 12.4.

Sledei model koji emo razmotriti je model sistoliqkog raqunan-ja. Sistoliqka arhitektura podsea na pokretnu traku u fabrici. Podaci sekreu kroz procesore ravnomerno, i tom prilikom se nad ima izvode jednos-tavne operacije. Umesto da pristupaju zajedniqkoj (ili lokalnoj) memoriji,procesori dobijaju ulazne podatke od svojih suseda, obrauju ih, i prosleujudae. Neki sistoliqki algoritmi navedeni su u odeku 12.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 sve ope-racije su Bulove operacije (disjunkcija, konjunkcija ili negacija). Posebnosu izdvojeni ulazni (sa ulaznim stepenom nula) i izlazni qvorovi (sa izlazn-im stepenom nula). Dubina kola je duina najdueg puta od nekog ulaznogdo nekog izlaznog qvora. Dubina odgovara vremenu izvrxavaa paralelnogalgoritma.

12.3. Algoritmi za raqunare sa zajedniqkom memorijomRaqunar sa zajedniqkom memorijom sastoji se od vixe procesora i zajed-

niqke memorije. U ovom odeku baviemo se samo potpuno sinhronizovanimalgoritmima. Pretpostavamo da se izraqunavae sastoji od koraka. U svakomkoraku svaki procesor izvrxava neku operaciju nad podacima kojima raspo-lae, qita iz zajedniqke memorije ili pixe u zajedniqku memoriju (u praksisvaki procesor moe da ima i lokalnu memoriju). Modeli sa zajedniqkommemorijom razlikuju se po tome kako obrauju memorijske konflikte. ModelEREW (Exclusive–Read Exclusive–Write ) ne dozvoava da dva procesoraistovremeno pristupaju istoj memorijskoj lokaciji. Model CREW (Concurent–Read Exclusive–Write ) dozvoava da vixe procesora istovremeno qitajusa iste memorijske lokacije, ali ne dozvoava da dva procesora istovremenopixu na istu lokaciju. Na kraju, model (Concurent–Read Concurent–Write) ne namee nikakva ograniqea na pristup procesora memoriji.

Modeli EREW i CREW su dobro definisani, ali nije jasno xta je rezul-tat istovremenog pisaa od strane dva procesora na jednu istu memorijskulokaciju. Ima vixe naqina za obradu istovremenih pisaa. Najslabiji CRCWmodel, jedini koji e biti ovde razmatran, dozvoava da vixe procesoraistovremeno pixu na istu lokaciju samo ako zapisuju istu vrednost. Akodva procesora pokuxaju da upixu istovremeno razliqite vrednosti na istu

12.3. ALGORITMI ZA RAQUNARE SA ZAJEDNIQKOM MEMORIJOM 299

lokaciju, prekida se sa izvrxavaem algoritma. Iako je to moda neoqeki-vano, videemo u odeku 12.3.2 da je ovakav model vrlo moan. Druga mogunostje pretpostaviti da su procesori numerisani, i da, ako vixe procesora pokuxa-ju istovremeni upis na istu lokaciju, realizuje se upis procesora sa najveimrednim brojem.

12.3.1. Paralelno sabirae. Zapoqiemo sa jednostavnim primeromparalelnog algoritma za rexavae problema, koji je na prvi pogled suxtinskisekvencijalan.

Problem. Izraqunati sumu dva n-bitna binarna broja.

Obiqan sekvencijalni algoritam najpre sabira dva bita najmae teine,a onda u svakom koraku sabira po dva bita, i zbiru eventualno dodaje prenossa nie pozicije. Na prvi pogled nemogue je predvideti ishod i-tog koraka,sve dok se ne saberu i− 1 bita najmae teine, jer prenos moe, a ne mora dapostoji. Ipak, mogue je konstruisati paralelni algoritam.

Koristimo indukciju po n. Prelaz sa n−1 na n ne moe da bude od velikekoristi, jer vodi iterativnom sekvencijalnom algoritmu. Pristup zasnovanna dekompoziciji qesto daje dobre rezultate kod paralelnih algoritama, pa i uovom sluqaju, jer moe da rexi sve mae potprobleme paralelno. Pretpostavi-mo da smo podelili problem na dva potproblema veliqine n/2, tj. na sabiraelevih i desnih sabiraka od po n/2 bita (zbog jednostavnosti pretpostavamoda je n stepen dvojke). Sume dva para brojeva mogu se izraqunati paralelno.Ipak, jox uvek ostaje problem prenosa. Ako suma delova mae teine imaprenos, mora se promeniti suma delova vee teine.

Problem rexava zapaae da postoje samo dve mogunosti | prenos posto-ji ili ne. Zahvaujui tome, moe se pojaqati induktivna hipoteza, tako daobuhvati oba sluqaja. Modifikovani problem glasi: pronai sumu dva broja,sa i bez prenosa na najniu poziciju. Pretpostavimo da smo rexili modi-fikovani problem za oba para sabiraka, i tako dobili qetiri broja L, LC , Di DC , koji predstavaju sumu nieg para bez prenosa, istu sumu sa prenosom,i odgovarajue sume za vixi par brojeva, redom. Za svaku od tih suma takoeznamo da li je pri enom izraqunavau doxlo do prenosa. Ukupnu sumu S (bezprenosa na najnii bit) qine L sa D ili DC , zavisno od toga da li je suma Lproizvela prenos. Ukupna suma SC sa prenosom dobija se na isti naqin, samose L zameuje sa LC .

Problem veliqine n svodi se na rexavae dva potproblema veliqine n/2 ina izvrxavae konstantnog broja koraka za objediavae dva rezultata. Pox-to se oba potproblema mogu rexiti paralelno | pretpostavka je da procesorimogu da pristupe razliqitim bitima nezavisno | dobija se diferencna jed-naqina T (n, n) = T (n/2, n/2) + O(1), qije je rexee T (n, n) = O(log n). Poredtoga, poxto su dva potproblema potpuno nezavisna, ovaj algoritam podrazume-va samo model EREW. Ovaj algoritam nije najboi za paralelno sabirae alije dobar primer jednostavne paralelizacije algoritma. Kad za neki problem

300 12. PARALELNI ALGORITMI

postane jasno da se moe efikasno rexiti paralelno, rexee se moe daepoboxavati.

12.3.2. Algoritmi za nalaee maksimuma.Problem. Pronai najvei od n razliqitih brojeva, zadatih u vektoru.Ovaj problem rexiemo za dva razliqita modela sa zajedniqkom memori-

jom, EREW i CRCW. Algoritmi za oba modela koriste tehnike koje se koristepri rexavau mnogih drugih problema.

12.3.2.1. EREW model. Direktni sekvencijalni algoritam za nalaeemaksimuma zahteva n−1 uporeivae. Uporeivae se moe shvatiti kao par-tija koju igraju dva broja, u kojoj pobeuje vei. Problem nalaea maksimumaje tada ekvivalentan organizovau turnira, u kome je pobednik najvei broj ucelom skupu. Efikasan naqin da se turnir organizuje paralelno je da se isko-risti stablo. Igraqi se dele u parove za prvo kolo (pri qemu eventualno jedanigraq ne uqestvuje, ako je ukupan broj igraqa neparan), pobednici se ponovodele u parove, i tako dae do finala. Broj kola je dlog2 ne. Turnir se moetransformisati u paralelni algoritam tako xto se svakoj partiji dodeliprocesor (procesor igra ulogu sudije u partiji). Meutim, treba odbezbeditida svaki procesor zna brojeve takmiqare. To se moe postii kopiraempobednika u partiji na poziciju sa veim indeksom od pozicija dva uqesnikapartije. Preciznije, ako partiju igraju xi i xj , j > i, onda se vei od brojevaxi, xj kopira na poziciju j. U prvom kolu procesor Pi uporeuje x2i−1 sa x2i

(1 ≤ i ≤ n/2), i zameuje ih ako je potrebno, tako da na veu poziciju ode veibroj. U drugom kolu procesor Pi uporeuje x4i−2 sa x4i (1 ≤ i ≤ n/4), i takodae. Ako je na primer n = 2k, onda u posledem, k-tom kolu, P1 uporeujexn/2 sa xn, i eventualno ih zameuje. Najvei broj nalazie se na poziciji n.Poxto svaki broj u jednom trenutku uqestvuje samo u jednoj partiji, dovoanje model EREW. Vreme izvrxavaa ovog jednostavnog algoritma je oqiglednoO(log n). Pokuxaemo sada da smaimo broj korixenih procesora.

Algoritam koji smo upravo razmotrili zahteva bn/2c procesora, a broj ko-raka je T (n, bn/2c) = dlog2 ne. Poxto je za sekvencijalni algoritam T (n, 1) =n− 1, efikasnost ovog paralelnog algoritma je E(n, n/2) ' 2/log2 n. Ako namje ionako na raspolagau bn/2c procesora (na primer, ako je algoritam zanalaee maksimuma deo drugog algoritma, kome je neophodno toliko proce-sora), onda je ovaj algoritam jednostavan i efikasan. Meutim, uz mali napormoe se doi do algoritma sa vremenom izvrxavaa O(log n) i efikasnoxuO(1).

Ukupan broj uporeivaa potrebnih za ovaj algoritam je n−1, isti kao i zasekvencijalni algoritam. Razlog male efikasnosti lei u tome xto se veinaprocesora ne koristi u kasnijim kolima. Efikasnost se moe poboxatismaivaem broja procesora i uravnoteavaem ihovog optereea na sle-dei naqin. Pretpostavimo da koristimo samo oko n/log2 n procesora. Ulazse moe podeliti u n/log2 n grupa (sa priblino log2 n elemenata u svakojgrupi) i zatim svakoj grupi dodeliti po jedan procesor. U prvoj fazi svaki

12.3. ALGORITMI ZA RAQUNARE SA ZAJEDNIQKOM MEMORIJOM 301

procesor pronalazi maksimum u svojoj grupi koristei sekvencijalni algo-ritam, koji se sastoji od oko log2 n koraka. Posle toga ostaje da se odredimaksimum otprilike n/log2 n maksimuma, pri qemu sad ima dovono proce-sora da se iskoristi turnirski algoritam. Vreme izvrxavaa turnira (podpretpostavkom da je n stepen dvojke) je T (n, dn/log2 ne) ' 2 log2 n. Odgovara-jua efikasnost je E(n) ' 1/2. Pokuxaemo sada da formalizujemo ovu ideju,koja omoguuje uxtedu na broju procesora.

Za algoritam kaemo da je statiqki ako se unapred zna pridruivaeprocesora operacijama. Dakle, unapred znamo za svaki korak i algoritma i zasvaki procesor Pj operaciju i operande koje Pj koristi u koraku i. Algoritamza nalaee maksimuma je primer statiqkog algoritma, jer se unapred znajuindeksi uqesnika u svakoj partiji.

Lema 12.1 (Brentova lema). Ako postoji statiqki EREW algoritamsa T (n, p) = O(t(n)), takav da je ukupan broj koraka (na svim procesorima)s(n), onda postoji statiqki EREW algoritam sa T (n, s(n)/t(n)) = O(t(n)).

Primetimo da ako je s(n) jednako sekvencijalnoj sloenosti algoritma,onda modifikovani algoritam ima efikasnost O(1).

Dokazatel~stvo. Neka je T (n, p) ≤ t(n) za sve dovono velike n, i nekaje ai ukupan broj koraka koje izvrxavaju svi procesori u i-tom koraku algo-ritma, i = 1, 2, . . . , t(n). Tada je

∑t(n)i=1 ai = s(n). Ako je ai ≤ s(n)/t(n), onda ima

dovono procesora za paralelno izvrxavae koraka i. U protivnom se koraki zameuje sa dai/(s(n)/t(n))e koraka u kojima raspoloivih s(n)/t(n) proce-sora emuliraju korake, koje u originalnom algoritmu izvrxava p procesora(koristei princip imitiraa paralelizma). Ukupan broj koraka je sada

t(n)∑

i=1

⌈ai

s(n)/t(n)

⌉≤

t(n)∑

i=1

(ait(n)s(n)

+ 1)

= t(n) +t(n)s(n)

t(n)∑

i=1

ai = 2t(n).

Prema tome, vreme izvrxavaa modifikovanog algoritma je takoe O(t(n)).¤

Ovo tvree poznato je kao Brentova lema. Brentova lema pokazuje da unekim sluqajevima efikasnost paralelnog algoritma odreena odnosom ukup-nog broja operacija (operacija koje izvrxavaju svi procesori) i vremena izvr-xavaa sekvencijalnog algoritma.

Ograniqee da algoritam bude statiqki je potrebno, jer se mora znati kojeprocesore treba emulirati. Brentova lema je taqna i za algoritme koji nisustatiqki, pod uslovom da se emulacija moe lako izvesti. Primer gde se ovalema ne moe primeniti je sledei. Pretpostavimo da imamo n procesora in elemenata. Posle prvog koraka neki procesori odluquju (na osnovu rezul-tata prvog koraka) da prestanu sa radom. Isto se dexava i drugom, treemkoraku, itd. Ovaj algoritam je sliqan turnirskom algoritmu, izuzev xto se uovom sluqaju ne zna koji procesori odustaju od daeg rada. Ako pokuxamo daemuliramo preostale procesore posle na primer prvog koraka, potrebno je da

302 12. PARALELNI ALGORITMI

znamo koji su jox aktivni. Da bi se to ustanovilo, potrebno je izvrxiti nekaizraqunavaa.

12.3.2.2. CRCW model. Namee se utisak da paralelni algoritam ne moeda nae maksimum za mae od log2 n koraka, ako se koriste samo uporeivan-ja. Meutim, to nije taqno. Sledei algoritam sa vremenom izvrxavaa O(1)ilustruje mogunosti istovremenih upisa. Podrazumeva se varijanta istovre-menih upisa, u kojoj dva ili vixe procesora mogu da pixu istovremeno naistu lokaciju samo ako zapisuju isti podatak.

Koristi se n(n−1)/2 procesora, tako da se procesor Pij dodeuje paru ele-menata i, j. Pored toga, svakom elementu xi pridruuje se zajedniqka (dee-na) promeniva vi, sa poqetnom vrednoxu 1. U prvom koraku svaki procesoruporeuje svoja dva elementa i zapisuje 0 u promenivu pridruenu maemelementu. Poxto je samo jedan elemenat vei od svih ostalih, samo jedna odpromenivih vi zadrava vrednost 1. U drugom koraku procesori pridruenipobedniku mogu da ustanove da je on pobednik i da objave tu qienicu (naprimer, upisivaem egovog indeksa u posebnu zajedniqku promenivu, rezul-tat). Ovaj algoritam zahteva samo dva koraka, nezavisno od n. Meutim, ego-va efikasnost je vrlo mala, jer on zahteva O(n2) procesora. Ovo je takozvanidvokoraqni algoritam.

Efikasnost dvokoraqnog algoritma moe se poboxati sliqno onom kodmodela EREW. Ulazni podaci dele se u male grupe, tako da se svakoj grupimoe dodeliti dovono procesora, da bi se maksimum grupe mogao odreditidvokoraqnim algoritmom. Sa opadaem broja kandidata raste broj raspoloi-vih procesora po kandidatu, pa se moe poveati veliqina grupe. Dvokoraqnialgoritam omoguuje odreivae maksimuma u grupi veliqine k sa k(k − 1)/2procesora, za konstantno vreme. Pretpostavimo da imamo ukupno n procesorai da je n stepen dvojke. U prvom ciklusu veliqina svake grupe je 2 i maksimumu svakoj grupi moe se odrediti u jednom koraku. U drugi ciklus ulazi sesa n/2 elemenata, i (naravno) n procesora. Ako formiramo grupe od po 4elementa, imaemo n/8 grupa, xto nam omoguuje da svakoj grupi dodelimo8 procesora. Ovo je dovono, jer je 4 · (4 − 1)/2 = 6. U trei ciklus ulazise sa n/8 elemenata. Pokuxajmo da odredimo najveu moguu veliqinu grupekoja se moe obraditi na ovaj naqin. Ako je veliqina grupe g, onda je brojgrupa n/8g, i za svaku grupu imamo na raspolagau 8g procesora. Za primenudvokoraqnog algoritma na grupu veliqine g potrebno je g(g − 1)/2 procesora,pa mora da bude g(g−1)/2 ≤ 8g, odnosno g ≤ 17; jednostavnije je uzeti vrednostg = 16. Uopxte, u i-ti ciklus se ulazi sa n/22i−1−1 elemenata, koji se dele nan/22i−1 grupa po g = 22i−1 elemenata, i ≥ 1. Za nalaee maksimuma u grupidvokoraqnim algoritmom dovono je g(g − 1)/2 ≤ g2/2 = 22i−1 procesora, paje za nalaee maksimuma u svim grupama dovono

n

22i−1· 22i−1 = n

12.3. ALGORITMI ZA RAQUNARE SA ZAJEDNIQKOM MEMORIJOM 303

procesora. U naredni ciklus ulazi se sa po jednim elementom iz svake grupe,dakle sa n/22i−1 elemenata, xto indukcijom dokazuje ispravnost ove kon-strukcije. Broj ciklusa i do zavrxetka algoritma ograniqen je uslovom daje broj elemenata na poqetku i-tog ciklusa mai od jedan: n/22i−1−1 ≤ 1, ilii ≥ log2(log2 n + 1) + 1. Dakle broj ciklusa, a time i broj koraka prilikomizvrxea ovog algoritma je O(log log n).

Iako je ovaj algoritam nexto sporiji od dvokoraqnog (O(log log n) u odno-su na O(1)), egova efikasnost je mnogo boa. Ona iznosi O(1/ log log n) uodnosu na O(1/n) kod dvokoraqnog algoritma. Opisana tehnika moe se naz-vati podeli i smrvi, jer se ulaz deli u grupe, koje su dovono male da semogu "smrviti" mnoxtvom procesora. Primena ove tehnike nije ograniqenana model CRCW.

12.3.3. Paralelni problem prefiksa. Paralelni problem prefiksaje vaan jer se koristi kao osnovni elemenat pri konstrukciji mnogih pa-ralelnih algoritama. Neka je ? proizvona asocijativna binarna operacija(operacija koja zadovoava uslov x ? (y ? z) = (x ? y) ? z) za proizvone x, yi z), koju emo oznaqavati imenom proizvod. Na primer, ? moe da oznaqavasabirae, mnoee ili maksimum dva broja.

Problem. Dat je niz brojeva x1, x2, . . . , xn. Izraqunati proizvode x1 ?x2 ?· · · ? xk za k = 1, 2, . . . , n.

Oznaqimo sa PR(i, j) proizvod xi ? xi+1 ? · · · ? xj . Potrebno je izraqunatiPR(1, k) za k = 1, 2, . . . , n. Sekvencijalna verzija problema prefiksa je tri-vijalna | prefiksi se jednostavno izraqunavaju redom. Paralelni problemprefiksa nije tako lako rexiti. Iskoristiemo metod dekompozicije, uz uo-biqajenu pretpostavku da je n stepen dvojke.

Induktivna hipoteza. Umemo da reximo paralelni problem prefiksaza n/2 elemenata.

Sluqaj jednog elementa je trivijalan. Algoritam zapoqie podelom ulazana dve polovine, koje se rexavaju indukcijom. Na taj naqin dobijamo vrednostiPR(1, k) i PR(n/2 + 1, n/2 + k) za k = 1, 2, . . . , n/2. Prva polovina ovih vred-nosti moe se iskoristiti direktno. Vrednosti PR(1,m) za m = n/2+1, n/2+2, . . . , n dobijaju se izraqunavaem proizvoda PR(1, n/2)?PR(n/2+1,m). Obaova qlana poznata su po indukciji (ve su izraqunata; primetimo da je isko-rixena asocijativnost operacije ?). Algoritam je prikazan na slici 1.

Sloenost. Ulaz je podeen u dva disjunktna skupa u svakom rekur-zivnom pozivu algoritma. Oba potproblema se mogu dakle rexiti paralel-no u modelu EREW. Ako imamo n procesora za problem veliqine n, ondase polovina ih moe dodeliti svakom potproblemu. Kombinovae rexeapotproblema sastoji se od n/2 mnoea, koja se mogu izvrxiti paralelno,ali je potreban model CREW, jer se u svakom mnoeu koristi PR(1, n/2),odnosno x[Srednji]. Iako vixe procesora istovremeno da qitaju x[Srednji],

304 12. PARALELNI ALGORITMI

Algoritam Paralelni Prefiks 1(x, n);

Ulaz: x (vektor sa n elemenata).pretpostava se da je n stepen dvojkeIzlaz: x (qiji i-ti elemenat sadri i-ti prefiks).begin

PP 1(1, n)

end

procedure PP 1(Levi, Desni);

begin

if Desni− Levi = 1 then

x[Desni] := x[Levi] ? x[Desni] ? je asocijativna binarna operacijaelse

Srednji := (Levi + Desni− 1)/2;

do in parallel

PP 1(Levi, Srednji); dodeeno procesorima od 1 do n/2PP 1(Srednji + 1, Desni); dodeeno procesorima od n/2 + 1 do n

for i := Srednji + 1 to Desni do in parallel

x[i] := x[Srednji] ? x[i]

end

Ris. 1. Algoritam Paralelni prefiks 1.

oni pixu na razliqite lokacije, pa model CRCW nije neophodan. Ukupan brojkoraka je T (n, n) = O(log n), pa je efikasnost algoritma E(n, n) = O(1/ log n)(vreme izvrxavaa sekvencijalnog algoritma je O(n)).

Na alost, efikasnost ovog algoritma ne moe se poboxati korixeemBrentove leme, jer je ukupan broj koraka na svim procesorima O(n log n). Prematome, da bi se poboxala efikasnost, mora se smaiti ukupan broj koraka.

12.3.3.1. Poboxae efikasnosti paralelnog prefiksa. Ideja koja omogu-uje rexavae problema je korixee iste induktivne hipoteze, ali uz podeluulaza na drugaqiji naqin. Pretpostavimo ponovo da je n stepen dvojke i daimamo n procesora. Neka E oznaqava skup svih xi sa parnim indeksima i.Ako izraqunamo prefikse svih elemenata iz E, onda je izraqunavae ostalihprefiksa (onih sa neparnim indeksima) lako: ako je poznato PR(1, 2i), onda seneparni prefiks PR(1, 2i+1) dobija izraqunavaem samo jox jednog proizvodaPR(1, 2i) ? x2i+1, i = 1, 2, . . . , n/2, Prefiksi elemenata iz E mogu se odreditiu dve faze. Najpre se (paralelno) izraqunavaju proizvodi x2i−1 ? x2i, kojise zatim smextaju u x2i, i = 1, 2, . . . , n/2. Drugim reqima, izraqunavaju seproizvodi svih elemenata iz E sa svojim levim susedima. Zatim se rexava(indukcijom) problem paralelnog prefiksa za n/2 elemenata iz E. Rezultat zasvako x2i je taqan prefiks, jer je svako x2i ve zameeno proizvodom sa x2i−1.Poxto se znaju prefiksi za sve elemente sa parnim indeksima, preostali

12.3. ALGORITMI ZA RAQUNARE SA ZAJEDNIQKOM MEMORIJOM 305

prefiksi se mogu izraqunati u jednom paralelnom koraku na ve spomenutinaqin. Lako se proverava da se ovaj algoritam moe izvrxavati u modeluEREW. Algoritam je prikazan na slici 2.

Algoritam Paralelni Prefiks 2(x, n);

Ulaz: x (vektor sa n elemenata).pretpostava se da je n stepen dvojkeIzlaz: x (qiji i-ti elemenat sadri i-ti prefiks).begin

PP 2(1)

end

procedure PP 2(Korak);

begin

if Korak = n/2 then

x[n] := x[n/2] ? x[n] ? je asocijativna binarna operacijaelse

for i := 1 to n/(2 ·Korak) do in parallel

x[2 · i ·Korak] := x[(2 · i− 1) ·Korak] ? x[2 · i ·Korak];

PP 2(2 ·Korak);

for i := 1 to n/(2 ·Korak)− 1 do in parallel

x[(2 · i + 1) ·Korak] := x[2 · i ·Korak] ? x[(2 · i + 1) ·Korak]

end

Ris. 2. Algoritam Paralelni prefiks 2.

Sloenost. Obe pete u algoritmu Paralelni prefiks 2 mogu se izvr-xiti paralelno za vreme O(1) sa n/2 procesora. Rekurzivni poziv prime-uje se na problem dvostruko mae veliqine, pa je vreme izvrxavaa algo-ritma O(log n). Ukupan broj koraka s(n) zadovoava diferencnu jednaqinus(n) = s(n/2) + n − 1, s(2) = 1, iz qega sledi da je s(n) = O(n) (preciznije,s(2k) = 2k+1 − k − 2). Zbog toga se sada moe iskoristiti Brentova lema zapoboxae efikasnosti: algoritam se moe promeniti tako da se za vremeO(log n) izvrxava na samo O(n/ log n) procesora, odnosno da mu efikasnostbude O(1). Kuqna ideja poboxaa je korixee samo jednog rekurzivnogpoziva (umesto dva), pri qemu se korak objediavaa i dae izvrxava para-lelno.

12.3.4. Odreivae rangova u povezanoj listi. U paralelnim algo-ritmima mnogo je tee raditi sa povezanim listama nego sa vektorima, jersu liste suxtinski sekvencijalne. Povezanoj listi moe se pristupiti samopreko glave (prvog elementa), i lista se mora prolaziti elemenat po elemenat,bez mogunosti paralelizacije. U mnogim sluqajevima su, meutim, elementi

306 12. PARALELNI ALGORITMI

liste (odnosno pokazivaqi na ih) smexteni u vektor; redosled elemenataliste nezavisan je od redosleda u vektoru. U takvim sluqajevima, kad se listipristupa paralelno, postoji mogunost primene brzih paralelnih algorita-ma.

Rang elementa u povezanoj listi definixe se kao rastojae elementa odkraja liste. Tako, na primer, prvi elemenat ima rang n, drugi n− 1, itd.

Problem. Data je povezana lista od n elemenata koji su smexteni u nizA duine n. Izraqunati rangove svih elemenata liste.

Sekvencijalni problem se moe rexiti prostim prolaskom kroz listu.Metod koji emo iskoristiti za konstrukciju paralelnog algoritma zove seudvostruqavae. Svakom elementu dodeuje se po jedan procesor. Na poqetkusvaki procesor zna samo adresu desnog (narednog) suseda svog elementa u listi.Posle prvog koraka svaki procesor zna elemenat na rastojau dva (du liste)od svog elementa. Ako u koraku i, svaki procesor zna adresu elementa na ras-tojau k od svog elementa, onda u narednom koraku svaki procesor moe dapronae adresu elementa na rastojau 2k. Proces se nastava sve dok svi pro-cesori ne dostignu kraj liste. Neka je N [i] adresa najdaeg elementa desnood elementa i u listi, koju zna procesor Pi. Na poqetku je N [i] desni susedelementa i (izuzev za posledi elemenat u listi, qiji je pokazivaq na desnogsuseda nil). U suxtini, procesor Pi u svakom koraku zameuje N [i] vrednoxuN [N [i]], sve dok ne dostigne kraj liste. Neka je R[i] rang elementa i. Na poqetkuse promenivoj R[i] dodeuje vrednost 0, izuzev za posledi elemenat u listi,za koga se ona postava na vrednost 1 (ovaj elemenat se od ostalih razlikuje popokazivaqu, koji ima vrednost nil). Kad procesor dobije adresu suseda sa ran-gom R razliqitim od nule, on moe da izraquna svoj rang (odnosno rang svogelementa). Na poqetku samo elemenat ranga 1 zna svoj rang. Posle prvog korakaelemenat ranga 2 otkriva da egov sused ima rang 1, pa zakuquje da je egovsopstveni rang 2. Posle drugog koraka elementi sa rangom 3 i 4 ustanovavajusvoje rangove, itd. Ako Pi ustanovi da N [i] pokazuje na "rangirani" eleme-nat ranga R posle d koraka udvostruqavaa, onda je rang elementa i jednak2d−1 + R. Ovaj algoritam (slika 3) se moe lako prilagoditi modelu EREW,videti zadatak 12.2. (dovono je da svaki procesor nezavisno izraqunava svojukopiju D[i] promenive D).

Sloenost. Proces udvostruqavaa omoguuje da svaki procesor dostig-ne kraj liste posle najvixe dlog2 ne koraka, pa je T (n, n) = O(log n). Efikas-nost algoritma je E(n, n) = O(1/ log n). Popravka efikasnosti zahtevala bitemenu preradu algoritma, jer je ukupan broj koraka O(n log n).

Poznavae rangova omoguuje transformaciju liste u vektor za O(log n)koraka. Posle izraqunavaa svih rangova, elementi se mogu prekopirati nasvoje lokacije u vektoru, pa se ostatak izraqunavaa moe izvrxiti direktnona vektoru, xto je mnogo jednostavnije.

12.3. ALGORITMI ZA RAQUNARE SA ZAJEDNIQKOM MEMORIJOM 307

Algoritam Rangovi(N);

Ulaz: N (niz od n elemenata).Izlaz: R (rangovi svih elemenata u nizu).begin

D := 1;

Svaki procesor moe imati svoju lokalnu promenivu Dovde je D zajedniqka promenivado in parallel procesor Pi je aktivan dok R[i] ne postane razliqito od nule

R[i] := 0;

if N [i] = nil then R[i] := 1;

while R[i] = 0 do

if R[N [i]] 6= 0 then

R[i] := D + R[N [i]]

else

N [i] := N [N [i]];

D := 2 ·Dend

Ris. 3. Paralelni algoritam za odreivae rangova eleme-nata povezane liste.

12.3.5. Tehnika Ojlerovog obilaska. Mnogi algoritmi za rad sa stab-lima mogu se paralelizovati tako da se paralelno obrauje kompletna genera-cija qvorova (na primer, kod turnirskog algoritma za nalaee maksimuma).Vreme izvrxavaa takvog algoritma je proporcionalno visini stabla. Ako jestablo sa n qvorova dovono uravnoteeno i visina mu je O(log n), onda je ovajpristup sasvim dobar. Meutim, ako stablo nije uravnoteeno, visina stablamoe da bude n−1 u najgorem sluqaju, pa se mora traiti neki drugi pristup.Tehnika Ojlerovog obilaska je alatka za konstrukciju paralelnih algoritamana stablima, pogodna i za neuravnoteena stabla.

Neka je T stablo. Pretpostavimo da je T predstaveno uobiqajenom listompovezanosti, uz jednu dopunu. Kao i obiqno, postoji pokazivaq E[i] na poqetakliste grana susednih qvoru i (ako je ova lista prazna, onda E[i] ima vrednostnil). Ta lista sastoji se od slogova koji sadre odgovarajuu granu (i, j) (pritome je dovono smestiti samo j, jer je i poznato) i pokazivaq Naredna(i, j) nanarednu granu u listi. Svaka neusmerena grana (i, j) predstavena je sa dveusmerene kopije, (i, j) i (j, i). Slogovi liste sadre i dodatni pokazivaq: slogkoji odgovara grani (i, j) sadri pokazivaq na granu (j, i). Ovo je potrebnoda bi se grana (j, i) mogla brzo pronai kad se zna adresa grane (i, j). Primerovako predstavenog stabla dat je na slici 4; pokazivaqi na kopije grana zbogpreglednosti nisu prikazani.

308 12. PARALELNI ALGORITMI

t

t

t

²

c

f

t

tO

W

d

g

t

²

a

e

t

tO

W

b

h

1

25

3 4

E1 - (1, 2) - (1, 5)

a b

2

3

4

5

-

-

-

-

(2, 3)

(3, 2)

(4, 2)

(5, 1)

- (2, 1)c

f

g

h

e

- (2, 4)

d

±

®

¸

°

MU

UK

Ris. 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 cik-lusu za usmerenu verziju stabla (u ciklusu se svaka grana pojavuje dva puta).Kad se zna ova lista, mnoge operacije sa stablom mogu se izvesti direkt-no na listi, kao da je lista linearna. Sekvencijalnim algoritmom lako semoe pregledati stablo i usput izvrxiti potrebne operacije. Ovakva "line-arizacija" omoguuje da se operacije sa stablom efikasno izvode paralelno.Videemo dva primera takvih operacija, poxto prethodno razmotrimo formi-rae Ojlerovog ciklusa.

Sekvencijalno nalaee Ojlerovog obilaska stabla T (u kome se svakagrana pojavuje dva puta) je jednostavno. Moe se izvesti obilazak stablakoristei pretragu u dubinu, vraajui se suprotno usmerenom granom pri-likom svakog povratka nazad u toku pretrage. Sliqna stvar se moe izvestii paralelno. Neka w(i, j) oznaqava granu koja sledi iza grane (i, j) u ciklusu.Tvrdimo da se w(i, j) moe definisati sledeom jednakoxu

w(i, j) =

Naredna(j, i) ako Naredna(j, i) nije nilE[j] u ostalim sluqajevima ,

na osnovu koje se lako paralelno izraqunava. Drugim reqima, lista granasusednih qvoru j prolazi se cikliqkim redosledom (ako je (j, i) posleda granau listi qvora j, onda se uzima prva grana iz te liste, ona na koju pokazujeE[j]). Na primer, ako krenemo od grane a na slici 4, onda se ciklus sastojiod grana a, d, g, c, f , e, b, h, i ponovo a. Qienica da Naredna(j, i) sledi iza(i, j) u ciklusu obezbeuje da e grana (j, i) doi na red tek kad budu izabranesve ostale grane susedne qvoru j. Prema tome, podstablo sa korenom u j biekompletno pregledano pre povratka u qvor i. Dokaz ispravnosti ove procedureostavamo qitaocu kao vebae.

12.4. ALGORITMI ZA MREE RAQUNARA 309

Kad je lista grana u Ojlerovom obilasku konstruisana, proizvona grana(r, t) bira se za polaznu, a grana koja joj prethodi oznaqava se kao kraj liste.Qvor r se bira za koren stabla. Posle toga se grane algoritmom Rangovi saslike 3 mogu numerisati, u skladu sa svojim poloajem u listi. Neka R(i, j)oznaqava rang grane (i, j) u listi. Tako je, na primer, R(r, t) = 2(n−1), gde je nbroj qvorova. Prikazaemo sada dva primera operacija sa stablom | dolaznunumeraciju qvorova, i izraqunavae broja potomaka za sve qvorove.

Za granu (i, j) 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 (i, j) je direk-tna grana ako i samo ako je R(i, j) > R(j, i). Poxto su dve kopije grane (i, j)povezane pokazivaqima, lako je ustanoviti koja je od ih direktna grana. Xtavixe, ova provera se moe obaviti paralelno za sve grane. Direktne grane suinteresantne, jer odreuju redosled qvorova pri dolaznoj numeraciji. Neka je(i, j) direktna grana koja vodi do qvora j (odnosno, qvor i je otac qvora j ustablu). Ako je f(i, j) broj direktnih grana koje slede iza (i, j) u listi, ondaje redni broj qvora j jednak n− f(i, j). Redni broj korena r, jedinog qvora dokoga ne vodi ni jedna direktna grana, je 1. Primenom varijante algoritma saudvostruqavaem moe se sada izraqunati vrednost f(i, j) za svaku direktnugranu (i, j). Precizniju razradu algoritma ostavamo qitaocu kao vebae.

Drugi primer je izraqunavae broja potomaka svakog qvora u stablu. Nekaje (i, j) (jedinstvena) direktna grana koja vodi do zadatog qvora j. Posmatrajmograne koje slede iza grane (i, j) u listi. Broj qvorova ispod j u stablu jednakje broju direktnih grana ispod j u stablu. Mi ve znamo kako se paralelnoizraqunavaju vrednosti f(i, j), jednake broju direktnih grana koje slede izagrane (i, j) u listi. Na sliqan naqin f(j, i) je broj direktnih grana koje sledeiza grane (j, i) u listi. Lako je videti da je broj potomaka qvora j jednakf(i, j)− f(j, i). Vreme izvrxavaa oba opisana algoritma na modelu EREW jeT (n, n) = O(log n)

12.4. Algoritmi za mree raqunaraMree raqunara mogu se modelirati grafovima, obiqno neusmerenim. Pro-

cesori odgovaraju qvorovima, a dva qvora su povezana granom ako postoji di-rektna veza izmeu odgovarajuih procesora. Svaki procesor ima svoju lokalnumemoriju, a posredstvom mree moe da pristupi lokalnim memorijama drugihprocesora. Prema tome, sva memorija se moe deliti, ali cena pristupa nekojpromenivoj zavisi od lokacija procesora i promenive. Pristup eenojpromenivoj moe biti brz koliko i lokalni pristup (ako je promenivau istom procesoru), ili toliko spor koliko i prolazak kroz celu mreu (usluqaju kad graf ima oblik niza povezanih qvorova). Trajae pristupa jenegde izmeu ove dve krajnosti. Procesori komuniciraju razmenom poruka.Kad procesor eli da pristupi promenivoj smextenoj u lokalnoj memorijidrugog procesora, on xae poruku sa zahtevom za promenivom. Poruka seusmerava kroz mreu.

310 12. PARALELNI ALGORITMI

Vixe razliqitih grafova koriste se za mree raqunara. Najjednostavnijimeu ima su linearni niz, prsten, binarno stablo, zvezda i dvodimenzional-na mrea. Efikasnost komunikacije raste sa brojem grana u mrei. Meutim,grane su skupe | to se moe objasniti poveaem povrxine koju zauzimajuveze, a time poveaem dimenzija mree i vremena komunikacije. Zbog togase obiqno trai kompromis. Ne postoji tip grafa koji je univerzalno dobar.Pogodnost odreenog grafa bitno zavisi od naqina komuniciraa u konkret-nom algoritmu. Meutim, postoje neke osobine grafova, koje mogu biti vrlokorisne. U nastavku emo ih navesti, zajedno sa primerima mrea raqunara.

Bitan parametar mree je dijametar odgovarajueg grafa, tj. najvee ras-tojae neka dva qvora. Dijametar odreuje maksimalni broj grana na putuporuka do odredixta. Dvodimenzionalna mrea n × n ima dijametar 2n, akompletno binarno stablo sa n qvorova ima dijametar 2 log2(n + 1)− 2. prematome moe da isporuqi poruku mnogo bre nego dvodimenzionalna mrea. Sdruge strane, stablo ima usko grlo, jer sav saobraaj iz jedne u drugu polovinustabla prolazi kroz koren. Dvodimenzionalna mrea nema usko grlo i vrlo jesimetriqna, xto je vano za algoritme u kojima je komunikacija simetriqna.

Hiperkocka je popularna struktura koja kombinuje prednosti visoke si-metrije, malog dijametra, mnoxtva alternativnih puteva izmeu dva qvora iodsustva uskih grla. d-dimenzionalna hiperkocka sastoji se od n = 2d pro-cesora. Adrese procesora su brojevi od 0 do 2d − 1. Prema tome, svaka adresase sastoji od d bita. Procesor Pi je povezan sa procesorom Pj ako i samo akose i razlikuje od j na taqno jednom bitu. Rastojae izmeu proizvona dvaprocesora je uvek ≤ d, jer se od Pi do Pj moe doi promenom najvixe d bita,jednog po jednog. Na slici 5 prikazana je qetvorodimenzionalna hiperkocka.Hiperkocka obezbeuje bogatstvo veza, jer postoji mnogo razliqitih putevaizmeu svaka dva procesora (odgovarajui biti mogu se meati proizvonimredosledom). Hiperkocka se moe takoe kombinovati sa mreom, na primerumeui mree na strane hiperkocke. U primeni se pojavuju i druge struk-ture mrea.

u u

uu

u u

uu

u u

uu

u u

uu

Ris. 5. Qetvorodimenzionalna hiperkocka.

12.4. ALGORITMI ZA MREE RAQUNARA 311

12.4.1. Sortirae na nizu. Razmotriemo najpre jednostavan problemsortiraa na nizu procesora. Na raspolagau je n procesora P1, P2, . . . , Pn

i zadato je n brojeva x1, x2, . . . , xn. Svaki procesor quva jedan ulazni po-datak. Ci je preraspodeliti brojeve meu procesorima tako da najmai odih bude u P1, sledei u P2, itd. U opxtem sluqaju mogue je dodeivan-je vixe ulaznih podataka jednom procesoru. Videemo da se algoritam moeprilagoditi i takvim uslovima. Procesori su povezani u linearni niz: pro-cesor Pi je povezan sa procesorom Pi+1, i = 1, 2, . . . , n− 1. Poxto svaki proce-sor moe da komunicira samo sa susedima, uporeivae i razmenu podatakamogue je vrxiti samo izmeu elemenata koji su susedni u nizu. U najgoremsluqaju algoritam zahteva izvrxavae n− 1 koraka, koliko je potrebno da sepodatak premesti sa jednog na drugi kraj niza. Algoritam se u osnovi izvr-xava na sledei naqin. Svaki procesor uporeuje svoj broj sa brojem jednogod svojih suseda, razmeuje brojeve ako je ihov redosled pogrexan, a zatimisti posao obava sa drugim susedom (susedi se moraju smeivati, jer bi se uprotivnom uporeivali uvek isti brojevi). Isti proces nastava se sve dokbrojevi ne budu poreani na eeni naqin. Koraci se dele na neparne i parne.U neparnim koracima procesori sa neparnim indeksom uporeuju svoje sa bro-jevima svojih desnih suseda; u parnim koracima procesori sa parnim indeksomuporeuju svoje sa brojevima svojih desnih suseda (slika 6). Na taj naqin susvi procesori sinhronizovani i uporeivae uvek vrxe procesori koji to itreba da rade. Ako procesor nema odgovarajueg suseda (na primer prvi pro-cesor u drugom koraku), on u toku tog koraka miruje. Ovaj algoritam se zovesortirae parno-neparnim transpozicijama, videti sliku 7. Primerrada algoritma prikazan je na slici 8. Primetimo da se u ovom primeru sor-tirae zavrxava posle samo xest koraka. Ipak, raniji zavrxetak texko jeotkriti u mrei. Prema tome, boe je ostaviti algoritam da se izvrxava dosvog zavrxetka u najgorem sluqaju.

x1 x2 x3 x4 x5 x6 x7 x8

Ris. 6. Sortirae parno-neparnim transpozicijama.

Algoritam Sortiranje na nizu izgleda prirodno i jasno, ali dokaz is-pravnosti egovog rada nije trivijalan. Na primer, elemenat se u nekim ko-racima moe udaavati od svog konaqnog poloaja. U primeru na slici 8

312 12. PARALELNI ALGORITMI

Algoritam Sortiranje na nizu(x, n);

Ulaz: x (vektor sa n elemenata, pri qemu je xi u procesoru Pi).Izlaz: x (sortirani vektor, tako da je i-ti najmai elemenat u Pi).begin

do in parallel dn/2e putaP2i−1 i P2i uporeuju svoje elemente i po potrebi ih razmeuju;

za sve i, takve da je 1 < 2i ≤ nP2i i P2i+1 uporeuju svoje elemente i po potrebi ih razmeuju;

za sve i, takve da je 1 ≤ 2i < nako je n neparno, ovaj korak se izvrxava samo bn/2c puta

end

Ris. 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

Ris. 8. Primer sortiraa parno-neparnim transpozicijama.

broj 5 se kree ulevo dva koraka pre nego xto poqne sa kretaem udesno, a 3ide do levog kraja i ostaje tamo tri koraka pre nego xto krene nazad udesno.Dokaz ispravnosti rada paralelnih algoritama nije jednostavan, zbog meuza-visnosti delovaa razliqitih procesora. Ponaxae jednog procesora utiqena sve ostale procesore, pa je obiqno texko usredsrediti se na jedan procesori dokazati da je to xto on radi ispravno; moraju se posmatrati svi procesorizajedno.

Teorema 12.1. Na kraju izvrxavaa algoritma Sortiranje na nizu, datibrojevi su sortirani.

Dokazatel~stvo. Dokaz se izvodi indukcijom po broju elemenata. Pritome se tvree malo pojaqava: sortirae se zavrxava posle n koraka, bezobzira da li je prvi korak paran ili neparan. Za n = 2 sortirae se zavr-xava posle najvixe dva koraka; sortirae traje dva koraka ako je prvi korak

12.4. ALGORITMI ZA MREE RAQUNARA 313

neparan. Pretpostavimo da je teorema taqna za n procesora, i posmatrajmosluqaj n + 1 procesora. Skoncentriximo pau na maksimalni elemenat, ipretpostavimo da je to xm (u primeru na slici 8 to je x5). U prvom koraku xm

se uporeuje sa xm−1 ili xm+1, zavisno od toga da li je m parno ili neparno.Ako je m parno, nema zamene jer je xm vee od xm−1. Ishod je isti kao u sluqajuda je broj xm na poqetku bio u procesoru Pm−1, i da je zamena bila izvrxena.Prema tome, bez gubitka opxtosti moe se pretpostaviti da je m neparno.U tom sluqaju broj xm se uporeuje sa xm+1, zameuje, i kao najvei se pre-mexta korak po korak udesno (dijagonalno na slici 8), sve dok ne doe namesto xn+1, a onda ostaje tamo. To je pozicija koju xm i treba da zauzme, pasortirae ispravno tretira maksimalni element.

Pokazaemo sada indukcijom da je i sortirae ostalih n elemenata ko-rektno. Da bismo to dokazali, treba da preslikamo akcije n procesora navektoru duine n + 1 na mogui rad n − 1 procesora na vektoru duinee n.To se moe uraditi na sledei naqin. Posmatrajmo dijagonalu nastalu kreta-em maksimalnog elemenata (videti sliku 9). Uporeivaa u kojima uqestvujemaksimalni elemenat se ignorixu. Uporeivaa delimo na dve grupe, ona is-pod, i ona iznad dijagonale. Zatim "transliramo" trougao iznad dijagonaleza jedno poe nanie i jedno poe ulevo. Drugim reqima, za uporeivaa ugorem trouglu korak i se sada zove i+1. Na primer, posmatrajmo uporeivaa1 sa 8 i 4 sa 2 u prvom koraku na slici 8. Prvo uporeivae je na dijagonali,pa se ignorixe; drugo je iznad dijagonale, pa se smatra delom koraka 2, umestokoraka 1. Prema tome, korak 2 sastoji se od uporeivaa 7 sa 5, 6 sa 1, i 4sa 2. Meutim, ovo je regularni parni korak sa samo n elemenata. Korak 1 isva uporeivaa u kojima uqestvuje maksimalni elemenat se sada mogu prostoignorisati, posle qega su preostala uporeivaa identiqna sa nizom upored-jivaa koja se izvode pri izvrxavau algoritma sa n elemenata (pri qemu jeprvi korak neparan). Prema induktivnoj hipotezi sortirae n elemenata seizvodi korektno; prema tome, i sortirae svih n + 1 elemenata je korektno, azavrxava se posle n + 1 koraka. ¤

Ris. 9. Korak indukcije u dokazu ispravnosti sortiraaparno-neparnim transpozicijama, Teorema 12.1.

Do sada smo razmatrali sluqaj jednog elementa po procesoru. Pretpos-tavimo sada da svaki procesor pamti k elemenata, i razmotrimo za poqetak

314 12. PARALELNI ALGORITMI

sluqaj samo dva procesora. Pretpostavimo da je ci da procesori meusobnorazmene elemente, tako da k najmaih elemenata dou u P1, a k najveih uP2. Jasno je da u najgorem sluqaju svi elementi moraju biti razmeeni, paje tada broj razmena elemenata 2k. Sortirae se moe izvesti ponavaemsledeeg koraka sve dok je potrebno: P1 xae svoj najvei elemenat u P2, aP2 svoj najmai elemenat u P1. Proces se zavrxava u trenutku kad je najveielemenat u P1 mai ili jednak od najmaeg elementa u P2. Ovaj korak zovese objediavae-razdvajae. Koristei ovaj korak kao osnovni u sortirauparno-neparnim transpozicijama, dobija se uopxtee sortiraa na sluqajvixe elemenata po procesoru.

Iako je ovakav algoritam sortiraa optimalan za niz procesora, egovaefikasnost je mala. Imamo n procesora koji izvrxavaju n koraka; prema tome,ukupan broj koraka je n2. Mala efikasnost O(log n/n) nije iznenaujua, jerefikasan algoritam za sortirae mora imati mogunost da zameuje mestameusobno udaenim elementima. Niz procesora ne omoguuje takve zamene. Usledeem odeku prikazaemo specijalizovane mree za efikasno sortirae.

12.4.2. Mree za sortirae. Kad konstruixemo efikasan sekvenci-jalni algoritam, interesuje nas samo ukupan broj koraka. U sluqaju konstruk-cije paralelnih algoritama, ci je uqiniti korake xto nezavisnijim. Pos-matrajmo sortirae objediavaem (odeak 5.3.3). Dva rekurzivna poziva supotpuno nezavisna i mogu se izvrxiti paralelno. Meutim, objediavae kaodeo algoritma izvrxava se na sekvencijalni naqin. U izlazni vektor se i-tielemenat stava tek kad je tamo ve staveno prvih i− 1 elemenata. Ako nampoe za rukom paralelizacija objediavaa, onda emo moi da paralelizu-jemo i sortirae objediavaem.

Opisaemo sada drugaqiji algoritam objediavaa, zasnovan na tehnicidekompozicije. Pretpostavimo zbog jednostavnosti da je n stepen dvojke. Nekasu a1, a2, . . . , an; b1, b2, . . . , bn dva sortirana niza koje treba objediniti, i ne-ka je x1, x2, . . . , x2n rezultat ihovog objediavaa. Specijalno je, na primer,x1 = mina1, b1. Potrebno je objediniti razliqite delove ovih nizova pa-ralelno, tako da ihovo kompletno objediavae bude jednostavno. Ci semoe postii podelom dva niza na po dva dela | sa neparnim, odnosno parn-im indeksima. Svaki deo se objediava sa odgovarajuim delom drugog niza,a onda se kompletira objediavae. Neka je o1, o2, . . . , on objedieni redosledneparnih nizova a1, a3, . . . , an−1; b1, b3, . . ., bn−1, a neka je e1, e2, . . . , en objedin-jeni redosled parnih nizova a2, a4, . . . , an; b2, b4, . . . , bn. Oqigledno je x1 = o1

i x2n = en. Ostatak objediavaa se takoe lako izvodi, xto sledi iz sledeeteoreme.

Teorema 12.2. U skladu sa uvedenim oznakama, za i = 1, 2, . . . , n− 1 vaix2i = minoi+1, ei i x2i+1 = maxoi+1, ei.

Dokazatel~stvo. Zbog jednostavnosti se pod parnim, odnosno neparnimelementima podrazumevaju elementi nizova ai, bi sa parnim, odnosno neparnim

12.4. ALGORITMI ZA MREE RAQUNARA 315

indeksom. Razmotrimo elemenat ei. Poxto je ei i-ti elemenat u sortiranomredosledu parnih nizova, ei je vee ili jednako od bar i parnih elemenata uoba niza. Meutim, svakom parnom elementu koji je ≤ ei odgovara jox jedanneparni elemenat koji je takoe ≤ ei (jer smo poxli od dva sortirana niza).Prema tome, ei je vee ili jednako od bar 2i elemenata iz oba niza. Drugimreqima, ustanovili smo da je ei ≥ x2i. Na sliqan naqin, oi+1 je vee ili jednakood bar i + 1 neparnih elemenata, iz qega sledi da je vee ili jednako od bar 2ielemenata ukupno (za svaki neparan elemenat sem prvog, koji je ≤ oi+1, postojijox jedan parni elemenat koji je ≤ oi+1). Prema tome, vai i nejednakostoi+1 ≥ x2i. Specijalno, za i = n − 1 dobija se en−1 ≥ x2n−2 i on ≥ x2n−2, papoxto je en = x2n, tvree teoreme je taqno za i = n − 1. Stavajui dae ugore nejednakosti redom i = n−2, n−3, . . . , 1, dobijamo da je tvree teoremetaqno i za ostale vrednosti i, qime je zavrxen dokaz teoreme. ¤

Vana posledica Teoreme 12.2 je da se kompletno objediavae nizovao1, o2, . . . , on i e1, e2, . . . , en izvrxava u jednom paralelnom koraku. Ostatakposla izvrxavaju rekurzivni pozivi opisanog algoritma. Konstrukcija para-lelnog algoritma sledi direktno iz teoreme. Slika 10 ilustruje rekurzivnukonstrukciju objediavaa, a slika 11 pokazuje kompletno sortirae, kojese zove sortirae parno-neparnim objediavaem. Pravougaonici nalevoj strani slike 11, oznaqeni sa "n/2 sortirae", predstavaju rekurzivnekopije kompletne mree za sortirae, koje sortiraju po n/2 brojeva.

a1

a2

a3

a4

a5

a6

a7

a8

tttttttt

b1

b2

b3

b4

b5

b6

b7

b8

tttttttt

n2

= 4

tttt

t

t

t

t

t

t

t

t

t

t

t

x1

x2

x3

x4

x5

x6

x7

x8

x9

x10

x11

x12

x13

x14

x15

x16t

o6

e5

o7

e6

o8

e7

e8

o1

o2

e1

o3

e2

o4

e3

o5

e4

vaedia-obje-

n2

= 4

kolo za

vaedia-obje-

kolo za

Ris. 10. Kolo za parnoneparno objediavae dva niza odpo n = 8 elemenata.

316 12. PARALELNI ALGORITMI

tttttttt

tttttttt

tttt

t

t

t

t

t

t

t

t

t

t

t

xs(1)

xs(2)

xs(3)

xs(4)

xs(5)

xs(6)

xs(7)

xs(8)

xs(9)

xs(10)

xs(11)

xs(12)

xs(13)

xs(14)

xs(15)

xs(16)t

tttttttt

tttt

tttttttt

x1

x2

x3

x4

x5

x6

x7

x8

x9

x10

x11

x12

x13

x14

x15

x16

n4

= 4

vaedia-obje-

n4

= 4

n2

= 8

raesorti-kolo za

n2

= 8

raesorti-kolo za

kolo za

vaedia-obje-

kolo za

Ris. 11. Primer sortiraa 16 brojeva pomou kola za sorti-rae parno-neparnim objediavaem.

Sloenost. Diferencna jednaqina za ukupan broj koraka TM (n) za objed-iavae je TM (2n) = 2TM (n)+n−1, TM (1) = 1. Iz toga sledi da je ukupan brojuporeivaa O(n log n), u poreeu sa sekvencijalnim algoritmom koji zahte-va samo O(n) koraka. Dubina rekurzije, koja odgovara paralelnom vremenu,je O(log n). Diferencna jednaqina za ukupan broj koraka TS(n) za sortiran-je parnoneparnim objediavaem je TS(2n) = 2TS(n) + O(n log n), TS(2) = 1.eno rexee je TS(n) = O(n log2 n) (videti npr. analizu sloenosti algorit-ma iz odeka 7.5.2). Mrea sadri po n procesora u svakoj "koloni", a enadubina (tj. broj kolona) je O(log2 n), pa je ukupan broj procesora u mreiO(n log2 n). Primetimo da bi se istih n procesora mogli koristiti u svimkolonama, ali oni bi tada morali biti skoro potpuno ispovezivani. Jedinitip izraqunavaa u mrei je uporeivae i eventualna zamena, pa su potreb-ni jednostavni procesori koji se sastoje od komparatora sa dva ulaza i dvaizlaza.

12.4.3. Nalaee k-tog najmaeg elementa na stablu. Pretposta-vimo sada da je mrea raqunara kompletno binarno stablo visine h − 1 san = 2h−1 listova, odnosno 2h − 1 procesora, pridruenih qvorovima stabla.Ulaz je niz x1, x2, . . . , xn, pri qemu se u poqetnom trenutku xi quva u listu i.Raqunari u obliku stabla koriste se npr. u vezi sa obradom slika, pri qemulistovi odgovaraju elementima ulaznog niza a algoritmi koji ih obrauju

12.4. ALGORITMI ZA MREE RAQUNARA 317

su hijerarhijski. Ovde emo razmotriti problem nalaea k-tog najmaegelementa.

Podsetimo se najpre sekvencijalnog algoritma za nalaee k-tog najma-eg elementa, opisanog u odeku 5.4.2. Zbog jednostavnosti pretpostavimo dasu elementi niza razliqiti. Algoritam je probabilistiqki. U svakom korakubira se sluqajni elemenat x kao pivot. Rang elementa x izraqunava se upored-jivaem x sa svim ostalim elementima, a onda se eliminixu elementi kojisu mai ili vei od x, zavisno od toga da li je rang mai ili vei od k.Izvrxavae algoritma obustava se u trenutku kad je rang pivota k. Oqeki-vani broj iteracija je O(log n), a oqekivani broj uporeivaa je O(n). Postojetri razliqite faze u svakoj iteraciji algoritma: (1) izbor sluqajnog elemen-ta, (2) izraqunavae egovog ranga, i (3) eliminacija. Opisaamo efikasnuparalelnu realizaciju svake od faza.

Izbor sluqajnog elementa moe se postii organizovaem turnira na sta-blu. Svaki list xae svoj broj ocu, gde se on "takmiqi" sa brojem brata.Pobednik u partiji odreuje se bacaem novqia. Broj koji je pobedio prelaziu drugo kolo takmiqea | ide uvis po stablu. Proces se nastava sve dotledok koren stabla ne izabere taqno jedan broj kao ukupnog pobednika (ovaj pos-tupak je regularan samo u prvoj iteraciji; razmotriemo kasnije kako ga trebapopraviti, da bi radio ispravno i kad su neki elementi eliminisani). Brojpobednik se zatim xae niz stablo do svih listova, nivo po nivo; u procesuslaa uqestvuje svaki qvor stabla, xaui dobijeni broj i levom i desnomsinu. Poxto svi listovi saznaju koji je broj pivot, oni svoje brojeve mogu dauporede sa pivotom u jednom paralelnom koraku. Listovi zatim xau navixe,svom ocu, jedinicu, ako je ihov broj mai ili jednak od pivota, odnosno nuluu protivnom. Rang pivota je broj jedinica poslatih navixe. Sabirae broje-va koji se xau navixe lako se izvodi tako xto svaki qvor sabira brojevedobijene od sinova. Posle toga koren xae nanie rang pivota, i svaki listmoe nezavisno da ustanovi da li treba eliminixe svoj broj. Ukupno postojeqetiri "talasa" komunikacije u svakoj iteraciji: (1) uz stablo da bi se iz-abrao pivot, (2) niz stablo, da bi se pivot poslao do listova, (3) uz stablo,da bi se izraqunao rang pivota, i (4) niz stablo se xae rang pivota.

Posle prve iteracije pojavuje se jedan problem; poxto su neki elemen-ti eliminisani, 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 "fi-nala" bez ikakvog takmiqea, a onda e biti izabran sa verovatnoom 1/2, dokje verovatnoa izbora ostalih elemenata mnogo maa. Voleli bismo da oquva-mo uniformnost raspodele verovatnoa prilikom izbora pivota u svakoj it-eraciji. Uniformnost se moe oquvati na sledei naqin. Procesori, qiji subrojevi eliminisani u prethodnim kolima, xau navixe specijalnu vrednostnil, koju svaki elemenat pobeuje. Svakom elementu koji uqestvuje u takmiqen-ju pridruuje se brojaq, qija je poqetna vrednost 1. Brojaq pokazuje koliko je

318 12. PARALELNI ALGORITMI

stvarnih "protivnika" uqestvovalo u delu turnira, iz koga je elemenat iza-xao kao pobednik (odnosno broj neeliminisanih elemenata u podstablu qvora,u kome se nalazi elemenat). Kad elemenat pobedi u partiji u nekom qvoru sta-bla, on se upuuje navixe, a vrednost egovog brojaqa poveava se za vrednostbrojaqa egovog poraenog protivnika (kao u filmu "Gorxtak"). Partije seodigravaju sa "nesimetriqnim" novqiem, kod koga je odnos verovatnoa nulei jedinice jednak odnosu vrednosti brojaqa dva takmiqara. Ako su brojaqiigraqa p, odnosno q, onda prvi igraq pobeuje sa verovatnoom p/(p + q), adrugi sa verovatnoom q/(p + q). Na primer, ako je u prvoj partiji x pobe-dio igraqa y, a z proxao dae bez borbe, onda brojaqi elemenata x, odnosnoz imaju vrednosti 2, odnosno 1. U igri x protiv z koristi se novqi koji jenakloen elementu x, odnosno dodeuje mu prednost u odnosu 2 : 1. Rezultatje da z ima verovatnou 1/3 pobede u ovoj partiji, a x i y sa verovatnoom(1/2) · (2/3) = 1/3 pobeuju u obe svoje partije. Indukcijom se pokazuje daovakav proces izbora obezbeuje da u svakom kolu svi elementi se jednakomverovatnoom mogu biti izabrani za pivot.

Sloenost. Broj paralelnih koraka u svakoj iteraciji jednak je qetvo-rostrukoj visini stabla. Poxto ovaj algoritam eliminixe elemente na pot-puno isti naqin kao i sekvencijalni algoritam, oqekivani broj iteracija jeO(log n). Prema tome, oqekivano vreme izvrxavaa je O(log2 n).

12.4.4. Mnoee matrica na dvodimenzionalnoj mrei. Mrearaqunara koju emo sada razmotriti je dvodimenzionalna mrea n × n. Pro-cesor P [i, j] nalazi se u preseku i-te vrste i j-te kolone, i povezan je sa pro-cesorima P [i, j + 1], P [i + 1, j], P [i, j − 1] i P [i − 1, j]. Pretpostava se da susuprotni krajevi mree meusobno povezani, odnosno da mrea liqi na torus.Tako, na primer, P [0, 0] je povezan sa P [0, n−1] i P [n−1, 0], pored P [0, 1] P [1, 0],videti sliku 12. Drugim reqima, sva sabiraa i oduzimaa indeksa vrxe sepo modulu n. Algoritam koji prikazujemo je simetriqniji i elegantniji uz ovupretpostavku; egovo vreme izvrxavaa jednako je (do na konstantni faktor)vremenu izvrxavaa na obiqnoj mrei (onoj koja nije presavijaem povezanakao torus).

Problem. Date su dve n× n matrice A i B, tako da su ihovi elementiA[i, j] i B[i, j] u procesoru P [i, j]. Izraqunati C = AB, tako da elemenat C[i, j]bude u procesoru P [i, j].

Koristiemo obiqan algoritam za mnoee matrica. Problem je premesti-ti podatke tako da se pravi brojevi nau na pravom mestu u pravom trenutku.Posmatrajmo elemenat C[0, 0] =

∑n−1k=0 A[0, k] · B[k, 0], koji je jednak proizvodu

prve vrste matrice A i prve kolone matrice B; Redni brojevi vrsta i kolonasu pri ovakvom oznaqavau za jedan vei od ihovih indeksa. Voleli bismo dabroj C[0, 0] bude izraqunat u procesoru P [0, 0]. Ovo se moe postii cikliqkimpomeraem prve vrste A ulevo, i istovremenim cikliqkim pomeraem prvekolone B uvis, korak po korak. U prvom koraku P [0, 0] sadri A[0, 0] i B[0, 0]

12.4. ALGORITMI ZA MREE RAQUNARA 319

v v v v

v

v

v

v

v

v

v

v

v

v

v

v

Ris. 12. Dvodimenzionalna presavijena mrea.

i izraqunava ihov proizvod; u drugom koraku P [0, 0] dobija A[0, 1] (od desnogsuseda) i B[1, 0] (od suseda ispod sebe) i ihov proizvod dodaje parcijalnojsumi, itd. Vrednost C[0, 0] se tako izraqunava posle n koraka.

Problem je obezbediti da svi procesori obavaju isti ovakav posao, a svimoraju da dele podatke meusobno. Potrebno je da podatke preuredimo tako dane samo P [0, 0], nego i svi ostali procesori dobiju sve potrebne podatke. Idejaje da se podaci u matricama ispremextaju na takav naqin, da svaki procesor usvakom koraku dobije dva broja qiji proizvod treba da izraquna. Bitan je dak-le poqetni raspored podataka. Preurediemo ih tako da na poqetku procesorP [i, j] ima elemente A[i, i + j] i B[i + j, j], odnosno da drugi indeks elementa Abude jednak prvom indeksu elementa B (pri qemu se, kao xto je reqeno, indek-si raqunaju po modulu n). Poxto se formira ovakav raspored, svaki korak sesastoji od istovremenog cikliqkog pomeraa vrsta A i kolona B, qime P [i, j]dobija elemente A[i, i + j + k] i B[i + j + k, j], 0 ≤ k ≤ n − 1, upravo one el-emente koji su mu potrebni. Do poqetnog rasporeda moe se doi cikliqkimpomeraem vrste A sa indeksom i za i mesta ulevo, a kolone B sa indeksom iza i mesta navixe, i = 0, 1, . . . , n − 1. Algoritam je prikazan na slici 13. Utabeli 1 prikazano je formirae poqetnog rasporeda elemenata matrica zan = 4. Leva strana pokazuje poqetno stae podataka, a desna ihov razmextajposle izvrxavaa poqetnih cikliqkih pomeraa.

Sloenost. Poqetna cikliqka pomeraa vrsta A traju n/2 paralelnihkoraka (kad broj pomeraa postane vei od n/2, pomeraa se izvode u suprot-nom smeru | udesno umesto ulevo); isto vai i za poqetna pomeraa kolonaB. U narednih n koraka izvode se u svakom procesoru izraqunavaa i pome-raa. Ti koraci mogu se izvrxiti paralelno. Ukupno vreme izvrxavaa jeO(n). Efikasnost algoritma je O(1), ako uporeujemo paralelni algoritam sa

320 12. PARALELNI ALGORITMI

Algoritam Mnozenje matrica(A, B);

Ulaz: A i B (n× n matrice).Izlaz: C (proizvod AB).begin

for i := 0 to n− 1 do in parallel

cikliqki pomeri ulevo vrstu i matrice A za i mesta;odnosno, izvrxi A[i, j] := A[i, (j + 1)mod n] i puta

for j := 0 to n− 1 do in parallel

cikliqki pomeri navixe kolonu j matrice B za j mesta;odnosno, izvrxi B[i, j] := B[(i + 1) mod n, j] j puta

podaci su sada na eenim poqetnim pozicijamafor sve parove i, j do in parallel

C[i, j] := A[i, j] ·B[i, j];

for k := 1 to n− 1 do

for sve parove i, j do in parallel

A[i, j] := A[i, (j + 1)mod n];

B[i, j] := B[(i + 1)mod n, j];

C[i, j] := C[i, j] + A[i, j] ·B[i, j]

end

Ris. 13. Algoritam za paralelno mnoee matrica na mrei.

a00 a01 a02 a03 a01 a02 a03 a00

b00 b01 b02 b03 b10 b21 b32 b03

a10 a11 a12 a13 a12 a13 a10 a11

b10 b11 b12 b13 b20 b31 b02 b13

a20 a21 a22 a23 a23 a20 a21 a22

b20 b21 b22 b23 b30 b01 b12 b23

a30 a31 a32 a33 a30 a31 a32 a33

b30 b31 b32 b33 b00 b11 b22 b33

Tablica 1. Poqetno razmextae elemenata matrica |priprema za paralelno mnoee.

obiqnim sekvencijalnim mnoeem matrica sloenosti O(n3). Efikasnostje asimptotski maa, ako paralelni algoritam uporeujemo sa npr. Xtrase-novim algoritmom.

12.5. SISTOLIQKI ALGORITMI 321

12.5. Sistoliqki algoritmiSistoliqka arhitektura liqi na pokretnu traku u fabrici. Procesori

su obiqno rasporeeni na vrlo pravilan naqin (najqexe u obliku jednodi-menzionalnog ili dvodimenzionalnog poa), a podaci se kroz ih ritmiqkipomeraju. Svaki procesor izvrxava jednostavne operacije sa podacima kojeje dobio u prethodnom koraku, a svoje rezultate dotura sledeoj "stanici".Svaki procesor moe da sadri malu lokalnu memoriju. Ulazi se najqexe"utiskuju" u sistem jedan po jedan, umesto da se svi odjednom upixu u neke mem-orijske lokacije. Prednost sistoliqke arhitekture je efikasnost, i u hardver-skom pogledu (procesori su specijalizovani i jednostavni) i u pogledu brzine(minimiziran je broj pristupa memoriji). Kao i na pokretnoj traci, kuqno jeda se izbegne potreba za dovlaqeem alata i materijala za vreme rada. Sve xtoje potrebno za izvrxavae operacije, dolazi pokretnom trakom. Ozbian ne-dostatak ovakvih raqunara je nedovona fleksibilnost. Sistoliqke arhitek-ture su efikasne samo za odreene algoritme. Razmotriemo dva primera sis-toliqkih algoritama.

12.5.1. Mnoee matrice i vektora. Zapoqiemo sa jednostavnimalgoritmom, koji emo zatim koristiti za razvoj komplikovanijeg algorit-ma.

Problem. Izraqunati proizvod x = Ab matrice A dimenzije m × n ivektora b duine n.

Sistem se sastoji od n procesora, tako da procesor Pi dodaje parcijalnojsumi qlan u kome je qinilac bi, i-ta komponenta vektora b. Kretae podatakai operacije koje izvrxava svaki od procesora prikazani su za n = m = 4na slici 14. Pretpostavamo da se vektor b nalazi u odgovarajuim proce-sorima (ili je u ih ubaqen korak po korak). Rezultati se akumuliraju tokomkretaa sleva udesno kroz procesore. Izlazne promeive xi na poqetku imajuvrednost 0. U prvom koraku se x1 (= 0) zajedno sa a11 ubacuje u P1, a svi ostaliulazi napreduju jedan korak na putu ka procesorima. Procesor P1 izraqunavax1 + a11 · b1, i rezultat prosleuje udesno. U drugom koraku P2 prima sle-va x1 = a11 · b1 i odozgo a12, pa izraqunava x1 + a12 · b2, rezultat prosleujeudesno, itd. U i-tom koraku izraqunavaa x1 procesor Pi prima sleva par-cijalni rezultat x1 =

∑i−1k=1 a1kbk, odozgo odgovarajui elemenat matrice a1i,

a odgovarajuu koordinatu bi bilo iz lokalne memorije (kao na slici), biloodozdo. Procesor Pi izraqunava vrednost izraza x1 + a1ibi i predaje je dae,udesno. U trenutku napuxtaa niza procesora, posle n koraka, x1 oqiglednosadri eenu vrednost. Izraqunavae x2 prati " u stopu" izraqunavae x1

i zavrxava se u (n + 1)-om koraku. Drugim reqima, izraqunavaa x1 i x2 suvremenski skoro potpuno preklopena. Uopxte, izraqunati elemenat xj po-javuje se na izlazu posle n+j−1 koraka, j = 1, 2, . . . , m, a kompletan proizvodizraqunava se posle m + n− 1 koraka.

322 12. PARALELNI ALGORITMI

- b1

?- b2 b3 b4

? ? ?- - -IZLAZ

- b -xu

a

xi = xu + ab

x1x2

a11

a21

a31

a41

a12

a13

a14

a22

a23

a24

a32

a33

a34

a42

a43

a44

x3x4

?

Ris. 14. Mnoee vektora matricom.

Osnovni problem pri konstrukciji sistoliqkih algoritama je organi-zacija kretaa podataka. Svaki podatak mora se nai na pravom mestu upravom trenutku. U ovom primeru to je postignuto uvoeem kaxea, takoda poqetak i-te kolone matrice A stie u procesor Pi u koraku i. Ovaj primerje jednostavan, jer se svaki elemenat matrice A koristi samo jednom. Kad seista vrednost koristi vixe puta, mnogo je komplikovanije organizovati enokretae, xto emo videti u sledeem primeru.

12.5.2. Izraqunavae konvolucije. Neka su x = (x1, x2, . . . , xn) i w =(w1, w2, . . . , wk) dva realna vektora, pri qemu je k < n. Konvolucija vektorax i w je vektor y = (y1, y2, . . . , yn+1−k), sa koordinatama

yi = w1xi + w2xi+1 + · · ·wkxi+k−1, i = 1, 2, . . . , n + 1− k.

Problem. Izraqunati konvoluciju y vektora x i w.

Problem izraqunavaa konvolucije moe se svesti na problem izraquna-vaa proizvoda matrice i vektora na sledei naqin:

x1 x2 x3 · · · xk

x2 x3 x4 · · · xk+1

x3 x4 x5 · · · xk+2

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xn+1−k xn+2−k xn+3−k · · · xn

w1

w2

w3

· · ·wk

=

y1

y2

y3

· · ·yn+1−k

Sistoliqki algoritam koji rexava ovaj problem moe se dobiti kao speci-jalni sluqaj opxtijeg algoritma za izraqunavae proizvoda matrice i vekto-ra (videti prethodni problem, slika 14). Ovo je prikazano na slici 15. Prime-timo da se xi istovremeno koristi du celog niza procesora (sem prvih k− 1vrednosti xi, koje se koriste samo u poqetnom delu niza). Zbog toga je potreb-na linija za prostirae. Prikazaemo sada rexee problema konvolucije bezprostiraa.

Procesori na slici 15 primaju dva ulaza, a daju samo jedan izlaz. Upo-trebiemo sada procesore koji primaju ulaze iz dva smera, i xau izlaz u

12.6. REZIME 323

- w1 - w2 w3 w4- - -IZLAZ

y1y2

x1

x2

x3

x4

x2

x3

x4

x3

x4x4

? ? ? ?

x5 x5x5x5

Ris. 15. Konvolucija sa prostiraem.

dva smera. Ideja je pomerati vektor x sleva udesno, a vektor w zdesna ulevo.Rezultat y akumulira se u procesorima. Kretae podataka treba tako podesitida se odgovarajue koordinate w i x sretnu tamo gde treba da budu pomnoene.Problem je u tome xto, kad se dva vektora kreu jedan prema drugom, ondaje brzina jednog vektora u odnosu na drugi dvostruko vea. Posledica oveqienice je da bi jedan elemenat vektora x propustio polovinu elemenatavektora w, i obrnuto. Rexee je pomerati vektore dvostruko maom brzinom.Ulaz sleva je dakle "x1, nixta, x2, nixta, . . . ", a zdesna isto to za vektor w.Rexee je prikazano na slici 16 (crne taqke odgovaraju odsutnim podacima).

y4-¾

?

-

y3 y2 y1- - -¾ ¾ ¾

? ? ?

x2 • x1

- - -

w1 • w2

x3

IZLAZ

¾y- -

¾wi

xu xi

wu

y = y + wuxuxi = xuwi = wu

Ris. 16. Konvolucija pomou dvosmernog niza.

Prepuxtamo qitaocu da se uveri da svaki procesor Pi na kraju izraqunavavrednost yi. Kad wk napusti Pi, izraqunata je konaqna vrednost yi, pa se podacimogu "izruqiti" iz niza procesora putem naznaqenim ispod niza procesorana slici 16. Nedostatak kretaa podataka dvostruko maom brzinom je u tomexto izraqunavae traje dvostruko due.

12.6. RezimePoxto je paralelne algoritme komplikovanije konstruisati od sekvenci-

jalnih, korisno je xto vixe upotrebavati gotove blokove. Jedan od takvihmonih blokova 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 li e

324 12. PARALELNI ALGORITMI

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 dekom-pozicije (sabirae, paralelno izraqunavae prefiksa, sortirae), prekla-pae (kod sistoliqkih algoritama), i tehniku Ojlerovog obilaska (koja jekorisna kod mnoxtva algoritama za rad sa stablima, odnosno grafovima).

Zadaci12.1. Konstruisati algoritam za sabirae k n-bitnih binarnih brojeva. Vreme izvr-

xavaa algoritma na nk procesora treba da bude O(log n log k).

12.2. Dokazati da je za izvrxavae algoritma Rangovi (slika 12.3) dovoan modelEREW.

12.3. Modifikovati CRCW algoritam za nalaee maksimuma (odeak 12.3.2.2) takoda radi i ako dati brojevi nisu svi razliqiti, a da vreme izvrxavaa i dae bude O(1).

12.4. U vektoru A duine n treba vrednost A[1] prekopirati na sve ostale lokacije. (a)Konstruisati EREW algoritam za rexavae ovog problema, sloenosti T (n, n) = O(log n).(b) Konstruisati EREW algoritam efikasnosti O(1) za rexavae ovog problema, sa vre-menom izvrxavaa O(log n).

12.5. Konstruisati algoritam za raqunar sa zajedniqkom memorijom i n procesora,model EREW, koji na lokaciju A[i] vektora A, smexta vrednost A[1] + i, 1 < i ≤ n.

12.6. Paralelizovati Hornerovu xemu za izraqunavae vrednosti polinoma stepenan na modelu EREW, tako da sloenost, odnosno efikasnost algoritma, budu redom O(log n),odnosno O(1).

12.7. Konstruisati algoritam za izraqunavae disjunkcije n Bulovih promenivihna modelu CRCW za vreme O(1).

12.8. Konstruisati kolo za rexavae problema paralelnog prefiksa, dubine O(log n)sa O(n log n) qvorova, tako da svaki procesor (elemenat kola) ima najvixe dva ulaza i dvaizlaza.

12.9. Konstruisati algoritam za sortirae niza razliqitih brojeva x1, x2, . . . , xn,vremenske sloenosti O(log n), na paralelnom CREW raqunaru sa zajedniqkom memorijomi dovonim brojem procesora.

12.10. Konstruisati CRCW algoritam za objediavae dva sortirana niza A i Bu jedan sortirani niz, za vreme O(1). Na raspolagau je neograniqen broj procesora ineograniqen memorijski prostor.

12.11. Kronekerov proizvod vektora A[0], A[1], . . . , A[n−1] i B[0], B[1], . . . , B[m−1]se definixe kao vektor C[0], C[1], . . . , C[nm−1] sa elementima C[km+r] = A[k]B[r], 0 ≤ k ≤n−1, 0 ≤ r ≤ m−1 (drugim reqima, C sadri n×m matricu qiji (i, j) elemenat je A[i]B[j]).Konstruisati paralelni EREW algoritam za izraqunavae C pomou p procesora za vremeO(mn log p/p). Na raspolagau je memorijski prostor O(mn) (moe se pretpostaviti da sun, m i p stepeni dvojke).

12.12. Zadat je vektor, qiji su elementi slogovi. Svaki slog sadri neke podatke iBulovu promenivu Oznaka. Ci je prepakovati na poqetak vektora sve slogove, kojimapoe Oznaka ima vrednost 1. Redosled premextenih slogova treba da ostane nepromeen.Konstruisati EREW algoritam sloenosti T (n, n) = O(log n) za rexavae ovog problema.

ZADACI 325

12.13. Data je povezana lista, qiji su elementi proizvonim redosledom smexteni uvektoru. Neka je F [i] Bulova promeniva pridruena i-tom elementu liste. KonstruisatiEREW algoritam sloenosti T (n, n) = O(log n) za formirae druge povezane liste, kojase sastoji samo od onih elemenata za koje je F [i] = 1, i to istim redom kojim se elementipojavuju u polaznoj listi (ovaj algoritam potreban je, na primer, za izvrxee dolaznenumeracije u odeku 12.3.5).

12.14. Data je povezana lista, qiji su elementi (proizvonim redosledom) smexteniu vektoru. Konstruisati efikasan paralelni algoritam za formirae povezane liste odistih elemenata u obrnutom redosledu (ne premextajui ni jedan elemenat). Moe se pret-postaviti da je na raspolagau dovoan memorijski prostor za dopunske pokazivaqe.

12.15. Na mrei raqunara u obliku binarnog stabla, pri qemu se u i-tom listu nalazibroj xi, 1 ≤ i ≤ n, treba rexiti problem paralelnog prefiksa (po izvrxeu algoritmalist i treba da sadri sumu x1 ?x2 ? · · ·?xi, gde je ? asocijativna operacija koja se izvrxavau jednom koraku). Vreme izvrxavaa treba da bude O(log n).

12.16. Kako treba modifikovati algoritam za nalaee k-tog najveeg broja med-ju brojevima x1, x2, . . . , xn na stablu (odeak 12.4.3), tako da radi ispravno i ako brojevix1, x2, . . . , xn nisu svi razliqiti?

12.17. Procesori, ih n, povezani su u prsten. Procesor sa indeksom i quva (i + 1)-uvrstu date n×n matrice A, i i-ti elemenat datog vektora b = (b0, b1, . . . , bn−1)T , 0 ≤ i ≤ n−1.Potrebno je izraqunati proizvod x = Ab, tako da na kraju elemenat xi =

∑n−1k=0 aikbk bude

smexten u procesoru Pi, 0 ≤ i ≤ n− 1. Konstruisati algoritam vremenske sloenosti O(n)koji rexava ovaj problem.

12.18. Rexiti zadatak 12.17 ako na poqetku procesor Pi sadri i-tu kolonu matricei komponentu bi.

12.19. Neka je n×n matrica A = (aij) smextena u kvadratnoj mrei istih dimenzija,tako da procesor P [i, j] quva elemenat aij . Konstruisati EREW algoritam za transponovaematrice A, vremenske sloenosti O(n).

12.20. U kvadratnoj mrei od n× n procesora svaki procesor sadri po jednu taqkun × n crno-bele slike (bit 1 odgovara crnoj, a 0 beloj boji). Potrebno je pronai povezanekomponente slike (dve crne taqke pripadaju istoj komponenti ako postoji put od jedne dodruge preko crnih taqaka; svake dve uzastopne taqke na putu su horizontalno ili vertikalnosusedne | ne dijagonalno). Sve taqke u istoj komponenti treba da budu oznaqene jedinstven-om oznakom komponente. Na poqetku je taqka (i, j) oznaqena brojem in + j, 0 ≤ i, j ≤ n − 1.Razmotrimo sledei postupak za oznaqavae svake komponente najmaom od oznaka taqakakoje joj pripadaju. U svakom koraku procesor, koji sadri crnu taqku, proverava oznakesusedne qetiri taqke. Ako bilo koja od ih ima mau oznaku, onda procesor tu vrednostupisuje kao oznaku svoje taqke. Dokazati da opisani algoritam posle najvixe n2 korakakorektno oznaqava sve komponente, ali da se za neke ulaze oznaqavae ne moe izvrxitiza mae od cn2 koraka, gde je c > 0 konstanta. Kako se moe izabrati trenutak za prekidizvrxavaa opisanog postupka?

12.21. Neka je A kvadratna matrica reda n smextena u kvadratnoj mrei na uobiqajeninaqin. Neka su σ i π dve permutacije skupa 0, 1, . . . , n−1, takve da je σ smextena u prvoj, aπ u drugoj vrsti mree. Konstruisati algoritam sloenosti O(n) za permutovae vrsta Aprema σ, a kolona A prema π (najpre vrste). Drugim reqima, vrsta i treba da bude premextenana poziciju σ(i), a kolona j na poziciju π(j).

12.22. Na raspolagau je 2n procesora povezanih u n-dimenzionalnu hiperkocku. Kon-struisati algoritam vremenske sloenosti O(n) za nalaee najveeg od 2n zadatih ele-menata.

326 12. PARALELNI ALGORITMI

12.23. Konstruisati algoritam za rexavae na n-dimenzionalnoj hiperkocki. Sva-ki procesor quva jedan broj. Na kraju svaki procesor treba da ima izraqunatu vrednostprefiksa svog elementa.

12.24. Pokazati kako se moe dvodimenzionalna mrea 2k × 2m umetnuti u (k + m)-dimenzionalu hiperkocku.

12.25. Paralelni problem traqeva. Pretpostavimo da n = 2k osoba znaju neke tra-qeve. U svakom koraku svaka osoba moe da komunicira sa nekom drugom osobom (najvixejednom), i da sa om razmeni sve traqeve koje u tom trenutku zna. Konstruisati redosledkomuniciraa, takav da posle log2 n koraka svaka osoba zna sve traqeve.

Glava 13

Uputstva i rexea zadataka

13.1. Matematiqka indukcija1.1. Tvree je taqno za n = 1, 2; za k ≥ 3 je

xk − yk = (x + y)(xk−1 − yk−1) + xy(xk−2 − yk−2),

pa iz pretpostavke da tvree vai za brojeve mae od n sledi da ono vai i za n. Time jematematiqkom indukcijom dokazano da tvree vai za svaki prirodan broj n.

1.2. Izraqunavxi nekoliko prvih zbirova, nasluujemo da je traeni izraz 13n(n +

1)(n + 2) (ako nikako drugaqije, do ovog izraza se moe doi odreivaem koeficijenatapolinoma treeg stepena a + bn + cn2 + dn3, jednakog sumi, tako da izraz bude taqan zan = 1, 2, 3, 4). Dokaz indukcijom je lakxi deo posla. Za n = 1 je izraz taqan (1 ·2 = 1

3·1 ·2 ·3),

a ako je taqan za neko n, onda jen + 1∑

i = 1

i(i + 1) = 13n(n + 1)(n + 2) + (n + 1)(n + 2) = 1

3(n + 1)(n + 2)(n + 3),

odnosno izraz je taqan i za n + 1 sabiraka.1.3. Indukcijom; (−1)k−1k(k + 1)/2 + (−1)k(k + 1)2 = (−1)k(k + 1)(k + 2)/2.1.4. Svaki elemenat a ∈ A moe se napisati u obliku 2s(a)o(a), gde je o(a) neparan broj,

"neparna osnova" broja a. Poxto neparnih prirodnih brojeva maih od 2n ima n, a A iman + 1 brojeva, u A postoje neka dva broja a i b sa jednakim neparnim osnovama, o(a) = o(b);ako je npr. s(a) < s(b), onda a|b.

1.5. Dokaz se moe izvesti indukcijom po n. Ako nejednakost iz zadatka uzmemo kaoinduktivnu hipotezu, onda je (a + b)n+1 = (a + b)(a + b)n ≤ (a + b)2n−1(an + bn). Dokaz bibio zavrxen ako bismo dokazali da je (a + b)2n−1(an + bn) ≤ 2n(an+1 + bn+1). Ovu je paknejednakost lako dokazati: posle mnoea i sreivaa dobija se da je ona ekvivalentnaoqiglednoj nejednakosti (an − bn)(a− b) ≥ 0.

1.6. Ako vrste Paskalovog trougla numerixemo poqevxi od 0, onda je suma brojeva ui-toj vrsti jednaka Si = 2i. Za i = 0 tvree je taqno. U zbiru brojeva (i + 1)-e vrste se,posle zamene tih brojeva zbirovima po dva broja iz prethodne vrste, svaki broj iz i-te vrstepojavuje taqno dva puta, pa je Si+1 = 2i+1.

1.7. Za n = 2 je 13

+ 14

= 712

> 1324

. Ako je nejednakost taqna za neko n, onda je

2(n + 1)∑

i = n + 2

1i

=2n∑

i = n + 1

1i− 1

n+1+ 1

2n+1+ 1

2n+2>

> 1324

+ 12n+1

− 12n+2

= 1324

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

> 1324

,

pa je nejednakost taqna i za n + 1. Prema tome, nejednakost je taqna za svako n > 1.1.8. Neka je

∑ni=1

1i

= kn/mn, i neka je sn najvei eksponent stepena dvojke kojimje deiv imenilac mn. Drugim reqima, mn = 2snon, gde je on neparan broj. Izraqunavxinekoliko prvih zbirova, zapaamo da su brojevi kn neparni, i da je sn neopadajua funkcijaod n, jednaka najveem eksponentu stepena dvojke kojim je deiv neki broj ≤ n, odnosno

327

328 13. UPUTSTVA I REXEA ZADATAKA

sn = blog2 nc. Dokazaemo ovo tvree indukcijom po n. Tvree je taqno za n = 1, 2. Akoje taqno za neko n, onda je

n+1∑

i=1

1

i=

n∑

i=1

1

i+

1

n + 1=

kn

mn+

1

n + 1=

mn + kn(n + 1)

mn(n + 1)=

2snon + kn2xy

2sn+xyon,

gde je n + 1 = 2xy, a y je neparan broj.Ako je n + 1 stepen dvojke, odnosno y = 1, onda je sn = blog2 nc = x − 1, pa gori

razlomak postaje (on + 2kn)/(2xon), odnosno kn+1 = on + 2kn je neparan broj, a najveieksponent stepena dvojke kojim je deiv imenilac mn+1 = 2xon je x = blog2(n + 1)c.

U protivnom, ako n + 1 nije stepen dvojke, odnosno za neko r vai 2r < n + 1 < 2r+1,onda je sn = r i x < r (jer izmeu 2r i 2r+1 nema brojeva deivih sa 2r), pa je

kn+1

mn+1=

2r−xon + kny

2ryon,

odnosno brojilac kn+1 = 2r−xon + kny je neparan, mn+1 = 2ryon i sn+1 = r = blog2(n + 1)c.1.9. Zgodno je tvree formulisati na sledei naqin: brojevi mai od 5 · 2n, n ≥ 0,

mogu se predstaviti u obliku zbira razliqitih brojeva iz ovog niza. Za n = 0 tvreeje taqno. Neka je tvree taqno za brojeve mae od n, i neka je dat proizvoan broj a izintervala [5 · 2n−1, 5 · 2n). Poxto je a− 5 · 2n−1 < 5 · 2n − 5 · 2n−1 = 5 · 2n−1, broj a− 5 · 2n−1

moe se predstaviti u obliku zbira razliqitih brojeva iz ovog niza, maih od 5 · 2n−1, tj.a se dobija dodavaem tom zbiru broja 5 · 2n−1, razliqitog od svih prethodnih sabiraka.

1.10. Za n = 3 tvree je taqno, jer su prave u opxtem poloaju. Pretpostavimo datvree vai za proizvonih n pravih u opxtem poloaju, i neka je dato n + 1 pravih uopxtem poloaju. Meu oblastima na koje prvih n pravih dele ravan postoji po induktivnojhipotezi bar jedan trougao. Ako (n + 1)-a prava p ne seqe taj trougao, onda je dokaz zavrxen| moe se uzeti bax taj trougao. U protivnom, prava p seqe neke dve stranice tog trougla.Zajedniqko teme te dve stranice sa ihovim preseqnim taqkama sa p qine traeni trougao.

1.11. Zadatak se moe preformulisati na sledei naqin: dato je n krugova polupreq-nika 1 u ravni, tako da svaka tri imaju bar jednu zajedniqku taqku; dokazati da je preseksvih n krugova neprazan (taqka iz preseka svih krugova je centar kruga polupreqnika 1 kojisadri centre svih n krugova | zadate taqke u originalnoj formulaciji). Ovo tvreeemo pojaqati: pokazaemo da ono vai za proizvonih n konveksnih skupova (tzv. Helijevateorema). Dokaz se izvodi indukcijom po n.

Baza indukcije je sluqaj n = 4. Neka su dati (konveksni) skupovi k1, k2, k3, k4, i nekaje Ci neka taqka iz preseka skupova iz familije k1, k2, k3, k4 \ ki, i = 1, 2, 3, 4. Moguisu sledei sluqajevi.

• Taqke Ci su temena konveksnog qetvorougla; tada presek dijagonala tog qetvor-ougla pripada preseku svih skupova ki.

• Jedna od taqaka, npr. C1, pripada trouglu koji qine ostale tri taqke C2, C3,C4; tada skup k1 sadri taqke C2, C3, C4, a sa ima i taqku, C1, taqku trouglaC2C3C4, pa je C1 traena taqka.

Neka tvree vai za proizvonih n − 1 konveksnih skupova u ravni, i neka je daton ≥ 5 proizvonih konveksnih skupova k1, k2, . . . , kn, takvih da je presek bilo koja tri odih neprazan. Skupovi k′i = ki ∩ kn, i = 1, 2, . . . , n − 1, zadovoavaju induktivnu hipotezu:konveksni su i presek svaka tri je neprazan:

k′i ∩ k′j ∩ k′l = ki ∩ kj ∩ kl ∩ kn 6= ∅,jer je taqnost tvrea za n = 4 dokazana. Zbog toga im je presek neprazan, tj. postoji taqkaC ∈ k′1 ∩ k′2 ∩ . . . ∩ k′n−1 = k1 ∩ k2 ∩ . . . ∩ kn.

1.12. Rexee se zasniva na sliqnoj ideji kao i dokaz teoreme 1.7. Boje su 0, 1 i 2.Bazni sluqaj n = 1 je trivijalan. Novododata, n-ta krunica sa tetivom deli ravan na trioblasti. Oblastima van krunice ne meaju se boje. Oblastima u krunici sa jedne (druge)

13.1. MATEMATIQKA INDUKCIJA 329

strane tetive boja i zameuje se bojom i+1 mod 3 (i− 1mod 3), i = 0, 1, 2. Na taj naqin dobijase ispravno bojee sa tri boje i posle dodavaa n-te figure.

1.13. Dokaz se moe izvesti indukcijom po broju oblasti n na koje mapa deli ravan.Za n = 1 bojee je mogue | dovona je jedna boja. Pretpostavimo da je tvree taqnoza mape sa mae od n oblasti i neka je data mapa sa n oblasti. Poxto su svi qvoroviparnog stepena (imaju paran broj susednih qvorova), svaka grana je deo granice neke oblasti,jer ne postoje qvorovi iz kojih vodi samo jedna grana. Posmatrajmo spoaxu, beskonaqnuoblast. Uklaaem grana na granici spoaxe oblasti, dobija se mapa sa maim brojemoblasti, qiji su svi qvorovi parnog stepena (granica beskonaqne oblasti za svaki svojqvor ima dve susedne grane), pa se ona po induktivnoj hipotezi moe ispravno obojiti.Vraaem ukloenih grana se od beskonaqne oblasti odsecaju oblasti koje su u polaznojmapi bile susedne beskonaqnoj oblasti; ima se ne mea boja. Te oblasti su jedini susedipolazne beskonaqne oblasti, koja se zbog toga moe obojiti suprotnom bojom. Na taj naqinje indukcijom konstruisano ispravno bojee planarne mape sa n oblasti, odnosno zavrxenje dokaz indukcijom.

1.14. Dokaz se izvodi indukcijom po n. Za n = 2 je d1+d2 = 2, pa mora biti d1 = d2 = 1;stablo sa dva qvora stepena jedan postoji: to su dva qvora povezana granom. Pretpostavimoda je tvree taqno za n− 1 brojeva, i neka je dato n ≥ 3 prirodnih brojeva d1, d2, . . . , dn sasumom 2n− 2. Tada bar jedan od ih (npr. di) mora biti jednak 1 (u protivnom bi im sumabila vea ili jednaka od 2n), i bar jedan od ih (npr. dj) mora biti vei od 1 (u protivnombi im suma bila maa ili jednaka od n < 2n − 2). Izbacivxi di iz skupa i umaivxi dj

za jedan, dobijamo skup za koga po induktivnoj hipotezi postoji stablo sa tim stepenima.Dodavxi u to stablo jedan novi qvor stepena di = 1 (list), "prikaqen" za qvor stepenadj − 1 ≥ 1, dobijamo stablo sa n qvorova i stepenima d1, d2, . . . , dn. Jasno je da rexee ovogproblema u opxtem sluqaju nije jedinstveno.

1.15. Ako sa f(n) oznaqimo traeni broj oblasti, neposredno se izraqunava nekolikoprvih vrednosti f(1) = 1, f(2) = 2, f(3) = 4, f(4) = 8, f(5) = 16. Diferencna jednaqinaza niz f(n) moe se izvesti tako da se izraquna poveae broja oblasti posle dodavaan-te taqke Pn, poxto su na krunici ve rasporeene taqke P1, P2, . . . , Pn−1. Du PnPk

(k = 1, 2, . . . , n− 1) seqe dui PiPj , gde je 1 ≤ i ≤ k− 1, k + 1 ≤ j ≤ n− 1, pa eno dodavaepoveava broj oblasti za 1 + (k− 1)(n− k− 1) (toliko oblasti du PnPk deli na taqno dvepodoblasti; dui PnPk, k = 1, 2, . . . , n− 1, ne seku se unutar kruga). Prema tome,

f(n) = f(n− 1)+n∑

i = 2

(1 + (k − 1)(n− k − 1)) = f(n− 1) + 16(n3 − 6n2 + 17n− 12).

Sumiraem (videti (2.10), (2.11)) se dobija rexee ove diferencne jednaqine

f(n) = 1 + 16

n∑

i = 2

(i3 − 6i2 + 17i− 12) = 124

(n4 − 6n3 + 23n2 − 18n) + 1.

Ova i prethodna suma mogu se izraqunati korixeem suma∑n

i=1 ik, videti (2.5.3). Drugamogunost je prosto dokazati taqnost ovih izraza indukcijom (poxto se prethodno "pogode").

1.16. Dokazaemo najpre tri pomona tvrea; definicije pojmova videti u uvodupoglava 6.

Najpre se zapaa da ako je stablo G povezano, onda je povezano i stablo f(G) (koje sesastoji od qvorova | slika qvorova iz G, i svih grana iz G koje ih povezuju). Tvree jeposledica qienice da f svaki put iz G preslikava ili u put ili u jedan qvor u f(G).

Dae, ako je G stablo i vai f(G) = G, onda f svaku granu G preslikava u granu (podefiniciji), i obratno, svaka grana u f(G) = G je slika neke grane iz G (u protivnombi grana bez inverzne slike zatvarala ciklus u f(G) = G, suprotno pretpostavci da je Gstablo). Drugim reqima, ako je f(G) = G, onda je f izomorfizam, preslikavae koje quvasusednost qvorova. Specijalno, ako za stablo G vai f(G) = G, onda je qvor v ∈ V list,akko je qvor f(v) list.

330 13. UPUTSTVA I REXEA ZADATAKA

Neka je G = (V, E) stablo i neka je V ′ ⊂ V skup egovih unutraxih qvorova. Tadaje indukovani podgraf G′ = (V ′, E′) takoe stablo (povezan je | put izmeu svaka dvaunutraxa qvora G vodi samo preko unutraxnijh qvorova G, i nema ciklusa).

Navedene qienice dovone su za izvoee dokaza. Skup qvorova grafa f(G) je podskupV , a ako je V 6= ∅, onda i f(G) ima bar jedan qvor. Posmatrajmo niz stabala G0 = G,G1 = f(G), . . . , Gi = f(Gi−1), . . . , i neka je Gi = (Vi, Ei). Za neko i mora da bude Vi = Vi−1

(jer G ima konaqno mnogo qvorova). Na kraju se indukcijom po m = |F | dokazuje da akoza stablo H = (U, F ) vai f(H) = H, onda H sadri nepokretni qvor ili granu (bazaje oqigledno tvree za m = 1, 2; za m > 2 se H zameuje sa H′, stablom indukovanimunutraxim qvorovima H, za koje takoe vai f(H′) = H′, pa poxto H′ ima mae granaod H, za ega vai induktivna hipoteza).

1.17. Za n = 1 tvree je taqno (u jednoj urni se nalaze dve kuglice). Neka je principtaqan za n kuglica i n+1 urni. Pretpostavimo da su n+2 kuglice ubaqene u n+1 urni. Da jeprincip u tom sluqaju taqan, dokazujemo pretpostavajui suprotno, da se u svim uranamanalazi najvixe po jedna kuglica. Izdvojivxi na stranu proizvonu urnu sa samo jednomkuglicom, dobijamo sistem od n urni sa n + 1 kuglicom, u kome po induktivnoj hipotezimora da postoji urna sa bar dve kuglice | suprotno pretpostavci. Time je dokazano daDirihleov princip vai za svako n.

1.18. Suma visina qvorova KBS visine 1 je 1 = 22 − 1 − 2. Ako je tvree taqno zaKBS visine h, onda je suma visina qvorova KBS visine h + 1 jednaka dvostrukoj sumivisina qvorova KBS visine h uveanoj za h + 1 (visinu korena): 2(2h+1 − h − 2) + h + 1 =2h+2 − (h + 1)− 2, pa je tvree taqno i za KBS visine h + 1.

1.19. Dokaz se moe izvesti pojaqavaem induktivne hipoteze, tako xto se dokae daza n ≥ 2 vai F 2

n + F 2n+1 = F2n+1 i Fn−1Fn + FnFn+1 = F2n.

1.20. Tvree je taqno za n = 2 (K2 je stablo, n/2 = 1). Pretpostavimo da imamorazlagae Kn na n/2 povezujuih stabala. Graf Kn+2 se od Kn dobija dodavaem dva novaqvora u, v, sa granom (u, v) i jox 2n grana koje u, v povezuju sa qvorovima Kn. Qvorovi ui v mogu se "prikaqiti" kao listovi svim povezujuim stablima Kn tako xto se iskoristen/2 grana koje u povezuju sa n/2 qvorova Kn, i n/2 grana koje v povezuju sa preostalihn/2 qvorova Kn. Grana (u, v) sa preostalih n/2 + n/2 grana koje povezuju u i v sa svimqvorovima Kn qine novo povezujue stablo grafa Kn+2, sa rednim brojem n/2 + 1, pa jedobijeno razlagae skupa grana Kn+2 na (n + 2)/2 povezujuih stabala (slika 1).

d d d d

d

d u

v

'

&

$

%

Kn

Ris. 1. Uz zadatak 1.20.

1.21. Za n = 1 to je graf sa dva qvora i jednom granom. Kako konstruisati graf Gn

polazei od grafa Gn−1? Potrebno je dodati dva nova qvora v, w i n2−(n−1)2 = 2n−1 novihgrana; da bi konstrukcija bila "cista", zgodno je da nove grane povezuju ili novi qvor sastarim, ili dva nova qvora. Ako se v i w poveu granom, i ako to bude jedina grana susednanpr. qvoru v, onda taj qvor u savrxeno uparivae moe ui samo granom (v, w) | to jeiznueni izbor; to takoe iz uparivaa iskuquje sve grane susedne qvoru w; interesantnoje da se upravo w moe povezati sa 2n− 2 grana sa svim prethodnim qvorovima, pa ni jednaod tih grana ne bi mogla da ue u savrxeno uparivae. Poxto po induktivnoj hipotezi u

13.1. MATEMATIQKA INDUKCIJA 331

grafu Gn−1 postoji taqno jedno savrxeno uparivae, vidimo da i u ovako konstruisanomgrafu Gn postoji taqno jedno savrxeno uparivae (videti sliku 2).

c

c

c

c

c c

c cw

v n− 1 2 1

n− 1 2 1· · ·

· · ·

Gn−1

'

&

$

%

Ris. 2. Uz zadatak 1.21.

1.22. Nejednakost se moe prepisati u obliku∏n

i=1(1 + ai)/2 ≥ 1. Za n = 1 nejed-nakost (u ovom sluqaju jednakost) je trivijalna. Pretpostavimo da je nejednakost taqna zaproizvonih n− 1 realnih brojeva sa proizvodom 1. Sluqaj n brojeva a1, a2, . . . , an prirod-no je svesti na sluqaj n − 1 brojeva tako da se umesto neka dva od ih, a i b, uzme ihovproizvod ab | ta zamena trebalo bi da uvek smauje (to treba dokazati) vrednost izraza saleve strane nejednakosti. Drugim reqima, da bi svoee uspelo, moralo bi da bude

1+a2

+ 1+b2≥ 1+ab

2,

xto je ekvivalentno sa (1−a)(1− b) ≤ 0. Da ova nejednakost bude ispuena moe se postiitako da se za a izabere neki broj vei ili jednak od 1, a za b neki broj mai ili jednak od 1.Sada je jasno kako se izvodi dokaz. Meu brojevima a1, a2, . . . , an sigurno postoji neki (npr.ai) koji je vei ili jednak od 1, i neki (npr. aj) koji je mai ili jednak od 1. Koristeidokazanu nejednakost

1+ai2

+1+aj

2≥ 1+aiaj

2,

dobijamon∏

k = 1

1+ak2

= 1+ai2

· 1+aj

∏1≤k≤nk 6=i,j

1+ak2

≥ 1+aiaj

2

∏1≤k≤nk 6=i,j

1+ak2

≥ 1.

Posleda nejednakost u nizu je taqna, jer se dobija primenom induktivne hipoteze na n− 1brojeva a1, a2, . . . , ai−1, ai+1, . . . aj−1, aj+1, . . . an, aiaj .

1.23. Pretpostavimo da je najvixi bit binarnog broja b[1]. Razmotrimo sledei algo-ritam.

begin

n := 0;

for i := 1 to k do

n := n · 2 + b[i]

end

Pokazaemo da posle i-tog prolaska kroz petu vai n =∑i

j=1 b[j]2i−j , i = 1, 2, . . . , k.

Zaista, tvree je taqno za i = 1, a ako je taqno za neko i, onda posle narednog prolaska

332 13. UPUTSTVA I REXEA ZADATAKA

kroz petu n ima vrednost

2i∑

j = 1

b[j]2i−j + b[i + 1] = 2

i + 1∑

j = 1

b[j]2i+1−j .

Time je dokazano da je posle k-tog prolaska kroz petu n =∑k

j=1 b[j]2k−j , odnosno navedenialgoritam je korektan.

13.2. Analiza algoritama2.1. Ako je f(n) = o(g(n)), onda za proizvono ε > 0 postoji prirodan broj n0 takav da

za svako n > n0 vai f(n) < εg(n), odakle sledi da je f(n) = O(g(n)). Obrnuto ne vai; naprimer, n = O(2n), ali nije n = o(2n).

2.2. Moe se poi od nejednakosti (f(n))c = O(af(n)

)(a > 1, c > 0), i u oj zameniti

f(n) sa log2 n, a sa 2b i c sa a.2.3. Sabirajui jednakosti T (k) = T (k − 1) + k

2za k = 2, 3, . . . , n dobija se

T (n) = T (1)+n∑

k = 2

k2

= 12

+n(n+1)

4.

2.4. Karakteristiqna jednaqina ove diferencne jednaqine je z2 − 8z + 15 = 0, a enikoreni su z1 = 5 i z2 = 3. Zbog toga rexee traimo u obliku T (n) = c15n+c23n. Konstantec1 i c2 odreuju se iz uslova T (1) = 5c1 + 3c2 i T (2) = 25c1 + 9c2. Rexavaem ovog sistemaod dve linearne jednaqine dobija se c1 = 1/10, c2 = 1/6, pa je T (n) = (5n−1 + 3n−1)/2.

2.5. Karakteristiqna jednaqina ove diferencne jednaqine je z3 − 4z2 + 5z− 2 = 0, ili(z − 1)2(z − 2) = 0, pa je eno rexee oblika T (n) = (c1 + c2)n + c32n. Konstante c1, c2, c3odreuju se iz poqetnih uslova; dobija se c1 = c3 = 0, c2 = 1, pa je T (n) = n.

2.6. Zbog jednostavnosti uvedimo oznake T (2n) = an i T (2n − 1) = bn, n ≥ 1. Gorediferencne jednaqine mogu se prepisati u obliku an = 2

∑ni=1 bi, bn+1 = 2

∑ni=1 ai (n ≥ 1),

b1 = 1. Prvih nekoliko qlanova ovih nizova su a1 = 2b1 = 2, b2 = a1 = 2, a2 = 2(b1 + b2) = 6,itd. Ideja je da se iz diferencnih jednaqina najpre uklone sume, formiraem razlikadva uzastopna qlana (n ≥ 1): an+1 − an = 2

∑n+1i=1 bi − 2

∑ni=1 bi = 2bn+1, bn+2 − bn+1 =∑n+1

i=1 ai −∑n

i=1 ai = an+1, Sada se zamenom bn+1, bn+2 u drugu, odnosno an, an+1 u prvujednaqinu dobijaju homogene linearne diferencne jednaqine za nizove an i bn:

(bn+2 − bn+1)− (bn+1 − bn) = 2bn+1, 12(an+1 − an)− 1

2(an − an−1) = an, n ≥ 2,

odnosnobn+2 = 4bn+1 − bn, an+1 = 4an − an−1, n ≥ 2.

Koreni zajedniqke karakteristiqne jednaqine z2 − 4z + 1 = 0 su z1 = 2 +√

3 i z2 = 2−√3,pa su rexea diferencnih jednaqina oblika an = c1zn

1 + c2zn2 i bn = c3zn

1 + c4zn2 ; konstante

c1, c2, c3, c4 odreuju se iz poqetnih uslova b2 = 2, b3 = 8 (jer bn+2 = 4bn+1 − bn vai tekza n ≥ 2!!!), odnosno a1 = 2, a2 = 6. Dobija se da je

an = T (2n) = 1√3

((√

3− 1)(2 +√

3)n + (√

3 + 1)(2−√3)n)

, n ≥ 1,

bn = T (2n− 1) = 1√3

(((2 +

√3)n−1 + ((2−√3)n−1

), n ≥ 2.

2.7. Ako sa an, odnosno bn oznaqimo trajae rexavaa problema Pn primenom algo-ritma A, odnosno B, dobijamo sistem diferencnih jednaqina

an = bn−1 + n, bn = an−1 + n, (n ≥ 2), a1 = 1, b1 = 2.

13.2. ANALIZA ALGORITAMA 333

Zamenom bn−1 = an−2 + n − 1 (n ≥ 3) u prvu jednakost, dobija se diferencna jednaqinaan = an−2 + 2n− 1 za niz an (a2 = b1 + 2 = 4). Ova jednaqina rexava se sumiraem:

a2n+1 = a2n−1 + 4n + 1 = a2n−3 + (4n + 1) + (4n− 3) = . . .

= a1 + (4n + 1) + (4n− 3) + . . . + 1 = 1 + (n + 1)(2n + 1),

a2n = a2n−2 + 4n− 1 = a2n−4 + (4n− 1) + (4n− 5) = . . .

= a2 + (4n− 1) + (4n− 5) + . . . + 7 = n(2n + 1) + 1.

Dakle,

an =

1 +

n(n+1)2

, za n parnon(n+1)

2, za n neparno

.

2.8. Dovono je dokazati indukcijom da postoji takva konstanta c > 0 da za sve dovonovelike n vai T (n) ≤ cn log2

2 n. Ova nejednakost je za n = 1 taqna za proizvono c > 0. Trebajox pokazati da ako je nejednakost taqna za brojeve n < N , onda je taqna i za n = N . Zaista,koristei induktivnu hipotezu i nejednakost bxc ≤ x, dobijamo

T (N) = 2T (bN/2c) + 2N log2 N ≤ 2cbN/2c log22bN/2c+ 2N log2 N

≤ cN (log2 N − 1)2 + 2N log2 N = cN log22 N + N (2(1− c) log2 N + c) .

Ako je c > 1, onda za N ≥ 2 vai 2(1 − c) log2 N + c ≤ 2(1 − c) log2 2 + c = 2 − c; za c ≥ 2je ovaj izraz mai ili jednak od nule, pa vai T (N) ≤ cN log2

2 N , qime je dokazano da ovanejednakost vai za svako N ≥ 1 ako je c ≥ 2.

2.9. Neka je n = 2k. Mnoeem sa 2−n dobija se 2−kT (2k) = 2−(k−1)T (2k−1) + ck2−k.Prema tome,

2−kT (2k) = 2−(k−2)T (2k−2) + c(k2−k + (k − 1)2−(k−1)

)= · · ·

= 2−0T (20) + ck∑

i = 1

i2i = 2−kc(2k+1 − k − 2)

(videti primer 2.5, strana 20), odnosno T (n) = O(n).Drugo rexee. Indukcijom se moe dokazati da je T (n) ≤ 2cn.2.10. (a) Nejednakost se moe dokazati indukcijom po n. Za n = 1 nejednakost je taqna.

Ako pretpostavimo da je taqna za brojeve mae od n, onda jeT (n) ≤ T (bn/2c) + 1 ≤ blog2bn/2cc+ 2 ≤ blog2 (2bn/2c)c+ 1 ≤ blog2 nc+ 1

(jer za svako n vai 2bn/2c ≤ n), pa je tvree taqno i za n.(b) Sliqno kao u prethodnom sluqaju

T (n) ≤ T (bn/2c) + 1 ≤ dlog2bn/2ce+ 1 = dlog2 (2bn/2c)e ≤ dlog2 ne.2.11. Oduzimaem date jednakosti od T (n +1) = n +1+

∑ni=1 T (i), dobija se T (n +1)−

T (n) = 1 + T (n), odnosno T (n + 1) = 2T (n) + 1, iliT (n + 1) + 1 = 2(T (n) + 1) = 22(T (n− 1) + 1) = · · · 2n−1(T (2) + 1) = 2n+1

(jer je T (2) = 2 + T (1) = 3). Dakle, T (n) = 2n − 1.2.12. Za i ≤ x ≤ i + 1 je ik log2 i ≤ xk log2 x, pa je

n∑

i = 1

ik log2 i =n∑

i = 1

∫ i + 1

iik log2 i dx ≤

n∑

i = 1

∫ i + 1

ixk log2 x dx =

∫ n + 1

1xk log2 x dx

=log2 ek+1

(xk+1 ln x− xk+1

k+1

)∣∣∣n+1

1= O(nk+1 log n).

2.13. Kontraprimer: f(n) = 3n, g(n) = 2n, r(n) = s(n) = n,2.14. Za f(n) = s(n) = g(n) = n i r(n) = n2 je ako je f(n) = O(s(n)) i g(n) = n =

O(n2) = O(r(n)), ali f(n)/g(n) = 1 6= O( 1n

) = O(s(n)/r(n)).

334 13. UPUTSTVA I REXEA ZADATAKA

2.15. Funkcije se mogu izabrati tako da jedna od ih naglo raste za parne, a druga zaneparne n. Posmatrajmo sledee dve rastue funkcije:

f(n) =

n!, n parno(n− 1)! + 1, n > 1 neparno ; g(n) =

(n− 1)! + 1, n parnon!, n neparno .

Poxto je

f(n)g(n)

=

n(1 + 1

(n−1)!

)−1, n parno

1n

(1 + 1

(n−1)!

), n > 1 neparno

,

ni f(n)/g(n) ni g(n)/f(n) nisu ograniqene funkcije: za parno n je f(n)/g(n) ≥ n2, a za

neparno n je g(n)/f(n) ≥ n2

.

2.16. Neka je ak = T (2k). Tada je a1 = 1 i ak = 2ak−1 + 1, iliak + 1 = 2(ak−1 + 1) = 22(ak−2 + 1) = · · · = 2k−1(a1 + 1) = 2k.

Prema tome, T (n) = n−1 ako je n stepen dvojke. U opisanom pokuxaju se mogu izbei texkoeako se kao ci postavi dokazivae nejednakosti T (n) ≤ cn + d. Iz pretpostavke da je onataqna za k < n sledi da je

T (n) = 2T(

n2

)+ 1 ≤ 2

(c n

2+ d

)+ 1 = cn + d + (d + 1),

xto je mae ili jednako od cn + d akko je d ≤ −1. Prema tome, nejednakost T (n) ≤ cn + dje taqna (za n = 2k) akko je d ≤ −1 i T (2) = 1 ≤ 2c + d, odnosno c ≥ (1 − d)/2. Najmae cdobija se za najvee d = −1, pa je najboa gora granica ove vrste T (n) ≤ n− 1 | u skladusa prethodnim rexeem.

2.17. Moe se iskoristiti teorema 2.5.4, jer su m i c konstante. Prema tome,

S(n) =

O(nlogm(cm log2 m)

), m > 21/c

O(n log n), m = 21/c

O(n), m < 21/c

.

2.18. Za n oblika cm + n0, 0 ≤ n0 < c oznaqimo izraz T (cm + n0) sa R(m). Tada jeR(m) = 2R(m− 1) + k. Mnoei ovu jednakost sa 2−m, dobijamo S(m) = S(m− 1) + k2−m,gde je S(m) = 2−mR(m). Rexee poslede diferencne jednaqine je

S(m) = k(2−m + 2−(m−1) + . . . + 2−0) + S(0) = S(0) + k(1− 2−m).

Dae jeR(m) = T (cm + n0) = 2m

(S(0) + k(1− 2−m

)= O(2m) = O(dcm+n0 )

(gde je d = 21/c), odnosno T (n) = O(dn).2.19. Rexee je T (n) = O(n). Da bismo to dokazali, pretpostavimo da postoji konstanta

d takva da je T (k) < dk za k < n. Tada je

T (n) =k∑

i = 1

aiT (n/bi) + cn <k∑

i = 1

aidn/bi + cn = nd

k∑

i = 1

ai/bi + c/d

.

Konstanta d moe se izabrati tako da bude d ≥ c/(1−∑k

i=1 ai/bi

)odnosno

∑ki=1 ai/bi +

c/d < 1. Tada iz gore nejednakosti sledi T (n) < dn, odnosno time je dokazano da nejed-nakost T (n) < dn vai za svako (dovono veliko) n.

2.20. U oba sluqaja se prvi utisak o nizovima dobija izraqunavaem nekoliko prvihqlanova; oba niza su monotono neopadajua, xto se lako dokazuje indukcijom.

(a) Prvih nekoliko qlanova niza, poqevxi od T (2) su 1, 8, 10, 26, 28, 30, 32, 34, 40, 42,. . .. Indukcijom se dokazuje da je

T (n) = 1 + 4 + 42 + . . . + 4k = (4k+1 − 1)/3 za 22k−1+ 1 ≤ n ≤ 22k

.

Odatle se vidi da za 2k−1 < log2 n ≤ 2k vai(4 log2

2 n− 1)/3 ≤ (4(2k)2 − 1)/3 = T (n) = (16(2k−1)2 − 1)/3 < (16 log22 n− 1)/3,

13.2. ANALIZA ALGORITAMA 335

odnosno T (n) = Θ(log2 n).(b) Oqigledno je T (n) ≥ 2n. S druge strane, indukcijom se pokazuje da je T (n) < 6n.

Neposredno se proverava da je ovo taqno za n ≤ 14. Za n ≥ 15 > 3(5+√

21)/2 iz nejednakostiT (d√ne) < 6d√ne sledi

T (n) < 2 · 6d√ne+ 2n ≤ 12(√

n + 1) + 2n = 6n− ((2√

n− 3)2 − 21)

< 6n,

jer je √n > (3 +√

21)/2 ekvivalentno sa n > 3(5 +√

21)/2.2.21. Neka je n = 2i, ai = T (2i), a0 = c. Za i ≥ 1 je tada ai = kai−1 + f(2i), odnosnoaik

−i = ai−1k−(i−1) + k−if(2i) = ai−2k−(i−2) + k−(i−1)f(2i−1) + k−if(2i) =

= = . . . c + k−1f(21) + k−2f(22) + . . . + k−if(2i).

Ako uvedemo oznaku 2j = m, onda jek−jf(2j) = k− log2 mf(m) = 2− log2 k log2 mf(m) = m− log2 kf(m) = g(m).

Poxto je ki = klog2 n = 2log2 k log2 n = nlog2 k, dobija se da je

T (n) = nlog2 k

c +

i∑

j = 1

k−jf(2j)

,

xto je i trebalo dokazati.2.22. Pretpostavajui da je n = 2k, dobijamo

T (n) = T (2k) = T (2k−1) + 2k/2 = T (2k−2) + 2(k−1)/2 + 2k/2 = . . .

= T (1) + 21/2 + 22/2 + · · ·+ 2k/2 =

= 2(k+1)/2−1√2−1

= (√

2n− 1)(√

2 + 1) = O(√

n).

2.23. Oqigledno je T (n) > 3n. Indukcijom se lako dokazuje da je za dovono veliko nT (n) neopadajua funkcija. Za velike n je T (n) sa gore strane ograniqeno nizom S(n) kojizadovoava diferencnu jednaqinu S(n) = 2T (n/b) + 3n (za proizvono veliko b), odnosnoS(n) = O(nlogb 2) = O(n1+ε), gde je ε proizvono malo. Nasluuje se da bi T (n) i sa gorestrane moglo biti ograniqeno linearnom funkcijom.

Neka je a > 3 konstanta. Iz pretpostavke da za k < n vai T (k) < ak, za log2 n >2a/(a− 3) sledi

T (n) = 2T(⌊

nlog2 n

⌋)+ 3n < 2a

⌊n

log2 n

⌋+ 3n < 2an

log2 n+ 3n < an.

Specijalno, za a = 9, T (n) < 9n sledi iz T (k) < 9k za k < n ako je log2 n > 3, odnosno n > 8.Za n ≤ 8 neposredno se proverava da je T (n) < 9n, pa za svako n ≥ 1 vai 3n ≤ T (n) ≤ 9n,odnosno T (n) = Θ(n).

2.24. Nejednakostdlog2

nie ≤ 1 + log2

ni≤ 1 + log2

nx

vai za svako x iz intervala [i− 1, i], 2 ≤ i ≤ n. Integracijom u granicama od i− 1 do i, pasumiraem po i od 2 do n, dobija se nejednakost

S(n) ≤ log2n + n− 1 +

∫ n

1log2

n

xdx = (n− 1)(1 + log2 e),

pa je S(n) = O(n).2.25. Neka je n = 2k. Skup 1, 2, . . . , n−1 vrednosti indeksa i, (sabirak za i = n jednak

je nuli), moe se razloiti na k podskupova 2j−1, 2j−1 + 1, . . . , 2j − 1, j = 1, 2, . . . , k, nakojima izraz blog2

nic ima konstantnu vrednost k − j + 1. Prema tome,

n∑

i = 1

blog2nic =

k∑

j = 1

2j−1(k − j + 1) =

k − 1∑

j = 0

2j(k − j) =k∑

j = 1

j2k−j = 2k+1 − k − 2

(videti primer 2.5). Traena suma je dakle 2n− log2 n− 2.

336 13. UPUTSTVA I REXEA ZADATAKA

2.26. Brojevi F (n) i G(n) su definisani za sve cele indekse n. Qlanovi niza G(n) saindeksima 0 i 1 su G(0) = F (0) = 0, G(1) = F (−1) = 1, a odgovarajua diferencna jednaqinaje G(−n−2) = G(−n−1)+G(−n), odnosno (stavajui −n−2 = k), G(k+2) = G(k)−G(k+1).Neposredno se proverava da brojevi G′(k) = (−1)k+1F (k) zadovoavaju ovu diferencnujednaqinu, a poxto je i G′(0) = G(0) = 0 i G′(1) = F (1) = 1 = G(1), onda za k ≥ 0 vaiG(k) = G′(k) = (−1)k+1F (k).

13.3. Strukture podataka3.1. Telo rekurzivne procedure se slike 3.12 moe se zameniti blokom sa slike 3.

begin

v := Koren;

if Koren = nil or Koren .Kljuc = x then

Cvor := Koren

else

while v 6= nil and v .Kljuc 6= x do

if v .Kljuc < x then

v := v .Levi

else

v := v .Desni

end

Ris. 3. Uz zadatak 3.1.

3.2. Problem se moe rexiti indukcijom, odnosno rekurzivnim algoritmom. Traeniniz se dobija nadovezivaem niza koji odgovara levom podstablu, kuqa korena stabla, ina kraju niza koji odgovara desnom podstablu. Za stablo koje ima samo koren, traeni nizje jednoqlan | sadri samo kuq korena. Broj rekurzivnih poziva jednak je broju qvorovastabla n, a trajae svakog poziva je O(1), pa je sloenost algoritma O(n).

3.3. Ako qvor v sa kuqem a u stablu ima desnog sina, onda je traeni broj kuqsledbenika qvora v u stablu, odnosno kuq qvora do koga se od desnog sina v dolazi iduinanie ulevo sve dok je to mogue. U protivnom, ako v nema desnog sina, a levi je sin svogoca, onda je kuq oca traeni broj. Na kraju, ako v nema desnog sina, i desni je sin svogoca, onda je a najvei elemenat skupa A. Sloenost algoritma je O(log n).

3.4. Poxto je pozicija 16 zauzeta, mora biti zauzeta i pozicija 8, na kojoj treba da budeotac qvora 16. Sliqno, moraju biti zauzete i pozicije 4, 2 i 1. Prema tome, minimalni brojelemenata hipa u nizu duine 16 je pet.

3.5. Obe operacije, umetae novog elementa i uklaae elementa sa najveim kuqem,imaju sloenost proporcionalnu visini stabla, dakle O(log n), gde je n broj elemenataliste.

3.6. Za realizaciju ove strukture podataka moe se iskoristiti stek, kombinacijavektora i promenive koja pokazuje na poziciju posledeg podatka u vektoru. Novi podatakse zapisuje na kraju vektora, a sa kraja vektora uzima se i podatak koga treba ukloniti.

3.7. Pogodna struktura je binarno stablo pretrage. Sloenost operacija srazmerna jevisini stabla, pa u najgorem sluqaju moe da bude O(n), gde je n broj elemenata stabla; akose koriste npr. AVL stabla, onda je sloenost operacija u najgorem sluqaju O(log n).

3.8. Koristi se vektor duine n, a u emu se elemenat i smexta na poziciju i. Prematome, umetae je jednostavno. Uklaae je komplikovanije, jer i nije precizirano, a mi ne

13.3. STRUKTURE PODATAKA 337

znamo koje pozicije u nizu nisu zauzete. Problem se rexava povezivaem svih zauzetih pozi-cija u povezanu listu. Umetae i prema tome obuhvata oznaqavae i-te pozicije i umetaepozicije i u listu. Uklaae brixe prvi elemenat iz liste i uklaa oznaku sa pozicijetog elementa.

3.9. Najpre se uklaa proizvoan elemenat iz jednog od hipova (npr. egov koren) iizvedu se odgovarajue popravke hipa. Taj elemenat se zatim umee kao koren novog hipa,tako da koreni dva stara hipa budu egovi sinovi. Popravka dobijenog stabla | hipa(eventualno premextae nanie elementa iz korena) zahteva O(m + n) koraka.

3.10. Pogodna struktura podataka za realizaciju ovog tipa je AVL stablo, u kome seumetaa i brisaa izvrxavaju za O(log n) koraka. Da bi se izvela operacija Naredni(x)koristi se najpre obiqan algoritam za traee x, posle qega treba pronai sledbenika x ustablu (videti zadatak 3.3).

3.11. Pogodna struktura podataka za realizaciju ovog tipa je AVL stablo, u komese umetaa i brisaa izvrxavaju za O(log n) koraka. Svakom qvoru v dodajemo novo poev.D, koje sadri broj potomaka v, zajedno sa v. Neka za dati qvor v Rang(v) oznaqava brojelemenata stabla, sa kuqem maim ili jednakim od v.Kljuc. Korixeem poa D moese odrediti rang qvora v u toku egovog traea, na sledei naqin. Induktivna hipotezaje da znamo rangove svih qvorova na putu od korena do nekog qvora w. Ako koren ima levogsina, onda je egov rang za jedan vei od vrednosti D egovog levog sina; u protivnom jerang korena 1. Neka je wL levi sin qvora w, wD desni sin w, wLD desni sin wL i wDL levisin wD. Rangovi sinova qvora w mogu se izraziti na sledei naqin

Rang(wL) = Rang(w)− wLD.D − 1

Rang(wD) = Rang(w) + wDL.D + 1

(ako neki od sinova ne postoji, uzima se da je odgovarajua vrednost poa D jednaka 0). Da bise izvrxila operacija Naredni(x, k), treba najpre pronai qvor v takav da je v.Kljuc = x(ako takav qvor ne postoji, onda je potraga neuspexna). Zatim se trai qvor sa rangomRang(v) + k; traee prema rangu iste je sloenosti kao i traee prema kuqevima:rangovi se izraqunavaju usput, a redosled u stablu isti im je kao redosled kuqeva. Timeposao nije zavrxen; poxto je uvedeno novo poe, treba ga aurirati posle operacija kojega meaju. Posle umetaa, odnosno brisaa elemenata inkrementiraju se, odnosno dekre-mentiraju poa D u svim qvorovima na putu od korena; u sluqaju neuspexnog umetaa ilibrisaa ove promene se moraju ponixtiti. Zaxto je uvedeno poe D umesto poa Rang,koje bi traee kuqa sa datim rangom qinilo jednostavnijim? Zbog toga xto umetae ibrisae u najgorem sluqaju meaju rangove O(n) elemenata!

3.12. Neka su T1 i T2 dva data stabla, pri qemu su svi kuqevi u stablu T2 vei svihkuqeva u stablu T1, i neka je visina h stabla T2 vea od visine stabla T1. U stablu T2

treba pronai qvor v sa najmaim kuqem (spuxtajui se polazei od korena ulevo, sve dokje mogue); za to je potrebno O(h) operacija. Qvor v se zatim brixe iz T2, pa se formiranovo stablo sa korenom v i podstablima T1 i T2 (bez v); za sve ovo potrebno je izvrxitiO(h) operacija.

3.13. Rexee je sliqno rexeu zadatka 3.12, pri qemu treba obezbediti da dobijenostablo bude uravnoteeno, bez obzira xto data stabla T1 i T2 mogu biti razliqitih visinah1 i h2. Poxto se radi o AVL stablima, pretpostava se da se uz svaki qvor quva podatako egovoj visini. Neka je npr. h1 ≥ h2. Prema definiciji konkatenacije, pretpostava seda je najvei kuq iz T1 mai od najmaeg kuqa iz T2. Ideja je da se najvei elemenat r izT1 obrixe, pa da se iskoristi kao koren preko koga se T2 privezuje na odgovarajue mestou levom podstablu T1. Preciznije, spuxtajui se u T1 samo desnim granama, dolazimo doqvora v qija je visina ili h2 ili h2− 1 (takav qvor uvek postoji u T1; lako se proverava dase visine oca i sina u AVL stablu razlikuju ili za jedan ili za dva); neka je p otac v. Tadana p kao desnog sina umesto v kaqimo r, qiji je levi sin v (sa svojim podstablom iz T1), adesni sin koren T2. Tako se dobija ispravno binarno stablo pretrage. Posle ove operacije

338 13. UPUTSTVA I REXEA ZADATAKA

visina qvora r moe da postane za jedan vea od visine qvora v koji je bio na tom mestu, paje eventualno potrebno izvrxiti uravnoteavae pomou rotacije.

3.14. (a) Sluqajno AVL stablo visine 0 sastoji se od samo jednog qvora | korena.Sluqajno AVL stablo visine 1 dobija se izborom sa verovatnoama 1/3 jedne od tri mogu-nosti: koren ima ili samo desnog sina, ili oba sina, ili samo levog sina. Sluqajno AVLstablo visine h > 2 konstruixe se rekurzivno, tako xto se sa verovatnoama 1/3 bira jednaod tri varijante u kojima su visine levog i desnog podstabla redom (h−2, h−1), (h−1, h−1)i (h− 1, h− 2).

(b) Posmatrajmo faktore ravnotee u qvorovima puta kojim se prelazi od korena slu-qajnog AVL stabla, preko kritiqnog qvora v, do novoumetnutog qvora u, i to redom odu do v (mogue je takoe da na putu do u nema kritiqnog qvora; verovatnoa takvog is-hoda je 3−m, gde je m duina puta od korena do u). Na tom putu, poqevxi od oca w qvorau, faktori ravnotee imaju uniformnu raspodelu na skupu −1, 0, 1, a put se zavrxava(jer se doxlo do kritiqnog qvora) onog trenutka kad se naie na faktor razliqit od 0.Verovatnoa da ovaj put ima duinu i je

(13

)i−1 23. Matematiqko oqekivae duine ovog

puta je∑∞

i=1 i · 2 · 3−i = 32; ova vrednost ne zavisi od visine h AVL stabla.

3.15. Prvi broj se stava u koren stabla. Indukcijom po k pokazuje se da brojevi saindeksima 2k, 2k +1, . . . , 2k+1−1 mogu biti redom umetnuti u stablo tako da u svakom qvoruu svakom koraku bude ispuen uslov ravnotee (da razlika broja qvorova u levom i desnompodstablu ne premaxuje 1). Ako je ovo taqno za neko k, onda se 2k+1 brojeva sa indeksima2k+1, 2k+1 + 1, . . . , 2k+2 − 1 takoe mogu redom ubaciti u stablo tako da bude zadovoenuslov ravnotee. Zaista, ove brojeve treba naizmeniqno ubacivati u levo, odnosno desnopodstablo; po induktivnoj hipotezi, poxto levo i desno podstablo na poqetku imaju po2k − 1 qvorova, u ih se moe redom ubaciti 2k brojeva tako da uslov ravnotee budeispuen u svakom koraku. Pored toga, uslov ravnotee je uvek ispuen i za koren stabla,jer se brojevi naizmeniqno ubacuju u levo i desno podstablo.

Drugo rexee. Isti algoritam moe se formulisati i direktno (umesto rekurzivno):prilikom ubacivaa broja sa indeksom n = (bkbk−1 . . . b0)2, gde su bk = 1, bk−1, . . . , b0 bi-narne cifre broja n, binarne cifre bk, bk−1, . . . , b0 odreuju put do mesta ubacivaa qvora:cifra 0, odnosno 1, odreuje skretae ulevo, odnosno udesno. Ovo tvree dokazuje se in-dukcijom.

3.16. Utisak o naqinu narastaa AVL stabla moe se stei iscrtavaem nekolikoprvih stabala (na slici 4 | do n = 7). zapaa se da se za n = 2k+1 − 1 dobija potpunobinarno stablo Kk visine k; da se dodavaem broja 2k+1 (bez rotacije) dobija stablo visinek + 1, i ta visina se ne mea posle dodavaa brojeva 2k+1 + 1, 2k+1 + 2, . . . , 2k+1 + 2k+1 − 1(ukupno 2k+1 brojeva). Ovo tvree se dokazuje indukcijom (u korenu Kk je broj 2k; prilikomdodavaa prvih 2k brojeva 2k+1, 2k+1+1, . . . , 2k+1+2k−1 mea se samo desno podstablo, kojeod Kk−1 prelazi u Kk; zatim se pri dodavau 2k+1 + 2k izvrxava rotacija, i koren umesto2k postaje 2k+1, pa desno podstablo ponovo postaje Kk−1, spremno da primi bez promenevisine novih 2k−1 brojeva 2k+1 +2k +1, 2k+1 +2k +2, . . . , 2k+1 +2k+1−1, prelazei ponovou Kk). Uravnoteavae stabla se uvek izvodi jednostrukom rotacijom, jer novi broj, kaonajvei, uvek zavrxava u desnom podstablu desnog podstabla.

3.17. Svako binarno stablo moe se nacrtati tako (u "rastavenom obliku") da za svakiegov qvor v vai da su svi qvorovi egovog levog (desnog) podstabla nacrtani levo (desno)ispod ega. Ako se qvorovima stabla kao kuqevi pridrue ihove x-koordinate posleiscrtavaa u rastavenom obliku, stablo postaje BSP. Pogodnim izborom koordinatnogpoqetka lako se postie da svi kuqevi budu pozitivni. Neka je v levi sin proizvonogqvora u i neka je T1, odnosno T2, levo, odnosno desno podstablo qvora v. Rotacija oko grane(u, v) stabla je transformacija pri kojoj

• T2 umesto desnog podstabla v postaje levo podstablo u;• u umesto sina nekog qvora x postaje desni sin qvora v;• v umesto levog sina qvora u postaje sin qvora x.

13.3. STRUKTURE PODATAKA 339

k

k k

k k

k

k

k k

kk

k

k k

kk k

k

k k

kkk k

1

2 1 3

4

2

1

2

4

3 5 1 3

2

4

5

6 1 3 5 7

2

4

6±°²¯

±°²¯

±°²¯

Ris. 4. Uz zadatak 3.16.

Simetriqno se moe opisati rotacija oko grane (u, v) ako je v desni sin qvora u. Ako jepolazno stablo prikazano u rastavenom obliku, posle rotacije se takoe moe predstavi-ti u rastavenom obliku, pri qemu x-koordinate qvorova nisu promeene. Jasno je da jerotacija reverzibilna transformacija (posle rotacije novog stabla oko grane (v, u) dobijase polazno stablo).

Lema. Binarno stablo sa n qvorova moe se pomou n rotacija transformisati u "lin-earno" stablo, u kome ni jedan qvor nema levog sina.

Lema se moe dokazati indukcijom. Za n = 1, 2 tvree je taqno. Neka je tvree taqnoza svako binarno stablo sa < n qvorova, i neka je dato proizvono binarno stablo sa nqvorova. Iz ega privremeno uklonimo proizvoan list v koji je levi sin nekog qvora (akotakav list ne postoji, stablo je ve linearno). Ostatak stabla se pomou najvixe n − 1rotacije transformixe u linearno stablo. Grana kojom je v povezan sa svojim ocem u nijeuqestvovala ni u jednoj rotaciji, pa je v i dae list. Primenom jox jedne rotacije oko grane(u, v) dobija se linearno stablo. Time je lema dokazana.

Primetimo da je rezultujue linearno stablo jednoznaqno odreeno polaznim stablom,jer su x-koordinate polaznih qvorova jednake kao u polaznom stablu. Isti niz rotacija,primeenih obrnutim redosledom, prevodi linearizovano stablo u polazno. Pomou oveleme lako je dokazati tvree zadatka. Zaista, T1 i T2 se sa po najvixe n rotacija trans-formixu u isto, linearno stablo T od n qvorova. Posle toga se stablo T pomou najvixe nrotacija (istih onih koje T2 prevode u T , ali obrnutim redosledom) prevodi u stablo T2.

3.18. Moe se iskoristiti sliqna ideja kao za formirae unija skupova. Polazi seod "elementarnih" grafova | grafova zadatih listom povezanosti. U opxtem sluqaju segrafovi predstavaju korenskim stablom, pri qemu su elementarni grafovi predstavenisamo jednim qvorom | korenom. Unija dva grafastabla formira se tako xto se pokazivaqna oca korena jednog stabla (prethodno nil) usmeri ka korenu drugog stabla, dakle pomouO(1) operacija. Preostaje pitae kako za graf predstaven ovakvim stablom odrediti skupqvorova i kako za dva qvora ustanoviti da li su povezani granom. Skup qvorova grafa jeunija svih skupova qvorova | elementarnih grafova. Da bi se za dva qvora ustanoviloda li su povezani granom, najpre se proverava da li pripadaju elementarnom grafu; akonisu, onda su sigurno povezani granom; u protivnom, koristi se lista povezanosti ihovogzajedniqkog elementarnog grafa.

3.19. Za skup T moe se iskoristiti struktura od dva nivoa AVL stabala: qvorovistabla na vixem nivou (glavnog stabla) su blokovi qiji elementi se pojavuju u T , sapokazivaqima na korene stabala nieg nivoa, nameenih za smextae elemenata pojedinihblokova. Operacije Umetni(si) i Obrisi(si) poqiu izvrxeem procedure Koji blok(si);dobijeni broj bloka se koristi da se iz glavnog stabla dobije pokazivaq na stablo sa ele-mentima tog bloka u T , posle qega preostaje da se na obiqan naqin izvrxe operacije u tomstablu. Trea operacija Obrisi blok(j) izvrxava se uklaaem bloka j iz glavnog stabla(posle toga pomono stablo j postaje nedostupno).

3.20. Za izraqunavae suma moe se iskoristiti pomoni niz S, u kome se sume brojevasmextaju na poseban, "razgranat" naqin. Pretpostavimo zbog jednostavnosti da je n = 2k−1

340 13. UPUTSTVA I REXEA ZADATAKA

za neko k. Zbir brojeva sa indeksima od 1 do 2k−1 smextamo u S[2k−1]. Na taj naqin je problempodeen na dva potproblema dvostruko mae veliqine | nalaee sume za levu (od 1 do2k−1 − 1) i desnu (od 2k−1 + 1 do 2k − 1) polovinu niza A. Svaki od potproblema moese rexiti indukcijom. Prvi potproblem rexava se nezavisno, izuzev xto se posle svakeoperacije Dodaj mora izvrxiti odgovarajua izmena sume u S[2k−1]. Drugi potproblem setakoe rexava nezavisno, izuzev xto dobijenoj vrednosti Parcijalna suma treba dodatiS[2k−1]. "Razmotavajui" rekurziju vidimo da S[i] sadri sumu brojeva od A[j + 1] do A[i],gde je j sa doe strane najblii indeks indeksu i, koji je deiv veim stepenom dvojke negoi (drugim reqima, j se od i dobija pretvaraem u nulu egove najdesnije cifre 1 u binarnomzapisu). Na primer, S[12] sadri sumu A[9] + A[10] + A[11] + A[12] (i = 12 = (1100)2, pa jej = (1000)2 = 8.

3.21. Sve operacije osim poslede lako se realizuju pomou AVL stabla. Da bi se real-izovala operacija Dodaj svima(y) koristi se nova globalna promeniva Nivo, u kojoj se qu-va zbir svih vrednosti | argumenata operacije Dodaj svima. Prema tome, Dodaj svima(y)prosto dodaje vrednost y promenivoj Nivo. Odredi Vrednost(x) dodaje Nivo vrednostipridruenoj x. Umetni(x, y) dodeuje kuqu x vrednost y −Nivo.

13.4. Konstrukcija algoritama indukcijom4.1. Pretpostavimo zbog jednostavnosti da je stepen n polinoma broj oblika 2k − 1.

Mogua je dekompozicija polinoma P (x) = a0 + a1x + · · · + anxn na parni i neparni deo,P (x) = Pp(x2) + xPn(x2), gde su

Pp(x) = a0 + a2x + a4x2 + · · ·+ an−1x(n−1)/2,

Pn(x) = a1 + a3x + a5x2 + · · ·+ anx(n−1)/2

polinomi stepena (n− 1)/2 sa koeficijentima parnih, odnosno neparnih indeksa polinomaP . Time se izraqunavae vrednosti polinoma stepena n svodi na izraqunavae vrednostidva polinoma stepena (n − 1)/2, dva mnoea i jedno sabirae. Ako T (n) oznaqava brojoperacija potrebnih za izraqunavae vrednosti polinoma stepena n − 1 (polinoma sa nkoeficijenata), onda je T (2k) = 2T (2k−1) + c, gde je c = 2 za broj mnoea, a c = 1 za brojsabiraa. Poqetne vrednosti su T (0) = 0 i T (1) = 1. Rexee ove diferencne jednaqine jeT (2k) = 2k − 1 (sabiraa, za c = 1), odnosno T (2k) = 2k + 2k−1 − 2 (mnoea, za c = 2).Dakle, za izraqunavae vrednosti polinoma stepena n = 2k − 1 potrebno je izvrxiti nsabiraa i (3n − 4)/2 mnoea | nexto vixe (za faktor 3/2) u odnosu na Hornerovuxemu. Prednost ovog algoritma nad Hornerovom xemom je jednostavna paralelizacija, jerse vrednosti Pp(x2) i Pn(x2) mogu izraqunavati nezavisno.

4.2. Tvree da za A = 1, 2, . . . , n i proizvonu funkciju f : A → A postoji neprazanpodskup S ⊂ A takav da je na emu f bijekcija, moe se dokazati indukcijom po n, malomizmenom induktivne konstrukcije algoritma. Tvree je taqno za n = 1. Ako je taqno zabrojeve < n, onda li su u A = 1, 2, . . . , n svi elementi slike nekih elemenata iz A (tada jeS = A 6= ∅), ili postoji takav elemenat a ∈ A u koji se ne preslikava ni jedan elemenat A.Tada je f : A\a → A\a funkcija definisana na podskupu A\a ⊂ A, pa po induktivnojhipotezi postoji podskup S ⊂ A \ a ⊂ A, S 6= ∅, na kome je f bijekcija.

4.3. Invarijanta pete je sledei iskaz: samo jedna meu osobama 1, 2, . . . , Naredni− 1moe da bude kandidat za zvezdu, a to je osoba i ako je j = Naredni, ili osoba j ako jei = Naredni.

4.4. Rekurzivni algoritam za izraqunavae faktora ravnotee i visina svih qvoro-va iz odeka 4.7 rexava ovaj problem kao specijalni sluqaj, a efikasan je: za priblinouravnoteena stabla sloenost T (n) (gde je n broj qvorova) zadovoava diferencnu jednaq-inu T (n) = 2T (n/2)+c, qije je rexee T (n) = O(n). Preciznije, da bi se doxlo do algoritma,treba malo promeniti induktivnu hipotezu: za stablo sa mae od n qvorova umemo da izraqu-namo visine svih qvorova i da proverimo da li je AVL stablo. Za dato stablo sa n qvorovanajpre se izraqunava visina korena preko visine podstabala. Stablo je AVL stablo ako je

13.4. KONSTRUKCIJA ALGORITAMA INDUKCIJOM 341

faktor ravnotee korena (razlika visina levog i desnog podstabla, ako oba postoje, ilivisina levog podstabla, ako samo ono postoji, ili visina desnog podstabla sa znakom minus,ako samo ono postoji, ili 0 ako stablo ima samo koren) u skupu −1, 0, 1, i oba podstabla sumu (ako postoje) AVL stabla. Ako se na pojavu qvora sa faktorom ravnotee modula veegod 1 reaguje izlaskom iz rekurzije, onda je algoritam efikasan i za neuravnoteena stabla.

4.5. Za S-AVL qvor v rei emo da je PS-AVL qvor ako ni jedan egov potomak nijeS-AVL qvor. U stablu postoji bar jedan S-AVL qvor akko u emu postoji bar jedan PS-AVLqvor. Problem se rexava indukcijom, odnosno rekurzivnom procedurom koja za podstablosa datim korenom odreuje visinu i proverava da li u emu postoji neki S-AVL qvor(i oznaqava sve PS-AVL qvorove u sluqaju potvrdnog odgovora). Procedura, primeenana koren stabla, generixe rekurzivne pozive za levo, odnosno desno podstablo. Time su upodstablima oznaqeni svi PS-AVL qvorovi | ako ih ima; ako S-AVL qvorova nema ni ulevom ni u desnom podstablu, a visine podstabala su jednake, koren se oznaqava kao PS-AVLqvor; visina stabla (ako ima vixe od jednog qvora) dobija se poveavaem za jedan vee odvisina podstabala.

4.6. Moe se primeniti algoritam za rekurzivno izraqunavae faktora ravnoteei visina svih qvorova stabla (videti odeak 4.7), u kome za svaki izraqunati faktorravnotee qvora proverava da li je on jednak 1; ako se za bilo koji qvor dobije vrednostrazliqita od 1, stablo nije L-AVL stablo.

4.7. Problem se moe rexiti rekurzivnim algoritmom. Proverava se da li su obastabla neprazna; ako jesu, proverava se da li oba korena imaju levog sina, a ako ga imaju,rekurzivno se proverava da li su jednaka leva podstabla. Ako jesu, proverava se da li obakorena imaju desnog sina, a ako ga imaju, rekurzivno se proverava da li su jednaka desnapodstabla.

4.8. Koji od sabiraka S[1], S[2], . . . , S[n] ulaze u sumu K moe se opisati nizom R duinen, takvim da je R[i] = true akko S[i] uqestvuje u sumi. Komponente R[i] izraqunavaju se redomza i = n, n−1, . . . , 1, korixeem delimiqne sume k, qija je poqetna vrednost k = K. U petise izvrxavaju dve operacije R[i] := P [i, k].P ripada; k := k − S[i];.

4.9. Videti sliku 5.

begin

i := 0; j := 0; k := 0; indeksi tekue prekidne taqke f ′(x), f ′′(x) i f(x)while i ≤ k and j ≤ l do

x := minx′i+1, x′′j+1; naredna prekidna taqka xif x ≤ x′i+1 then i := i + 1; popravka vrednosti f ′(x) = f ′(x′i) = h′iif x ≤ x′′j+1 then j := j + 1; popravka vrednosti f ′′(x) = f ′′(x′′j ) = h′′j H := maxh′i, h′′j ; vrednost f(x) posle novog prekida xif H 6= hk then

k := k + 1; xk := x; hk := H nova prekidna taqka f(x)end

Ris. 5. Uz zadatak 4.9.

342 13. UPUTSTVA I REXEA ZADATAKA

4.10. Dato je n funkcija

gi(x) = GLi,Di,Vi(x)

=

0, x < Li

Vi + (x− Li), Li ≤ x < Li + δi

Vi + δi + x− (Li + δi), Li + δi ≤ x < Di

0, x ≥ Di

.

gde je δi = (Di − Li)/2. Maksimum nekoliko ovakvih funkcija je fukcija oblika

g(x1,h1,k1),(x2,h2,k2),...,(xm,hm,km)(x)

sa prekidnim taqkama (xi, hi) i nagibom ki ∈ 0,±1 u intervalu [xi, xi+1), 0 ≤ i ≤ m.Drugim reqima, vrednost funkcije u taqki x ∈ [xi, xi+1) je hi+ki(x−xi). Zbog jednostavnostise moe smatrati da je x0 = −∞, h0 = 0, k0 = 0, xm+1 = +∞. Problem se takoe rexavadekompozicijom: n zadatih funkcija dele se u dve jednake grupe, rekurzivno se za ihodreuju dve funkcije | maksimumi, i na kraju se u O(n) koraka nalazi maksimum te dvefunkcije. Objediavae dve funkcije poqie objediavaem ihovih nizova prekidnihtaqaka, O(n) koraka; u intervalima izmeu dve uzastopne prekidne taqke obe funkcijesu linearne, pa se maksimum lako odreuje. Ako se dve linearne funkcije u intervaluseku, dodaje se nova prekidna taqka, koja interval deli na dva podintervala. Obrada svihintervala izvrxava se za O(n) koraka. Ukupna sloenost algoritma je rexee diferencnejednaqine T (n) = 2T (n/2) + cn, tj. O(n log n).

4.11. Rexee je sliqno rexeu problema nalaea podniza sa maksimalnim zbirom,pri qemu ovde treba dae pojaqati induktivnu hipotezu zbog promene znaka proizvoda ele-menata posle mnoea novododatim negativnim brojem. Pretpostavamo da za niz x1, x2,. . . , xm, m ≤ n, znamo

• podniz xi, xi+1, . . . , xj sa maksimalnim proizvodom p1;• sufiks xr, xr+1, . . . , xm sa maksimalnim proizvodom p2, i• sufiks xs, xs+1, . . . , xm sa minimalnim negativnim proizvodom p3.

Posle dodavaa broja xm+1, nove vrednosti p1, p2, p3 su

(p2, p3) :=

(xm+1p2, xm+1p3), xm+1 > 0(1,−1), xm+1 = 0(xm+1p3, xm+1p2), xm+1 < 0

,

p1 := maxp1, p2.Bez smaea opxtosti moe se pretpostaviti da su brojevi xi razliqiti od nule: u pro-tivnom nule razdvajaju niz na podnizove, za koje se problem rexava nezavisno, jer su sviproizvodi koji prelaze granicu nekog od ovih podnizova, jednaki nuli.

4.12. Problem se rexava sliqno kao nalaee faktora ravnotee qvorova grafa (ode-ak 4.7). Induktivna hipoteza je da za stabla sa mae od n qvorova umemo da izraqunamovisinu korena, da oznaqimo sve kritiqne qvorove, a time i da ustanovimo da li unutarstabla postoji neki ne-AVL qvor (a time i neki kritiqan qvor). Za dato stablo sa n qvorovaprimeuje se induktivna hipoteza na egovo levo i desno podstablo, posle qega se moeizraqunati visina korena, proveriti da li je koren kritiqan qvor, oznaqiti ga ako jeste,a time i ustanoviti da li unutar celog stabla postoji neki ne-AVL qvor. Trajae obradekorena je O(1), pa je sloenost rekurzivnog algoritma O(n).

4.13. Rexee je jednostavno za stablo sa jednim ili dva qvora. Pretpostavimo da umemoda reximo problem za stabla sa n qvorova, i neka je dato stablo T sa n+1 qvorom. Neka je vproizvoni list u T (qvor koji je povezan sa samo jox jednim qvorom), i neka je w jedini qvorsusedan sa v. Uklaaem v iz T dobijamo stablo T ′ sa n qvorova, za koje prema induktivnojhipotezi umemo da izraqunamo matricu svih rastojaa u O(n2) koraka. Rastojae od v doproizvonog qvora u iz T ′ je za jedan vee od rastojaa od w do u; drugim reqima, svakielemenat naredne, (n + 1)-e vrste matrice izraqunava se pomou O(1) operacija.

13.4. KONSTRUKCIJA ALGORITAMA INDUKCIJOM 343

Nije texko transformisati ovaj algoritam u nerekurzivni, formirajui najpre u O(n)koraka dva niza qvorova ui, vi takvih da se polazei od qvora u1 = v2 u i-tom korakuqvor ui povezuje granom sa qvorom vi, i = 2, 3, . . . , n, i tako dobija T . Pri tome je uvekvi ∈ u1, u2, . . . , ui−1. Vrsta matrice koja odgovara qvoru ui (i-ta vrsta) dobija se tako xtose odgovarajui elementi vrste qvora vi (dakle jedne od prethodnih vrsta) poveaju za jedan;izuzetno, dijagonalnim elementima dodeuje se vrednost 0.

4.14. Stablo sa dijametrom 0 je jedan (izolovani) qvor; stablo sa dijametrom 1 qinedva qvora povezana granom. Stablo sa vixe od dva qvora ima dijametar najmae dva. Ako jeδ = δ(T ) dijametar stabla T i qvorovi u, v su takvi da im je rastojae d(u, v) = δ, onda suqvorovi u, v listovi, tj. qvorovi sa po samo jednim susedom (u protivnom, ako npr. u nijelist, put izmeu u i v mogao bi se produiti drugom granom iz u do qvora npr. w, i bilobi d(w, v) = δ + 1, suprotno pretpostavci). Ako se od stabla T sa bar tri qvora formirastablo T ′ uklaaem svih listova, onda su sa svakog puta izmeu dva lista u T ukloeniprvi i posledi qvor, pa je δ(T ′) = δ(T )−2. Isti postupak moe se ponoviti sa stablom T ′,ako je broj egovih qvorova bar 3, itd. Na kraju se dolazi ili do izolovanog qvora (δ0 = 0),ili do dva qvora povezana granom (δ0 = 1), a dijametar polaznog stabla je δ0 + 2k, gde jek broj iteracija. Sloenost algoritma je O(n), gde je n = |V |, jer je za uklaae svakogqvora potrebno izvrxiti O(1) operacija.

4.15. Za rexavae problema ranca (odreivae podskupa brojeva k1, k2, . . . , kn sa sumomK) dovoan je jedan radni vektor A duine K, u kome sa za svako k, 0 ≤ k ≤ K, pamti samoposledi sabirak u sumi jednakoj k, ili se vrednoxu −1 oznaqava da ne postoji podskupsa zbirom k. Najpre se rexava problem sa 0 sabiraka, stavaem A[0] := 0 i A[k] := −1za k = 1, 2, . . . , K (xto znaqi da je bez ijednog sabirka mogu samo zbir 0). Zatim se zai = 1, 2, . . . , n prave svi mogui zbirovi u koje ulazi novi sabirak ki: za sve vrednostik = 0, 1, 2, . . . , K, takve da je A[k] ≥ 0, ako je k + ki ≤ K, stava se A[k + ki] := ki, qime seregistruje da je mogue dobiti zbir k + ki sa posledim sabirkom ki (prethodno je zbir kdobijen kao zbir nekog podskupa skupa k1, k2, . . . , ki−1). Ako se na kraju dobije A[K] ≥ 0, ondapostoji podskup sabiraka sa sumom K, i taj podskup je lako rekonstruisati: prvi sabirakje A[K]; naredni je A[K −A[K]], itd.

4.16. Za rexavae ove varijante problema ranca moe se iskoristiti matrica P [i, j] sapoima Postoji i Pripada iz algoritma Ranac (slika 4.11). Treba staviti P [i, k].Postoji :=true akko vrednost true ima bilo koji od elemenata P [i−1, k], P [i−1, k−ki], P [i−1, k−2ki],. . . . Elegantnije rexee je staviti P [i, k].Postoji := true akko (P [i−1, k].Postoji := true ili(k − ki ≥ 0 i P [i, k − ki].Postoji := true). Ako je od uslova u zagradi ispuen drugi, i samoonda stava se P [i, k].P ripada := true.

4.17. I ovaj problem moe se rexiti primenom dinamiqkog programiraa. Za svakipar (i, k), 0 ≤ i ≤ n, 0 ≤ k ≤ K, neka je C[i, k] najvea mogua vrednost ranca sa sadrajemteine k, ako se u emu mogu nai samo prvih i predmeta, i neka je λ(i, k) broj primerakapredmeta tipa i u nekom od sadraja ranca sa vrednoxu C[i, k]. Graniqni uslovi za matriceC i λ su C[i, 0] = λ[i, 0] = 0, C[0, k] = λ[0, k] = 0, 0 ≤ i ≤ n, 0 ≤ k ≤ K. Podskup prvih ielemenata sa sumom k, takav da ima najveu vrednost, moe se dobiti na jedan od sledeadva naqina: podskup sadri, ili ne sadri i-ti elemenat. U prvom, odnosno drugom sluqajunajvea vrednost podskupa je C[i − 1, k] (pri qemu je λ[i, k] = 0), odnosno C[i, k − ki] + vi

(pri qemu je λ[i, k] = λ[i, k − ki] + 1). Prema tome, C[i, k] = max C[i− 1, k], C[i, k − ki] + vi,a λ[i, k] ima vrednost 0 ili λ[i, k− ki] + 1, u zavisnosti od toga da li je vea prva ili drugavredost u izrazu za C[i, k]. Na taj naqin se pomou O(nK) operacija izraqunavaju kompletnematrice C i λ. Na kraju se rekurzivno izraqunavaju brojevi ai korixeem pomonog nizaw. Najpre je an = λ[n, K], wn = K, a zatim wi−1 = wi − λ[i, wi]ki, ai−1 = λ[i − 1, wi−1], zai = n, n− 1, . . . , 2.

4.18. Zbir elemenata u traenim podskupovima treba da bude S/2, pa S mora da budeparan broj. Za nalaee podskupa sa sumom S/2 moe se iskoristiti obiqan algoritam zarexavae problema ranca, (slika 4.11) sloenosti O(n · S/2) = O(nS).

344 13. UPUTSTVA I REXEA ZADATAKA

4.19. Pretpostavimo da postoji podskup datog skupa k1, k2, . . . , kn sa sumom k. Crnukutiju primeujemo na niz k1, k2, . . . , kn−1; ako je odgovor "da", onda postoji sumarexeeu koju ne ulazi kn; u protivnom, kn obavezno ulazi u sumu, i potrebno je odrediti podskupskupa k1, k2, . . . , kn−1 sa sumom k − kn. U oba sluqaja smaen je ulaz jednom upotrebom crnekutije, i ustanoveno je da li kn ulazi u zbir.

4.20. Neka je hn najmai broj poteza potrebnih da se n diskova prebaci sa xtapia A naxtapi B. Oqigledno je h1 = 1. Pretpostavimo da znamo rexee za problem sa n−1 diskom.Problem sa n diskova na xtapiu A mora se rexavati tako da se najvei disk ne dira svedok se n − 1 maih diskova ne prebaci u hn−1 poteza na xtapi C | tek tada se najveidisk moe premestiti na xtapi B. Posle toga se na ega mogu naslagati ostali diskovi,xto se moe izvesti najmae za narednih hn−1 poteza. Dakle, problem sa n diskova moese rexiti za hn = 2hn−1 +1 poteza. Ova diferencna jednaqina moe se prepisati u oblikuhn +1 = 2(hn−1 +1), odakle je hn +1 = 2(hn−1 +1) = 22(hn−2 +1) = · · · = 2n−1(h1 +1) = 2n,odnosno hn = 2n − 1.

4.21. Problem se rexava indukcijom, kao i osnovna varijanta, koristei zapaaeda se najvei disk ne moe pomeriti dok zadati xtapi ne bude prazan, a ostali diskovisloeni na treem (preostalom) xtapiu. Preciznije, postoje dve mogunosti: ili je najve-i disk na dnu zadatog xtapia, ili se nalazi na dnu pogrexnog xtapia. U prvom sluqajusamo treba na najvei disk rekurzivno premestiti ostalih n − 1 diskova | najvei diskne ometa ihova premextaa zbog svoje veliqine. U drugom sluqaju se n− 1 maih diskovarekurzivno (na najjednostavniji naqin) premexta na trei disk, najvei disk se premextana zadati xtapi, pa se drugi put rekurzivno (kao u osnovnoj varijanti problema!) n − 1maih diskova premexta na zadati xtapi.

13.5. Algoritmi za rad sa nizovima i skupovima5.1. B moe da postavi seriju pitaa "da li je 2i vee od n", za i = 1, 2, . . . , m, gde

je m = blog2 nc + 1. Posle toga zna se da je 2m−1 ≤ n < 2m, pa sledi serija pitaa kojaodgovara binarnoj pretrazi intervala (2m−1, 2m] veliqine 2m−1 | ukupno m − 1 pitae.Ukupan broj pitaa je 2m− 1 = 2blog2 nc+ 1.

5.2. Ako sa T (n) oznaqimo oqekivani broj pitaa za pogaae broja iz intervala odn uzastopnih prirodnih brojeva (oqekivani broj pitaa ne zavisi od poqetka intervala!),onda T (n) zadovoava sledee diferencne jednaqine

T (2k) = 1 + k2k

T (k) + k2k

T (k) = 1 + T (k), k ≥ 1

(interval od 2k brojeva se pomou jednog pitaa brojem m razbija na dva podintervala odpo k brojeva sa jednakim verovatnoama k/(2k) = 1/2), odnosno

T (2k + 1) = 1 + k+12k+1

T (k + 1) + k2k+1

T (k), k ≥ 1

(interval od 2k+1 brojeva se analogno razbija na jedan interval od k+1 i jedan interval odk brojeva, pri qemu su verovatnoe da izabrani broj bude u prvom, odnosno drugom intervaluredom (k + 1)/(2k + 1), odnosno k/(2k + 1)). Poxto je T (1) = 0, za T (97) dobija se

1 + 4997

T (49) + 4897

T (48) = 1 + 4997

(1 + 2549

T (25) + 2449

T (24)) + 4897

(1 + T (24))

= 2 + 2597

T (25) + 7297

T (24) = 2 + 2597

(1 + 1325

T (13) + 1225

T (12)) + 7297

(1 + T (12))

= 3 + 1397

T (13) + 8497

T (12) = 3 + 1397

(1 + 713

T (7) + 613

T (6)) + 8497

(1 + T (6))

= 4 + 797

T (7) + 9097

T (6) = 4 + 797

(1 + 47T (4) + 3

7T (3)) + 90

97(1 + T (3))

= 5 + 497

T (4) + 9397

T (3) = 5 + 497

(1 + T (2)) + 9397

(1 + 23T (2) + 1

3T (1))

= 6 + 197

T (2)(4 + 93 · 23) = 6 + 66

97.

13.5. ALGORITMI ZA RAD SA NIZOVIMA I SKUPOVIMA 345

5.3. Ako je u nekom trenutku traena strana x u opsegu izmeu strana m i n, i ako jekiga otvorena na neparnoj strani y, onda je po uslovu

−0.1(n−m + 1) ≤ y − ⌊m+n

2

⌋ ≤ 0.1(n−m + 1).

Ako je x = y ili x = y+1, traena strana je pronaena; u protivnom treba pretraiti iliopseg od m do y − 1 (duine y −m) ili opseg od y + 2 do n (duine n− y − 1). Koristeioqigledne nejednakosti

m+n2

− 12≤ bm+n

2c ≤ m+n

2,

dobijamo da je veliqina novog opsega maa ili jednaka odminy −m, n− y − 1 ≤

= min⌊

m+n2

⌋−m + 0.1(n−m + 1), n− 1− ⌊m+n

2

⌋+ 0.1(n−m + 1)

= min

m+n2

−m + 0.1(n−m + 1), n− 1− m+n2

+ 12

+ 0.1(n−m + 1)

= min 0.6(n−m)− 0.1, 0.6(n−m)− 0.4 = 0.6(n−m)− 0.4.

Ako sa ak oznaqimo veliqinu opsega strana posle k otvaraa kige, onda je a0 = 1998,ak ≤ 0.6ak−1 − 0.4, odnosno ak + 1 ≤ 0.6(ak−1 + 1) ≤ 0.62(ak−2 + 1) ≤ · · · ≤ 0.6k(a0 + 1).

Traee se zavrxava najkasnije u trenutku kad je ak ≤ 1, odnosno 0.6k · 1999 ≤ 2, ilik ≥ 13.52. Kigu treba otvoriti najvixe 14 puta.

5.4. Moe se iskoristiti binarna pretraga; ulazni tekst podeli se na dve polovine istartuje se program sa prvom polovinom teksta na ulazu. Ako doe do grexke, znamo da jegrexka u toj polovini, i nastavamo dae na isti naqin; u protivnom, grexka je u drugojpolovini (pretpostavamo da deo teksta koji izaziva grexku ovom podelom nije preseqen).

5.5. Interpolaciona pretraga dobro radi ako vrednost xk ne odstupa mnogo od nekelinearne funkcije od indeksa k, 1 ≤ k ≤ n. Zato primer niza na kome interpolacionapretraga loxe radi treba traiti u kategoriji jako "nelinearnih" monotonih nizova. Naprimer, posmatrajmo niz xk = k!, i neka u emu treba nai broj z = (n − 1)!. Posle svakogkoraka se leva granica intervala indeksa pomera samo za 1. Zaista, ako je k < n−1 i polazise od intervala xk = k!, xn = n!, sledea vrednost leve granice intervala za indekse je k+1,jer je

k + 1 ≤⌈k +

(n−1)!−k!n!−k!

(n− k)⌉

=⌈k + 1− k(n−1)!+k!(n−k−1)

n!−k!

⌉≤ k + 1

5.6. Primer se moe konstruisati indukcijom. Treba obezbediti da na svakom nivourekurzije najvea dva broja u nizovima koji se objediavaju budu u razliqitim nizovi-ma. Induktivnu hipotezu da se najvea dva broja nalaze u prvoj i drugoj polovini nizaproxirujemo zahtevom da se najvei broj nalazi na posledem mestu u nizu. Za k = 1 niz1, 2 zadovoava ove uslove. Ako je x1, x2, . . . , xn niz sa traenim osobinama, onda i niz od2n = 2k+1 elemenata

2x1 − 1, 2x2 − 1, . . . 2xn − 1, 2x1, 2x2, . . . 2xn,

ima te osobine: obe polovine ovog niza imaju iste meusobne odnose elemenata kao i nizx1, x2, . . . , xn, pa sva objediavaa pri ihovom sortirau po induktivnoj hipotezi sadremaksimalni broj uporeivaa. Pored toga, najvei brojevi 2xn − 1 i 2xn (xn je po induk-tivnoj hipotezi najvei meu brojevima x1, x2, . . . , xn) se nalaze u razliqitim podnizovima,a najvei od 2n brojeva, 2xn nalazi se na posledem mestu u nizu.

5.7. Sortirae se moe svesti na maksimum pravougaonika. Za date brojeve a1, a2,. . . , an najpre se izraquna a = minai | 1 ≤ i ≤ n i b = maxai | 1 ≤ i ≤ n, pa se zapravougaonike (ai − a, b − a, ai − a), 1 ≤ i ≤ n (sa visinama jednakim x-koordinati levogkraja ai − a i "poravnatim" desnim krajevima b − a) odredi ihov maksimum. Dobijenafunkcija f(x1,x1),(x2,x2),...(xn,xn)(x) odreuje sortirani redosled brojeva a1, a2, . . . , an: to jex1 + a, x2 + a, . . . xn + a (levi gori uglovi svih pravougaonika lee na pravoj y = x).

5.8. Na kraju svakog prolaska kroz osnovnu petu algoritma na na slici 8) taqno jesledee tvree: x[i] ≤ pivot za 1 ≤ i ≤ L i x[i] > pivot za D ≤ i ≤ n, xto se lako dokazujeindukcijom po broju prolazaka kroz petu. Pored toga, u svakom prolasku kroz petu se L

346 13. UPUTSTVA I REXEA ZADATAKA

poveava, a D smauje najmae za 1, pa posle najvixe n/2 prolazaka kroz petu mora danastupi uslov za iskakae iz pete L ≥ D. Preciznije, u tom trenutku je D = L− 1, jer seL zaustava na vrednosti indeksa D zateqenoj iz prethodnog prolaska kroz petu, a ondase D smauje samo za 1. Poxto je pokazivaq L u posledem prolasku "prexao" sve qlanoveniza do indeksa D, zakuquje se da je na kraju x[i] ≤ pivot za i ≤ D i x[i] > pivot za i ≥ D+1.

5.9. Pretpostavamo da se radi sa promeenim algoritmom Razdvajanje (slika 8),tako da ako pivot nije jednak X[Levi], onda se najpre zameuje sa X[Levi]. Neka je X[1] = 1,X[n] = 2, i neka su svi ostali elementi vei od 2. U tom sluqaju jasno je da e pivot bitiX[n]. Promeeni algoritam Razdvajanje e najpre zameniti X[1] sa X[n] (pivot na poqetakniza), a onda e zameniti X[n] sa X[2] (jer je sada X[n] = 1 < 2 i X[2] > 2). Poxto su sviostali elementi vei od 2, nema drugih zamena. Rezultat razdvajaa je dolazak 1 i 2 naihova prava mesta na poqetku niza. Sortirae razdvajaem nastava se rekurzivno nanizu od treeg do posledeg elementa. Da bi se nastavilo na isti naqin, trei najmaielemenat treba da bude na poziciji 3, a (poxto je elemenat na posledoj poziciji u nizuposle razdvajaa na poqetku bio na drugoj poziciji) qetvrti najmai elemenat na poziciji2. Preme tome, ako je n parno, niz brojeva 1, 4, 3, 6, 5, . . . , n, n − 1, 2 (na krajevima su 1 i 2,a na pozicijama 2i, 2i + 1 nalaze se brojevi 2i + 2, 2i + 1 za 1 ≤ i ≤ n/2 − 1) se primenomsortiraa razdvajaem ureuje pomou Ω(n2) uporeivaa.

5.10. Podelimo skup na dva podskupa sa jednakim brojem elemenata. Rexivxi rekur-zivno oba potproblema, dobijamo dva minimalna (m1, m2) i dva maksimalna elementa (M1,M2) u podskupovima. Maksimalni elemenat u polaznom skupu je maxM1, M2, a minimalnije minm1, m2, tj. za objediavae dva rexea dovona su dva uporeivaa. Ako sa T (n)oznaqimo broj potrebnih uporeivaa za ulaz veliqine n, onda se za parno n dobija T (n) =2T (n/2) + 2, T (2) = 1. Prema tome, T (2k) + 2 = 2(T (2k−1) + 2) = 22(T (2k−2) + 2) = · · · =

2k−1(T (2) + 2) = 3 · 2k−1 − 2, tj. za n = 2k je T (n) = 32n.

5.11. Rezultat je prikazan sledeom tabelom (fi je uqestanost pojavivaa znaka ci, lije duina odgovarajue kodne reqi u bitima, i = 1, 2, . . . , 9). Ukupan broj upotrebenih bitaje 64, u odnosu na 168 bita ako se upotrebi ASCII ko d (osmobitni), odnosno21× 4 = 84 bita ako se svaki znak kodira sa po 4 bita.

i ci fi li ko d1 a 4 2 002 r 4 2 013 4 3 1114 b 2 3 1005 v 2 4 11006 d 2 4 11017 n 1 4 10118 h 1 5 101009 m 1 5 10101

5.12. Matrica rastojaa podstringova A i B, zajedno sa strelicama koje prikazujuedit operacije najmae cene data je tabelom 1:

U doem desnom uglu tabele pronalazimo da je minimalni broj edit operacija 6. Dodoeg desnog ugla dolazi se samo operacijom →. Idui dae unazad, vidimo da se od goreglevog do doeg desnog ugla tabele moe doi npr. nizom operacija →→, xtoodgovara sledeem nizu transformacija:

a a b c c b b a φ φb a a c b a b a c c

1+ 0+ 1+ 0+ 1+ 1+ 0+ 0+ 1+ 1 = 6.

5.13. Neka je n1 = bn/2c. Posmatrajmo vrednost w = A[n1]. Ako je w ≥ z, onda se z morapojaviti u nizu A[1], A[2],. . .A[n1] (razlika uzastopnih qlanova niza je najvixe 1, pa ni jedna

13.5. ALGORITMI ZA RAD SA NIZOVIMA I SKUPOVIMA 347

B 0 1 2 3 4 5 6 7 8 9 10A b a a c b a b a c c

0 0 → 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → 9 → 10

↓ 1 a 1 1 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → 9

↓ ↓ 2 a 2 2 1 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8

↓ ↓ ↓ 3 b 3 2 2 2 2 2 → 3 → 4 → 5 → 6 → 7

↓ ↓ ↓ ↓ ↓ 4 c 3 3 3 3 2 → 3 3 → 4 → 5 5 → 6

↓ ↓ ↓ ↓ ↓ ↓ 5 c 5 4 4 4 3 3 → 4 4 → 5 5 5

↓ ↓ ↓ ↓ ↓ ↓ ↓6 b 6 5 5 5 4 3 → 4 4 → 5 → 6 6

↓ ↓ ↓ ↓ ↓ ↓ ↓7 b 7 6 6 6 5 4 4 4 → 5 → 6 → 7

↓ ↓ ↓ ↓ ↓ 8 a 8 7 6 6 6 5 4 → 5 4 → 5 → 6

Tablica 1. Uz zadatak 5.12

vrednost ne moe biti preskoqena). U protivnom, ako je w < z, onda se z mora pojaviti u nizuA[n1 + 1], A[n1 + 2],. . .A[n]. U oba sluqaja se problem svodi na pretragu skupa od najvixedn/2e elemenata, sloenost T (n) zadovoava diferencnu jednaqinu T (n) ≤ T (dn/2e) + 1,T (1) = 0, qije je rexee T (n) ≤ dlog2 ne (videti rexee zadatka 2.10).

5.14. Moe se iskoristiti teorijsko-informaciona granica. Broj moguih odgovarana pitae postaveno u zadatku 5.13 je n (z moe biti jednako nekom od brojeva A[1],A[2],. . .A[n]). Prema tome, stablo odluqivaa koje rexava ovaj problem mora imati n lis-tova (gde i-ti list odgovara rexeu z = A[i]). Visina takog stabla odluqivaa je najmaedlog2 ne. Sloenost algoritma iz rexea zadatka 5.13 jednaka je ovoj dooj granici, xtoznaqi da je taj algoritam optimalan u najgorem sluqaju.

5.15. Moe se upotrebiti broj, za jedan vei od najveeg broja u skupu S. Algoritamsloenosti mae od Ω(n) ne moe da rexava ovaj problem za sve ulaze, jer ne moe dapregleda svih n elemenata skupa S.

5.16. (a) Treba sortirati skup S a zatim za svako z ∈ S izvrxiti binarnu pretraguskupa S za brojem x− z.

(b) Problem se moe rexiti indukcijom, sa sledeom induktivnom hipotezom: umemoda reximo problem za sortirani skup od < n elemenata. Neka je dat rastue ureeni nizS od n elemenata. Posmatrajmo zbir y = S[1] + S[n]. Ako je y = x, problem je rexen. Ako jey > x, onda S[n] ne moe biti deo rexea, jer za svako i vai S[n]+S[i] > S[n]+S[1] = y > x;S[n] se dakle moe eliminisati (izvoeem O(1) operacija) i preostali problem rexitiindukcijom. Ako je y < x, onda sliqno S[1] ne moe biti deo rexea (S[1]+S[i] < S[1]+S[n] =y < x), pa se eliminixe S[1]. Razmotavajui rekurziju, vidimo da se u algoritmu koristedva pokazivaqa, Levi (poqetna vrednost 1) i Desni (poqetna vrednost n). U peti (qijeizvrxavae traje sve dok je Levi < Desni i y 6= x) se proverava suma y = S[Levi] + S[desni];ako je y = x, problem je rexen, a ako je y > x (y < x) dekrementira se Desni (inkrementirase Levi).

5.17. Neka u prvom skupu ima k, a u drugom n − k elemenata. Oznaqimo elemente pr-vog, odnosno drugog skupa, posle sortiraa u rastuem redosledu sa a1, a2, . . . , ak, odnosno

348 13. UPUTSTVA I REXEA ZADATAKA

b1, b2, . . . , bn−k. Za svako i, 1 ≤ i ≤ n − k, niz a1 + bi, a2 + bi, . . . , ak + bi je rastui, pa sebinarnom pretragom pomou O(log n) (preciznije dlog2 ke+1) uporeivaa meu ovim broje-vima pronalazi x, ili se utvruje da ni jedan od ih nije jednak x. Znaqi, za proveru svihparova ai + bj dovono je O(n log n) uporeivaa; sloenost poqetnog sortiraa je takoeO(n log n), pa je ukupna sloenost algoritma O(n log n).

Drugo rexee. Drugi deo posla, posle sortirae S1 i S2, moe se obaviti efikasnije,algoritmom sloenosti O(n). Posmatraju se (i uporeuju redom sa x) sume ai + bj , pri qemuse najpre fiksira i = 1, a j uzima vrednosti redom n − k, n − k − 1, . . . . Bira se takvoj da je a1 + bj+1 > x ≥ a1 + bj ; tada za sve parove (r, s) takve da je r ≥ 1 i s > j, vaiar + bs > a1 + bj > x, pa ostaju samo parovi (r, s) za koje je 1 ≤ r ≤ k, 1 ≤ s ≤ j. Akotakvo j ne postoji (tj. ako je a1 + bn−k < x ili a1 + b1 > x), posao je zavrxen, odgovorje "ne". U protivnom, pomou m = n − k − j + 1 sabiraa i uporeivaa eliminisano jem − 1 najveih elemenata bn−k, bn−k−1, . . . , bj+1 skupa S1. Nastavajui na ovaj naqin(poveavajui indeks r u sumi ar + bs, pa smaujui indeks s, itd.) dolazi se do rexea.Ukupan broj sabiraa i uporeivaa pri tome nije vei od 2n.

5.18. Nizove elemenata prvog i drugog skupa treba sortirati, pa objediniti, sliqnokao pri sortirau objediavaem, samo xto se usput jox i izbacuju ponoveni elementi(oni koji se pojavuju u oba skupa).

5.19. Pokazaemo da se traeni parovi mogu formirati tako da se za k = 1, 2, . . . , n/2upare k-ti najmai i k-ti najvei broj iz datog skupa; oznaqimo ovaj raspored sa A, aodgovarajuu vrednost smax sa smax(A). Da bismo to dokazali, pretpostavimo suprotno, dapostoji neko drugo uparivae (raspored B), takvo da je smax(B) < smax(A). Pretpostavimoda je dati niz prethodno sortiran u rastuem redosledu. Ako u rasporedu B nisu uparenix1 i xn, odnosno ako je x1 u paru (x1, xi), a xn u paru (xj , xn), onda se od rasporeda Bmoe napraviti raspored B1 zamenom ova dva para parovima (x1, xn) i (xi, xj). Tada jesmax(B1) ≤ smax(B), jer je x1+xn ≤ xj +xn ≤ smax(B) i xi+xj ≤ xn+xj ≤ smax(B), tj. svizbirovi parova u B1 su mai ili jednaki od smax(B), pa je i smax(B1) ≤ smax(B). Sliqno seod B1 formira raspored B2 u kome su upareni x2 i xn−2, pri qemu je smax(B2) ≤ smax(B1),itd. Posle najvixe n/2 ovakvih premextaa parova dolazi se (preko niza rasporeda sanerastuim vrednostima smax) do rasporeda A, tj. smax(A) ≤ · · · ≤ smax(B2) ≤ smax(B1) ≤smax(B), suprotno pretpostavci da je smax(B) < smax(A).

5.20. Dovono je parove (ai, xi) sortirati (u mestu) prema "kuqu" ai (npr. sortiraerazdvajaem). Time par (ai, xi) dolazi na poziciju ai, i = 1, 2, . . . , n, xto je i traeno,

5.21. Na poqetku treba d prvih (minimalnih) elemenata staviti u hip (tako da u ko-renu bude najmai elemenat). Zatim se u svakom narednom koraku uklaa iz hipa najmaielemenat (iz korena) i umee se sledei elemenat iz onog niza kome je pripadao uklon-jeni elemenat (zbog toga se u hipu mora za svaki elemenat quvati i podatak iz kog je nizapotekao).

5.22. (a) Moe se svaki elemenat umetnuti u uravnoteeno binarno stablo pretrage(npr. AVL stablo). Svaki qvor u stablu treba da sadri broj pojavivaa elemenata jed-nakih egovom kuqu (pri prvom upisu nekog kuqa u stablo brojaq se postava na nulu,a pri svakom narednom upisu istog elementa, brojaq se inkrementira). Poxto razliqitihkuqeva ima O(log n), broj qvorova u stablu je O(log n), pa je visina stabla O(log log n).Zatim se AVL stablo "isprava" (videti zadatak 3.2), tj. egovi elementi se u rastuemredosledu kopiraju (i to toliko puta kolika je vrednost odgovarajueg brojaqa) u izlazniniz duine n.

(b) Zahvaujui qienici da je mali broj razliqitih elemenata, pri sortirau subitno korixene vrednosti elemenata, pa ovaj algoritam nije obuhvaen modelom stablaodluqivaa.

5.23. Neka je Tn uravnoteeno stablo sa n qvorova, i neka je f(n) zbir visina svihqvorova u Tn. Stablo T2n dobija se od stabla Tn dodavaem listova n + 1, n + 2, . . . , 2n qijesu visine 0. Visina qvora i i = 1, 2, . . . , n, u T2n taqno je za jedan vea od egove visine u Tn,pa je f(2n) = f(n) + n. Pored toga, f(2n + 1) = f(2n). Pomou ovih diferencnih jednaqina

13.5. ALGORITMI ZA RAD SA NIZOVIMA I SKUPOVIMA 349

lako se indukcijom dokazuje nejednakost f(n) ≤ n − 1, kao i da jednakost vai akko je nstepen dvojke.

5.24. Suma visina je T (n) =∑n

i=1blog2(n/i)c. Pretpostavimo da je n = 2k − 1. Tadaje blog2(n/i)c = j za i = 2k−j−1, 2k−j−1 + 1, . . . 2k−j − 1 (tj. u zbiru se sabirak j pojavuje2k−j−1 put), j = 0, 1, 2, . . . , k − 1, pa je T (n) =

∑ni=1 j2k−j−1 = 2k − k − 1 = O(n) (sliqna

suma izraqunata je u primeru 2.5). Ako n + 1 nije stepen dvojke, tj. 2k − 1 < n < 2k+1 − 1,onda se svaki sabirak u ovoj sumi moe poveati najvixe za jedan, pa se cela suma poveavanajvixe za n, i T (n) = O(n).

5.25. Algoritam se sastoji od rekurzivnog spuxtaa niz hip i brojaa elemenata veihod x, dok se ne proe celi hip, ili se ne izbroji k elemenata. Veih od x ima k ili vixe akkoje k-ti najvei vei od x. Preciznije, koristi se rekurzivna procedura koja, primeena na(pot)hip sa korenom u zadatom qvoru v polaznog hipa

• uporeuje vrednost u korenu v sa x;• ako je rezultat poreea "vee", poveava se za jedan vrednost promenive m

(koja je statiqka, odnosno zajedniqka za sve nivoe rekurzije);• ako je m > k, izlazi se iz procedure;• procedura se zatim rekurzivno poziva za oba sina qvora v.

Algoritam najpre postava poqetnu vrednost m := 0 (broj elemenata hipa veih od x), azatim primeuje opisanu proceduru na koren hipa. Broj rekurzivnih poziva ograniqen jesa O(k), nezavisno od veliqine hipa. Memorijski prostor O(k) potreban je za stek, odnosnoza pamee rekurzivnih poziva.

Drugo rexee. Opisano rexee se moe formulisati i mnogo jednostavnije, ako seproqita poglave 6. Qvorovi sa kuqem veim od x qine jedno podstablo polaznog stabla,pri qemu, ako je kuq nekog qvora ≤ x, onda zbog osobine hipa to isto vai i za sve egovepotomke. To podstablo moe se obii bilo kojim postupkom pretrage, DFS ili BFS, priqemu se pretraga zavrxava i pre kompletnog obilaska ako se nabroji vixe od k qvorova sakuqem veim od x (usput se pregleda najvixe k qvorova sa kuqem ≤ x).

5.26. Pretpostavimo da algoritam A pronalazi da je elemenat xi k-ti najvei posleniza uporeivaa, qiji rezultati nisu dovoni da se ustanovi da li je neki drugi elemenatxj mai ili vei od xi. To znaqi da se rezultati tih uporeivaa nee promeniti ako sexj zameni brojem y > xi ili brojem z < xi. Meutim, u ta dva sluqaja ne dobija se isti k-tinajvei elemenat, xto je u kontradikciji sa pretpostavkom.

5.27. Ideja je posmatrati 2k elemenata istovremeno. Poqiemo sa prvih 2k elemenata,i pronalazimo ihovu medijanu (oqekivani broj koraka je O(2k) = O(k)). Elementi vei odmedijane se eliminixu. Zatim posmatramo sledeih k elemenata i radimo isto. Postupakse sastoji od oko n/k iteracija u kojima se izraqunava medijana 2k elemenata, pa je sredavremenska sloenost O(n).

5.28. Raqunari P i Q mogu da (bez razmene poruka) sortiraju svoje skupove. Pret-postavimo dakle da je a1 < a2 < · · · < an i b1 < b2 < · · · < bn. Oznaqimo sa f(i) rangelementa ai u nizu B, odnosno sa g(i) rang elementa bi u nizu A. Elemenat ai (odnosno bi) jemedijana unije akko je i+ f(i) = n (odnosno i+ g(i) = n). Razumno je da poruke koje raqunarirazmeuju budu sledeeg tipa: raqunar xae jedan svoj elemenat drugom raqunaru, a od egadobija rang tog elementa u drugom skupu. Funkcije i + f(i), i + g(i) su strogo rastue, pa sebinarnom pretragom posle najvixe 4 log2 n razmeenih poruka pronalazi traena medijana.

5.29. Razliqitih moguih odgovora ovde ima n + 1, pa svako stablo odluqivaa kojerexava ovaj problem treba da ima bar n + 1 listova. Odatle neposredno sledi tvreezadatka.

5.30. Ideja je konstruisati tablicu h (videti odeak 5.6) za onaj deo uzorka koji je vepoznat, i produavati je po dodavau narednih znakova. Ovo nije texko, jer je konstrukcijatablice h sliqna obiqnom traeu uzorka u tekstu.

350 13. UPUTSTVA I REXEA ZADATAKA

5.31. Promena je minimalna: svaki put kad doe do neslagaa, treba proveriti da li jeuklopen prefiks uzorka vei od dotle najveeg: ako jeste, treba zapamtiti egovu duinui startnu poziciju u tekstu S.

5.32. Deo (b) je ustvari uputstvo za rexavae dela (a). Najpre se izraqunava editrastojae (i minimalni broj edit operacija) izmeu T i P , pod pretpostavkom da zamenenizu dozvoene (moe se koristiti algoritam isti kao na slici 5.25, izuzev xto se za cenuzamene uzima vrednost 2, kao da je zamena izvedena jednim umetaem i jednim brisaem).LCS dva niza je niz znakova koji su preklopeni (koji se ne meaju, odnosno nisu ni umetanini brisani) pri izvoeu edit operacija. SCS se od LCS dobija dodavaem svih umetnutihi obrisanih znakova.

5.33. Novi algoritam se takoe zasniva na dinamiqkom programirau, odnosno izraqu-navau matrice svih edit rastojaa prefiksa A(i) i B(j), 0 ≤ i ≤ m, 0 ≤ j ≤ n, pri qemuse samo mea diferencna jednaqina i prva vrsta matrice (C[0, j] = 0, 0 ≤ j ≤ n),

C[i, j] =

minC[i− 1, j] + 1, C[i, j − 1] + 1, C[i− 1, j − 1] + c(ai, bj), 1 ≤ i < mminC[i− 1, j] + 1, C[i, j − 1], C[i− 1, j − 1] + c(ai, bj), i = m

.

5.34. Problem se moe rexiti primenom dinamiqkog programiraa, uz pomo trodi-menzionalne tabele M dimenzija (m + 1)× (n + 1)× (p + 1), qiji su elementi Mijk jednakinajmaem broju edit operacija koje prefikse A(i), B(j) i C(k) transformixu u isti niz,0 ≤ i ≤ m, 0 ≤ j ≤ n, 0 ≤ k ≤ p. Neka je

r(u, v) =

0, u = v1, u 6= v

,

r(u, v, w) =

0, u = v = w1, u = v 6= w ili u = w 6= v ili v = w 6= u2, u 6= v i v 6= w i u 6= w

.

Sliqno kao u dvodimenzionalnom sluqaju, polazi se od ivica (Mi,0,0 = i, M0,j,0 = j, M0,0,k =k), a onda se koristi diferencna jednaqina

Mi,j,k = min Mi,j,k−1 + 1, Mi,j−1,k + 1, Mi−1,j,k + 1,

Mi,j−1,k−1 + r(bj , ck), Mi−1,j,k−1 + r(ai, ck), Mi−1,j−1,k + r(ai, bj),

Mi−1,j−1,k−1 + r(ai, bj , ck) .

Prva grupa qlanova odgovara umetau istog znaka u jedan od nizova; druga grupa odgo-vara umetau jednog i eventualnoj promeni jednog znaka; trea grupa odgovara eventualnojpromeni jednog ili dva znaka. Elemenat Mm,n,p jednak je traenom najmaem broju editoperacija. Sloenost algoritma je O(n3) jer je sloenost izraqunavaa pojedinih elemena-ta tabele M O(1). U opxtem sluqaju za "ujednaqavae" k nizova koristi se k-dimenzionalnatabela, a sloenost algoritma je O(nk) (preciznije, O(nk · 2k) = O((2n)k)).

5.35. Najjednostavnije je ovaj problem rexiti obiqnim algoritmom za uporeivaenizova (slika 5.25), koji je promeen tako da su poqetne vrednosti C[i, 0] jednake 0. Drugimreqima, brisae poqetka A ima cenu 0 | upravo ono xto nam je potrebno.

5.36. Traeni algoritam moe se konstruisati indukcijom po n. Pretpostavimo dase moe dobiti sluqajna permutacija p1, p2, . . . , pn−1 skupa 1, 2, . . . , n− 1 sa uniformnomraspodelom verovatnoa. Da bi se dobila sluqajna permutacija brojeva 1, 2, . . . , n, trebanajpre izgenerisati sluqajni broj i, 1 ≤ i ≤ n, koga treba staviti na poslede mesto.Zatim se na n − 1 brojeva 1, 2, . . . , i − 1, i + 1, . . . , n primeuje permutacija p1, p2, . . . , pn−1.To obezbeuje da e se sve permutacije reda n dobiti sa jednakom verovatnoom. Sloenostalgoritma je O(n2).

5.37. Neka su xi, xj dva proizvona elementa E; ako je xi 6= xj i oba ova elementauklonimo iz E, onda ako je u E postojao preovlaujui elemenat, postojae i dae. Ako jexi = xj , onda pamtimo samo xi i broj egovih pronaenih kopija, i uzimamo iz E jedanpo jedan novi elemenat. Kad se naie na elemenat razliqit od xi | uklaamo ga, i brojkopija xi smaujemo za 1 (sve dok eventualno ne doemo do nule; tada se nastava na opisani

13.6. GRAFOVSKI ALGORITMI 351

naqin, sa dva nova elementa). Prema tome, u jednom prolazu (O(n) koraka) eliminixu sesvi elementi E sem eventualno jednog. Provera ovog kandidata za preovlaujui elementzahteva jox O(n) uporeivaa, da bi se odredila egova vixestrukost.

5.38. Moe se iskoristiti algoritam sliqan onome iz rexea zadatka 5.37, izuzevxto treba pamtiti tri (umesto jednog) razliqita kandidata. Novi elemenat uporeuje sesa kandidatima, pa ako je razliqit od svih ih, ihove tekue vixestrukosti se smaujuza jedan (ako pri tome vixestrukost nekog od ih padne na nulu, on ispada iz spiskakandidata). Ako trenutno ima mae od tri kandidata, onda se novi elemenat uzima za novogkandidata, sa tekuom vixestrukoxu 1. Na kraju se preostali kandidati uporeuju sa svimostalim elementima, da bi im se odredile taqne vixestrukosti.

13.6. Grafovski algoritmi6.1. Videti sliku 6.

Ulazna obrada:v.V isina := 0;

v.Faktor := 0;

izlazna obrada: za qvor w, sina qvora vv.V isina := maxv.V isina, 1 + w.V isina;if w je levi sin qvora v then

v.Faktor := v.Faktor + 1 + w.V isina

else

v.Faktor := v.Faktor − 1− w.V isina;

Ris. 6. Uz zadatak 6.1.

6.2. Problem se moe rexiti pomou varijante obilaska DFS (pretrage u dubinu).Rekurzivna procedura startovana iz nekog qvora v, oznaqava v i proverava za sve susedev, sem onoga iz koga se doxlo u v, da li su oznaqeni. Ako je bilo koji od ih oznaqen,izlazi se iz rekurzije sa odgovorom "ne". U protivnom se iz svih suseda procedura startujerekurzivno.

6.3. Neka je za v ∈ V sa d(v), odnosno dT (v) oznaqen stepen qvora v u G, odnosno u T ,i neka je δ(v) = d(v) − dT (v). Prolaskom kroz E izraqunavaju se sve vrednosti d(v), dT (v),i formira se lista qvorova sa δ(v) = 0 | samo ti qvorovi mogu biti "slepe ulice" u DFS.Ako takvih qvorova nema, T nije regularno DFS stablo grafa G. U protivnom se v uklaaiz G, T i liste, uz odgovarajue popravke vrednosti d, dT susednih qvorova, i eventualnoproxirivae liste novim qvorovima w sa δ(w) = 0. Time se problem svodi na mai, kojise po induktivnoj hipotezi moe rexiti.

6.4. Neka je T stablo koje zadovoava uslove zadatka, i neka je e neka grana grafa van T .Poxto je T DFS stablo, grana e je povratna grana u odnosu na ega, tj. e povezuje neki qvor sasvojim potomkom. S druge strane, poxto je T istovremeno i BFS stablo, grana e povezuje dvaqvora na istom ili susednim nivoima hijerarhije u stablu. Doxli smo do kontradikcije,xto znaqi da u grafu ne postoje grane van stabla, odnosno graf koji zadovoava uslovezadatka je stablo.

6.5. Osnova ovog algoritma je algoritam za topoloxko sortirae, koji quva listuqvorova ulaznog stepena nula i sa e skida jedan po jedan qvor (zajedno sa susednim grana-ma, smaujui za jedan ulazne stepene qvorova na ihovim krajevima, i dodajui na listueventualne nove qvorove ulaznog stepena nula). Ako se u toku izvrxavaa isprazni lista, a

352 13. UPUTSTVA I REXEA ZADATAKA

nisu eliminisani svi qvorovi grafa, u preostalom grafu svi qvorovi imaju ulazni stepenbar jedan, xto omoguuje jednostavno pronalaee ciklusa u emu za vreme O(|E|). Zaista,bira se proizvoni qvor v, oznaqava, i pronalazi proizvoan qvor w iz koga vodi granau v; postupak se ponava sa qvorom w, itd, sve do nailaska na oznaqen qvor, koji zatvaraciklus. Pokazivaqi "unazad" lako se formiraju za O(|E|) koraka, obradom jedne po jednegrane iz liste povezanosti.

6.6. Dijkstrin algoritam za svaki naredni qvor dodaje taqno jednu granu koja pri-pada nekom najkraem putu | granu kojom se produuje neki prethodni najkrai put. Nakraju se dobija povezani graf sa |V | grana, dakle stablo. Orijentisaem grana stabla kanovododatim qvorovima, dobija se korensko stablo sa korenom v.

6.7. Nije; videti primer na slici 7.

b b

bv

x y

1

1 3

b b

bv

x y

3

3 5-c = 2

Ris. 7. Uz zadatak 6.7.

6.8. Netaqno. U primeru na slici 8 algoritam Najkr putevi za najkrai put do z pro-glaxava granu (v, z) duine 3. Meutim, put v, x, y, z ima mau duinu 2. Pri tome grafnema ciklus negativne teine.

b

b

b

v

x −3 y

5

bz1

3

Ris. 8. Uz zadatak 6.8.

6.9. U algoritmu za nalaee MCST dovono je svaku pojavu "∞","najmaa","<", za-meniti redom sa "0","najvea",">".

6.10. (a), (b) Videti primere na slici 9.

b b

bv

x y2

1 1

b bb b

b bv v

x xy y2 2

2 23 3

(a) MCST je istovremeno istablo najkraih puteva iz v

(b) primer kad se MCST razlikuje odstabla najkraih puteva iz v

Ris. 9. Uz zadatak 6.10.

(c) Ne. Najkraa grana iz v pripada i jednom i drugom stablu. Ako ona ne bi pripadalaMCST, onda bi enim dodavaem u MCST bio zatvoren ciklus, u kome postoji bar jedna

13.6. GRAFOVSKI ALGORITMI 353

dua grana iz qvora v; zamenom te grane najkraom granom iz v dobija se povezujue stablomae cene, suprotno pretpostavci.

6.11. Najpre se formira maksimalno uparivae i lista neuparenih qvorova. Zatim seuparivae, ako nije savrxeno, poveava u peti za po jednu granu uzimajui proizvonadva neuparena qvora v1 i v2, traei granu uparivaa (w1, w2) takvu da od v1, v2 ka w1,w2 vode bar tri grane (O(|V |) operacija, videti odeak 6.9.1), i zameujui granu (w1, w2)sa dve nove od v1, v2 ka w1, w2. Poxto se polazno uparivae mora poveati za mae od ngrana, sloenost algoritma je O(|V |2) = O(|V |+ |E|).

6.12. Qvorovi proizvonog stabla se mogu indukcijom urediti na opisani naqin: zav1 se uzima proizvoni list, a zatim se iz stabla uklaa v1 sa svojom jedinom susednomgranom; ostali qvorovi se po induktivnoj hipotezi mogu numerisati. Obrnuto, graf kojiima ovu osobinu, ne moe da sadri ciklus, jer svi qvorovi u ciklusu imaju stepen bardva; pored toga, indukcijom po broju qvorova pokazuje se da graf sa ovom osobinom morabiti povezan. Dakle, graf sa ovim osobinama je stablo.

6.13. Polazi se od ciklusa formiranog kao u dokazu tvrea da u Ojlerovom grafuuvek postoji Ojlerov ciklus, odeak 6.2 (formira se tako xto se, polazei iz proizvonogqvora nasumice biraju grane koje qine put, sve dok se ne doe do polaznog qvora). Neka je brojqvorova grafa oznaqen sa n. Oznaqe se grane ciklusa, za svaki qvor se izraquna u posebnomnizu broj emu susednih neoznaqenih grana (egov C-stepen, koji je uvek paran), i formirase lista qvorova sa pozitivnim C-stepenom. Zatim se, sve dok se ta lista ne isprazni,uzima neki qvor sa liste, formira pomoni ciklus od neoznaqenih grana, polazei od togqvora (usput se oznaqavaju grane ukluqene u pomoni ciklus i smauju C-stepeni qvorovana ihovim krajevima, a ako C-stepen nekog qvora postane nula, qvor se uklaa sa liste),i objediuje sa polaznim ciklusom | xto nije texko, jer imaju jedan zajedniqki qvor. Utrenutku kad je lista prazna, sve grane grafa su ukuqene u ciklus. Spomenutu listu zgodnoje realizovati u posebnom vektoru duine n, u kome za elemente liste stoji jedinica, a zaostale qvorove nula. Novi elementi liste uzimaju se prolazei vektor sleva udesno, pa jedovoan jedan prolazak kroz vektor.

6.14. Po uslovu zadatka graf je Ojlerov, ili se sastoji od komponenti povezanosti kojesu Ojlerovi grafovi. U svakoj komponenti povezanosti konstruixe se Ojlerov ciklus, i svegrane ciklusa usmere se u istom smeru du puta (tako da se "nadovezuju"). Tada e za svakiqvor grafa egov ulazni stepen biti jednak egovom izlaznom stepenu.

6.15. Dokaz se izvodi indukcijom po broju grana grafa, na isti naqin kao i dokaztvrea da u Ojlerovom grafu uvek postoji Ojlerov ciklus, odeak 6.2 (razlika je samo utome xto se polazi od nekog usmerenog ciklusa u grafu).

6.16. (a) Zbir stepena svih qvorova grafa je paran broj (jednak dvostrukom broju grana),jer se u toj sumi svaka grana raquna dva puta, za oba qvora na enim krajevima. Posleizbacivaa parnih sabiraka, zbir je i dae paran. Prema tome, broj neparnih sabiraka (tj.qvorova sa neparnim stepenom) mora biti paran.

(b) Prva faza algoritma je povezivae parova neparnih qvorova (qvorova sa neparnimstepenom) bilo kakvim putevima (polazei iz neparnog qvora i birajui nasumice susednegrane, ranije ili kasnije dolazi se do drugog neparnog qvora; uklaaem, odnosno oznaqa-vaem izabranih grana, ova dva qvora postaju parni). Druga faza je proxirivae ovih k/2puteva pomonim ciklusima, dobijenim na isti naqin kao u zadatku 6.13, sve dotle dok imaqvorova stepena veeg od nule, odnosno neoznaqenih grana.

6.17. Moe se konstruisati proizvono povezujue stablo grafa, (npr. DFS stablo) iu tom stablu izabrati proizvoan list.

6.18. Iz proizvonog qvora a1a2 . . . an−1 grafa Gn izlaze taqno dve grane (ka qvorovi-ma a2a3 . . . an−10 i a2a3 . . . an−11); u ega ulaze taqno dve grane (iz qvorova 0a1a2 . . . an−2 i1a1a2 . . . an−2). U grafu Gn je svaki qvor b1b2 . . . bn−1 dostian iz svakog qvora a1a2 . . . an−1

| preko qvorova redom b2b3 . . . bn−1a1, b3 . . . bn−1a1a2, . . . , bn−1a1a2 . . . an−2. Prema tome,graf Gn je usmereni Ojlerov graf. Posledica ove qienice je da za svaki prirodan brojn postoji binarni de Bruijnov niz od N bita, jer se svakom Ojlerovom putu a0a1 . . . an−2,

354 13. UPUTSTVA I REXEA ZADATAKA

a1a2 . . . an−1,. . . , aNa0 . . . an−3 u grafu Gn (on sadri svaku granu Gn taqno jednom) jed-noznaqno pridruuje binarni de Bruijnov niz a0a1 . . . aN | svakoj grani u Gn odgovarajedinstvena n-torka bita u ovom nizu.

6.19. Bazni sluqaj n = 2 je jednostavan: tada je obavezno d1 = d2 = 1. Ci je svestiproblem na mai, sa n−1 brojeva i ograniqeima istog tipa. Poxto su brojevi di pozitivnii zbir im je 2n− 2, za neko k je dk = 1 (u protivnom bi bilo

∑di ≥ 2n > 2n− 2). Na sliqan

naqin, za neko j je dj > 1 (u protivnom bi bilo∑

di ≤ n < 2n − 2 za n > 2). Zbog toga semoe dk udaiti iz skupa, a dj smaiti za jedan, i tako dobiti regularan problem sa n− 1brojeva | svi brojevi su i dae prirodni, a zbir im je 2n − 4. Stablo dobijeno primenominduktivne hipoteze na ove brojeve proxirujemo jednim listom stepena dk = 1 privezanimza qvor stepena dj−1, posle qega stepen tog qvora postaje dj . Time je rexen zadati problem.Sloenost algoritma je O(n).

6.20. Formiraju se dve liste trojki (j, uj , ij): L0 od trojki sa ij = 0 i L1 od ostalihtrojki, ureenih po opadajuim vrednostima indeksa j (zbog qega je 1, u1, i1) posleda trojkau L1). Za n = 2 mogu je samo niz parova (0, 1), (1, 0), kome odgovara korensko stablo od dvaqvora. Sluqaj niza od n parova se na sluqaj n − 1 parova svodi tako xto se skine prvatrojka (k, uk, ik) sa liste L0, a prva trojka (l, ul, il) iz L1 zameuje se sa (l, ul, il − 1); ako jeil − 1 = 0, onda se ta trojka premexta iz L1 u L0; pamti se grana stabla od oca l ka sinuk. Zbir izlaznih stepena je sada n− 2, pa se sa konstrukcijom stabla nastava rekurzivno.Sloenost algoritma je O(n).

6.21. Da bi u G postojala ovakva numeracija, mora da postoji bar jedan qvor v sa izlazn-im stepenom 0; emu se moe pridruiti redni broj n = |V |. Qvor v uklaamo iz grafazajedno sa granama koje ulaze u ega (smaujemo izlazne stepene odgovarajuih qvorova). Napreostali graf G′ rekurzivno primeujemo istu proceduru (odnosno egovi qvorovi se naosnovu induktivne hipoteze mogu numerisati na eeni naqin, ili se moe ustanoviti daje takva numeracija nemogua). Ako postoji numeracija G′, dobija se numeracija G. U pro-tivnom se ni G ne moe numerisati: ako bi postojala numeracija G, onda bi se ona moglapromeniti tako da u oj qvor v ima redni broj n (qvorovi koji u G imaju izlazni stepen0 mogu se numerisati sa nekoliko najveih brojeva na proizvoan naqin), qime se dobijanumeracija za G′, suprotno pretpostavci.

6.22. Moe se iskoristiti pretraga u xirinu (BFS). Polazi se od proizvonog qvora,koji se boji crvenom bojom i stava u listu. Zatim se, dok se lista ne isprazni, skidanaredni qvor v sa liste (obojen!), oznaqava, egovi oznaqeni susedi se proveravaju (da liim je boja suprotna od egove; ako nekome nije, onda G nije 2-obojiv), a neoznaqeni susedi sestavaju na listu i boje bojom suprotnom od boje v. Ako graf nije povezan, onda se opisanialgoritam primeuje posebno na svaku komponentu povezanosti. Sloenost algoritma jelinearna, O(|V |+ |E|).

6.23. Ako je G povezan, algoritam iz zadatka 6.22 posle izbora boje proizvonog qvorajednoznaqno odreuje boje svih ostalih qvorova. Ako pretpostavimo da G nije jednoznaqno2-obojiv, odnosno da postoji pravi podskup U ⊂ V qvorova koji se mogu obojiti bilo jednom,bilo drugom bojom, onda izmeu qvorova u U i V \ U ne moe da postoji ni jedna grana, tj.G nije povezan.

6.24.Moe se iskoristiti algoritam KMP za nalaee uzorka u tekstu, u kombinacijisa pretragom stabla u dubinu. U toku obilaska se za svaki qvor quva egov status u odnosuna trenutno potencijalno umetae uzorka. Preciznije, za qvor v egovo poe v.Stat jednakoje veliqini maksimalnog prefiksa uzorka koji se slae sa sufiksom puta od korena do v(upravo ti podaci quvaju se i u algoritmu KMP). Ulazna obrada za qvor v obuhvata dodavaeznaka iz qvora v (kao u narednom koraku algoritam KMP, i izraqunavae v.Stat. Izlaz-na obrada treba da v.Stat uredno vrati u prethodno stae posle napuxtaa v. Vremenskasloenost algoritma je linearna u odnosu na broj grana stabla.

6.25. Da nema ciklusa, imali bismo posla sa stablom, za koje se problem lako rexava(u emu se neki qvor izabere za koren, a onda se sve grane usmere od korena). Ciklus se moepronai pretragom u dubinu, u trenutku kad se naie na prvu (i jedinu) granu koja vodi

13.6. GRAFOVSKI ALGORITMI 355

ka ve poseenom (oznaqenom) qvoru. Ciklus se moe usmeriti tako da postane usmereniciklus, i da svi egovi qvorovi imaju ulazni stepen 1. Sve ostale grane treba usmeriti usmeru od ciklusa. To se moe postii pokretaem nove pretrage u dubinu od proizvonogqvora na ciklusu i usmeravaem grana u smeru kojim su prelaene prvi put u toku pretrage.Jedina povratna grana usmerena je prema korenu stabla pretrage, qiji je ulazni stepen 1(kao i svih ostalih qvorova).

6.26. Ako je G nepovezan graf, onda se posebno obrauje svaka egova komponentapovezanosti, pa se bez smaea opxtosti moe pretpostaviti da je G povezan. Ako je Gstablo, odgovor je ne, jer onda G ima mae grana nego qvorova, nedovono da se svakomqvoru obezbedi grana koja ulazi u ega. U protivnom u G postoji ciklus, koji se moepronai, na primer, algoritmom sa slike 6.13. Neka su v, w proizvona dva susedna qvorau tom ciklusu; posle uklaaa grane (v, w) iz G, G ostaje i dae povezan. Polazei odqvora v startuje se DFS grafa G, konstruixe se DFS stablo, a u tom stablu sve grane seusmeravaju od korena v. Grana (v, w) usmerava se od w ka korenu v. Preostale grana mogu seproizvono orijentisati.

6.27. Na G treba primeniti pretragu u dubinu, i formirati DFS stablo T . Poxto susve grane grafa povratne u odnosu na T , mogu se sve grane stabla T usmeriti od korena, asve ostale grane ka qvorovima bliim korenu (tj. ka precima).

6.28. Neka se topoloxkim sortiraem G dobija redosled qvorova v1, v2, . . . , vn. Akoznamo najdui usmereni put qiji je posledi qvor vi za i < m ≤ n, onda se najdui meuputevima koji se zavrxavaju u qvoru vm dobija produavaem puta do nekog qvora vi, i < m,granom (vi, vm) | ako ona postoji. Dakle, prilikom prelaska na naredni qvor po topoloxkojnumeraciji, treba proveriti sve grane koje vode u ega. Tako se posle O(|E| + |V |) korakadobijaju duine najduih puteva do qvorova vi, i = 1, 2, . . . , n. Od tih duina bira senajvea. Da bi se rekonstruisao najdui put, pri dodavau novog qvora vm treba pamtitine samo duinu najdueg puta do vm, nego i posledu granu na najduem (ili jednom odnajduih) putu. Sloenost algoritma je O(|E|+ |V |).

6.29. Traeni algoritam moe se konstruisati prilagoavaem algoritma za topo-loxko sortirae, tako xto se svi qvorovi ulaznog stepena 0 zajedno uklaaju iz liste(qvorova stepena 0), i objediuju u prvu grupu. Obrada ovih qvorova vrxi se na isti naqinkao i u algoritmu za topoloxko sortirae: uklaaju se grane koje iz ih izlaze i dekre-mentiraju se ulazni stepeni qvorova na krajevima tih grana, a zatim se uklaaju noviqvorovi ulaznog stepena 0. Sa preostalim grafom nastava se dae na isti naqin, pa sedobijaju druga, trea, . . . grupa. Nije texko dokazati da proizvoni qvorovi v, w iz istegrupe (sa rednim brojem i) ne mogu biti povezani putem. Zaista, u prvoj grupi takav put nemoe da postoji, jer su ulazni stepeni svih qvorova u oj jednaki nuli. Ako se radi o grupii > 1, pretpostavka da postoji put od v do w je neodriva: iz v nema grana ka "niim"grupama, a ako se iz v pree granom u qvor u u "vixoj" grupi, nemogu je povratak u grupui; ostaje mogunost da postoji put od v do w preko qvorova iz grupe i | koja takoe otpada,prema konstrukciji. Dae, po konstrukciji u svaki qvor iz grupe i ulazi bar jedna granaiz nekog qvora prethodne grupe (u protivnom bi taj qvor morao pripasti nekoj prethodnojgrupi). Polazei iz proizvonog qvora poslede grupe unazad, uveravamo se da u G postojiusmereni put duine k.

6.30. Moe se iskoristiti pretraga u xirinu polazei od qvora v. Svakom qvoru wpridruuje se poe | brojaq w.BNP sa tekuim brojem najkraih puteva do w. Za svew ∈ V na poqetku se stava w.BNP := 0. Proizvona grana (x, y) na koju se naie u tokupretrage, deo je najkraeg puta od v do y ako je y novi (neoznaqeni) qvor; tada se stavay.BNP := x.BNP . Ako y nije novi qvor (tj. ve je oznaqen), a x i y nisu u istoj generaciji(na istom rastojau od korena; rastojaa od korena se lako usput izraqunavaju), onda sestava y.BNP := y.BNP + x.BNP , jer se svaki najkrai put do x granom (x, y) produujedo najkraeg puta do y.

356 13. UPUTSTVA I REXEA ZADATAKA

6.31. Dovono je ne koristiti hip. Umesto toga, novi najkrai put se nalazi proveromsvih qvorova. Za to je potrebno vreme O(|V |), ali je zato za obradu svake grane dovonokonstantno vreme (jer nije potrebna popravka hipa).

6.32. Ciklus je put koji poqie i zavrxava u istom qvoru. Algoritam za nalaeeduina svih najkraih puteva sa slike 6.25 moe se iskoristiti za traee najkraegciklusa | puta od vi do vi preko qvorova v1, v2, . . . , vm (najkraeg m-puta), redom za m =0, 1, 2, . . . , n = |V |. Dakle, po izvrxeu algoritma sa slike 6.25, duina najkraeg ciklusajednaka je veliqini najmaeg elementa na dijagonali matrice A. Da bi se pored duinanajkraih puteva mogli da odrede i sami najkrai putevi, za svaki elemenat (i, j) matricetreba pamtiti posledi qvor na dotle najkraem putu od vi do vj ; na kraju je onda lakorekonstruisati same najkrae puteve, u ovom sluqaju najkrai ciklus.

6.33. Najpre formiramo kvadratnu matricu A = A0 (reda pet) duina najkraih0-puteva, tj. (simetriqnu) matricu susednosti grafa G | sa velikim brojevima (∞) napozicijama koje odgovaraju nepostojeim granama, i duinom grane na poziciji u presekuvrste prvog i kolone drugog kraja grane:

A = A0 =

∞ 10 ∞ 1 510 ∞ 5 ∞ 4∞ 5 ∞ 3 ∞1 ∞ 3 ∞ 45 4 ∞ 4 ∞

Pri tome vrste, odnosno kolone redom 1, 2, 3, 4, 5 odgovaraju qvorovima redom a, b, c, d, e.Zatim se redom formiraju matrice Am duina najkraih m-puteva (puteva koji vode samopreko qvorova sa indeksima maim ili jednakim od m), m = 1, 2, 3, 4, 5:

Am[i, j] = min Am−1[i, j], Am−1[i, m] + Am−1[m, j] , 1 ≤ i, j ≤ 5.

Izraqunavae matrica Am pojednostavuje ihova simetrija. Redom se za matrice A1, A2,A3, A4, A5 dobija

∞ 10 ∞ 1 510 20 5 11 4∞ 5 ∞ 3 ∞1 11 3 2 45 4 ∞ 4 10

,

20 10 15 1 510 20 5 11 415 5 10 3 91 11 3 2 45 4 9 4 8

,

20 10 15 1 510 10 5 8 415 5 10 3 91 8 3 2 45 4 9 4 8

,

2 9 4 1 59 10 5 8 44 5 6 3 71 8 3 2 45 4 7 4 8

,

2 9 4 1 59 8 5 8 44 5 6 3 71 8 3 2 45 4 7 4 8

.

Posleda dobijena matrica A5 je traena matrica duina najkraih puteva.6.34. Neka je n broj qvorova u grafu. Grani e zadate teine w(e) moe se pridruiti

nova teina w′(e) = n2w(e) + 1. Ako su p1, p2 dva proizvona puta, duina redom |p1|, |p2|,onda iz w(p1) > w(p2) sledi da je

w′(p1) = n2w(p1) + |p1| ≥ n2(w(p2) + 1) + |p1| > n2(w(p2) + 1) + n2 >

> n2(w(p2) + 1) + |p2| = w′(p2)

(teina puta jednaka je zbiru teina egovih grana). Pored toga, ako je w(p1) = w(p2),onda je w′(p1) > w′(p2) akko p1 ima vixe grana od p2. Prema tome, dovono je primenitiobiqan algoritam za nalaee najkraih puteva, ali sa promeenim teinama w′.

6.35. Primeniemo indukciju po k, i odrediti ne samo puteve do w, nego i do svihostalih qvorova. Zbog jednostavnosti, razmatraemo samo duine puteva, a ne i same puteve.Sluqaj k = 1 je jasan. Neka za e ∈ E d(e) oznaqava duinu grane e, i neka je f(w, k) duinanajkraeg puta od v do w, pod uslovom da put sadri taqno k grana. Pretpostavimo da

13.6. GRAFOVSKI ALGORITMI 357

znamo duine najkraih puteva do svih qvorova, pod uslovom da se putevi sastoje od potaqno k − 1 grane, tj. da znamo f(w, k − 1) za sve qvorove w. Najpre se za svako w stavaf(w, k) = ∞. Zatim se razmatra svaka grana (x, y) i vrednost f(y, k) zameuje se vrednoxuf(x, k − 1) + d(x, y) ako je maa. Vremenska sloenost algoritma je dakle O(|V ||E|).

6.36. Algoritam Acikl najkr putevi2 (slika 6.18) radi korektno i ako su cene nekihgrana negativne. Za svaki qvor se tim algoritmom uporeuju duine svih puteva do egaod v, xto se moe dokazati indukcijom po rednom broju qvora u topoloxkom redosledu.

6.37. Graf mora da bude Ojlerov, jer ciklus poveava za dva stepen svakog qvora krozkoji prolazi. S druge strane, grane Ojlerovog ciklusa uvek se mogu razloiti u skup cik-lusa. Dovono je primetiti da u Ojlerovom grafu postoji bar jedan prosti ciklus, i da seuklaaem tog ciklusa iz grafa dobija jedan ili vixe povezanih Ojlerovih grafova.

6.38.Posmatrajmo graf G = (V, E) sa n qvorova i 2n−2 grane, koji se moe nacrtati kaopravilni (n− 1)-ugao sa dodatnim qvorom v u centru, stranicamagranama e1, e2, . . . , en−1,i jox n− 1 granom f1, f2, . . . , fn−1, koje povezuju v sa temenima (n− 1)-ugla. Za proizvoanneprazni podskup S skupa e1, e2, . . . , en−1 postoji ciklus u G koji od grana e1, e2, . . . , en−1

sadri taqno grane iz S (dobija se objediavaem ciklusa koje qini v sa putevima formi-ranim od uzastopnih grana iz S); poxto podskupova ima 2n−1 − 1 (xto je vee od 2n/2 zan > 2), znaqi da i ciklusa ima vixe od 20.5n, odnosno 2Ω(n).

6.39. Rexee se moe konstruisati indukcijom po broju qvorova. Baza je jednostavna.Neka je v bilo koji list u stablu. Voleli bismo da uklonimo v, reximo problem za ostatakstabla, i odredimo S(v) tako da budu ispueni uslovi 1), 2). Ako je grana susedna qvoru vusmerena ka v, redukcija je jednostavna: neka je u pitau grana (w, v); tada se moe stavitiS(v) = S(w) ∪ λ(w, v), pa se lako proverava da su uslovi ispueni. Tei je sluqaj ako jegrana (v, w). Tada stavamo S(v) = S(w), a svim ostalim skupovima dodajemo broj λ(v, w), iuslovi su takoe ispueni.

6.40. Zamislimo da su qvorovi u jezgru obojeni crno, a ostali belo. Zbog definicijejezgra, ne postoji grana koja vodi iz crnog u crni qvor, a u svaki beli qvor vodi bar jednagrana iz nekog crnog qvora. Qvorovi sa ulaznim stepenom 0 moraju biti u jezgru (odnosnoobojeni crno) | oni ne mogu biti van jezgra, jer u ih ne vodi ni jedna grana. Qvorovido kojih vode grane iz crno obojenih qvorova moraju se obojiti u belo (oni ne mogu bitiu jezgru). Sada se mogu ukloniti belo obojeni qvorovi, zajedno sa granama koje vode u iliiz ih, jer to ne utiqe na bojee preostalih qvorova grafa (u qvor jezgra moe da vodigrana iz nekog qvora van jezgra; isto vai i za qvor van jezgra). Sa bojeem se nastavarekurzivno: poxto je preostali graf u opxtem sluqaju xuma, postoji bar jedan qvor ulaznogstepena 0.

6.41. Neka je v ∈ V proizvoan fiksirani qvor; stavimo p(v) = 0. Po pretpostavci, dosvakog drugog qvora w ∈ V postoji put v = v0, v1, v2, . . . , vk = w; za i = 1, 2, . . . , k stavamo

p(vi) = p(vi−1) + f(vi−1, vi) =i∑

j = 1

f(vj−1, vj).

Na taj naqin definisana je (bar jednom) vrednost p(w) za svako w ∈ V . Ta definicija jeneprotivreqna. Zaista, ako postoji i neki drugi put v = v0, w1, w2, . . . , wl = w od v do w,onda je

v = v0, v1, v2, . . . , vk = w = wl, wl−1, . . . , w1, w0 = v

ciklus, pa je po uslovu zadatka za funkciju f

k∑

j = 1

f(vj−1, vj)+l∑

j = 1

f(vj , vj−1) = 0,

odnosnok∑

j = 1

f(vj−1, vj) =l∑

j = 1

f(vj−1, vj) = p(w).

358 13. UPUTSTVA I REXEA ZADATAKA

6.42. Neka je dat graf G = (V, E) Najpre se skup grana E sortira po rastuim teina-ma, xto zahteva O(|E| log|V |) operacija. Koristi se struktura podataka za formirae unija(odeak 3.7); polazi se od |V | jednoqlanih podskupova | qvorova G, zaqetka povezujueg sta-bla G. Grane se uzimaju jedna po jedna iz ureenog niza. Za izabranu granu proverava seu O(log|V |) koraka da li eni krajevi pripadaju razliqitim skupovima (razliqitim sta-blima povezujue xume); ako ne | grana se preskaqe, a u protivnom se formira unija dvapodskupa i grana dodaje u skup izabranih grana (O(1) koraka). Posle dodavaa svake granebroj stabala u povezujuoj xumi se smauje za 1; na kraju se dobija MCST. Zaista, pret-postavimo da dobijeno stablo nije MCST, i da je e, k-ta grana u gorem nizu izabranihgrana, prva koja ne pripada MCST. Tada bi dodavaem e u MCST nastao ciklus; ako saT1, T2 oznaqimo dva stabla koja je grana e povezala, spomenuti ciklus mora da sadri barjox jednu granu e′ koja spaja neka dva stabla povezujue xume koja postoji u trenutku predodavaa e. Po pretpostavci cena e′ vea je od cene e. Izbacujui e′ iz MCST i dodajui e,dobijamo povezujue stablo mae cene, suprotno pretpostavci.

6.43. Treba krenuti od F kao tekueg "minimalnog" povezujueg stabla i dodavati mugrane prema algoritmu iz zadatka 6.42.

6.44. Neka je T neko MCST u G koje sadri granu e = (v, w) najvee teine u nekomciklusu C. Uklaaem grane e stablo T se raspada na dva stabla T1 i T2, tako da je npr. vu T1, a w u T2. Posmatrajmo put P od v do w, koji se dobija uklaaem e iz C. Na tom putupostoji grana e′ qiji je jedan kraj u T1, a drugi kraj u T2 | koja dakle povezuje T1 i T2, ateina joj je jednaka teini e (ako bi teina e′ bila maa od teine e, onda bi povezujuestablo (T \ e) ∪ e′ imalo mau cenu od T ). Prema tome, stablo (T \ e) ∪ e′ je takoeMCST, a ne sadri granu e.

6.45. Najpre treba odrediti MCST T grafa G; za sve grane stabla T odgovor je oqigled-no T . Za svaki par qvorova u, v treba odrediti granu sa najmaom cenom na (jedinstvenom)putu od u do v u T ; ovo je predobrada. Ova informacija nije neophodna za svaki par qvorova,ali je jednostavnije izraqunati je za svaki par. Za proizvonu granu (x, y) MCST T (x, y)dobija se dodavaem grane (x, y) stablu T , i uklaaem grane najvee cene u jedinstvenomciklusu koji je time formiran (ili druge najvee, ako je cena grane (x, y) najvea). Ta granaje grana najvee cene na putu od x do y kroz T , koja se zna posle predobrade. Predobrada semoe izvesti pokretaem pretrage u dubinu na stablu T za svaki od egovih |V | qvorova.

6.46. Poveae cena svih grana za istu konstantu ne mea MCST, jer je bitan samorelativan odnos cena, a on se ne mea posle poveavaa svih cena za isti iznos.

6.47. Osnovna ideja je rexavati problem unazad. Umesto da se qvorovi uklaaju za-datim redosledom, oni se dodaju obrnutim redosledom. Pri tome se koristi struktura po-dataka za formirae unija (videti odeak 3.7), da bi se znao tekui skup komponentipovezanosti grafa. Zapoqiemo sa qvorom n i dodajemo ga kao jednu komponentu u struk-turi podataka. Zatim razmatramo qvorove n − 1, n − 2, itd. Za svaki qvor i, najpre gadodajemo kao komponentu, pa onda proveravamo sve grane (i, j) takve da je j > i. Za svakugranu (i, j) proveravamo da li grane i, j pripadaju istoj komponenti (koristi se operacijapronalaea skupa kome pripada elemenat), a ako ne, onda objediujemo odgovarajue kom-ponente (operacija formiraa unije). Zaustavamo se onog trenutka kad neka komponentasadri vixe od n/2 qvorova.

6.48. Poxto svaki ciklus u G mora da sadri jednu granu iz skupa povratnih granaF , skup grana E \ F ne moe da sadri ni jedan ciklus. Minimizacija veliqine skupa Fekvivalentna je maksimizaciji veliqine E \F . Maksimalni skup grana bez ciklusa u grafuodgovara povezujuem stablu (ili povezujuoj xumi kod nepovezanog grafa). Prema tome,minimalni skup povratnih grana u neusmerenom grafu je komplement bilo kog povezujuegstabla grafa, a egova veliqina je |E| − |V |+ 1 (pod pretpostavkom da je graf povezan).

6.49. Pretpostavka da nema ciklusa negativne teine koristi se u dokazu ispravnostialgoritma za nalaee svih najkraih puteva sa slike 6.25. Pri prelasku sa najkraih(m−1)-puteva na najkrae m-puteve izmeu proizvona dva qvora u, v uporeuje se najkrai(m − 1)-put od u do v sa zbirom najkraih (m − 1)-puteva od u do m i od m do v; maa od

13.6. GRAFOVSKI ALGORITMI 359

te dve vrednosti je duina najkraeg m-puta u do v. Pri tome se koristi pretpostavka dase na najkraem m-putu od u do v qvor m moe nai samo jednom | prolazak kroz taj qvordva puta dodaje putu od u do v ciklus | za koji se pretpostava da ima nenegativni zbirteina grana (u protivnom bi svaki prolazak te pete smaivao duinu puta od u do v!).

6.50. Treba proveriti sve grane van stabla. Neka za proizvoni qvor x x.SP oznaqavaduinu puta od v do x kroz stablo. Ako postoji grana (u, w) takva da je u.SP +duzina(u, w) <w.SP , onda T oqigledno nije stablo najkraih puteva. Ostaje samo da se dokae da ako takvagrana ne postoji, onda T jeste stablo najkraih puteva.

6.51. Dovono je upotrebiti algoritam sa slike 6.25, korigovan tako da prekine radkad se naie na negativni dijagonalni elemenat matrice.

6.52. Treba odrediti topoloxki redosled qvorova grafa i proveriti da li su uzastop-ni qvorovi u tom redosledu povezani (qine put). Ako jesu, onda topoloxki redosled dajeHamiltonov put. S druge strane, ako postoji Hamiltonov put, onda topoloxko sortiraemora da dovede upravo do onog redosleda qvorova kojim se oni niu u putu.

6.53. Za graf G = (V, E), V = 1, 2, 3, 4, E = (2, 3), (3, 1), (1, 4) promeeni algoritamdaje na izlazu graf sa skupom grana bez grane (2, 4), koja pripada tranzitivnom zatvoreugrafa G.

6.54. (a) Pretpostavimo da v pripada bazi qvorova B. Ako v ne pripada ni jednomciklusu i ulazni stepen mu je vei od nule, onda postoji qvor w takav da je (w, v) grana i wnije dostian iz v. Da bi skup B bio baza qvorova, moralo bi da bude w ∈ B ili da postojiput od nekog qvora iz B do w. U oba sluqaja, meutim, postoji takoe i put od nekog qvorau B do v, pa se v moe ukloniti iz B, xto je u kontradikciji sa minimalnoxu skupa B.

(b) Poxto u acikliqkom grafu ni jedan qvor ne pripada ciklusu, iz (a) sledi da samoqvorovi ulaznog stepena 0 mogu biti u bazi qvorova. Isto tako zakuqujemo da svaki qvorulaznog stepena 0 mora biti u svakoj bazi qvorova, jer do ega ne vodi ni jedan put. Prematome, jedinstvena baza qvorova acikliqkog grafa je skup qvorova sa ulaznim stepenom 0 (uodeku 6.4 dokazano je da je taj skup neprazan).

6.55. Posmatrajmo dato stablo kao korensko stablo sa proizvonim qvorom u ulozikorena. Uzimamo proizvoan list v i uparujemo ga sa svojim ocem w; zatim uklaamooba qvora iz stabla (zajedno sa ostalim sinovima w, koji ostaju neupareni). Preostaliproblem se po induktivnoj hipotezi moe rexiti. Potrebno je dokazati da grana (v, w)zaista pripada nekom optimalnom uparivau. Neka je M optimalno uparivae. Ako M nesadri granu (v, w), onda qvor v nije uparen (jer je povezan jedino sa w). Ako je grana (u, w)u optimalnom uparivau, onda se ona moe zameniti sa (v, w); tako se dobija optimalnouparivae (ono sadri isti broj grana kao i M) koje sadri granu (v, w).

6.56. Moe se poi od uparivaa M0 = (a, 1), (b, 2), (c, 3), (e, 4), (f, 5), (g, 6). Da bismopronaxli eventualne alternirajue puteve u G u odnosu na M0, usmeravamo grane G, i toone koje su u uparivau | udesno, a ostale | ulevo. U dobijenom usmerenom grafu traimoobiqan put od neuparenog qvora 7 do neuparenog qvora d. Takav put meutim ne postoji: od7 se moe doi samo dao c, i dae samo do 3. Prema tome, M0 je optimalno uparivae.

Ako bismo poxli od polaznog uparivaa M1 = (a, 5), (b, 2), (c, 3), (e, 4), (g, 6), onda bise iskorixavaem alternirajueg puta f, 5, a doxlo do istog optimalnog uparivaa M0.

6.57.Moe se poi od toka sa slike 10(a). Rezidualni graf u odnosu na taj tok prikazanje na slici 10(b). U emu se mogu izdvojiti dva nezavisna (disjunktna) uveavajua puta:s, a, d, t kapaciteta min4, 5, 4 = 4 i s, c, f, t kapaciteta min6, 7, 3 = 3. Uzimajui ovo uobzir, dobijamo tok sa slike 10(c). Ovaj tok je oqigledno optimalan, jer su tokovi kroz graneod b, d i f ka t (koje qine presek odreen skupom V \ t) jednaki ihovim kapacitetima.

6.58. (a) Graf koji se moe pokriti zvezdama ne sme da sadri qvor stepena 0 (izolo-vani qvor). Posle uklaaa proizvonog qvora moe se dogoditi da neka komponentapovezanosti bude izolovani qvor.

(b) Pretpostavimo sada da graf nema izolovanih qvorova, i pokuxajmo da obezbedimoda i posle uklaaa qvora v ne bude izolovanih qvorova. Probleme mogu da prouzrokujusamo qvorovi stepena 1. Zbog toga, ako graf sadri neki qvor v stepena 1, onda v uklaamo

360 13. UPUTSTVA I REXEA ZADATAKA

cc cc-

cc

cc

cc

cc

-

--

cc ccµµ

--

RR

j

j

>>--~ tt

43/7

33/3

32/5

23/5

50/5

33/3

70/7

22/262/8

63/9

43/7

ss

3

32

3

3

2

¾

¾

c c-

c

c

c

c

-

-

c cµ

-

R

j

j

>-~ t

7/7

3/3

5/5

3/5

4/5

3/3

3/7

2/22/8

6/9

7/7

s

(a) (b)

(c)

j¼i y

)

i

j

c

e

b

d

f

a

c

c

e

e

b

b

d

d

f

f

a

a

y

Ris. 10. Uz zadatak 6.57.

zajedno sa granom, i zvezdu sa korenom u v prikuqujemo pokrivaqu. Na ovaj naqin se samojednom qvoru stepen smauje za 1; poxto je graf povezan, stepen tog qvora morao je biti bar2, pa je ova redukcija ispravna | ne dovodi do pojave izolovanih qvorova.

6.59. Moe se iskoristiti kombinacija binarne pretrage i algoritma za nalaeeoptimalnog uparivaa iz odeka 6.9. Pozabavimo se najpre proverom da li, za zadato x,postoji optimalno uparivae takvo da su teine svih egovih grana ≤ x. Ovaj problemmoe se rexiti uklaaem iz grafa svih grana qije su teine vee od x, i primenomalgoritma za nalaee optimalnog uparivaa, da bi se proverilo da li optimalno upari-vae u smaenom grafu ima isti broj grana kao i optimalno uparivae u polaznom grafu.Sloenost ove provere odreena je sloenoxu algoritma za nalaee optimalnog upari-vaa, koja je O(m

√n). U G ima m grana, pa i razliqitih teina ima najvixe m. Binarnom

pretragom traimo najmae x, takvo da je x teina neke grane, i da postoji optimalnouparivae u kome sve grane imaju teinu ≤ x.

6.60. Poxto se trai algoritam sloenosti O(n log n), prirodno je pokuxati sa dekom-pozicijom. Igraqi se dele u dve jednake grupe, pa se za obe grupe rekurzivno konstruixutraeni redosledi. Zatim se dva redosleda objediuju na isti naqin kao kod obiqnog ob-jediavaa dva sortirana niza u jedan. Da se ovo shvati, dovono je uveriti se da seproizvoni igraq moe ukuqiti u proizvoan redosled (lanac) igraqa tako da se dobijedui lanac: mesto egovog ukuqivaa je iza posledeg igraqa u nizu od koga je izgubio,odnosno ispred prvog igraqa, ako ga je pobedio.

6.61. Jasno je da je za bojee ovakvog grafa neophodno bar k boja, jer se grane susedneistom qvoru moraju obojiti razliqitim bojama; pokazaemo da je k boja dovono. Ci jeiskoristiti dekompoziciju, tako da potproblemi budu istog tipa kao i polazni problem.Ako se graf podeli na dva maa podgrafa, mora se obezbediti da stepeni qvorova u obapodgrafa budu meusobno jednaki i da budu neki stepen dvojke. Ovo se moe postii kon-strukcijom Ojlerovog ciklusa grafa (on postoji jer su stepeni svih qvorova parni). Zatimse prolazi ciklus, a egove grane prikuquju naizmeniqno prvoj, odnosno drugoj grupi.Svaka grupa definixe podgraf sa nepromeenim skupom qvorova i polovinom polaznihgrana, pri qemu je stepen svakog qvora k/2 (jer kad god granu koja ulazi u qvor svrstamou jednu grupu, sledeu granu, koja izlazi iz istog qvora, stavamo u drugu grupu). Pod-skupovi se po induktivnoj hipotezi mogu obojiti sa k/2 boja; ako se upotrebi k razliqitih

13.6. GRAFOVSKI ALGORITMI 361

boja, onda se dva bojea direktno objediuju. Time je specificiran rekurzivni algoritamza rexavae ovog problema; za k = 2 imamo graf koji se sastoji od jednog prostog ciklusa,i oqigledno se moe obojiti sa dve boje. Sloenost algoritma odreena je sloenoxunalaea Ojlerovih ciklusa, koja je linearna; pri tome treba uzeti u obzir da se Ojlerovciklus mora nai u oba podgrafa. Broj iteracija u ovom algoritmu je log2 k (k se poloviposle svake iteracije); prema tome, sloenost algoritma je O(|E| log k).

6.62. Dato stablo, ako se fiksira egov proizvoni qvor, moe se shvatiti kao koren-sko stablo. Posmatrajmo proizvoni list v i egovog oca w. Grana (v, w) moe se pokritiqvorom v, ali je boe pokriti je qvorom w: v pokriva samo (v, w), a w pokriva i neke drugegrane. Preciznije, postoji minimalni pokrivaq grana koji sadri qvor w. Prema tome,ako izaberemo qvor w (na opisani naqin), uklonimo ga sa svim emu susednim granama,i indukcijom reximo preostali problem, dolazimo do minimalnog pokrivaqa. Vremenskasloenost algoritma je linearna (proporcionalna broju grana).

6.63. Jasno je da teina pokrivaqa grana mora biti vea ili jednaka od broja grana(jer sve grane moraju biti pokrivene, a svaka od ih poveava cenu pokrivaqa najmae zajedan). Prema tome, pokrivaq koji sadri taqno po jedan kraj svake grane bie minimalnipokrivaq grana. Pokazaemo da takav pokrivaq uvek moe biti pronaen.

Prvo rexee. Izvrxi se pretraga u xirinu polazei od proizvonog qvora v kaokorena. Zatim se u pokrivaq grana ukuquju svi qvorovi na (na primer) neparnim nivoima(rastojaima od korena). Dobijeni skup qvorova je pokrivaq grana, jer svaka grana povezujeqvorove sa dva susedna nivoa, pa jedan od ih ima neparni nivo. Pored toga, svaka grana jepokrivena taqno jednim qvorom, pa je pokrivaq minimalan.

Drugo rexee. Induktivna hipoteza je da umemo da reximo problem za sva stabla sa < nqvorova. U datom stablu sa n qvorova izaberimo proizvoan list v i uklonimo ga (zajedno sagranom) iz stabla. Neka je w jedinstveni qvor u G susedan sa v, i neka je G′ preostalo stablo.Za graf G′ rexavamo problem indukcijom. Posmatrajmo ponovo polazno stablo G. Ako jeqvor w korixen u minimalnom pokrivaqu grana za G′, onda imamo ispravan pokrivaq zaG; u protivnom prikuqujemo v pokrivaqu G. Treba dokazati da je u oba sluqaja pokrivaqG minimalan. Meutim, veliqina minimalnog pokrivaqa grana G mora biti bar za 1 veaod veliqine minimalnog pokrivaqa G′, jer se dodata grana mora pokriti ili sa v ili saw (a cena se poveava za 1 u oba sluqaja, jer se poveava stepen qvora w). Ta granica sedostie, pa dobijeni pokrivaq jeste minimalan.

6.64. Neka je v proizvoan qvor u G. Oznaqimo sa N(v) skup qvorova susednih sa v.Ako v pripada pokrivaqu grana, onda ni jedan qvor iz N(v) ne moe pripadati pokrivaqu(jer pokrivaq treba da bude nezavisan skup). Pored toga, svi qvorovi susedni qvorovimaiz N(v) moraju pripadati pokrivaqu, jer samo oni mogu pokriti grane ka qvorovima izN(v). Specijalno, ako su bilo koja dva qvora iz N(v) susedna, onda se grana izmeu ihne moe pokriti, pa pokrivaq grana koji sadri v ne postoji, tj. procedura "odustaje". Saprocedurom se nastava sve do nekog "odustajaa" (tada v ne pripada pokrivaqu grana),ili dok se ne pronae pokrivaq grana. Svi koraci procedure odreeni su izborom qvorav, pa je dobijeni pokrivaq grana jedini koji sadri v i zadovoava uslove zadatka. Akodobijeni pokrivaq grana ima mae od k qvorova, problem je rexen; u protivnom v ne pripadapokrivaqu. Meutim, ako ustanovimo da v ne moe da pripada pokrivaqu, onda pokrivaqumoraju pripadati svi egovi susedi, pa se primeuje ista procedura.

6.65. Pretpostavimo da u G postoji takav podskup U ⊂ V . Izmeu qvorova u U ne smepostojati grana (U je nezavisan skup), a svaki qvor u V \ U mora biti povezan sa nekimqvorom iz U (U je maksimalni nezavisni skup). Izmeu qvorova u V \ U ne sme biti grana(U je pokrivaq grana), a svaki qvor iz U mora biti povezan bar jednom granom sa nekimqvorom iz V \U (U je minimalni pokrivaq grana). Dakle, graf G mora biti bipartitni, ito bez izolovanih qvorova. Obrnuto, ako je G = (U1, E, U2) bipartitni graf bez izolovanihqvorova, onda se bilo U1, bilo U2 moe uzeti za traeni skup U . Za proveru da li je Gbipartitni graf postoji polinomijalni algoritam (videti zadatak 6.22), a provera da lipostoje izolovani qvorovi je jednostavna.

362 13. UPUTSTVA I REXEA ZADATAKA

6.66. Interval Ij moe se predstaviti sa dva broja (lj , dj), svojim levim i desnimkrajem. Uredimo intervale po rastuim vrednostima dj ; neka je I1, I2, . . . , In tako ureeniniz intervala; d1 je najmai od desnih krajeva. Tvrdimo da postoji maksimalni nezavisniskup koji sadri I1. Da bismo to dokazali, uzmimo proizvoni maksimalni nezavisni skupi posmatrajmo takav interval Ij da je dj najmai od desnih krajeva u nezavisnom skupu.Poxto je d1 globalni minimum, bie dj ≥ d1. Iz toga sledi da se I1 ne seqe sa bilo kojimdrugim intervalom u skupu (sem eventualno sa Ij ; ako se neki interval Ik seqe sa Ij , ondazbog dk > dj mora biti i lk > dj ≥ d1, pa se Ik ne seqe ni sa I1). Prema tome, I1 moe dazameni Ij , a promeeni skup je i dae maksimalni nezavisan skup. Poxto se sa intervalomI1 iz skupa iskuqe svi intervali koji se seku sa im (odnosno leva granica im je maa odd1), ostaje mai skup intervala, koji se dae obrauje na isti naqin (bez sortiraa desnihgranica intervala | ono se izvrxava samo jednom, na poqetku). Sloenost algoritma jeO(n log n).

6.67. (a) Za svaki par qvorova u, v ∈ V broji se sa koliko qvorova su oni istovremenosusedni. Onog trenutka kad za neke u, v taj broj dostigne dva, pronaen je kvadrat u G, aako je taj broj za svaki par u, v mai ili jednak od jedan, u G nema kvadrata. Sloenostalgoritma je O(|V |3).

(b) Algoritam se zasniva na istoj ideji kao u (a): za svaki par qvorova u, v ∈ V ovog putase broje zajedniqki elementi lista suseda qvorova u i v. Dakle koristi se lista povezanostiza G, u kojoj se najpre za svaki qvor lista egovih suseda sortira prema rastuim rednimbrojevima (O(|E| log|V |) koraka). Brojae zajedniqkih suseda qvorova u i v moe se izvestiza vreme proporcionalno zbiru duina odgovarajuqih lista, odnosno d(u) + d(v), pa je zaobradu svih parova u, v dovono vreme

u ∈ V

v ∈ V

(d(u) + d(v)) = 2∑

u ∈ V

v ∈ V

d(v) = 4∑

u ∈ V

|E| = 4|E||V | = O(|E||V |).

6.68.Postoje familije grafova u kojima je broj kvadrata asimptotski vei od O(|E||V |).Tako kompletan graf sa n qvorova ima

(n4

)= O(n4) kvadrata, a kod ega je |E||V | = O(n3).

Za kompletan graf ve samo nabrajae svih kvadrata ima sloenost veu od O(|E||V |).

13.7. Geometrijski algoritmi7.1. Ako poluprava sadri teme Pk, treba proveriti da li su temena Pk−1, Pk+1 (Pn,

P2 za k = 1, odnosno Pn−1, P1 za k = n) sa iste strane L: ako jesu, odnosno nisu, presek netreba, odnosno treba raqunati. Na sliqan naqin rexava se sluqaj kad L sadri stranicu(Pk, Pk+1): treba proveriti da li su temena Pk−1 i Pk+2 sa iste strane L.

7.2. Taqke P1, P2, . . . , Pn su kolinearne akko su kolinearne sve trojke taqaka (P1, P2, Pi),i = 3, 4, . . . , n. Sloenost algoritma je O(n).

7.3. Na slici 11 su prikazane qetiri taqke P1, P2, P3, P4, i dva razliqita prostaqetvorougla P1P2P4P3, P1P4P2P3 sa temenima u tim taqkama.

b b

b

bP2 P3

P4

P1

b b

b

bP2 P3

P4

P1

Ris. 11. Uz zadatak 7.3.

7.4. Indeksu i ∈ 0, 1, . . . , n− 1 pridruujemo veliqinu ugla αi = ∠P0APi. Jasno je daje −π < αi < π; neka je αn = 0. Ako su svi uglovi αi istog znaka (odnosno pozitivni, xtose moe pretpostaviti bez smaea opxtosti), onda je AP0 prava oslonca, a druga prava

13.7. GEOMETRIJSKI ALGORITMI 363

oslonca APm odreena je temenom Pm za koje ugao αm ima najveu apsolutnu vrednost. TemePm nalazi se binarnom pretragom intervala 1, 2, . . . , n − 1, jer niz |αi| najpre raste, paopada. U dve "srede" taqke i, i+1 intervala indeksa posmatra se razlika uglova αi+1−αi,pa

• ako je pozitivna, onda je m ≥ i + 1,• ako je negativna, onda je m ≤ i,• ako je αi+1 = αi, onda je npr. m = i, ali prava oslonca P0Pm sadri celu

stranicu PmPm+1.Ako pak nisu svi uglovi αi istog znaka, onda postoje dve simetriqne mogunosti: uglovi

rastu, opadaju pa rastu, ili opadaju, rastu pa opadaju. U oba sluqaja se binarnom pretragomnalaze dva susedna temena sa uglovima suprotnog znaka. Ta dva temena razdvajaju intervalindeksa na dva podintervala, u kojima se na opisani naqin (traei maksimalni ugao poapsolutnoj vrednosti) pronalazi binarnom pretragom po jedna prava oslonca.

7.5. Neka je C centar pomenutog kruga. Polazi se od dui CP1 (odnosno tri taqke C,P1, P2), a onda se nastava kao u obiqnom Grahamovom algoritmu. Kad se ponovo doe dotaqke P1 (poxto je konveksni put "obuhvatio" sve taqke P1, P2, . . . , Pn), neka je j najvei,a i najmai indeks neke taqke na putu u tom trenutku. Mogue je da bude ∠PjP1Pi > π (uprotivnom je posle izbacivaa taqke C zavrxen konveksni omotaq). Tada se, sliqno kao uGrahamovom algoritmu, iskuquje taqka C, i neke taqke sa poqetka ili kraja konveksnogputa, sve dok ne postanu konveksni oba ugla u temenima grane koja povezuje jedno teme prikraju sa jednim temenom sa poqetka puta.

7.6. U primeru na slici 12 taqke P3, P4,. . . , Pp+3, lee redom na dui P3Pp+3. Gra-hamov algoritam e izbaciti uzastopce p taqaka Pp+3, Pp+2,. . . , P4.

c

c c

c

c

cc

cc

P1

P2

P3

P4

Pp+2

Pp+3

Pp+4

Ris. 12. Uz zadatak 7.6.

7.7. Dovono je konstruisati takav raspored n taqaka u ravni da u svakom rekurzivnompozivu broj taqaka u sredim trakama bude proporcionalan sa ukupnim brojem obraivanihtaqaka. Takav raspored se moe rekurzivno konstruisati ako se poe od n = 4 · 3k taqaka,podeenih na dva jednaka podskupa vertikalnom simetralom, pravom x = 0. Desni podskupsastoji se od dva podskupa od po 3k−1 taqaka na dve vertikalne prave (leva od ih jex = 1), na vertikalnim razmacima po 1, i 4 · 3k−1 taqaka izmeu vertikalnih pravih, qijise raspored konstruixe rekurzivno. Prema tome, broj taqaka u sredoj traci je 2 · 3k−1 =n/6 (ovaj odnos vai za svaki nivo rekurzije), pa je sloenost T (n) rexee diferencnejednaqine T (n) = 2T (n/2) + cn, odnosno T (n) = Ω(n log n). Zahtev da x-koordinate taqakabudu razliqite lako je ostvariti pomerajui vrlo malo u horizontalnom pravcu taqke saistom x-koordinatom (ravnomerno, uvek za isti iznos, proporcionalno rastu y-koordinate).

7.8. Dui (ai, yi)−(bi, yi) mogu se sortirati leksikografski po parovima (yi, ai) (daklepo y-koordinatama, a u okviru grupe sa istim y-koordinatama, u okviru kojih su jedino

364 13. UPUTSTVA I REXEA ZADATAKA

mogui preseci, po x-koordinatama levog kraja dui). Prilikom prolaska grupe (dui saistom y-koordinatom), pamte se u povezanoj listi kandidati | dui qiji je levi kraj levo,a desni kraj desno od pokretne vertikalne prave; u posebnom vektoru se za svaku du pamtilokacija levog kraja u sortiranom vektoru. Ako je pokretna prava naixla na levi krajdui, onda se registruju preseci te dui sa svim kandidatima, i du se ubacuje u listukandidata. Ako se naie na desni kraj dui, ta du se (po nalaeu pozicije u listi)izbacuje sa liste kandidata. Obrada grupe od k dui sa istom y-koordinatom traje O(k),pa je sloenost ukupne obrade posle sortiraa O(n).

7.9. Neka je y = ak + b jednaqina prave p. Prava q paralelna sa p ima jednaqinuy = ak+b′. Rastojae taqke (xk, yk) od svoje "projekcije" (u vertikalnom smeru) (xk, axk +b′)na pravu q u pravcu y-ose jednako je yk − axk − b′ (ono je pozitivno, odnosno negativno, akoje taqka iznad, odnosno ispod prave q), 1 ≤ k ≤ n. Potrebno je izabrati b′ tako da polovinabrojeva yk−axk−b′ bude vea ili jednaka od nule, odnosno tako da polovina brojeva yk−axk

bude vea ili jednaka od b′. Problem se dakle svodi na nalaee medijane brojeva yk − axk,1 ≤ k ≤ n.

7.10. Treba sortirati temena mnogougla p1, p2, . . . , pn cikliqki prema uglovima kojiqine dui q− pi sa nekom fiksiranom pravom. Tim redosledom (npr. pi1 , pi2 , . . . , pin ) trebaproi temena. Zapoqie se sa temenom pi1 : prebroje se ivice koje se seku sa polupravomq − pi1−, za xta je dovono O(n) provera ivica mnogougla. Pri prelasku sa temena pik

nateme pik+1 dovono je uporediti broj preseka polupravih q − pik

− i q − pik+1− sa strani-cama mnogougla susednim sa temenima pik

, pik+1 , da bi se videlo za koliko se broj presekapromenio u odnosu na prethodni poloaj poluprave (O(1) provera). Usput se pamti teme p zakoje je najmai broj preseka poluprave q− p− sa ivicama mnogougla. Sloenost algoritmaje O(n log n).

7.11. Rexee se zasniva na primeni binarne pretrage. Osnovna operacija je provera,ako je data prava p i taqke A i B, da li su A i B sa iste strane p. Sledea elementarnaoperacija (koja se lako izvodi pomou nekoliko operacija prvog tipa), je provera za qetirizadate taqke A, B, C i Q, da li se Q nalazi unutar ugla ∠ABC, odnosno unutar trougla4ABC. Ideja na kojoj se zasniva rexee je sledea: ako znamo da se Q nalazi unutar ugla∠PiP1Pj , i < j, onda se posle provere da li se Q i Pj nalaze sa iste strane prave P1Pm,m = b(i + j)/2c, zna da li je Q unutar ugla ∠PmP1Pj (ako je odgovor "da", ili ako je Q napravoj P1Pm), ili unutar ugla ∠PiP1Pm (u protivnom). Na poqetku se proverava da li jeQ unutar ugla ∠P2P1Pn (ako nije, onda Q ne pripada mnogouglu). Posle najvixe O(log n)koraka zakuquje se ili da Q ne pripada mnogouglu, ili da je unutar nekog ugla ∠PiP1Pi+1;u drugom sluqaju je Q u mnogouglu akko pripada trouglu 4PiP1Pi+1.

7.12. Prva taqka moe se uzeti za poqetak polarnog koordinatnog sistema; za temenatekueg konveksnog omotaqa pamte se duine potega i uglovi koje oni zaklapaju sa x-osom,sortirano po uglovima. Za novododatu taqku se binarnom pretragom mogu pronai dva uza-stopna uglapotega izmeu kojih lei en poteg, i proveriti da li ona pripada konveksnomomotaqu; ako ne, onda treba pronai dve prave oslonca kroz tu taqku (O(log n) operacija,videti zadatak 7.4), iskuqiti temena koja su unutar novog konveksnog omotaqa, i ukuqitinovo teme (O(log n) operacija). Sloenost algoritma je dakle O(n log n).

7.13. Pomou algoritma iz zadatka 7.9 pronalazi se prava koja dati skup taqaka delina dva podskupa, tako da se brojevi taqaka u podskupovima razlikuju najvixe za jedan. Lakose moe postii da na deobnoj pravoj ne lei ni jedna taqka iz skupa. Algoritam koji kon-struixemo koristimo rekurzivno za dobijae konveksnih omotaqa P1 i P2 ova dva podskupa(oni imaju mae od n taqaka); crnom kutijom se konveksni omotaqi P1 i P2 objediuju u kon-veksni omotaq svih n taqaka. Sloenost algoritma T (n) (po pretpostavci o crnoj kutiji)zadovoava diferencnu jednaqinu T (n) = 2T (n/2) + cn, pa je T (n) = O(n log n).

7.14. Ravan se moe izdeliti u vertikalne trake xirine d, poqevxi od taqke p sa mi-nimalnom x-koordinatom, do taqke q sa maksimalnom x-koordinatom; broj traka je O(X/d).Date taqke se razvrstavaju po trakama; da se za jednu taqku ustanovi kojoj traci pripada

13.7. GEOMETRIJSKI ALGORITMI 365

dovono je O(1) operacija. Za svaku traku pronalaze se taqke sa sa minimalnom i maksi-malnom y-koordinatom. Sliqno kao u Grahamovom algoritmu povezuju se redom sve "gore"i sve "doe" taqke (iz omotaqa se izbacuju one koje sa dva suseda qine ugao vei od π; O(n)koraka). Tako se dobijaju dva konveksna puta, "gori" i "doi", koji povezuju taqke p i q(ako je npr. doi put ceo iznad dui p − q, on se izbacuje i zameuje se dui p − q). Ovadva konveksna puta zajedno qine d-priblini omotaq skupa P , xto se lako dokazuje.

7.15. (a) Taqke skupa sortiraju se po x-koordinatama. Taqka (x1, y1) sa najveom x-koordinatom je oqigledno maksimalna. Ostale taqke kojima je y-koordinata maa od y1

nisu maksimalne, jer nad ima dominira taqka (x1, y1). Dakle, taqke se razmatraju redomprema opadajuim x-koordinatama i eliminixu do nailaska na prvu taqku (x2, y2) za kojuje y2 > y1 | koja je maksimalna. Postupak se nastava dae na isti naqin, eliminixuitaqke sa y-koordinatama maim od y-koordinate poslede pronaene maksimalne taqke. Deoalgoritma posle sortiraa ima sloenost O(n).

(b) Sliqno kao u (a) taqke se sortiraju po opadajuim x-koordinatama; za obraenetaqke quvaju se sortirano projekcije pronaenih maksimalnih taqaka u ravan yOz. Novataqka se eliminixe ako nad enom projekcijom dominira neka projekcija (provera se vrxibinarnom pretragom); u protivnom, nova taqka eliminixe neke od projekcija posle umetaasvoje projekcije.

7.16. Najpre se taqke sortiraju prema rastuim x-koordinatama. Za taqku sa najmaomx-koordinatom je broj taqaka "ispod e" (taqaka nad kojima ona dominira) nula. Dolazeido naredne taqke, umeemo je u uravnoteeno binarno stablo pretrage sa kuqevima jed-nakim y-koordinatama taqaka. Poxto nova taqka ima veu x-koordinatu od svih prethodnihtaqaka, ona dominira nad svim taqkama u stablu kojima je y-koordinata maa od ene.Umetae taqke u stablo je sloenosti O(log n), pa je ukupan broj operacija O(n log n). Dabi se lako raqunao broj taqaka ispod novododate taqke, uz svaki qvor v u stablu quva seinformacija v.B o broju qvorova u egovom levom podstablu. Pri umetau novog qvora ustablo, najpre stavamo s := 0, a onda u svakom qvoru w kroz koji proemo, ako se ide ulevoinkrementiramo vrednost w.B, a ako se ide udesno, sumu s poveavamo za w.B + 1. Na tajnaqin, kad pronaemo mesto za umetae novog elementa, izraqunat je broj s taqaka ispodega. Prilikom uravnoteavaa stabla rotacijom ili dvostrukom rotacijom, meaju sevrednosti poa B za vreme O(1), xto se neposredno proverava.

7.17. Taqke se najpre sortiraju po svojim x-koordinatama. Zatim se meu nagibimadui koje povezuju uzastopne taqke pronalazi najvei, i to je rexee problema. Korektnostalgoritma posledica je qienice da ako izmeu taqaka A0 i Ak u sortiranom redosledupostoje jox neke taqke A1, A2,. . . , Ak−1, onda postoje takve dve uzastopne taqke Ai i Ai+1 daje nagib dui AiAi+1 vei ili jednak od nagiba dui A0Ak. Ovo tvree moe se dokazatiindukcijom po k ≥ 1. Bazni sluqaj k = 1 je trivijalan. Neka je tvree taqno za neko k.Posmatrajmo proizvonih uzastopnih k + 2 taqaka A0, A1,. . . , Ak, Ak+1. Ako je taqka A1

iznad dui A0Ak+1, ili lei na oj, onda je nagib dui A0A1 vei ili jednak od nagibaA0Ak+1; u protivnom, nagib A1Ak+1 je vei od nagiba A0Ak+1, pa po induktivnoj hipoteziizmeu A1 i Ak+1 postoje dve uzastopne taqke Ai, Ai+1 takve da je nagib AiAi+1 vei ilijednak od nagiba A1Ak+1, a time i vei od nagiba A0Ak+1.

7.18. U svakoj listi trai se najmai moduo razlike uzastopnih qlanova. Kad se zaparove susednih lista trai najblii par taqaka, dovono je raqunati rastojae svaketaqke iz jedne liste od samo dve taqke (jedne ispod, jedne iznad) iz susedne liste; parovitaqaka za koje se trai rastojae dobijaju se objediavaem (koje ima linearnu sloenost)dveju susednih lista prema y-koordinatama. Ukupan broj parova taqaka za koje se trairastojae (ili kvadrat rastojaa, da bi se izbeglo raqunae kvadratnog korena) je dakleO(n). Algoritam ne garantuje nalaee para taqaka na najmaem rastojau, jer dve najbli-e taqke ne moraju pripadati susednim listama ili jednoj listi (npr. taqke (0, 5), (1, 0) i(2, 5): algoritam ne bi naxao par (0, 5)− (2, 5) na rastojau 2).

7.19. Jedini teak sluqaj je nalaee preseka svih vertikalnih dui sa duimapod nagibom π/4 (svi ostali sluqajevi svode se na ovaj, ili se rexavaju algoritmom iz

366 13. UPUTSTVA I REXEA ZADATAKA

odeka 7.6). Koristi se isti pristup kao u algoritmu Preseci iz odeka 7.6. Sortiraju sex-koordinate svih krajeva dui. Algoritam sa pokretnom vertikalnom pravom primeujese na isti naqin. Du pod nagibom π/4 ubacuje se u spisak kandidata kad pokretna pravadoe do enog levog kraja, i uklaa se iz ega kad pokretna prava doe do enog desnog kra-ja. Potrebno je jox odrediti preseke izmeu nove vertikalne dui i nekoliko kandidata,dui pod nagibom π/4. To se moe obaviti na sledei naqin. Za svaku kosu du raquna sex-koordinata preseka ene prave sa x-osom. Ove vrednosti koriste se pri pretrazi jednodi-menzionalnog opsega, qiji su krajevi x-koordinate preseka sa x-osom pravih pod uglom π/4(u odnosu na x-osu) kroz krajeve vertikalne dui. Sloenost kompletnog algoritma zbogtoga ostaje nepromeena.

7.20. Zadatak se moe rexiti sliqno kao u specijalnom sluqaju kad su dui horizon-talne ili vertikalne, metodom pokretne prave. Zbog jednostavnosti se moe pretpostavitida meu duima nema paralelnih, niti delimiqno preklopenih, niti vertikalnih dui.Najpre se sortiraju svi krajevi dui prema x-koordinatama. U sortiranom redosledu se zasvaku taqku pored enih koordinata pamti i redni broj dui kojoj ona pripada, i da li jeona levi ili desni kraj te dui. Time se obezbeuje poznavae redosleda kojim pokretnaprava nailazi na krajeve dui. Za dui vi1 , vi2 , . . . , vik

koje pokretna prava L seqe u nekomtrenutku ("kandidate") pretpostava se da y-koordinate ihovih preseka sa L qine rastuiniz, kao i da su x-koordinate preseka pravih | nosaqa parova susednih dui redom vi1 , vi2 ;vi2 , vi3 ;. . . ; vik−1 , vik

smextene u poseban hip H. Na vrhu hipa nalazi se x-koordinata prvogsledeeg preseka neka dva susedna kandidata. U trenutku kad prava L naie na novi krajdui sa x-koordinatom xi, onda se najpre proverava da li je najmai elemenat H mai odxi (ako jeste, onda je pokretna prava u meuvremenu prexla preko preseka neka dva susednakandidata, i problem je rexen). Dae, ako je u pitau

• levi kraj dui vp | novi kandidat: pronalazi se binarnom pretragom mesto y-koordinate levog kraja vp u sortiranom redosledu (prema y-koordinatama presekasa L | taj redosled se nije promenio ako se neke dve susedne dui nisu presekle dodolaska L na xi) y-koordinata preseka kandidata sa L; du se umee u sortiraniredosled kandidata (za tu svrhu moe se koristiti AVL stablo) izmeu nekedve dui vim , vim+1 ; x-koordinata preseka nosaqa vim , vim+1 izbacuje se iz H,a u H se ubacuju x-koordinate preseka nosaqa vim , vip , odnosno vip , vim+1 (uzodgovarajue preureee hipa H).

• desni kraj dui vim : iz H se izbacuju x-koordinate preseka nosaqa vim−1 , vim ,odnosno vim , vim+1 , pa se u H ubacuje x-koordinata preseka nosaqa vim−1 , vim+1 ;pri tome se vim izbacuje iz AVL stabla sa kandidatima.

Popravke AVL stabla i hipa H su sloenosti O(log n) u najgorem sluqaju, ukupan brojobraenih krajeva dui je 2n, pa je sloenost algoritma O(n log n).

7.21. Najpre se sortiraju svi krajevi dui, pri qemu se za svaku taqku pamti podatakda li je levi ili desni kraj, crvene ili plave dui. Vrednosti brojaqa p i c postave se nanulu. Krajevi dui se prolaze sleva udesno ovim sortiranim redosledom, i pri nailaskuna svaku novu taqku, ako je to

• poqetak plave (crvene) dui, inkrementira se broj p (c) "otvorenih" plavih (cr-venih) dui,

• kraj plave (crvene) dui, dekrementira se broj p (c) "otvorenih" plavih (cr-venih) dui.

Proverava se da li je istovremeno p > 0 i c > 0; ako jeste, pronaen je presek plave i crvenedui. Ako se u toku pregleda krajeva dui ne dogodi istovremeno p > 0 i c > 0, onda nepostoji presek neke plave i neke crvene dui.

7.22. Najpre se intervali sortiraju prema rastuim x-koordinatama svojih levih kra-jeva. Problem se moe rexiti pomou sledee induktivne hipoteze: u skupu sa < n in-tervala umemo da oznaqimo sve intervale sadrane u drugim intervalima, i da odredimonajvei desni kraj tih intervala. Ako je x-koordinata desnog kraja n-tog intervala vea

13.7. GEOMETRIJSKI ALGORITMI 367

od do tog trenutka najvee x-koordinate desnog kraja nekog intervala, onda n-ti intervalnije sadran u nekom drugom intervalu; egov desni kraj preuzima ulogu najveeg desnogkraja. U protivnom je on deo nekog drugog intervala, pa se oznaqava. Posledi intervalima najveu x-koordinatu levog kraja, pa ne sadri ni jedan drugi interval. Sloenostalgoritma je O(n log n), zbog poqetnog sortiraa.

7.23. Sortiraju se DL (doi levi) i GD (gori desni) uglovi datih pravougaonikaprema x-koordinatama. Koristi se sledea struktura podataka S: za svaki DL ugao pamtise niz GD uglova koji dominiraju nad im (videti zadatak 7.15), i to sortirano, npr. u AVLstablu. Kad se naie na novi DL ugao, proverava se da li je egov GD ugao ispod nekog drugogu S; ako jeste, oznaqi se, a ako nije, onda se ubacuje u S, pri qemu se neke taqke izbacuju iz S(koristi se binarna pretraga, a ukupan broj izbacivaa u toku izvrxea celog algoritmamai je od n). Kad se naie na GD ugao, odgovarajui prvougaonik se izbacuje iz S. Ukupnasloenost je O(n log n + n) = O(n log n).

7.24. Presek dva pravougaonika sa stranicama paralelnim osama pronalazi se za kon-stantno vreme. Taj presek je ili prazan, ili je neki pravougaonik. Prema tome, problem semoe rexiti za vreme O(n), nalazei preseke jednog po jednog pravougaonika sa presekomsvih prethodnih pravougaonika.

7.25. Za svaku krunicu posmatramo vertikalne prave koje je dodiruju. Sve x-koor-dinate ovih pravih se sortiraju, pa se prave prolaze sleva udesno pokretnom vertikalnompravom L. Izmeu dva uzastopna poloaja L u traci izmeu ih postoji niz lukova kojipovezuju jednu taqku leve sa jednom taqkom desne prave. Svaka krunicakandidat (onakoja seqe obe prave) daje dva ovakva luka. Zadatak je proveriti da li se neka dva od ovihlukova seku u traci; ako nema preseka, onda se lukovi mogu sortirati prema rastuim y-koordinatama preseka sa levom pravom. Dakle, za svakog kandidata treba quvati dva luka(oni su zadati centrom, polupreqnikom i podatkom da li je u pitau gora ili doapolukrunica), i to sortirano prema y-koordinatama preseka sa L. Taj redosled se ne meapri prelasku L u novi poloaj ako nema preseka; ako se pak neka dva luka seku, onda uvekpostoji presek neka dva uzastopna luka u sortiranom redosledu. Prema tome, ako L naiena desni kraj nekog kandidata, egova oba luka se eliminixu (pogodna struktura podatakaje zato uravnoteeno binarno stablo pretrage); ako naie na levi kraj neke krunice, ondau sortirani redosled treba umetnuti oba luka i proveriti da li se nova krunica seqe sakrunicamasusedima u sortiranom redosledu kandidata (dve krunice polupreqnika r1

i r2 sa rastojaem centara d seku se akko je |r1 − r2| ≤ d ≤ r1 + r2). Sloenost algoritmaje O(n log n).

7.26. Problem se moe rexiti sliqno kao u zadacima 7.25, 7.20. U ovom sluqaju sesortira svih nk temena mnogouglova po x-koordinatama. Tekui skup kandidata qine ivicemnogouglova koje seku pokretnu vertikalnu pravu; one se mogu (ako nema preseka) quvatisortirano prema y-koordinatama svojih preseka sa pokretnom pravom. Za kandidate se pamteindeksi mnogouglova kojima pripadaju, da se ne bi kao preseci raqunala temena mnogouglova| preseci susednih ivica. Ukupan broj kandidata je najvixe nk, pa je sloenost algoritmaO(nk log(nk)).

7.27. Ideja je izdeliti oba mnogougla vertikalnim pravama na trapeze, i onda pronaipreseke parova trapeza. Najpre se sva temena sortiraju prema x-koordinatama. Ovo se moeuraditi za vreme O(n), jer se zna cikliqki redosled temena oba mnogougla. Kroz svako temepovuqe se vertikalna prava i na taj naqin su oba mnogougla izdeena na trapeze (sa osnovamaparalelnim y-osi; trougao je specijalan sluqaj trapeza). U jednoj po jednoj vertikalnojtraci, sleva udesno, pronalaze se (za vreme O(1), jer oba trapeza imaju po najvixe qetiritemena) preseci po dva trapeza, dela dva mnogougla. Zatim se za vreme O(n) odgovarajuipreseci objediuju u mnogougao.

7.28. Presek trouglova je konveksan mnogougao. Presek dva trougla pronalazi se za kon-stantno vreme, a presek dva konveksna mnogougla za linearno vreme (videti zadatak 7.27).

368 13. UPUTSTVA I REXEA ZADATAKA

Prema tome, algoritam zasnovan na dekompoziciji deli trouglove na dva podskupa, izraqu-nava rekurzivno preseke trouglova u oba podskupa, a onda pronalazi presek dva dobijenakonveksna mnogougla. Sloenost algoritma je O(n log n).

7.29. Neka gora granica d za dijametar mnogougla (duinu najvee dui koju sadri)moe se odrediti za O(n) koraka | to je npr. dijagonala pravougaonika koji sadri mno-gougao, a ivice su mu paralelne osama. Zatim se za svako teme Pi mnogougla konstruixejednakokraki trougao kome je Pi teme, stranice mu sadre stranice mnogougla koje se sus-tiqu u temenu Pi, a visina iz temena Pi ima duinu d (taj trougao sadri celi mnogougao!).Presek ovih n trouglova je zadati mnogougao.

7.30. Za svaku taqku Pi, 1 ≤ i ≤ n, sortiraju se nagibi od Pi ka ostalim taqkama,i proveri se da li meu ima ima jednakih (ako ima, onda su pronaene tri kolinearnetaqke). Sloenost algoritma je O(n · n log n) = O(n2 log n).

7.31. Neka su date taqke Ai = (xi, yi), i = 1, 2, . . . , n. Svih n(n − 1)/2 dui AiAj moguse leksikografski sortirati (O(n2 log n) koraka) prema qetvorki (xi, yi, xj , yj); pri tome jezbog odreenosti redosled taqaka u svakom paru AiAj definisan tako da bude xi < xj ilixi = xj i yi < yj . Na taj naqin mogue je za proizvonu du binarnom pretragom za O(log n)koraka proveriti da li se nalazi ili ne u ovom skupu dui. Za svaku od n(n − 1)/2 duise proverava da li skup sadri tri dui koje sa om zatvaraju kvadrat na jedan ili druginaqin | za ovo je potrebno najvixe xest binarnih pretraga, odnosno jox ukupno O(n2 log n)koraka.

7.32. Neka su date taqke Pi = (xi, yi), i = 1, 2, . . . , n. Formiraju se qetiri skupa brojevaA = xi|1 ≤ i ≤ n, B = yi|1 ≤ i ≤ n, C = xi − yi|1 ≤ i ≤ n i D = xi + yi|1 ≤ i ≤ n.Sortiraem brojeva u ovim skupovima utvruje se broj razliqitih elemenata u svakom odih, koji je upravo jednak broju paralelnih pravih koje sadre sve date taqke, a paralelnesu y-osi (A), x-osi (B), pravoj y = x (C) i pravoj y = −x (D). Najmai od ova qetiri brojaodreuje rexee zadatka.

13.8. Algebarski algoritmi8.1. Neka je (km−1km−2 . . . k0)2 binarni zapis broja k. Rezultatu z dodeuje se poqetna

vrednost z := 1. Poxto je k = ((km−1 · 2 + km−2) · 2+) . . . · 2 + k0, biti ki prolaze se redomza i = m− 1, m− 2, . . . , 0: tekui rezultat z se kvadrira, a ako je ki = 1, onda se i mnoi san: z := z2 · nki .

8.2. Algoritam Stepen kvadriranjem sa slike 8.2 za stepenovae eksponentom 15 zahte-va 6 mnoea, n15 = (((n2 ·n)2 ·n)2 ·n). Meutim, n15 moe se izraqunati pomou 5 mnoea:n15 = ((n2)2 · n)3.

8.3.Potrebno je Euklidovim algoritmom odrediti d = NZD(a, b), posle qega je a′ = a/d,b′ = b/d.

8.4. Dokazuje se indukcijom po k, gde je n = 2k.8.5. Za razliku od mnoea polinoma, ako se pokuxa sa svoeem proizvoda PQ, 0 ≤

P, Q < 2n, na proizvode maih brojeva pomou P = P0 + 2n/2P1, Q = Q0 + 2n/2Q1, 0 ≤P0, P1, Q0, Q1 < 2n/2, PQ = P0Q0 + 2n/2(P0Q1 + P1Q0) + 2nP1Q1, i P0Q1 + P1Q0 = (P0 +P1)(Q0+Q1)−P0Q0+P1Q1, pojavuje se izraqunavae proizvoda (P0+P1)(Q0+Q1) brojeva0 ≤ P0 +P1, Q0 +Q1 ≤ 2 ·2n/2−2, koji izlaze iz polaznog opsega [0, 2n−1]. Problem se moerexiti na sledei naqin: izraqunavae proizvoda dva broja od po n = 2k + 2 bita svodi sena izraqunavae tri proizvoda brojeva od po najvixe m = n

2+ 1 = 2k−1 + 2 bita. Zaista,

ako je 0 ≤ P, Q < 2n, onda je P = P0 + 2m−1P1, Q = Q0 + 2m−1Q1, gde je 0 ≤ P0, P1, Q0, Q1 <2m−1, i 0 ≤ P0 + P1, Q0 + Q1 < 2m. Sloenost T (n) zadovoava diferencnu jednaqinuT (2k + 2) = 3T (2k−1 + 2) + c2k. Indukcijom se pokazuje da je gora granica enog rexeaT (2k + 2) < 3c(3k − 2k), pa za n = 2k + 2 vai T (n) < 3c3k = 3c2k log2 3 = 3c(n − 2)log2 3,odnosno T (n) = O(nlog2 3). Uopxtee na sluqaj proizvone osnove b ≥ 2 je direktno |i dae se proizvod brojeva od n = 2k + 2 cifara svodi na tri proizvoda brojeva od pom = n/2 + 1 cifara.

13.8. ALGEBARSKI ALGORITMI 369

Drugo rexee. Ako je n = 2k, moe se poi od P = P0 + 2n/2P1, Q = Q0 + 2n/2Q1,0 ≤ P0, P1, Q0, Q1 < 2n/2, i identiteta

PQ = (2n + 2n/2) + 2n/2(P1 − P0)(Q0 −Q1) + (2n/2 + 1)P0Q0,

kojim se izraqunavae proizvoda n-bitnih brojeva P , Q svodi na izraqunavae tri proizvo-da n/2-bitnih brojeva i nekoliko jednostavnih operacija, sabiraa i dopisivaa nulazdesna u sistemu sa osnovom 2. Uopxtee na sluqaj proizvone baze b ≥ 2 takoe je di-rektno.

8.6. Dovono je izraqunati proizvode p1 = ac, p2 = bd i p3 = (a + b)(c + d) = p1 + p2 +(ad + bc), jer je tada

(a + bi)(c + di) = ac− bd + i(ad + bc) = p1 − p2 + i(p3 − p1 − p2).

8.7. Ako se ograniqimo na sluqaj n = 4k, i ako sa T (n) oznaqimo sloenost izraquna-vaa proizvoda dve matrice reda n, onda je T (n) = kT (n/4) + cn2. Rexee ove diferencnejednaqine je (videti odeak 2.5.4) T (n) = O(nlog4 k). Da bi algoritam bio asimptotski briod Xtrasenovog, trebalo bi da bude nlog4 k < nlog2 7, ili log4 k < log2 7 = log4 49, odnosnok < 49.

8.8. Uzastopna mnoea: ni ima id cifara, pa je ukupan broj koraka d2 + 2d2 + . . . +(k − 1)d2 = (k2 − k)d2/2.

Uzastopna stepenovaa: ukupan broj koraka jed2 + (2d)2 + (4d)2 + . . . + (kd/2)2 = (k2 − 1)d2/3.

Dakle, pod ovim pretpostavkama oba algoritma imaju istu asimptotsku sloenostO(k2d2) = O(k2 log2 n).

8.9. NZD brojeva a1, a2, . . . , ak se ne mea ako se (pretpostavimo da je a1 najmai odih) brojevi a2, a3, . . . , ak zamene svojim ostacima pri deeu sa a1, i ako se zatim iz skupaizbace nule. Ovim operacijama se veliqina najveeg broja u skupu smauje, pa se (kao ikod obiqnog Euklidovog algoritma) posle konaqnog broja koraka dolazi do sistema od samojednog broja; taj broj je traeni NZD brojeva a1, a2, . . . , ak.

8.10. Neka je d = NZD(a, b); tada je a = a1d, b = b1d, gde su a1 i b1 uzajamno prostibrojevi, pa je NZS (a, b) = a1b1d = ab/NZD(a, b). Time je odreivae NZS (a, b) svedeno naodreivae NZD(a, b).

8.11. Problem se moe rexiti indukcijom po k. Ako su dati brojevi a1, a2, . . . , ak iizraqunat je Ak−1 = NZS (a1, a2, . . . , ak−1), onda je

Ak = NZS (a1, a2, . . . , ak) = NZS (Ak−1, ak) = Ak−1ak/NZD(Ak−1, ak),

odnosno potrebno je jox jednom izvrxiti Euklidov algoritam, mnoee i deee.8.12. Da se svaki prirodan broj n moe predstaviti u obliku zbira razliqitih Fi-

bonaqijevih brojeva moe se dokazati indukcijom po n. Za n = 1, 2 tvree je taqno. Nekaje tvree taqno za brojeve mae od n (induktivna hipoteza). Neka je k takav indeks da jeF (k) ≤ n < F (k + 1). Tada je F (k) > n/2 (u protivnom bi bilo F (k + 1) = F (k) + F (k − 1) ≤2 · n/2 = n). Prema induktivnoj hipotezi se n− F (k) moe predstaviti u obliku zbira na-jvixe log2(n− F (k)) razliqitih Fibonaqijevih brojeva. Meutim, kako je n− F (k) < F (k),u toj reprezentaciji F (k) ne moe da uqestvuje, pa je i za broj n = (n − F (k)) + F (k) do-bijena reprezentacija u obliku zbira razliqitih Fibonaqijevih brojeva; broj sabiraka jemai od log2(n − F (k)) + 1 = log2(n + (n − 2F (k))) < log2 n. Da bismo efektivno odredilireprezentaciju datog broja n, izraqunavamo Fibonaqijeve brojeve dok ne doemo do nekogkoji je vei od n, a onda nastavamo kao u induktivnom dokazu: od n se oduzima prethod-ni Fibonaqijev broj, pa se sa razlikom nastava na isti naqin, koristei ve izraqunateFibonaqijeve brojeve.

8.13. Sliqno kao kod prirodnih brojeva, ako se izvrxi deee sa ostatkom a = bq + r,deg r < deg b, onda je NZD(a, b) = NZD (b, r). Tako se moe polazei od r0 = a i r1 = bizvrxiti niz deea sa ostatkom ri−1 = qri + ri+1, deg ri+1 < deg ri, i = 1, 2, . . . , k (nizdeea je konaqan, jer stepeni polinoma ri qine strogo opadajui niz). Ako je rk posledi

370 13. UPUTSTVA I REXEA ZADATAKA

ostatak razliqit od nule, onda je rk = NZD(a, b), jer svaki zajedniqki delilac a i b delirk, i svaki delilac rk deli i a i b. NZD se moe izraziti u obliku rk = au + bv, gde su u iv polinomi; to se postie na isti naqin kao i kod prirodnih brojeva. Ako su dva polinomad1 i d2 istovremeno NZD polinoma a i b, onda d1|d2 i d2|d1, pa poxto su im najstarijikoeficijenti jedinice, mora biti d1 = d2.

8.14. Neka je p1 = a1a2, p2 = b1b2, p3 = c1c2, p4 = d1d2, p12 = (a1 + b1)(a2 + b2),p13 = (a1+c1)(a2+c2), p14 = (a1+d1)(a2+d2), p23 = (b1−c1)(b2+c2), p24 = (d1−b1)(b2+d2),p34 = (c1 − d1)(c2 + d2) (ukupno 10 mnoea). Tada je

(a1 + b1i + c1j + d1k)(a2 + b2i + c2j + d2k) =

(a1a2 − b1b2 − c1c2 − d1d2)

+ (a1b2 + b1a2 + c1d2 − d1c2)i

+ (a1c2 − b1d2 + c1a2 + d1b2)j

+ (a1d2 + b1c2 − c1b2 + d1a2)k

= (p1 + p2 + p3 + p4) + (p12 − p1 − p2 + p34 − p3 + p4)i

+ (p13 − p1 − p3 + p24 − p4 + p2)j + (p14 − p1 − p4 + p23 − p2 + p3)k.

Prema tome, izraqunavae proizvoda dva kvaterniona svodi se na 10 (umesto 16) realnihmnoea.

8.15. Poxto je(

a bc d

) (a bc d

)=

(a2 + bc b(a + d)c(a + d) bc + d2

),

vidi se da je dovono izraqunati pet proizvoda a2, bc, d2, c(a + d) i b(a + d).8.16. (a) Matrica A je permutaciona akko se rezultat mnoea y = Ax proizvonog

vektora kolone x sa A dobija permutovaem komponenti x (na naqin koji ne zavisi od x:y[i] = x[j] = x[P [i]], ako je P [i] = j, 1 ≤ i ≤ n). Proizvod dve permutacione matrice A1A2

na proizvoan vektor kolonu x deluje tako xto mu permutuje komponente, jer je (A1A2)x =A1(A2x), pa je i A1A2 permutaciona matrica.

(b) Neka je y = A2x, z = A1y = A1A2x, i neka su P1, P2 vektori koji predstavajupermutacione matrice redom A1, A2. Tada je y[i] = x[P2[i]], z[i] = y[P1[i]] = x[P2[P1[i]]], paje i-ta komponenta vektora koji predstava permutacionu matricu A1A2 jednaka P2[P1[i]],1 ≤ i ≤ n.

8.17. Moe se primeniti dekompozicija. Bulova funkcija f(x1, x2, . . . , xn) od n pro-menivih moe se predstaviti kao linearni polinom po xn:

xnf(x1, x2, . . . , 1) ∨ xnf(x1, x2, . . . , 0)

= xnf(x1, x2, . . . , 1) + (1 + xn)f(x1, x2, . . . , 0)

= xn(f(x1, x2, . . . , 1) + f(x1, x2, . . . , xn−1, 0)) + f(x1, x2, . . . , xn−1, 0)

= xnh(x1, x2, . . . , xn−1) + g(x1, x2, . . . , xn−1),

gde je

g(x1, x2, . . . , xn−1) = f(x1, x2, . . . , xn−1, 0),

h(x1, x2, . . . , xn−1) = f(x1, x2, . . . , xn−1, 1) + f(x1, x2, . . . , xn−1, 0);

korixen je identitet xn = 1 + xn. Vektor od 2n koeficijenata polinoma f dobija seprema tome nadovezivaem dva vektora od po 2n−1 koeficijenata polinoma g, h od n − 1promenive. Ako broj operacija potrebnih za dobijae koeficijenata polinoma funkcijeod n promenivih oznaqimo sa T (n), onda je T (n) = 2T (n − 1) + c2n. Qlan c2n potiqeod izraqunavaa tablice h sabiraem dve polovine tablice f . Rexee ove diferencnejednaqine je T (n) = O(n2n) (dobija se npr. uvoeem smene R(n) = 2−nT (n), koja diferencnujednaqinu transformixe u R(n) = R(n− 1) + c, odakle je R(n) = O(n)).

13.8. ALGEBARSKI ALGORITMI 371

8.18. Zadatak se rexava nalaeem rastojaa f od svih linearnih funkcija La(x) =a0+

∑ni=1 aixi, a = (a0, a1, . . . , an) ∈ Bn+1. Sloenost trivijalnog algoritma (izraqunavae

svih 2n vrednosti svake od 2n+1 linearnih funkcija, i nalaee rastojaa tih funkcijaod f) je O(n2n · 2n) = O(n4n). Do uxtede se moe doi primenom dekompozicije

f = xnf ′′(x1, x2, . . . , xn−1) + xnf ′(x1, x2, . . . , xn−1),

gde su

f ′(x1, x2, . . . , xn−1) = f(x1, x2, . . . , xn−1, 0),

f ′′(x1, x2, . . . , xn−1) = f(x1, x2, . . . , xn−1, 1)

dve Bulove funkcije od n − 1 promenive (tablica f dobija se nadovezivaem tablica f ′,f ′′). Na isti naqin se proizvona linearna funkcija od n promenivih La(x1, x2, . . . , xn) =a0 +

∑ni=1 aixi predstava preko dve linearne funkcije od n− 1 promenive

L′a0,a1,...,an−1(x1, x2, . . . , xn−1) = a0 +

∑n−1i=1 aixi,

L′′a0,a1,...,an−1(x1, x2, . . . , xn−1) = a0 + an +

∑n−1i=1 aixi :

La(x1, x2, . . . , xn)

= xnL′′a0,a1,...,an−1(x1, x2, . . . , xn−1) + xnL′a0,a1,...,an−1

(x1, x2, . . . , xn−1).

Pri tome je

L′′a0,a1,...,an−1= an + L′a0,a1,...,an−1

=

L′a0,a1,...,an−1

, an = 1

L′a0,a1,...,an−1, an = 0

,

xto znaqi da je druga polovina tablice funkcije La0,a1,...,an jednaka prvoj ako je an = 0,odnosno enom komplementu ako je an = 1. Svakoj linearnoj funkciji od n− 1 promeniveodgovaraju na ovaj naqin dve linearne funkcije od n promenivih (za an = 0, odnosnoan = 1). Polazei od jednakosti

D(f, La0,a1,...,an ) = D(f ′, L′a0,a1,...,an−1) + D(f ′′, L′′a0,a1,...,an−1

)

=

D(f ′, La0,a1,...,an−1 ) + D(f ′′, La0,a1,...,an−1 ), an = 0

D(f ′, La0,a1,...,an−1 ) + 2n−1 −D(f ′′, La0,a1,...,an−1 ), an = 1,

mogu se izraqunati sva rastojaa f od linearnih funkcija, ako se znaju sva rastojaafunkcija f ′, f ′′ (od n− 1 promenive) od linearnih funkcija: dovono je izvrxiti O(2n)sabiraa. Ako sa T (n) oznaqimo vremensku sloenost ovako definisanog rekurzivnog al-goritma, onda je T (n) = 2T (n− 1) + O(2n), i konaqno T (n) = O(n2n) (videti zadatak 8.17).

8.19. Elemenat cij moe se izraqunati za konstantno oqekivano vreme. Zaista, 2nsluqajnih dogaaja aik = 0, bkj = 0, k = 1, 2, . . . , n, meusobno su u parovima nezavisni.Zbog toga su nezavisni i dogaaji dk = 0, gde je dk = aik ∨ bkj ; verovatnoa Pdk = 0je 1/4. Nezavisni dogaaji Ak = d1 = d2 = · · · = dk−1 = 1, dk = 0, k = 1, 2, . . . , n, iAn+1 = d1 = d2 = · · · = dn = 1, qine kompletan sistem dogaaja (sa zbirom verovatnoa1). Ako je d1 = 0, stava se cij := 0 (dogaaj A1 sa verovatnoom 1

4; cij je izraqunato

primenom jedne Bulove operacije, tj. posle jednog koraka); ako je d1 = 1 i d2 = 0 stava setakoe cij := 0 (dogaaj A2 sa verovatnoom 3

4· 1

4; izraqunavae cij zavrxeno je posle dva

koraka), itd. Uopxte, ako je d1 = d2 = · · · = dk−1 = 1 i dk = 0, stava se cij := 0 (dogaaj Ak

sa verovatnoom ( 34)k−1 · 1

4; izraqunavae cij zavrxeno je posle k koraka, k = 1, 2, . . . , n). U

protivnom se posle n koraka stava cij := 1 (dogaaj An+1 sa verovatnoom ( 34)n). Oqekivani

372 13. UPUTSTVA I REXEA ZADATAKA

(sredi) broj koraka potrebnih za izraqunavae cij je(videti primer 2.4)n∑

k = 1

k(

34

)k−1 14

+ n(

34

)n=

n∑

k = 1

k(

34

)k−1 14+

∞∑

k = n + 1

n(

34

)k−1 14

< 14

∞∑

k = 1

k(

34

)k−1= 1

41

1− 34

= 4.

Oqekivani broj koraka za izraqunavae proizvoda C = AB je dakle mai od 4n2 = O(n2).8.20. Neka je C = AB, A = (aij), B = (bij), C = (cij). Dovono je pretpostaviti da

su vrste matrice A otvoreni Grejovi kodovi. Najpre se izraqunavaju elementi prve vrstematrice C, c1j =

∑nk=1 a1kbkj (O(n2) operacija) i pronalaze indeksi R[i] | pozicije na

kojima se razlikuju i-ta i (i+1)-a vrsta matrice A, i = 1, 2, . . . , n−1 (takoe O(n2) operacija).Poxto je

ci+1,j − cij =n∑

k = 1

ai+1,kbkj−n∑

k = 1

aikbkj =n∑

k = 1

(ai+1,k − aik)bkj

= (ai+1,R[i] − ai,R[i])bk,R[i],

svi ostali elementi matrice cij , izraqunavaju se korigovaem vrednosti elementa iznadsebe (ci−1,j) pomou jednog mnoea, sabiraa i oduzimaa, i ≥ 2, 1 ≤ j ≤ n. Prema tome,pri izraqunavau proizvoda izvrxeno je ukupno O(n4) operacija.

8.21. Rexiemo problem indukcijom po n. Sluqaj n = 2 je trivijalan. Pretpostavimoda znamo rexee za n ≥ 2 matrica, i neka je dato n + 1 matrica koje treba pomnoi-ti. Oznaqimo sa M [i..j] proizvod MiMi+1 . . . Mj . Najboi naqin da se izraquna proizvodM [1..n+1] je da se izraqunaju proizvodi M [1..i] i M [i+1..n+1] za neko (za sada nepoznato) i,pa da se onda ti proizvodi pomnoe. Najboa vrednost za i odreuje se izraqunavaem ceneu svim varijantama. Prema induktivnoj hipotezi znamo najboi naqin za izraqunavaeM [1..i] (kao i odgovarajuu cenu). Meutim, mora se pronai najboi naqin za izraqunavan-je M [i + 1..n + 1]. Zbog toga je zgodno pojaqati induktivnu hipotezu: znamo najboi naqinza izraqunavae M [i..j] za sve 1 ≤ i < j ≤ n. Da bi se induktivna hipoteza proxirilana n + 1, treba izraqunati M [i..n + 1] za sve 1 ≤ i ≤ n. Ovaj problem rexava se drugom(umetnutom) indukcijom, pri qemu i uzima vrednosti n, n − 1, . . . , 1. Za i = n problem jetrivijalan. Pretpostavimo da znamo najboi naqin izraqunavaa M [i..n+1] i razmotrimoproizvod M [i− 1..n + 1]. Sada se moe izvesti kompletno svoee: za svako j, i < j < n + 1,proverava se cena izraqunavaa M [i− 1..j] (xto znamo po osnovnoj induktivnoj hipotezi),M [j + 1..n + 1] (xto znamo po unutraxoj induktivnoj hipotezi), i cena mnoea ova dvaproizvoda; bira se ono j za koje je cena izraqunavaa najmaa. Ako se pogleda kompletanalgoritam, induktivna konstrukcija odgovara dvema petama | spoaxoj veliqine n, iunutraxoj veliqine n − i, pa se unutraxa peta sastoji od n − i koraka. Ukupan brojkoraka je dakle ∑

k = 1

n∑

i = k

n∑

j = i

nO(1) = O(n3).

13.9. Primene u kriptografiji9.1. Proverom moguih pomaka redom, sa pomakom 5 dobija se porukaCEZAROVASIFRASAPOMAKOMPETZa sve ostale pomake dobijaju se besmisleni tekstovi.9.2. Broj moguih kuqeva je 268, pa odreivae kuqa u najgorem sluqaju traje 0.001 ·

268/3600 = 58000 sati. Ako jedno xifrovae traje 1µs, onda odreivae kuqa traje na-jvixe 58 sati, odnosno u proseku 29 sati.

9.3. Ako se uporede xifrovae poruka P , odnosno P kuqevima redom K, odnosnoK, zapaa se da su odgovarajui izlazi posle i-te runde komplementarni, i = 1, 2, . . . , 16.

13.9. PRIMENE U KRIPTOGRAFIJI 373

Zaista, blokovi L0 i R0 u ova dva xifrovaa su oqigledno komplementarni, jer su bitiovih blokova kopije ulaznih bita (videti sliku 9.4). Dae, zbog strukture funkcije f(slika 9.5) vai f(Ri−1, Ki) = f(Ri−1, Ki). Prema tome, ako je ulaz u i-tu rundu Li−1, Ri−1,onda je prema (9.1) izlaz iz e Ri−1 = Li i

Li−1 ⊕ f(Ri−1Ki) = ¯Li−1 ⊕ f(Ri−1Ki) = (Li−1 ⊕ f(Ri−1Ki)) = Ri.

9.4. Mogu se formirati dva niza a i b duine 256 qiji elementia[i] = (DESi(P1), DESi(P2), . . . , DESi(P10)) ,

b[i] =(DES−1

i (C1), DES−1i (C2), . . . , DES−1

i (C10))

,

su veliqine 10 · 8 = 80 bajtova. Ovde je DESi(P ), odnosno DES−1i (C) rezultat xifrovan-

ja P , odnosno dexifrovaa C, kuqem i, 0 ≤ i ≤ 256 − 1. Nizovi a i b se sortirajuu mestu, posle qega se jednim prolaskom kroz oba niza (sliqno kao pri objediavau)pronalazi ihov zajedniqki elemenat a[j] = b[k], odakle je DESj(Pl) = DES−1

k [Cl], odnosnoDESk(DESj(Pl)) = Cl za svako l = 1, 2, . . . , 10. Drugim reqima, pronaen je par kuqeva(j, k) za DES koji deset datih poruka transformixu u deset datih xifrata. Pri tome jeDES za xifrovae ili dexifrovae korixen 256 · 2 · 10 < 261 puta, broj uporeivaablokova od 80 bajtova je oko 256 · 56 · 2 < 263 (xto znaqi da je ovaj deo posla jednostavnijiod xifrovaa/dexifrovaa algoritmom DES).

9.5. Jedini naqin da svi potkuqevi Ki budu jednaki je da se obe grupa od po 28 bitakuqa (koje se rotiraju posle svake runde) budu sastavene od jednakih bita, da ih rotacijene bi meale. Postoje qetiri takve mogunosti. Koristei tabelu 9.2 dobijamo da su tosledei kuqevi (heksadecimalno):

Kuq Ispermutovani kuq0101010101010101 00000000 00000000FEFEFEFEFEFEFEFE FFFFFFFF FFFFFFFF1F1F1F1F1F1F1F1F 00000000 FFFFFFFF FFFFFFFF 00000000

9.6. Do faktorizacije n moe se doi probabilistiqkim algoritmom tipa Las Vegas.Najpre se izraqunava k = de − 1, broj koji je umnoak φ(n). Poxto je φ(n) = (p − 1)(q − 1)paran broj, bie k = 2tr, gde je t ≥ 1 i r je neparan broj. Za proizvoan broj g, uzajamno prostsa n vai gk ≡ 1 (mod n), pa je gk/2 koren iz jedinice po modulu n. Korena iz jedinice pomodulu n ima qetiri: ihovi ostaci po modulu p i q mogu biti (1, 1), (−1,−1), (1,−1) ili(−1, 1); prva dva od ih su ±1, a ostala dva su ±x, gde x zadovoava kongruencije x ≡ 1(mod p) i x ≡ −1 (mod q). Poznavae bilo kog od ova dva posleda korena iz jedinice pomodulu n, omoguava nalaee faktorizacije n izraqunavaem NZD(x− 1, n). Za sluqajnoizabrani broj g, 1 < g < n, sa verovatnoom bar 1/2 meu brojevima gk/2, gk/4,. . . , gk/2t

(mod n), nalazi se bar jedan od korenova iz jedinice koji otkriva faktorizaciju n.9.7. Polazimo od qienice da φ(n)|ed−1; potrebno je da za novi javni kuq e′ odredimo

neko d′ tako da je φ(n)|e′d′−1. Najpre izraqunavamo rezultat deea ed−1 svim zajedniqkimdeliocima sa e′, tj. g = (ed− 1)/NZD(ed− 1, e′). Poxto su ti zajedniqki delioci uzajamnoprosti sa φ(n) (naqin izraqunava kuqeva za RSA podrazumeva da su e′ i φ(n) uzajamnoprosti), bie φ(n)|g. Zatim se pomou Euklidovog algoritma odreuje takvo d′ da g|e′d′ − 1,a time i φ|e′d′ − 1. Eksponent d′ moe se koristiti za dexifrovae poruka xifrovaniheksponentom e′.

Drugo rexee. Osoba B moe, znajui n, e i d, da faktorixe n (videti zadatak 9.6),posle qega lako moe da izraquna tajni kuq d′ koji odgovara javnom kuqu e′.

Napomena. Ovo zapaae pokazuje da se RSA moduo n ne sme koristiti dva puta.

9.8. Javni eksponent e bira se tako da bude uzajamno prost sa χ(n) i mai od χ(n).Tajni eksponent d dobija se pomou Euklidovog algoritma, kao rexee kongruencije de ≡ 1

374 13. UPUTSTVA I REXEA ZADATAKA

(mod χ)(n). Xifrovae bloka p daje c = pe (mod n), a dexifrovaem c dobija se ped ≡ p(mod n), jer je ed istovremeno i oblika 1 + l1(p − 1) i oblika 1 + l2(q − 1), gde su l1 i l2prirodni brojevi.

9.9. Jedno mogue rexee je da se na poqetku poruke rezervixe prostor za poe ukome se zapisuje duina poruke; pretpostavka je da su duine svih poruke mae od nekefiksirane vrednosti.

13.10. Redukcije10.1. Problem se rexava svoeem na problem nalaea najkraih puteva iz datog

qvora u posebnom grafu G = (V, E) odreenom nizovima A i B. Skup qvorova G je V =(i, j) | 0 ≤ i ≤ n, 0 ≤ j ≤ m, a u qvor (i, j) vode grane iz qvorova

• (i, j − 1) ako je 0 ≤ i ≤ n, 1 ≤ j ≤ m (umetae znaka ai, cena ci),• (i− 1, j) ako je 1 ≤ i ≤ n, 0 ≤ j ≤ m (brisae znaka bj , cena cj),• (i − 1, j − 1) ako je 1 ≤ i ≤ n, 1 ≤ j ≤ m (zamena ai sa bj ; cena je 0 ako ai = bj ,

odnosno 1 ako ai 6= bj).U grafu G pronalaze se najkrai putevi od qvora (0, 0) do svih ostalih qvorova, specijalnodo qvora (n, m); taj put odgovara nizu edit operacija najmae cene koji A transformixe uB.

10.2. Pokazaemo da se problem inkluzije intervala moe rexiti pomou algoritmaza nalaee maksimalnih taqaka. Svakom intervalu Ij = (Lj , Dj) pridruujemo taqkuAj = (−Lj , Dj). Tada je interval Ij sadrzan u intervalu Ik akko je taqka Aj maa ododgovarajue taqke Ak. Drugim reqima, interval Ij je sadran u nekom drugom intervaluakko odgovarajua taqka Aj nije maksimalna.

10.3. Svaki qvor koji odgovara fakultetu zamenimo sa dva qvora, povezana granamasa svim studentima koji su se kvalifikovali za prijem na taj fakultet. Time je problemsveden na obiqan problem bipartitnog uparivaa.

10.4. Problem se moe rexiti svoeem na obiqan problem bipartitnog uparivaa.Polazei od bipartitnog grafa G = (U, V, E) sa skupom nastavnika U , kurseva V i granaE, formira se graf G′ = (U ′, V ′, E′) tako da svakom nastavniku u ∈ U odgovaraju dva qvorau0, u1 ∈ U ′, svakom kursu v ∈ V odgovaraju dva kursa v0, v1 ∈ V ′, a svakoj grani (u, v) ∈ Eodgovaraju qetiri grane (u0, v0), (u0, v1), (u1, v0), (u1, v1) ∈ E′. Lako se pokazuje da svakomobiqnom bipartitnom uparivau u G′ odgovara takvo dodeivae kurseva nastavnicima uG, da svaki nastavnik dri najvixe dva kursa, i svaki kurs dre najvixe dva nastavnika.Pri tome je ukupan broj kurseva jednak veliqini odgovarajueg uparivaa u G′.

10.5. Za dati graf G = (V, E) formira se novi graf G′ = (V ′, E′) na sledei naqin.Svaki qvor vi ∈ V zameuje se sa b(vi) qvorova vi,1, vi,2, . . . , vi,b(vi)

. Pored toga, za svakugranu (vi, vj) ∈ E uvode se jox dva qvora vi,j,0 i vj,i,0. Za svaku granu (vi, vj) ∈ E u G′

postoje grane (vi,k, vi,j,0), 1 ≤ k ≤ b(vi), (vi,j,0, vj,i,0), i (vj,k, vj,i,0), 1 ≤ k ≤ b(vj), videtisliku 13. Da bi se odredilo optimalno b-uparivae M u G, moe se odrediti optimalnouparivae M ′ u G′, i zatim ga transformisati u optimalno b-uparivae u G na sledeinaqin: (vi, vj) ∈ M akko su od grana G′ pridruenih grani (vi, vj) ∈ E u uparivae M ′

ukuqene dve grane (od ovih grana u uparivae M moe biti ukuqena ili jedna ili dvegrane). Zaista, najpre se uveravamo da je skup grana M b-uparivae. Uparivae M ′ u G′

transformixe se u uparivae M ′′, u kome se svim kompletima grana pridruenim granama(vi, vj) iz G sa jednom granom u uparivau M ′ bira za M ′′ "sreda" grana (vi,j,0, vj,i,0) izkompleta. Iz ostalih kompleta grana za M ′ su izabrane po dve grane, po jedna grana sa svakestrane srede grane; za fiksirani qvor vi ∈ V u uparivau M je najvixe b(vi) grana emususednih, jer u G′ skup qvorova vi,1, vi,2, . . . , vi,b(vi)

moe da obezbedi najvixe b(vi) kompletasa po dve grane u uparivauM ′: svaki od tih kompleta grana pokriva po jedan od qvorova| replika qvora vi.

13.10. REDUKCIJE 375

b

b

b

bb b b

vi

vi,1 vi,2 vi,b(vi)· · ·

b b bvj

vj,1 vj,2 vj,b(vj)

· · ·

-vi,j,0

vj,i,0

Ris. 13. Ilustracija uz zadatak 10.5.

Da bismo se uverili da je uparivae M optimalno b-uparivae u G, pretpostavimo da uemu ima k grana (odnosno da u uparivau M ′ ima |E|+k grana), i da u G postoji uparivaeM ′′′ sa k′ > k grana. Tada se moe, polazei od M ′′′, formirati (obiqno) uparivae MIV

u G′ koje iz kompleta grana pridruenih grani iz M (odnosno E \M) sadri dve (odnosnojednu) granu; broj grana u MIV je 2k′+(|E| − k′) = |E|+ k′ > |E|+ k, suprotno pretpostavcida je M ′ optimalno uparivae u G′. Prema tome, M jeste optimalno b-uparivae u G.

10.6. Polazei od grafa G konstruixe se novi graf H, u kome svakom qvoru w iz Godgovaraju dva qvora w1 ("zavrxni") i w2 ("polazni"). Za svaku granu (w, u) iz G dodajemogranu (w2, u1) cene 0 u H (drugim reqima, prepravamo sve grane da vode od polaznog kazavrxnom qvoru). Pored toga, dodajemo granu (u1, u2) cene (c(u) za svaki qvor u iz G. Timeje dati problem sveden na problem odreivaa najkraih puteva od v2 do svih polaznihqvorova u H.

10.7. Dovono je ograniqea sa nejednakostima tipa "≥" pomnoiti sa (−1).10.8. Neka je n = |V |, m = |E| i neka je xi = w(ei) teina i-te grane ei ∈ E, 1 ≤ i ≤ m.

Potrebno je maksimizirati vrednost z =∑m

i=1 xi, pod uslovom da je∑

ei je susedna sa v

xi ≤ h za svaki qvor v ∈ V,

i xi ≥ 0, 1 ≤ i ≤ m.10.9. Mogu se prepraviti nejednakosti ograniqea u osnovnoj varijanti. Lakxe je

primetiti da svaka osoba treba da pokloni svoj maksimalni iznos.10.10. Dokaz se izvodi tako xto se pokae da se problem sortiraa (za koji se zna

doa granica sloenosti | pod pretpostavkom da se koristi model stabla odluqivaa)moe svesti na ovaj problem, sliqno kao xto je to uraeno za problem konstrukcije prostogmnogougla sa zadatim skupom temena. Zadatih n brojeva, ulaz za problem sortiraa, trans-formixu se u n taqaka P1, P2, . . . Pn na krunici sa centrom O u koordinatnom poqetku,takvih da du OPi sa x-osom zaklapa ugao axi + b; konstante a i b biraju se tako da svevrednosti axi + b pripadaju intervalu [0, 2π). Na taqke P1, P2, . . . Pn primeni se algori-tam za ureee temena konveksnog mnogougla (sve taqke lee na krunici, pa su temenakonveksnog mnogougla). Na taj naqin (qitajui taqke sa krunice suprotno od kazake nasatu, polazei od x-ose) dobija se sortirani niz taqaka Pi1 , Pi2 , . . . , Pin , a time i ureeexi1 < xi2 < · · · < xin | rexee problema sortiraa. Poxto je doa granica sloenostiproblema sortiraa Ω(n log n), time je dokazano da je i doa granica sloenosti ureeatemena konveksnog mnogougla Ω(n log n).

10.11. Da bi se izraqunao kvadrat matrice, dovono je pet mnoea matrica dvostrukomae dimenzije. Meutim, to su proizvodi dve proizvone, a ne jednake matrice.

10.12. Neka su A i B dve proizvone kvadratne matrice reda n. Potrebno je svestiizraqunavae proizvoda AB na izraqunavae proizvoda nekih doih i gorih trougaonihmatrica. U tom ciu se A i B mogu predstaviti (ne jednoznaqno) u obliku zbira jedne doe

376 13. UPUTSTVA I REXEA ZADATAKA

i jedne gore trougaone matrice, A = Ad + Ag , B = Bd + Bg . Odatle se dobija

AB = (Ad + Ag)(Bd + Bg) = AdBd + AdBg + AgBd + AgBg .

Potrebno je jox pronai naqin da se doe trougaone matrice "pretvaraju" u gore trougaonei obrnuto. Ci se postie pomou specijalne permutacione matrice P , koja ima jedinicesamo na sporednoj dijagonali, a ostali elementi su joj nule. Mnoeem sleva matricom Pproizvone matrice C sa vrstama redom c1, c2, . . . , cn, dobija se matrica C′ sa vrstamaredom cn, cn−1, . . . , c1, pa je C′ gora trougaona akko je C′ doa trougaona, i obrnuto. Akoje E jediniqna matrica reda n, onda je oqigledno P 2 = E, odnosno P−1 = P . Matrica P 2 jejediniqna matrica. Drugo sredstvo je za postizae istog cia je operacija transponovaa,koja takoe dou trougaonu matricu prevodi u goru trougaonu i obrnuto. Pomou ovihdveju operacija sloenosti O(n2) sva qetiri gora proizvoda trougaonih matrica svode sena izraqunavae proizvoda doe i gore trougaone matrice:

• AdBd = (P ((PBTd )AT

d ))T (dva permutovaa vrsta i tri transponovaa),• AdBg (proizvod eenog oblika),• AgBd = (BT

d ATg )T (tri transponovaa),

• AgBg = P ((PAg)Bg) (dva permutovaa vrsta).

Do ovih izraza se lako dolazi posle malo eksperimentisaa.10.13. Sliqno kao u rexeu zadatka 10.12, koristi se permutaciona matrica P reda

n takva da je eno mnoee matrice sleva ekvivalentno zameni prve i poslede vrste,druge i pretposlede vrste, itd, pa dou trugaonu matricu pretvara u goru trougaonui obrnuto. Matrice A i B koje treba pomnoiti razlau se u zbirove jedne doe i jednegore trougaone matrice, A = Ad + Ag , B = Bd + Bg , a onda se proizvod AB = AdBd +AdBg + AgBd + AgBg izraqunava tako xto se sva qetiri proizvoda sa desne strane sveduna mnoee dve truogaone matrice, i neke dopunske operacije sloenosti O(n2):

• AgBd = P ((PAg)Bd) (dva permutovaa vrsta),• AgBg = (BT

g ATg )T (dva transponovaa),

• AdBg = P (BTg (PAd)T )T (dva permutovaa vrsta i tri transponovaa).

10.14. Pokazaemo kako se navedeni algoritam za nalaee MCST moe iskoristitiza sortirae. Neka je dat niz x1, x2, . . . , xn razliqitih brojeva koje treba sortirati. Svakombroju xi pridruujemo taqku Pi na x-osi sa x-koordinatom xi. Lako je videti da MCST u ovomsluqaju mora da povezuje svaku taqku sa enim susedima na pravoj, odnosno stablo je put |niz taqaka bez granaa. Stablo ima dva lista | minimalni i maksimalni elemenat niza.Znajui minimalno povezujue stablo, lako dolazimo do ureea brojeva za linearno vreme:pronalazimo najleviju taqku, npr. xi, a zatim niz taqaka odreen stablom daje ureeniniz brojeva. Time je dokazano da je doa granica za problem nalaea MCST po modelustabla odluqivaa (po tom modelu je dokazana doa granica za problem sortiraa) jednakaΩ(n log n).

10.15. Potrebno je nai takvo preslikavae brojeva iz A∪B u skup S taqaka u ravni,da se odgovor na pitae o disjunktnosti skupova A i B dobija nalaeem dijametra S.Neka svi brojevi iz A i B pripadaju intervalu (m, M) (brojevi m i M odreuju se pomouO(n) uporeivaa). Svaki broj z ∈ A ∪ B preslikava se u taqku D = φ(z) na jediniqnojkrunici sa centrom u koordinatnom poqetku O, tako da poluprava OD sa x-osom gradi ugaoπ(z−m)/(M−m), ako je z ∈ A, odnosno π+π(z−m)/(M−m), ako je z ∈ B. Sve dobijene taqkepripadaju krunici preqnika 2, pa je dijametar dobijenog skupa taqaka mai ili jednakod 2. Preciznije, dijametar je jednak 2 akko u skupu postoje dve dijametralno suprotnetaqke, odnosno akko postoje dva broja z1 ∈ A i z2 ∈ B takva da je π + π(z2 −m)/(M −m) =π(z1−m)/(M −m)+π, tj. z1 = z2. Dakle, preslikavaem ≤ n taqaka iz A∪B i rexavaemproblema DM za dobijene taqke, dobija se rexee problema DS.

13.11. NP-KOMPLETNOST 377

13.11. NP-kompletnost11.1. Neka su B i C dva netrivijalna problema iz P (tj. za oba postoje ulazi sa odgov-

orom "da" i ulazi sa odgovorom "ne"). Neka su u0 i u1 dva ulaza za problem C, takva da jeza u0 rexee "ne", a za u1 "da" (odnosno u0 /∈ LC i u1 ∈ LC). Za svoee problema B naproblem C moe se iskoristiti sledei polinomijalni algoritam: ulazu v za problem Bpridruuje se φ(v) = u0 ako v /∈ LB , odnosno φ(v) = u1 ako v ∈ LB . Tada za proizvoanulaz v za problem B vai v ∈ LB akko φ(v) ∈ LC .

11.2. Funkcija nk je polinom po n, ali eksponencijalno zavisi od k. Poxto je k deopostavke problema (i moe da dostigne n), vremenska sloenost ovog algoritma nije poli-nomijalna.

11.3. Traeni 3 SAT izraz je

(x + y + a1)(a1 + a2 + z)(a2 + a3 + w)(a3 + u + v)

(x + y + a4)(a4 + a5 + z)(a5 + a6 + w)(a6 + u + v)

(x + y + a7)(a7 + a8 + z)(a8 + a9 + w)(a9 + u + v)

(x + y + a10)(x + y + a10).

11.4. Dokaz se zasniva na redukciji sa obiqnog problema pokrivaq grana. Neka jeG = (V, E) proizvoni neusmereni graf, i neka je U skup qvorova neparnog stepena uG. Dodavaem tri nova qvora x, y, i z, meusobno povezana u trougao, i povezujui x sasvim qvorovima iz U , dobijamo novi graf G′, qiji svi qvorovi imaju paran stepen. GrafG′ ima pokrivaq grana veliqine k akko G ima pokrivaq grana veliqine k − 2. Zaista, odproizvonog pokrivaqa G veliqine k−2 se dodavaem qvorova x i y dobija pokrivaq granagrafa G′ veliqine k. Obrnuto, ako u G′ postoji pokrivaq grana veliqine k, onda taj pokri-vaq mora da sadri bar dva od tri qvora x, y i z; tada je i skup od k qvorova koji se dobijazamenom ta dva qvora sa x, y takoe pokrivaq grana G′; poxto x, y ne pokrivaju ni jednugranu iz G, ihovim uklaaem iz skupa dobija se pokrivaq grana grafa G veliqine k−2.

11.5. Problem je u klasi NP, jer se za svaki od najvixe(n

k

)2 izbora dva podskupa odk qvorova, polinomijalnim algoritmom proverava da li je prvi podskup klika, a drugi nezavisan skup. S druge strane, problem klika, za koji se zna da je NP-kompletan, svodi sena ovaj problem. Zaista, za dati graf G = (V, E) i prirodni broj k (proizvoni ulaz zaproblem klika), formira se graf G′ = (V ′, E) sa skupom qvorova V ′ koji se od V dobijadodavaem k izolovanih qvorova. Rexavaem problema nalaea k-klike i k-nezavisnogskupa za par G′, k, pronalazi se klika veliqine k u G′, koja je istovremeno i klika veliqinek u G (jer klika ne moe da sadri ni jedan od dodatih izolovanih qvorova). Time jedokazana NP-kompletnost problema iz formulacije zadatka.

11.6. Problem je u klasi NP, jer se za izabrani podskup od k qvorova, za polinomi-jalno vreme moe proveriti da li je indukovani graf acikliqki. Na ovaj problem moese svesti problem 3 SAT. Neka je E = C1C2 . . . Cn proizvoni ulaz za 3 SAT. Polazei odE, konstruixemo graf G sa 4n + 1 qvorova na sledei naqin. Za svaku klauzu Ci dodajemoqetiri qvora | jedan koji odgovara klauzi i tri koji odgovaraju enim literalima. Taqetiri qvora povezana su sa svih xest grana. Pored toga, svaka dva qvora koji odgovarajunekoj promenivoj x i enom komplementu x povezuju se granom. Na kraju dodajemo jox jedanqvor r i povezujemo ga sa svim qvorovima pridruenim literalima (ne klauzama). Tvrdimoda graf G ima podskup od 2n + 1 qvorova koji indukuje acikliqki graf akko je izraz Ezadovoiv.

• Ako je izraz zadovoiv, onda postoji pridruivae vrednosti promenivim tak-vo da je u svakoj klauzi taqan bar jedan literal. Podskup koji se sastoji od qvorar, n qvorova koji odgovaraju klauzama i n qvorova (po jedan iz grupe svake klauze)koji odgovaraju taqnim literalima, indukuje acikliqki graf (preciznije, sta-blo u kome je koren r povezan sa qvorovima taqnih literala, a qvorovi klauza

378 13. UPUTSTVA I REXEA ZADATAKA

su listovi; po konstrukciji izmeu qvorova taqnih literala ne postoji ni jednagrana).

• Ako postoji podskup S od 2n + 1 qvorova, koji indukuje acikliqki graf, onda Ssadri r i po taqno dva qvora iz svake klauze (ako bi iz neke klauze sadraotri qvora, onda bi sadrao trougao, jer su svi qvorovi u grupi jedne klauzemeusobno povezani). Poxto S sadri r, onda S ne moe da sadri istovremenodva qvora koji pripadaju nekoj promenivoj x i enom komplementu x. Prematome, S odreuje takvo pridruivae vrednosti promenivima, koje izraz Eqini taqnim.

11.7. Zgodno je uopxtiti pretpostavke o izrazu E: neka se u emu svaka promenivaxi i en komplement xi, i = 1, 2, . . . , n, pojavuju najvixe po jednom. Ukupan broj literalau E je zbog toga najvixe 2n. U zavisnosti od toga da li se i gde pojavuju xn i xn, izraz Emoe se napisati u jednom od sledeih oblika:

• (xn + A)(xn + B)E′ (ako se xn i xn pojavuju u razliqitim klauzama);• (xn + A)E′ (ako se samo xn pojavuje u nekoj klauzi);• (xn + B)E′ (ako se samo xn pojavuje u nekoj klauzi).

Ovde su A, B ostaci klauza u kojima se pojavuju xn, odnosno xn, a E′ je ostatak izraza E, ukome se ne pojavuju ni xn ni xn. Izrazi (xn +A)E′, odnosno (xn +B)E′ su zadovoivi akkoje zadovoiv izraz E′. Sliqno, izraz (xn + A)(xn + B)E′ je zadovoiv akko je zadovoivizraz CE′, gde je C klauza koja se od A + B dobija izbacivaem ponovenih literala,odnosno 1, ako se u A + B pojavuje i neka promeniva y i ena negacija y. U sva trisluqaja dobijeni izraz (E′, E′, CE′) zavisi samo od promenivih x1, x2, . . . , xn−1, i svakiliteral se u preostalom izrazu pojavuje najvixe jednom. Dakle, ovim postupkom se (zapolinomijalno vreme) eliminixe iz izraza jedna promeniva, pa je odgovarajui algoritampolinomijalne sloenosti.

11.8. Iskoristiemo redukciju sa problema 3 SAT. Neka je C = x + y + z neka klauza uproizvonom 3 SAT izrazu. Ovu klauzu zameujemo sa sledee tri (pri qemu su svi simboliai nove promenive, koje se uvode samo za klauzu C): (x+a1 +a2), (y +a3 +a4), (z +a5 +a6).U razmatranoj varijanti problema 3 SAT u ovim klauzama treba da vrednost 1 ima po taqnojedna promeniva. Da bi se obezbedilo da vrednost 1 ima bar jedan od literala x, y, z,dodajemo jox xest klauza, koje garantuju da od promenivih a1, a3, a5, odnosno a2, a4, a6,vrednost 1 ima najvixe jedna: (a1 + a3 + a7), (a3 + a5 + a8), (a5 + a1 + a9), (a2 + a4 + a10),(a4 + a6 + a11), (a6 + a2 + a12). Sada se moe pokazati da je bar jedan od literala x, y, ztaqan akko se novim promenivim a1, a2, . . . , a12 mogu dodeliti takve vrednosti, da u svakojnovoj klauzi taqno jedan literal ima vrednost 1.

• Ako je bar jedan od literala x, y, z taqan, onda se mogu razlikovati tri sluqaja,kad je broj taqnih meu ima 1, 2 i 3. U sva tri sluqaja se mogu vrednosti novihpromenivih izabrati tako da u svakoj novoj klauzi taqno jedan literal imavrednost 1. (videti tabelu 2; ona zbog simetrije obuhvata sve mogue sluqajeve).

• Pretpostavimo da u svakoj novoj klauzi taqno jedan literal ima vrednost 1, i da jex = y = z = 0. Tada u grupama (a1, a2), (a3, a4), (a5, a6) taqno po jedna promenivaima vrednost 1, a u grupama (a1, a3, a5) i (a2, a4, a6), najvixe po jedna promenivaima vrednost 1 (zbog druge, odnosno tree grupe dodatih klauza). Ako je na primera1 = 1, onda je a2 = 0; a3 = a5 = 0; a4 = a6 = 1 kontradikcija. Sluqaj a1 = 0,a2 = 1 je simetriqan. Prema tome, ako u svakoj od devet novih klauza taqno jedanliteral ima vrednost 1, onda je bar jedan od literala x, y, z taqan.

11.9. Svexemo problem klika na ovaj problem. Neka je G = (V, E), k, proizvoan ulazza problem klika. Ci je transformisati graf G u regularan graf R, takav da se problemklika na G moe rexiti rexavaem problema klika na regularnom grafu R. Jasno je dase ne mogu prosto dodavati grane u G dok ne postane regularan, jer se tako mogu pojavitinove, vee klike. Grafu G moraju se dodavati novi qvorovi i grane, tako da se ne formirajunove klike. Neka je d′ maksimalni stepen nekog qvora u G, i neka je d = d′ ako je d′ parno,

13.11. NP-KOMPLETNOST 379

x y z a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12

1 0 0 0 0 1 0 0 1 0 0 1 1 0 01 1 0 0 0 0 0 1 0 1 0 0 1 1 11 1 1 0 0 0 0 0 0 1 1 1 1 1 1

Tablica 2. Uz zadatak 11.8.

odnosno d = d′+1 u protivnom. Za svaki qvor v u G stepena d(v) < d dodajemo d−d(v) novihqvorova i sve ih granom povezujemo sa v. Ako je |V | = n, onda je ukupan broj novododatihqvorova dn−∑n

i=1 d(vi) = dn− 2|E|. Ovaj broj je paran, jer je d po konstrukciji parno. Svistari qvorovi u novom grafu imaju sada isti stepen d, a nove klike se nisu pojavile (jer jesvaki novi qvor povezan samo sa jednim qvorom). Ostaje jox problem novih qvorova, jer oniimaju stepen 1. ihovi stepeni mogu se poveati na d, ne dodajui nove klike, povezujuiih granama na sledei naqin. Skup novih qvorova podelimo na dva jednaka podskupa, a ondasvaki qvor iz jednog podskupa povezujemo sa taqno d − 1 qvorova iz drugog podskupa (pritome samo treba voditi raquna o tome da stepeni novih qvorova iz drugog skupa ne preu d,xto nije texko). Novi qvorovi sada indukuju bipartitni graf, koji ne sadri kliku veuod dva.

11.10. Za svako mogue razlagae skupa n = |V | qvorova na k podskupova (kojih imamae od n!

(n−1k−1

)), za polinomijalno vreme se moe proveriti da li je to razlagae na

nezavisne skupove. S druge strane, na ovaj problem moe se svesti problem k-obojivostigrafa. Proizvoan algoritam koji rexava postaveni problem moe se iskoristiti za k-bojee grafa G: qvorovi koji odgovaraju istovremeno obavenim poslovima qine nezavisanskup (izmeu ih nema grana), pa se mogu obojiti jednom istom bojom. Problem k-obojivostigrafa je NP-kompletan, jer je u klasi NP, a na ega se svodi (kao specijalni sluqaj) problem3-obojivostgrafa.

11.11. Posmatrajmo familiju grafova prikazanu na slici 14. Algoritam bojea pre-tragom (slika 11.12) mora da proveri redom svih 3 · 2n−4 ispravnih bojea podgrafa kojiqine qvorovi 1, 2, . . . , n− 3. Svaki taj pokuxaj zavrxava se neuspehom kad se doe do qvoran, koji ima tri susedna qvora n− 1, n− 2 i n− 3 obojena razliqitim bojama. Zapaa se da jeu ovom algoritmu bitna numeracija qvorova: ako bi qvorovi n, n− 1, n− 2, n− 3 bili prenu-merisani redom sa 1, 2, 3, 4, onda bi se posle O(1) koraka ustanovilo da ne postoji 3-bojeeovog grafa.

f f f f f f

f

f1 2 3

n− 4

n− 3 n

n− 2

n− 1

· · ·

Ris. 14. Ilustracija uz zadatak 11.11.

380 13. UPUTSTVA I REXEA ZADATAKA

13.12. Paralelni algoritmi12.1. U svakom koraku treba sabirati po dva broja (broj bita zbira je O(n + log k),

pa je broj koraka za svako sabirae O(log(n + log k)). U prvoj fazi se k brojeva dele naparove i izraqunava se zbir svakog para, xto se paralelnim algoritmom (odeak 12.3.1) nakn/2 procesora izvrxava za O(log n) koraka. Dae se na isti naqin nastava sa dobijenimzbirovima; broj zbirova posle svake faze postaje dvostruko mai, pa je ukupan broj fazaO(log k). Sloenost algoritma je dakle O(log n log k), ako se zanemari da meurezultatiimaju vixe od n bita (taqnija ocena je O(log(n + log k) log k)).

12.2. Dovono je da svaki procesor Pi izraqunava svoju sopstvenu kopiju D[i] pro-menive D. Dakle, inicijalizacija je paralelni korak D[i] := 1, a ostala pojavivaaD zameuju se sa D[i]. Drugih konflikata pri pristupau memoriji nema: samo procesorPi qita R[N [i]] (rang svog suseda) i eventualno poziciju egovog suseda N [N [i]]; procesoriqijim se elementima pronae rang, iskuquju se i ne izazivaju konflikte.

12.3. Ako u prvom koraku neki procesor naie na dva jednaka broja, onda on upisujejedinicu u promenivu pridruenu broju sa maim indeksom. Sloenost algoritma je idae O(1).

12.4. (a) Koristi se metod udvostruqavaa. U prvom koraku procesor P1 kopira A[1] uA[2]. Induktivna hipoteza: pre poqetka i-tog koraka A[1] je iskopirano na pozicije od 1 do2i−1 (xto je za i = 2 taqno). U koraku i uqestvuje 2i−1 procesora, koji u jednom paralelnomkoraku kopiraju elemente A[1], A[2], . . . , A[2i−1] u elemente A[2i−1 +1], A[2i−1 +2], . . . , A[2i].

(b) Da bi se popravila efikasnost algoritma, koristi se Brentova lema. Preciznije,neka je n = 2k, neka je na raspolagau bn/ log2 nc = b2k/kc procesora, i neka je i takavbroj da je 2i−1 < 2k/k < 2i. Tada se u i − 1 koraka A[1] kopira na lokacije od 1 do 2i−1

opisanim algoritmom. Zatim se pomou 2i−1 < 2k/k procesora svaki od 2i−1 tih elemenataparalelno kopira 2k/2i−1 − 1 put (elemenat sa lokacije j, 0 ≤ j < 2i−1 procesor Pj kopiraredom na lokacije j + m · 2k−i, m = 1, 2, . . . , 2k/2i−1 − 1); pri tome je i − 1 < k = log2 n i2k/2i−1−1 = 2 ·2k−i−1 < 2k−1 < 2 log2 n, pa je ukupno vreme izvrxavaa mae od 3 log2 n,odnosno O(log n).

12.5. Ovaj problem svodi se na problem paralelnog prefiksa za operaciju +, pri qemusu poqetne vrednosti A[i] = 1 za 2 ≤ i ≤ n (ova inicijalizacija izvrxava se u jednomparalelnom koraku | konstantu 1 moe generixe nezavisno svaki procesor).

12.6. Sa n+1 procesora P0,P1, . . . ,Pn na raspolagau, vrednost polinoma∑n

i=0 aixi ste-

pena n moe se izraqunati paralelno za O(log n) koraka na sledei naqin. Najpre se svakomprocesoru obezbedi kopija argumenta x (npr. algoritmom paralelni prefiks sloenostiO(log n), pri qemu je operacija sabirae, poqetno stae procesora P0 je x, a ostalih 0).Zatim se jox jednom izvrxi paralelni prefiks za mnoee, qime se postie da procesorPi ima izraqunatu vrednost xi, 0 ≤ i ≤ n. U narednom paralelnom koraku Pi izraquna-va proizvod aix

i, 0 ≤ i ≤ n. Na kraju se ovi proizvodi sabiraju treom primenom par-alelnog prefiksa | posle toga se u procesoru Pn nalazi izraqunata vrednost polinoma.Efikasnost ovog algoritma je O(1/ log n), a i ne koristi se Hornerova xema. Efikasnostse moe popraviti primenom Brentove leme tako sa se koristi samo k = n/ log n procesora.Polinom se predstava u obliku polinoma stepena k od xl, l = n/k, qiji su koeficijenti"mali" polinomi stepena l − 1, qije vrednosti pojedini procesori izraqunavaju sekvenci-jalno Hornerovom xemom za vreme O(l) = O(log n). Vrednost "velikog" polinoma stepenak = n/ log n izraqunava se na ve opisani naqin na k procesora za vreme O(log k) = O(log n).Efikasnost konstruisanog algoritma je O(n/((n/ log n) log n)) = O(1).

12.7. Problem se rexava sliqno kao problem nalaea maksimuma. Promenivim z,v1, v2, . . . , vn na poqetku se dodeuje vrednost 0. Procesor Pij uporeuje xi i xj , pa ako surazliqiti, upisuje 1 u z, 1 ≤ i < j ≤ n. Posle ovog paralelnog koraka z e imati vrednost1 akko za bar neko i vai xi = 1, i za bar neko j vai xj = 0; tada je vrednost disjunkcije1. U protivnom, ako je z = 0, onda P1 kopira x1 u z (tada je x1 = x2 = · · · = xn = z).

13.12. PARALELNI ALGORITMI 381

12.8. Slika traenog kola za n = 8 prikazana je na slici 15. Za n = 2k kolo sesastoji od k grupa po n procesora P0j , P1j , . . . , Pn−1,j , j = 0, 1, . . . , k − 1. Procesor Pij ugrupi j za 0 ≤ i < 2j preuzima ve izraqunatu vrednost i-tog prefiksa od procesora Pi,j−1;za 2j ≤ i < n procesor Pij , uzimajui rezultate xi, xi−2j od procesora Pi,j−1, Pi−2j ,j−1,izraqunava proizvod xi ? xi−2j , i rezultat smexta u (svoju) promenivu xi. Indukcijom poj = 0, 1, . . . , k − 1 dokazuje se da promeniva xi posle prolaska kroz procesor Pij sadrivrednost x0 ? x1 ? . . . ? xi ako je i < 2j , odnosno xi−2j+1 ? xi−2j+2 ? . . . ? xi, ako je 2j ≤ i < n.Za j = k − 1 odatle se dobija da promeniva xi posle izlaska iz kola sadri vrednostodgovarajueg prefiksa.

c c c x7x7

cccccc

ccccc

c

ccc

cc

cccc

x6

x5

x4

x3

x2

x1

x0

x6

x5

x4

x3

x2

x1

x0

0 1 2i \ j ss

ss

ssss

Ris. 15. Ilustracija uz zadatak 12.8.

12.9. Poxto je na raspolagau dovoan broj procesora, a dozvoeno je istovremenoqitae sa iste lokacije, moe se najpre formirati matrica A sa elementima

aij =

1, xi < xj

0, xi > xj,

za xta je potrebno O(1) paralelnih koraka. Rang ir elementa xr (pozicija xr u sortiranomredosledu) jednak je broju elemenata xj maih od xr uveanom za jedan, odnosno sr + 1, gdeje sr zbir elemenata r-te vrste matrice A. Pomou n2 procesora zbirovi vrsta u A mogu separalelno izraqunati za O(log n) koraka (posebnim turnirom za svaku vrstu). Zatim se ujednom paralelnom koraku xr kopira na poziciju ir izlaznog vektora, 1 ≤ r ≤ n..

12.10. Svakom paru elemenata A[i], B[j], 1 ≤ i < j ≤ n, dodeuje se po jedan procesorPij . Procesor Pij najpre uporeuje A[i] sa B[j], a onda A[i] sa B[j +1]. Ako je A[i] izmeu B[k]i B[k + 1], onda procesor Pik to otkriva i zakuquje da u izlaznom vektoru elemenat A[i]treba da bude na poziciji i + k. Na isti naqin utvruju se pozicije elemenata vektora B.Sva kopiraa ulaznih elemenata u izlazni vektor izvode se u jednom paralelnom koraku.

12.11. Posao se moe podeliti u dva dela. Prvi deo je "proxirivae" vektora A, B uvektorematrice A′, B′ duine nm, A′[km+r] = A[k], B′[km+r] = B[r] (ovo je neophodno dabi se izbeglo istovremeno qitae istog elementa vektora od strane vixe procesora). Drugideo je paralelno mnoee C[i] = A′[i]B′[i], 0 ≤ i ≤ nm−1. Proxirivae se sa p paralelnihprocesora moe izvrxiti za O(log p) koraka u okviru jedne od mn/p grupa po p elemenata,pa je trajae prve faze O(mn log p/p) (pretpostava se da je p ≤ mn). Mnoee se izvrxavaza O(mn/p paralelnih koraka (obrada svake od mn/p grupa izvrxava se za jedan paralelnikorak).

382 13. UPUTSTVA I REXEA ZADATAKA

12.12. Problem se moe rexiti elegantno svoeem na problem paralelnog prefiksa(iako ga je mogue rexiti i direktno). Najpre se paralelno izraqunaju prefiksi na kopijivektora Oznaka, sa operacijom +. Vrednost prefiksa za svaki slog kome Oznaka ima vred-nost 1 bie jednaka egovoj poziciji u prepakovanom vektoru. Zatim se vrednosti vektoraOznaka mogu komplementirati (0 → 1, 1 → 0), i na isti naqin izraqunati pozicije pre-ostalih slogova (onih za koje je Oznaka imala vrednost 0). Kad su svi indeksi izraqunati,onda se stvarno kopirae izvrxava u jednom paralelnom koraku, jer nema konflikata.

12.13. Neka je N [i] adresa (i+1)-og elementa liste, odnosno pokazivaq pridruen i-tomelementu, 1 ≤ i ≤ n. U prvom paralelnom koraku (ako je N [i] 6= 0) procesor Pi proveravaF [N [i]]: ako je 0, onda se "premoxuje" (i + 1)-ti elemenat pomou N [i] := N [N [i]], a pomouN [N [i]] := 0 signalizira procesoru PN [i], da od sledeeg koraka prestane sa radom, jer jeegov elemenat iskuqen iz liste. Time je prepolovena duina svakog niza uzastopnihelemenata liste sa vrednoxu F [i] jednakom 0. Nastavajui dae na isti naqin, posleO(log n) koraka postie se da za svako i, takvo da je F [i] = 1, N [i] pokazuje na sledeineobrisani elemenat liste (tj. F [N [i]] = 1). Na kraju se, ako je F [1] = 0, pokazivaq napoqetak liste preusmerava na N [1].

12.14. Ako se svakom slogu pridrui procesor, onda u jednom paralelnom koraku svakiprocesor upisuje indeks (adresu) svog sloga u odgovarajue poe sledeeg sloga u listi.Posle toga svaki procesor zna svog prethodnika u listi.

12.15. Koristiemo indukciju. Ako je visina stabla (broj slojeva procesora) 2, ondalevi list xae svoj broj korenu, koji ga zatim xae nanie desnom listu, a koji ga dodajesvom broju x2. Pretpostavimo da imamo algoritam za visinu h ≥ 2, i razmotrimo stablovisine h + 1 (razmatramo samo sluqaj kompletnih binarnih stabala; algoritam se lakopreprava da radi u opxtem sluqaju). Neka je R koren, i neka su RL i RD egov levi idesni sin. Sumu svih listova podstabla zvaemo sumom tog podstabla. Najjednostavnije jerexiti problem nezavisno za levo i desno podstablo, a zatim preko korena poslati sumulevog podstabla svim listovima u desnom podstablu. Svaki list desnog podstabla prostododaje sumu levog podstabla izraqunatom prefiksu. Problem sa ovim rexeem je u tome,xto mu je vreme izvrxavaa O(h2), zbog diferencne jednaqine T (h + 1) = T (h) + h (ako jeT (h) vreme izvrxavaa na stablu visine h). Ovo rexee moe se popraviti, ako zapazimoda nema potrebe qekati da levo stablo zavrxi izraqunavae. Desno podstablo treba dadobije sumu levog podstabla, a ta suma moe biti raspoloiva u korenu u koraku h + 1.Prema tome, zahtev koji RL treba da ispuni je da primi sumu svog podstabla i poxae jenavixe ka korenu. Zahtev za RD je da tu sumu primi od korena i poxae je nanie svojimpotomcima. Zakuqujemo da treba da vae sledea pravila:

• svaki list poqie slaem svog broja navixe (treba dakle promeniti prosto rex-ee za stablo visine 2, jer koren treba da zna sumu);

• unutraxi qvor, kad dobije vrednosti od sinova, sabira ih i xae navixe;• unutraxi qvor, kad dobije vrednost od oca, xae tu vrednost i levom i desnom

sinu;• unutraxi qvorovi takoe igraju ulogu korena svojih podstabala, i vrednost

dobijenu od levog sina xau desnom sinu.

Prepuxtamo qitaocu dokaz da je ovaj algoritam korektan, i da mu je vreme izvrxavaa 2h.12.16. Jedna iteracija procesa selekcije, kao i u osnovnoj verziji, sastoji se od qetiri

faze, tj. qetiri prolaska stabla (gore,dole,gore,dole). U prvoj fazi se bira pivot, kojidospeva u koren stabla. U drugoj fazi se pivot dostava nanie svim (aktivnim) listovima,isto kao i u osnovnoj verziji. U treoj fazi svaki list uporeuje svoj broj sa pivotom i xaenavixe rezultat poreea, ali ovog puta precizniji | da li je vei od pivota, odnosno dali je jednak pivotu. Na putu do korena stabla se tako dobija broj v listova veih od pivota ibroj j listova jednakih pivotu. U qetvrtoj fazi se ova dva broja dostavaju svim aktivnimlistovima. Tada svaki aktivni list uporeuje k sa v i v + j, pa ako je

13.12. PARALELNI ALGORITMI 383

• k ≤ v, onda se list iskuquje, ako je egov broj mai ili jednak od pivota, ameu neiskuqenim listovima u narednoj iteraciji trai se k-ti najvei,

• v < k ≤ v + j, onda se list iskuquje, ako je egov broj mai ili vei od pivota,a meu neiskuqenim listovima u narednoj iteraciji trai se (k−v)-ti najvei,

• k > v + j, onda se list iskuquje, ako je egov broj vei ili jednak od pivota,a meu neiskuqenim listovima u narednoj iteraciji trai se (k − v − j)-tinajvei.

12.17. U prvom koraku procesor Pi izraqunava proizvod aiibi i quva rezultat; zatimxae bi procesoru Pi−1, 1 ≤ i ≤ n. Uopxte, u koraku k, 1 ≤ k ≤ n, procesor Pi izraqunavaproizvod ai,i+k−1bi+k−1 i dodaje ga prethodno izraqunatom zbiru, a zatim xae bi+k−1

procesoru Pi−1, a od procesora Pi+1 prima bi+k (svi indeksi raqunaju se po modulu n).Posle n-tog koraka procesor Pi sadri eenu sumu xi =

∑n−1k=0 aikbk, 0 ≤ i ≤ n− 1.

12.18. Poxto se bi mnoi sa elementima i-te kolone matrice, procesor Pi moe daizraquna za n koraka sve proizvode ajibi, 0 ≤ j < n. Ostaje da se u narednih n korakaparalelno izraqunaju zbirovi vrsta matrice.

Pretpostavimo najpre da treba izraqunati samo x0. Procesor P1 izraqunava a01b1, xtoje egov doprinos vrednosti x0, i xae to procesoru P2; procesor P2 toj vrednosti dodajea02b2 i prosleuje to procesoru P3, itd. Posle n − 1 koraka P0 dobija od Pn−1 vrednostx0 − a00b0, pa je u stau da zavrxi izraqunavae. Da bi se istovremeno izraqunavalisvi xi, potrebno je obezbediti preklapae izraqunavaa (u toku opisanog izraqunavaax0 u svakom koraku je aktivan samo jedan procesor!). U prvom koraku svaki procesor Pi

izraqunava proizvod ai−1,ibi (indeksi se raqunaju po modulu n), i xae ga procesoru Pi+1.U koraku j procesor Pi prima vrednost

∑j−2k=0 ai−j+1,i−k−1bi−k−1, dodaje joj ai−j,ibi, i xae

je procesoru Pi+1.12.19. Dovono je rexiti problem za procesore

P [n, i], P [n− 1, i], . . . , P [i + 1, i], P [i, i], P [i, i + 1], . . . , P [i, n− 1], P [i, n].

U ovom nizu od 2(n− i)+1 procesora povezana su svaka dva susedna, a potrebno je da razmenesvoje elemente j-ti procesori sa leve i desne strane od sredeg (P [i, i]), 1 ≤ j ≤ n− i. Ovajposao moe se podeliti na dva simetriqna, koji se izvrxavaju jedan za drugim: najpre leviprocesori xau svoje elemente desnim, a onda (na isti naqin) | desni procesori levim.Pretpostava se da svaki procesor ima dovonu memoriju veliqine O(1) (koja ne zavisi odn). Da bi levi procesori poslali svoje elemente desnim, svi procesori u gore navedenomnizu u 2(n − i) paralelnih koraka elemenat, dobijen od levog suseda u prethodnom koraku,prosleuju desnom susedu. Usput, procesor P [i, i + j] trajno pamti ("zaustava") elemenatdobijen u koraku 2j, 1 ≤ j ≤ n − i, jer je upravo to elemenat koji je krenuo (u "karavanu")iz procesora P [i + j, i].

12.20. Za proizvonu komponentu povezanosti posmatrajmo graf G qiji su qvoroviene taqke, a grane povezuju svaka dva qvora koji odgovaraju susednim (horizontalno ilivertikalno) taqkama. Neka je v qvor G sa najmaom oznakom, i neka je ta oznaka k. Induk-cijom se dokazuje da posle d koraka svaki qvor na rastojau od v maem ili jednakom odd, dobija oznaku k (u koraku d + 1 qvor na rastojau d + 1 od v, poxto je susedan nekomqvoru na rastojau d od v, dobija mau oznaku k). Prema tome, posle najvixe n2 korakasve taqke komponente povezanosti dobie oznaku k. Nije texko konstruisati primer kom-ponente povezanosti za koju oznaqavae traje bar cn2 koraka (za neku konstantu c): to jenpr. "zmijasta" traka sastavena od neparnih vrsta povezanih naizmeniqno levom, odnosnodesnom crnom taqkom u parnim vrstama.

Postupak se moe zaustaviti u trenutku kad se posle izvrxea nekog koraka zbirsvih oznaka ne smai. Meutim, izraqunavae sume svih smaea oznaka moe se izvestiza 2n = O(n) paralelnih koraka. Jedno mogue rexee je zaustaviti postupak posle n2

iteracija; tada je proces oznaqavaa sigurno zavrxen. Takoe je mogue da se npr. poslesvakih n iteracija proveri da li se od iteracije do iteracije promenila suma oznaka. Tada,

384 13. UPUTSTVA I REXEA ZADATAKA

ako su komponente povezanosti maeg dijametra, izvrxavae postupka moe da traje znatnokrae.

12.21. Problem se moe rexiti direktno, ali je lakxe svesti ga na mnoee matri-ca. Najpre se koristi permutacija σ za formirae permutacione matrice S, takve dau koloni i jedino elemenat u vrsti σ(i) ima vrednost 1, a svi ostali elementi jednaki sunuli. Ova matrica se moe lako formirati, odnosno eni elementi se mogu distribuiratiodgovarajuim procesorima za n koraka. Permutovae vrsta u skladu sa permutacijom σekvivalentno je izraqunavau proizvoda SA, za koji znamo da se na ovakvom raqunaru moeizraqunati za O(n) koraka. Permutovae kolona izvodi se na isti naqin mnoeem zdesnapermutacionom matricom Q.

12.22. U prvom koraku se uporeuju elementi u 2n−1 parova procesora(0, a1, a2, . . . , an−1), (1, a1, a2, . . . , an−1),

a vei od ih smexta se u procesor (0, a1, a2, . . . , an−1). Posle toga se procesori sa prvomkoordinatom 1 iskuquju. Dae se nastava na isti naqin sa 2n−1 podataka i (n − 1)-dimenzionalnom hiperkockom. Uopxte, u k-tom koraku se uporeuju elementi u procesorima

(0, 0, . . . , 0, ak+1, . . . , an−1), (0, 0, . . . , 1, ak+1, . . . , an−1),

a vei se smexta u procesor (0, 0, . . . , 0, ak+1, . . . , an−1). Posle n koraka se najvei elemenatnalazi u procesoru (0, 0, . . . , 0). Posle k-tog koraka rade samo procesori kod kojih je prvihk koordinata jednako nuli, 1 ≤ k ≤ n.

12.23. Indukcijom se problemu moe pristupiti tako da se paralelni prefiks rexavaistovremeno u obe polovine hiperkocke (koje su (n−1)-dimenzionalne hiperkocke), a onda senajvei prefiks nie polovine distribuira (sa usputnim sabiraem) paralelno svim pro-cesorima vixe polovine. Bazni sluqaj je trivijalan. Distribucija se u d-dimenzionalnojhiperkocki moe izvesti u d paralelnih koraka, pa vreme izvrxavaa algoritma zadovol-java diferencnu jednaqinu T (d + 1) = T (d) + d, odnosno T (d) = O(d2). Algoritam se moepoboxati pojaqavaem induktivne hipoteze. Pretpostavimo da svaki procesor izraquna-va ne samo svoj prefiks, nego i sumu svih elemenata hiperkocke. Bazni sluqaj d = 1 je idae jednostavan. Datu (d + 1)-dimenzionalnu hiperkocku delimo na dve d-dimenzionalnehiperkocke i indukcijom rexavamo problem na ima obema. Sada se, meutim, ne moradistribuirati suma nie polovine hiperkocke | tu sumu znaju svi eni elementi, pa jeodgovarajuim elementima (susedima) u vixoj polovini hiperkocke mogu dostaviti u jednomparalelnom koraku. Svi prefiksi se mogu izraqunati u samo jednom dopunskom paralelnomkoraku. U narednom paralelnom koraku se suma svih elemenata izraqunava istovremeno usvim procesorima vixe polovine hiperkocke, a onda paralelno xae u sve susedne proce-sore u nioj hiperkocki. Nova diferencna jednaqina je prema tome T (d + 1) = T (d) + 2,odakle je T (d) = O(d). Pridruivae brojeva procesorima jasno je iz ovog opisa.

12.24. Potrebno je elemenat (i, j), 0 ≤ i < 2k, 0 ≤ j < 2m, preslikati u neki eleme-nat hiperkocke tako da mu susedi budu elementi (i ± 1, j) i (i, j ± 1) (prva koordinata seraquna po modulu 2k, a druga po modulu 2m). Ovo se moe postii pomou Grejovih kodovaa0, a1, . . . , a2k−1 (reqi sa k bita, takvih da se ai i ai+1 razlikuju na taqno jednoj bitskojpoziciji, videti odeak 1.7), odnosno b0, b1, . . . , b2m−1 (m-bitnih reqi sa analognom osobi-nom). Elemenat (i, j) smexta se u teme hiperkocke sa koordinatama (ai, bj), pri qemu je ai

prvi blok od k koordinata, a bj drugi blok od m koordinata temena. Time se postie da suslike susednih elemenata u mrei uvek susedne u hiperkocki.

12.25. Redosled komuiciraa moe se konstruisati indukcijom. Za k = 1 rexee jetrivijalno. Ako se zna rexee za n = 2k osoba, onda se 2n = 2k+1 osoba dele u dve grupe1, 2, . . . , n i n + 1, n + 2, . . . , 2n, u okviru kojih se po induktivnoj hipotezi za k korakamogu razmeniti svi traqevi. Zatim u (k + 1)-om koraku razmeuju traqeve osoba i sa osobomi + n, 1 ≤ i ≤ n, posle qega svih 2n osoba znaju sve traqeve.

Srpsko-engleski i englesko-srpskiterminoloxki reqnik

Srpsko-engleski reqnikalgoritam sa javnim kuqem - public key algorithmalgoritam zasnovan na dekompoziciji - divide-and-conquer algorithm

alternirajui put - alternating pathbaza qvorova - vertex basisbazen - poolbinarno stablo pretrage - binary search treebipartitni graf - bipartite graphblokovska xifra - block cipherbrat (dete istog oca) - siblingciklus - circuitqvor - node, vertexdatoteka - filedigitalni potpis - digital signaturedinamiqko programirae - dynamic programmingdirektna grana - forward edgedobrotvorni problem - philantropist problemdolazna DFS numeracija - preorder DFS numberingdominirajui skup - dominating setdostian (qvor) - reachabledrvo - treeefikasan algoritam - efficient algorithmefikasnost (paralelnog algoritma) - efficiencyelektronska kodna kiga - electronic codebookfajl - filefaktor ravnotee - balance factorFIFO lista - FIFO listglava povezane liste - head of linked listgrana - edgegrana stabla - tree edgegranae sa odsecaem - branch-and-bound

385

386 SRPSKO-ENGLESKI I ENGLESKO-SRPSKI TERMINOLOXKI REQNIK

Grejov kod - Gray codeHamiltonov put - Hamiltonian pathhex funkcija - hash functionheuristika - heuristichip - heaphipsort - heap sortindukovani podgraf - vertex-induced subgraphintervalni graf - interval graphizlazna obrada - postWORKizlazni stepen - outdegreeizvor - sourcejavni kuq - public keyjednodimenzionalna pretraga opsega - one-dimensional range query

klika - cliquekuq - keykolizija - collisionkolo - circuitkompajler - compilerkomponente povezanosti - connected componentskopija rekurzivne procedure - instancekorak nazad - backtrackkorensko stablo - rooted treekraj grane - headkritiqna teina - bottleneck weightkviksort - quicksortlanqana xifra - stream cipherlavinski efekat - avalanche efectlinearno popuavae - linear probbinglinija za prostirae - broadcast linelist - leaflista - queuelista povezanosti - adjacency listlista sa prioritetom - priority queuemaksimalno uparivae - maximal matchingmatrica povezanosti - adjacency matrixmaxina sa uniformnim pristupom - random access machinememorija sa ravnomernim pristupom - random access memoryminimalno povezujue stablo - minimum-cost spanning treemodel sa zajedniqkom memorijom - shared memory modelmrea - networkmrea raqunara - interconnection networknajkrai put - shorthest pathnajmai zajedniqki nadniz - smallest common supersequence

SRPSKO-ENGLESKI REQNIK 387

najvei zajedniqki podniz - largest common subsequencenapadaq - attakerneupareni qvor - unmatched vertexneusmereni (graf) - undirectedneusmereni oblik (grafa) - undirected formnezavisan skup - independent setnivo - levelobilazak - traversingobjediavae-razdvajae - merge-splitodlazna DFS numeracija - postorder DFS numberingodravati - to maintainodvojeno nizae - separate chainingopadajui prvi odgovarajui - decreasing first fitoptimalno uparivae - maximum matchingotac - parentotvoreni tekst - cleartext, plaintextpeta - looppivot - pivotpodeli i smrvi - divide and crushpodgraf - subgraphpohlepni metod - greedy methodpokazivaq - pointerpokrivae skupova - set-coverpokrivaq grana - vertex coverpokrivaq grana minimalne teine - minimum-weight vertex cover

ponor - sinkpopreqna grana - cross edgesporuka - messagepotomak - descendantpovezana lista - linked listpovezani (graf) - connectedpovezujua xuma - spanning forestpovezujue stablo - spanning treepoveavajui put - augmenting pathpovratna grana - backward edge, back edgepoqetak grane - tailpoxialac - senderprava oslonca - supporting lineprazan pokazivaq - nilprazan slog - dummy recordpredak - ancestorpreklapae izraqunavaa - pipeliningprepoznavae prostih brojeva - primality testing

388 SRPSKO-ENGLESKI I ENGLESKO-SRPSKI TERMINOLOXKI REQNIK

presek - cutprethodnik - predecessorpretraga - backtrackingpretraga sa prioritetom - priority searchpretraga u dubinu - depth-first-search, DFSpretraga u xirinu - breadth-first-search, BFSprevodilac - compilerpriblian algoritam - approximation algorithmprimalac - receiverprimer ulaza za problem - instanceprincip imitiraa paralelizma - parallelism folding principleproblem pakovaa - bin packing problemproblem pridruivaa - assignment problemproblem ranca - knapsack problemproblem traqeva - gossip problemproblem trgovaqkog putnika - traveling salesman problemprosti ciklus - simple circuitprosti put - simple pathprostirae grexaka - error extensionprostorna sloenost - space complexityprvi odgovarajui - first fitput - pathrang - rankraqunarska grafika - computational geometryred qekaa - queuerekord - recordretki graf - sparse graphrezidualni graf - residual graphrexiv problem - tractable problemsavrxeno uparivae - perfect matchingsimetriqan algoritam - public key algorithmsin - childsistoliqko raqunae - systolic computationskinuti sa steka - popskup povratnih grana - feedback-edge setsledbenika - successorslek - slackslobodno stablo - free treeslog - recordsloenost izraqunavaa - computational complexitysluqajna xifra - one-time padsortirae direktnim vixestrukim razvrstavaem - straight radix

sortsortirae izborom - selection sort

SRPSKO-ENGLESKI REQNIK 389

sortirae objediavaem - mergesortsortirae obratnim vixestrukim razvrstavaem - radix exchange

sortsortirae parno-neparnim objediavaem - odd-even mergesort

sortirae parno-neparnim transpozicijama - odd-even transposi-tion sort

sortirae razdvajaem - quicksortsortirae razvrstavaem - bucket sortsortirae u mestu - in-place sortingsortirae umetaem - insertion sortsortirae vixestrukim razvrstavaem - radix sortstablo - treestablo najkraih puteva - shortest path treestablo odluqivaa - decision treestek - stackstepen - degreestring - stringsvi najkrai putevi - all-pairs shortest-pathsxifra sa jednokratnim kuqem - one-time padxifra zamene - substitution cipherxifrat - ciphertextxifrovae - encryptionxuma - foresttajni kuq - secret keytehnika pokretne linije - line-sweep techiqueteina - weightteinski graf - weighted graphtok - flowtopoloxko sortirae - topological sorttranzitivno zatvoree - transitive closureubrzae - speedupulanqavae blokova xifrata - cipher block chainingulazna obrada - preWORKulazni stepen - indegreeunutraxi qvor - internal nodeuparivae - matchingupisati na stek - pushuravnoteeno stablo - balanced treeureeno binarno stablo - binary search treeuslov hipa - heap propertyusmereni (graf) - directeduvijae poklona, algoritam - gift wrappinguzorak - pattern

390 SRPSKO-ENGLESKI I ENGLESKO-SRPSKI TERMINOLOXKI REQNIK

vektor - arrayvisina - heightvraae xifrata u xifrovae - cipher feebackvremenska sloenost - time complexityvrea - poolzadovoivost - satisfiabilityzamena - swap"zavadi pa vladaj" algoritam - divide-and-conquer algorithm

Englesko-srpski reqnikadjacency list - lista povezanostiadjacency matrix - matrica povezanostiall-pairs shortest-paths - svi najkrai putevialternating path - alternirajui putancestor - predakapproximation algorithm - priblian algoritamarray - vektorassignment problem - problem pridruivaaattaker - napadaqaugmenting path - poveavajui putavalanche efect - lavinski efekatback edge - povratna granebacktrack - korak nazadbacktracking - pretragabackward edge - povratna granabalance factor - faktor ravnoteebalanced tree - uravnoteeno stabloBFS - pretraga u xirinubin packing problem - problem pakovaabinary search tree - binarno stablo pretrage, ureeno bina-

rno stablobipartite graph - bipartitni grafblock cipher - blokovska xifrabottleneck weight - kritiqna teinabranch-and-bound - granae sa odsecaembreadth-first-search - pretraga u xirinubroadcast line - linija za prostiraebucket sort - sortirae razvrstavaemchild - sincipher block chaining - ulanqavae blokova xifratacipher feeback - vraae xifrata u xifrovaeciphertext - xifratcircuit - ciklus, kolocleartext - otvoreni tekst

ENGLESKO-SRPSKI REQNIK 391

clique - klikacollision - kolizijacompiler - kompajler, prevodilaccomputational complexity - sloenost izraqunavaacomputational geometry - raqunarska grafikaconnected - povezani (graf)connected components - komponente povezanosticross edges - popreqna granacut - presekdecision tree - stablo odluqivaadecreasing first fit - opadajui prvi odgovarajuidegree - stependepth-first-search - pretraga u dubinudescendant - potomakDFS - pretraga u dubinudigital signature - digitalni potpisdirected - usmereni (graf)divide and crush - podeli i smrvidivide-and-conquer algorithm - algoritam zasnovan na dekom-

poziciji, "zavadi pa vladaj" algoritamdobrotvorni problem - philantropist problemdominating set - dominirajui skupdummy record - prazan slogdynamic programming - dinamiqko programiraeedge - granaefficiency - efikasnost (paralelnog algoritma)efficient algorithm - efikasan algoritamelectronic codebook - elektronska kodna kigaencryption - xifrovaeerror extension - prostirae grexakafeedback-edge set - skup povratnih granaFIFO list - FIFO listafile - datoteka, fajlfirst fit - prvi odgovarajuiflow - tokforest - xumaforward edge - direktna granafree tree - slobodno stablogift wrapping - uvijae poklona, algoritamgossip problem - problem traqevaGray code - Grejov kodgreedy method - pohlepni metodHamiltonian path - Hamiltonov puthash function - hex funkcija

392 SRPSKO-ENGLESKI I ENGLESKO-SRPSKI TERMINOLOXKI REQNIK

head - kraj granehead of linked list - glava povezane listeheap - hipheap property - uslov hipaheap sort - hipsortheight - visinaheuristic - heuristikain-place sorting - sortirae u mestuindegree - ulazni stepenindependent set - nezavisan skupinsertion sort - sortirae umetaeminstance - primer ulaza za problem, kopija rekurzivne proce-

dureinterconnection network - mrea raqunarainternal node - unutraxi qvorinterval graph - intervalni grafkey - kuqknapsack problem - problem rancalargest common subsequence - najvei zajedniqki podnizleaf - listlevel - nivoline-sweep techique - tehnika pokretne linijelinear probbing - linearno popuavaelinked list - povezana listaloop - petamatching - uparivaemaximal matching - maksimalno uparivaemaximum matching - optimalno uparivaemerge-split - objediavae-razdvajaemergesort - sortirae objediavaemmessage - porukuminimum-cost spanning tree - minimalno povezujue stablominimum-weight vertex cover - pokrivaq grana minimalne teinenetwork - mreanil - prazan pokazivaqnode - qvorodd-even mergesort - sortirae parno-neparnim objediavan-

jemodd-even transposition sort - sortirae parno-neparnim trans-

pozicijamaone-dimensional range query - jednodimenzionalna pretraga

opsegaone-time pad - xifra sa jednokratnim kuqem, sluqajna xifraoutdegree - izlazni stepen

ENGLESKO-SRPSKI REQNIK 393

parallelism folding principle - princip imitiraa paraleliz-ma

parent - otacpath - putpattern - uzorakperfect matching - savrxeno uparivaepipelining - preklapae izraqunavaapivot - pivotplaintext - otvoreni tekstpointer - pokazivaqpool - bazen, vreapop - skinuti sa stekapostorder DFS numbering - odlazna DFS numeracijapostWORK - izlazna obradapredecessor - prethodnikpreorder DFS numbering - dolazna DFS numeracijapreWORK - ulazna obradaprimality testing - prepoznavae prostih brojevapriority queue - lista sa prioritetompriority search - pretraga sa prioritetompublic key - javni kuqpublic key algorithm - simetriqan algoritam, algoritam sa

javnim kuqempush - upisati na stekqueue - red qekaa, listaquicksort - sortirae razdvajaem, kviksortradix exchange sort - sortirae obratnim vixestrukim razvrsta-

vaemradix sort - sortirae vixestrukim razvrstavaemrandom access machine - maxina sa uniformnim pristupomrandom access memory - memorija sa ravnomernim pristupomrank - rangreachable - dostian (qvor)receiver - primalacrecord - rekord, slogresidual graph - rezidualni grafrooted tree - korensko stablosatisfiability - zadovoivostsecret key - tajni kuqselection sort - sortirae izboromsender - poxialacseparate chaining - odvojeno nizaeset-cover - pokrivae skupovashared memory model - model sa zajedniqkom memorijom

394 SRPSKO-ENGLESKI I ENGLESKO-SRPSKI TERMINOLOXKI REQNIK

shortest path tree - stablo najkraih putevashorthest path - najkrai putsibling - brat (dete istog oca)simple circuit - prosti ciklussimple path - prosti putsink - ponorslack - sleksmallest common supersequence - najmai zajedniqki nad-

nizsource - izvorspace complexity - prostorna sloenostspanning forest - povezujua xumaspanning tree - povezujue stablosparse graph - retki grafspeedup - ubrzaestack - stekstraight radix sort - sortirae direktnim vixestrukim razvrsta-

vaemstream cipher - lanqana xifrastring - stringsubgraph - podgrafsubstitution cipher - xifra zamenesuccessor - sledbenikasupporting line - prava osloncaswap - zamenasystolic computation - sistoliqko raqunaetail - poqetak granetime complexity - vremenska sloenostto maintain - odravatitopological sort - topoloxko sortiraetractable problem - rexiv problemtransitive closure - tranzitivno zatvoreetraveling salesman problem - problem trgovaqkog putnikatraversing - obilazaktree - drvo, stablotree edge - grana stablaundirected - neusmereni (graf)undirected form - neusmereni oblik (grafa)unmatched vertex - neupareni qvorvertex - qvorvertex basis - baza qvorovavertex cover - pokrivaq granavertex-induced subgraph - indukovani podgrafweight - teina

ENGLESKO-SRPSKI REQNIK 395

weighted graph - teinski graf

Literatura

[1] U. Manber, Introduction to algorithms, A creative approach, Addison–Wesley, Reading,1989.

[2] M. R. Garey, D. S. Johnson, Computers and Intractability, A Guide to the Theory ofNP-Completeness, W. H. Freeman, San Francisco, 1979.

[3] D. E. Knuth, The Art of Computer Programming, 1–3, Addison-Wesley, Reading, 1973.[4] J. Van Leeuwen, Handbook of Theoretical Computer Computer Science. Vol A, Algo-

rithms and Complexity, Elsevier, Amsterdam, 1990.[5] A. V. Aho, J. D. Ullman, Computers Science, C Edition, Computer Science Press, W.

H. Freeman, New York, 1995.[6] B. Schneier, Applied Cryptography, Protocols, Algorithms and Source Code in C, John

Wiley & Sons, New York, 1994.[7] R. L. Graham, D. E. Knuth, O. Patashnik, Concrete Mathematics, Addison-Wesley,

Reading, 1994.[8] T. H. Cormen, C. E. Leiserson, R. L. Rivest, Introduction to Algorithms The MIT

Press, Cambridge, 1991.[9] N. Christofides, Graph Theory, An Algorithmic Approach, Academic Press, New York,

1975.[10] E. M. Reingold, J. Nievergelt, N. Deo, Combinatorial Algorithms, Theory and Practice,

Prentice-Hall, Englewood Cliffs, 1977.[11] A. V. Aho, J. E. Hopcroft, J. D. Ullman, The Design and Analysis of Computer

Algorithms, Addison-Wesley, Reading, 1976.[12] S. E. Goodman, S. T. Hedetniemi, Introduction to the Design and Analysis of Algo-

rithms, McGraw-Hill, New York, 1977.[13] E. Horowitz, S. Sahni, Fundamentals of Computer ALgorithms, Computer Science

Press, Fall River Lane, 1978.[14] S. G. Akl, The Design and Analysis of Paralel Algorithms, Prentice Hall, Englewood

Cliffs, 1989.[15] T. H. Cormen, C. E. Leiserson, R. L. Rivest, Introduction to Algorithms, McGraw-Hill,

New York, 1991.[16] . Pauni, Strukture podataka i algoritmi, Univerzitet u Novom Sadu, Novi

Sad, 1997.

397