Download as pdf or txt
Download as pdf or txt
You are on page 1of 44

.

UDWDNVDGUåDM

UVOD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

DEO I
Osnove i osnovni algoritmi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  9

POGLAVLJE 1
Pregled algoritama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  11

POGLAVLJE 2
Strukture podataka koje
se koriste u algoritmima  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  35

POGLAVLJE 3
Algoritmi za sortiranje i pretraživanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  59

POGLAVLJE 4
Dizajniranje algoritama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  77

POGLAVLJE 5
Grafovski algoritmi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

DEO II
Algoritmi mašinskog učenja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

POGLAVLJE 6
Algoritmi nenedgledanog mašinskog učenja  . . . . . . . . . . . . . . . . . . . . . . . . 133

v
POGLAVLJE 7
Tradicionalni algoritmi nadgledanog učenja . . . . . . . . . . . . . . . . . . . . . . . . . 171

POGLAVLJE 8
Algoritmi neuronske mreže  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

POGLAVLJE 9
Algoritmi za obradu prirodnog jezika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247

POGLAVLJE 10
Mehanizmi za preporučivanje  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263

DEO III
Napredne teme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

POGLAVLJE 11
Algoritmi podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279

POGLAVLJE 12
Kriptografija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293

POGLAVLJE 13
Algoritmi velikih razmera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

POGLAVLJE 14
Praktična razmatranja  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333

INDEKS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
6DGUåDM

UVOD ................................................................................................................... 1

DEO I
Osnove i osnovni algoritmi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  9

POGLAVLJE 1
Pregled algoritama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  11
Šta je algoritam? ..............................................................................................................................................12
Faze algoritma..........................................................................................................................................12
Specifikovanje logike algoritma .................................................................................................................14
Razumevanje pseudokoda ..................................................................................................................14
Praktičan primer za pseudokod ................................................................................................15
Upotreba odlomaka koda ....................................................................................................................16
Kreiranje plana izvršenja ......................................................................................................................17
Predstavljanje Python paketa .....................................................................................................................18
Python paketi ...........................................................................................................................................18
SciPy ekosistem ...............................................................................................................................19
Implementiranje Pythona pomoću Jupyter Notebooka ..................................................20
Tehnike dizajniranja algoritma ...................................................................................................................21
Dimenzija podataka ...............................................................................................................................22
Izračunavanje dimenzije.......................................................................................................................23
Praktičan primer .............................................................................................................................23
Analiza performanse ......................................................................................................................................24
Analiza prostorne složenosti...............................................................................................................25
Analiza vremenske složenosti ............................................................................................................25
Procena performansi .............................................................................................................................26
Najbolji slučaj...................................................................................................................................26
Najgori slučaj ...................................................................................................................................27
Prosečan slučaj ................................................................................................................................27
Selektovanje algoritma .........................................................................................................................27
Big O notacija ...........................................................................................................................................28
Konstantna vremenska (O(1)) složenost ................................................................................28
viii Sadržaj

Linearna vremenska (O(n)) složenost......................................................................................29


Kvadratna vremenska (O(n2)) složenost ................................................................................29
Logaritamska vremenska (O(logn)) složenost .....................................................................30
Validacija algoritma ........................................................................................................................................32
Tačni, aproksimacioni i randomizirani algoritmi .........................................................................32
Objašnjenje ...............................................................................................................................................33
Rezime .................................................................................................................................................................34

POGLAVLJE 2
Strukture podataka koje se koriste u algoritmima . . . . . . . . . . . . . . . . . . . . .  35
Istraživanje struktura podataka u Pythonu ............................................................................................36
Lista ..............................................................................................................................................................36
Upotreba listi ...................................................................................................................................36
Lambda funkcije .............................................................................................................................39
Funkcija range .................................................................................................................................40
Vremenska složenost liste ...........................................................................................................41
Torke ............................................................................................................................................................41
Vremenska složenost torki ..........................................................................................................42
Rečnik ..........................................................................................................................................................42
Vremenska složenost rečnika.....................................................................................................44
Skupovi .......................................................................................................................................................44
Analiza vremenske složenosti za skupove ............................................................................45
DataFrame-ovi .........................................................................................................................................46
Terminologije DataFrame-ova ..................................................................................................46
Kreiranje podskupa DataFrame-a.............................................................................................47
Matrica ........................................................................................................................................................48
Operacije matrice ...........................................................................................................................49
Istraživanje apstraktnih tipova podataka................................................................................................49
Vektor ..........................................................................................................................................................50
Stekovi ........................................................................................................................................................50
Vremenska složenost stekova....................................................................................................52
Praktičan primer .............................................................................................................................53
Redovi .........................................................................................................................................................53
Osnovna ideja iza upotrebe stekova i redova ..............................................................................55
Stablo ..........................................................................................................................................................55
Terminologija...................................................................................................................................56
Tipovi stabala ...................................................................................................................................56
Praktičan primer .............................................................................................................................58
Rezime .................................................................................................................................................................58

POGLAVLJE 3
Algoritmi za sortiranje i pretraživanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  59
Predstavljanje algoritama za sortiranje ...................................................................................................60
Zamena promenljivih u Pythonu ......................................................................................................60
Mehurasto sortiranje .............................................................................................................................61
Razumevanje logike mehurastog sortiranja.........................................................................61
Sadržaj ix

Analiza performansa mehurastog sortiranja........................................................................63


Sortiranje umetanjem ...........................................................................................................................63
Sortiranje spajanjem ..............................................................................................................................65
Shell sortiranje .........................................................................................................................................67
Analiza performanse Shell sortiranja ......................................................................................68
Sortiranje selekcijom .............................................................................................................................69
Performans algoritma sortiranja selekcijom.........................................................................70
Biranje algoritma za sortiranje...................................................................................................70
Predstavljanje algoritama za pretraživanje ............................................................................................70
Linearno pretraživanje ..........................................................................................................................71
Performansa linearnog pretraživanja .....................................................................................71
Binarno pretraživanje ............................................................................................................................72
Performansa binarnog pretraživanja ......................................................................................72
Pretraživanje interpolacijom...............................................................................................................73
Performans pretraživanja interpolacijom..............................................................................73
Praktična primena ...........................................................................................................................................74
Rezime .................................................................................................................................................................76

POGLAVLJE 4
Dizajniranje algoritama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  77
Predstavljanje osnovnih koncepata dizajniranja algoritma. ............................................................78
Pitanje 1 – Da li će dizajnirani algoritam kreirati očekivan rezultat? ....................................79
Pitanje 2 – Da li je ovo optimalan način za dobijanje ovih rezultata?..................................79
Karakterisanje složenosti problema ........................................................................................80
Pitanje 3 – Kako će se algoritam izvršavati u velikim skupovima podataka? ....................83
Razumevanje algoritamskih strategija.....................................................................................................83
Razumevanje strategije deljenja i osvajanja .................................................................................84
Praktičan primer – strategija deljenja i osvajanja primenjena
na Apache Spark .............................................................................................................................84
Razumevanje strategije dinamičkog programiranja..................................................................86
Razumevanje pohlepnih algoritama ...............................................................................................87
Praktična primena – rešavanje TSP-a .......................................................................................................88
Upotreba brute-force strategije ........................................................................................................89
Upotreba pohlepnog algoritma ........................................................................................................93
Predstavljanje PageRank algoritma ..........................................................................................................95
Definicija problema ................................................................................................................................95
Implementiranje PageRank algoritma ............................................................................................95
Razumevanje linearnog programiranja...................................................................................................98
Formulisanje problema linearnog programiranja ......................................................................98
Definisanje ciljne funkcije ...........................................................................................................98
Specifikovanje ograničenja.........................................................................................................99
Praktična primena – planiranje kapaciteta pomoću linearnog programiranja.........................99
Rezime .............................................................................................................................................................. 101
x Sadržaj

POGLAVLJE 5
Grafovski algoritmi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Reprezentacije grafova ............................................................................................................................... 104
Tipovi grafova........................................................................................................................................ 105
Neusmereni grafovi .................................................................................................................... 106
Usmereni grafovi ......................................................................................................................... 106
Neusmereni multigrafovi ......................................................................................................... 107
Usmereni multigrafovi............................................................................................................... 107
Specijalni tipovi grana ........................................................................................................................ 108
Ego mreže ............................................................................................................................................... 108
Analiza društvene mreže ................................................................................................................... 109
Predstavljanje teorije analize mreže ...................................................................................................... 110
Razumevanje najkraće putanje....................................................................................................... 111
Kreiranje susedstva ............................................................................................................................. 111
Trouglovi ........................................................................................................................................ 112
Gustina ............................................................................................................................................ 112
Razumevanje mera centralnosti ..................................................................................................... 112
Centralnost stepena ................................................................................................................... 113
Centralnost korektnosti i bliskosti ......................................................................................... 114
Centralnost svojstvenog vektora........................................................................................... 115
Izračunavanje centralnosti upotrebom Pythona...................................................................... 115
Razumevanje obilaska grafa (graph traversal) ................................................................................... 117
Breadth-first pretraživanje ................................................................................................................ 117
Inicijalizacija .................................................................................................................................. 118
Glavna petlja ................................................................................................................................. 118
Depth-first pretraga ............................................................................................................................ 121
Studija – analitika prevare ......................................................................................................................... 124
Izvršavanje jednostavne analitike prevare.................................................................................. 126
Predstavljanje metodologije analitike prevare osmatračnice ............................................. 127
Ocenjivanje negativnih ishoda............................................................................................... 128
Stepen sumnje ............................................................................................................................. 128
Rezime .............................................................................................................................................................. 130

DEO II
Algoritmi mašinskog učenja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

POGLAVLJE 6
Algoritmi nenedgledanog mašinskog učenja  . . . . . . . . . . . . . . . . . . . . . . . . 133
Predstavljanje nenadgledanog učenja ................................................................................................. 134
Nenadgledano učenje u životnom ciklusu istraživanja podataka (data-mining) ......... 134
Aktuelni trendovi istraživanja u nenadgledanom učenju..................................................... 137
Praktični primeri ................................................................................................................................... 137
Kategorizacija glasa .................................................................................................................... 138
Kategorizacija dokumenata..................................................................................................... 138
Sadržaj xi

Razumevanje algoritama za klasterovanje .......................................................................................... 139


Kvantifikovanje sličnosti .................................................................................................................... 139
Euklidsko rastojanje.................................................................................................................... 140
Manhattan rastojanje................................................................................................................. 141
Kosinusno rastojanje .................................................................................................................. 142
K-means algoritam za klasterovanje .................................................................................... 143
Logika k-means klasterovanja ................................................................................................ 143
Kodiranje k-means algoritma.................................................................................................. 145
Ograničenja k-means klasterovanja ..................................................................................... 147
Hijerarhijsko klasterovanje ............................................................................................................... 148
Koraci hijerarhijskog klasterovanja ....................................................................................... 148
Kodiranje algoritma hijerarhijskog klasterovanja............................................................ 149
Procena klastera ................................................................................................................................... 150
Primena klasterovanja ........................................................................................................................ 150
Redukcija dimenzionalnosti ..................................................................................................................... 151
Analiza glavnih komponenata (PCA) ............................................................................................ 152
Ograničenja PCA algoritma .............................................................................................................. 155
Association rules mining algoritam ....................................................................................................... 155
Primeri upotrebe .................................................................................................................................. 155
Analiza potrošačke korpe.................................................................................................................. 156
Pravila udruživanja .............................................................................................................................. 157
Tipovi pravila................................................................................................................................. 157
Pravila rangiranja ................................................................................................................................. 159
Support ........................................................................................................................................... 159
Confidence..................................................................................................................................... 160
Lift ..................................................................................................................................................... 160
Algoritmi za analizu udruživanja .................................................................................................... 161
Apriori algoritam ......................................................................................................................... 161
FP-growth algoritam .................................................................................................................. 162
Praktična primena - klasterovanje sličnih tvitova ............................................................................. 167
Modelovanje teme .............................................................................................................................. 168
Klasterovanje ......................................................................................................................................... 168
Algoritmi za detektovanje anomalije .................................................................................................... 168
Upotreba klasterovanja ..................................................................................................................... 169
Upotreba detekcije anomalije zasnovane na gustini ............................................................. 169
Upotreba Support Vector Machine (SVM) algoritma .............................................................. 169
Rezime .............................................................................................................................................................. 170

POGLAVLJE 7
Tradicionalni algoritmi nadgledanog učenja . . . . . . . . . . . . . . . . . . . . . . . . . 171
Razumevanje nadgledanog mašinskog učenja................................................................................. 172
Formulisanje nadgledanog mašinskog učenja ......................................................................... 173
Razumevanje uslova omogućavanja ............................................................................................ 175
Razlikovanje između klasifikatora i regresora............................................................................ 176
Razumevanje algoritama za klasifikaciju.............................................................................................. 176
Predstavljanje izazova za klasifikatore ......................................................................................... 177
Iskaz problema ............................................................................................................................. 177
xii Sadržaj

Inženjering atributa upotrebom pipeline-a


za obradu podataka ................................................................................................................... 178
Importovanje podataka ............................................................................................................ 178
Procena klasifikatora ........................................................................................................................... 181
Matrica konfuzije ......................................................................................................................... 182
Metrike performansa.................................................................................................................. 182
Razumevanje preprilagođavanja (eng. Overfitting) ....................................................... 184
Varijansa ......................................................................................................................................... 184
Specifikovanje faza klasifikatora ..................................................................................................... 185
Algoritam stabla odlučivanja za klasifikaciju ............................................................................. 186
Razumevanje algoritma stabla odlučivanja za klasifikaciju ......................................... 187
Upotreba algoritma stabla odlučivanja za klasifikaciju
je izazov za klasifikatore ............................................................................................................ 188
Prednosti i nedostaci klasifikatora stabla odlučivanja ................................................... 189
Slučajevi upotrebe ...................................................................................................................... 190
Razumevanje ansambl metoda ...................................................................................................... 190
Implementiranje gradient boostinga pomoću XGBoost algoritma.......................... 191
Upotreba algoritma slučajne šume (eng. random forest) ............................................ 192
Obučavanje algoritma slučajne šume ................................................................................. 192
Upotreba slučajne šume za predviđanja ............................................................................ 192
Upotreba algoritma slučajne šume za izazov za klasifikatore ..................................... 193
Logistička regresija .............................................................................................................................. 195
Pretpostavke ................................................................................................................................. 195
Uspostavljanje odnosa .............................................................................................................. 195
Kada upotrebiti logističku regresiju ..................................................................................... 196
Upotreba algoritma logističke regresije za izazov za klasifikatore ............................ 197
SVM algoritam ....................................................................................................................................... 198
Upotreba SVM algoritma za izazov za klasifikatore ........................................................ 199
Razumevanje Naive Bayes algoritma ............................................................................................ 199
Bayes teorema .............................................................................................................................. 200
Izračunavanje verovatnoće...................................................................................................... 200
Pravila množenja za AND događaje ..................................................................................... 201
Osnovno pravilo množenja ..................................................................................................... 201
Dodatna pravila za OR događaje ........................................................................................... 201
Upotreba naive Bayes algoritma za izazov za klasifikatore .......................................... 202
Za algoritme klasifikacije, pobednik je... ...................................................................................... 203
Razumevanje algoritama regresije......................................................................................................... 203
Predstavljanje izazova za regresore .............................................................................................. 204
Iskaz problema za izazov za regresore ................................................................................ 204
Inženjering atributa upotrebom pipeline-a za obradu podataka ............................. 205
Linearna regresija................................................................................................................................. 206
Jednostavna linearna regresija............................................................................................... 206
Procena regresora ....................................................................................................................... 208
Višestruka regresija ..................................................................................................................... 209
Upotreba algoritma linearne regresije za izazov za regresore ................................... 209
Kada se koristi linearna regresija? ......................................................................................... 210
Nedostaci linearne regresije .................................................................................................... 210
Algoritam stabla regresije................................................................................................................. 211
Sadržaj xiii

Upotreba algoritma stabla regresije za izazov za regresore ........................................ 211


Algoritam regresije gradient boost ............................................................................................... 212
Upotreba algoritma regresije gradient boost za izazov za regresore ...................... 212
Za algoritme regresije, pobednik je... ........................................................................................... 213
Praktičan primer - kako da predvidimo vreme .................................................................................. 213
Rezime .............................................................................................................................................................. 216

POGLAVLJE 8
Algoritmi neuronske mreže  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Razumevanje ANN-a .................................................................................................................................... 218
Evolucija ANN-a ............................................................................................................................................. 220
Obučavanje neuronske mreže ................................................................................................................. 222
Razumevanje anatomije neuronske mreže ................................................................................ 222
Definisanje gradijentnog spusta (eng. Gradient descent) ................................................... 223
Aktivacione funkcije............................................................................................................................ 226
Funkcija praga (eng. threshold function) ........................................................................... 226
Sigmoidna funkcija ..................................................................................................................... 227
Ispravljačka linearna funkcija (eng. Rectified linear unit (ReLU)) ............................. 228
Leaky ReLU..................................................................................................................................... 229
Hiperbolički tangens (tanh) ..................................................................................................... 230
Softmax ........................................................................................................................................... 231
Alatke i radni okviri ...................................................................................................................................... 232
Keras ......................................................................................................................................................... 232
Backend mehanizmi Kerasa..................................................................................................... 232
Slojevi niskog nivoa steka dubokog učenja ...................................................................... 233
Definisanje hiperparametara .................................................................................................. 233
Definisanje Keras modela ......................................................................................................... 234
Biranje sekvencijalnog ili funkcionalnog modela ............................................................ 236
Razumevanje TensorFlow-a ............................................................................................................. 236
Predstavljanje osnovnih koncepata TensorFlowa........................................................... 236
Razumevanje tipova neuronskih mreža ...................................................................................... 238
Konvolutivne neuronske mreže ............................................................................................. 239
Rekurentne neuronske mreže ................................................................................................ 240
Generativne suparničke mreže ............................................................................................. 240
Preneseno učenje (eng. Transfer learning) ....................................................................................... 240
Studija slučaja - upotreba dubokog učenja za detekciju prevare............................................... 241
Metodologija ......................................................................................................................................... 242
Rezime .............................................................................................................................................................. 246

POGLAVLJE 9
Algoritmi za obradu prirodnog jezika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
Predstavljanje NLP-a.................................................................................................................................... 248
Razumevanje NLP terminologije .................................................................................................... 248
Normalizacija ................................................................................................................................ 248
Korpus ............................................................................................................................................. 249
Tokenizacija ................................................................................................................................... 249
xiv Sadržaj

Stop reči .......................................................................................................................................... 249


Analiza sentimenta ..................................................................................................................... 250
Određivanje osnove reči i lematizacija ................................................................................ 250
NLTK .......................................................................................................................................................... 251
BoW-based NLP ............................................................................................................................................. 251
Predstavljanje umetanja reči .................................................................................................................... 254
Susedstvo reči ....................................................................................................................................... 255
Svojstva umetanja reči ....................................................................................................................... 255
Upotreba RNN-a za NLP ............................................................................................................................. 256
Upotreba NLP-a za analizu sentimenta ................................................................................................ 257
Studija slučaja: analiza sentimenta recenzija filmova ..................................................................... 259
Rezime .............................................................................................................................................................. 262

POGLAVLJE 10
Mehanizmi za preporučivanje  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Predstavljanje sistema za preporučivanje ........................................................................................... 264
Tipovi mehanizama za preporučivanje ................................................................................................ 264
Mehanizmi za preporučivanje zasnovani na sadržaju ............................................................ 264
Pronalaženje sličnosti između nestrukturiranih dokumenata .................................... 265
Upotreba matrice uzajamnog pojavljivanja ...................................................................... 266
Mehanizmi za preporučivanje kolaborativnim filtiranjem.................................................... 267
Hibridni mehanizmi za preporučivanje ....................................................................................... 269
Generisanje matrice sličnosti stavki...................................................................................... 269
Generisanje referentnih vektora korisnika ......................................................................... 270
Generisanje preporuka .............................................................................................................. 270
Razumevanje ograničenja sistema za preporučivanje.................................................................... 271
Problem “hladnog starta” ................................................................................................................. 271
Zahtevi metapodataka ....................................................................................................................... 272
Problem proređenosti podataka .................................................................................................... 272
Pristrasnost zbog društvenog uticaja ........................................................................................... 272
Ograničeni podaci ............................................................................................................................... 272
Oblasti praktične primene ......................................................................................................................... 272
Praktičan primer - kreiranje mehanizma za preporučivanje ......................................................... 273
Rezime .............................................................................................................................................................. 276

DEO III
Napredne teme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

POGLAVLJE 11
Algoritmi podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
Predstavljanje algoritama podataka...................................................................................................... 280
Klasifikacija podataka ......................................................................................................................... 280
Predstavljanje algoritama skladišta ....................................................................................................... 281
Razumevanje strategija skladišta podataka ............................................................................... 281
Sadržaj xv

Predstavljanje CAP teoreme .................................................................................................... 281


Predstavljanje algoritama za strimovanje podataka ....................................................................... 284
Primena strimovanja ........................................................................................................................... 284
Predstavljanje algoritama za kompresovanje podataka ................................................................ 284
Algoritmi za kompresovanje bez gubitaka................................................................................. 285
Razumevanje osnovnih tehnika kompresije
bez gubitaka.................................................................................................................................. 285
Praktičan primer - analiza sentimenta Twittera u realnom vremenu ........................................... 287
Rezime .............................................................................................................................................................. 291

POGLAVLJE 12
Kriptografija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
Predstavljanje kriptografije ....................................................................................................................... 294
Razumevanje važnosti najslabijeg linka ...................................................................................... 294
Osnovna terminologija ...................................................................................................................... 295
Razumevanje bezbednosnih zahteva........................................................................................... 295
Identifikovanje entiteta ............................................................................................................. 296
Određivanje bezbednosnih ciljeva ....................................................................................... 296
Razumevanje poverljivosti podataka ................................................................................... 297
Razumevanje osnovnog dizajna šifara ......................................................................................... 297
Predstavljanje zamenskih šifara ............................................................................................. 298
Razumevanje transpozicionih šifara..................................................................................... 300
Razumevanje tipova kriptografskih tehnika ....................................................................................... 301
Upotreba kriptografske heš funkcije ............................................................................................ 301
Implementiranje kriptografskih heš funkcija .................................................................... 302
Primena kriptografske heš funkcije ...................................................................................... 304
Upotreba simetrične enkripcije ...................................................................................................... 304
Kodiranje simetrične enkripcije ............................................................................................. 305
Prednosti simetrične enkripcije ............................................................................................. 306
Problemi simetrične enkripcije .............................................................................................. 306
Asimetrična enrkipcija........................................................................................................................ 306
SSL/TLS algoritam usaglašavanja .......................................................................................... 307
Infrastruktura javnog ključa..................................................................................................... 309
Primer - briga o bezbednosti kada raspoređujemo model mašinskog učenja ...................... 310
MITM napadi .......................................................................................................................................... 311
Kako da sprečimo MITM napade ........................................................................................... 312
Izbegavanje maskiranja ..................................................................................................................... 313
Enkripcija podataka i modela .......................................................................................................... 313
Rezime .............................................................................................................................................................. 316

POGLAVLJE 13
Algoritmi velikih razmera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
Predstavljanje algoritama velikih razmera .......................................................................................... 318
Definisanje dobro dizajniranog algoritma velikih razmera .................................................. 318
Terminologija ........................................................................................................................................ 318
Kašnjenje ........................................................................................................................................ 318
xvi Sadržaj

Propusna moć............................................................................................................................... 319


Mrežni bisekcioni propusni opseg ........................................................................................ 319
Elastičnost ...................................................................................................................................... 319
Dizajn paralelnih algoritama .................................................................................................................... 319
Amdalov zakon ..................................................................................................................................... 320
Sprovođenje sekvencijalne analize procesa ...................................................................... 320
Razumevanje granularnosti zadatka............................................................................................. 323
Balansiranje opterećenja ................................................................................................................... 323
Problemi lokalnosti ............................................................................................................................. 324
Omogućavanje konkurentne obrade u Pythonu ..................................................................... 324
Strategiranje obrade za više procesa .................................................................................................... 324
Predstavljanje CUDA ........................................................................................................................... 325
Dizajniranje paralelnih algoritama na CUDA radnom okviru ...................................... 326
Upotreba GPU-a za obradu podataka u Pythonu ............................................................ 327
Klaster računarstvo .............................................................................................................................. 328
Implementiranje obrade podataka u Apache Spark ...................................................... 329
Hibridna strategija ............................................................................................................................... 331
Rezime .............................................................................................................................................................. 331

POGLAVLJE 14
Praktična razmatranja  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
Uvod u praktična razmatranja ................................................................................................................. 334
Tužna priča AI Twitter Bota .............................................................................................................. 335
Objašnjivost algoritma ............................................................................................................................... 335
Algoritmi mašinskog učenja i objašnjivost ................................................................................. 336
Predstavljanje strategija za objašnjivost............................................................................. 336
Razumevanje etike i algoritama .............................................................................................................. 340
Problemi sa algoritmima za učenje ............................................................................................... 340
Razumevanje etičkih razmatranja .................................................................................................. 341
Nepouzdani dokazi ..................................................................................................................... 341
Mogućnost praćenja .................................................................................................................. 342
Pogrešni dokazi ............................................................................................................................ 342
Nepravedni ishodi ....................................................................................................................... 342
Smanjivanje pristrasnosti u modelima ................................................................................................. 342
Rešavanje NP-hard problema .................................................................................................................. 343
Pojednostavljenje problema............................................................................................................ 344
Prilagođavanje dobro poznatog rešenja za sličan problem................................................. 344
Upotreba metoda verovatnoće ...................................................................................................... 345
Kada upotrebiti algoritme ......................................................................................................................... 345
Praktičan primer - događaji “crnog labuda”............................................................................... 346
Četiri kriterijuma za klasifikovanje događaja kao događaja crnog labuda ............ 346
Primena algoritama za događaje crnog labuda ............................................................... 347
Rezime .............................................................................................................................................................. 348

INDEKS ............................................................................................... 349


8YRG

$OJRULWPLVXXYHNLJUDOLYDçQXXORJXXQDXFLLSUDNVLUDĀXQDUVWYD8RYRMNQML
]LþHPRVHIRNXVLUDWLQDXSRWUHEXDOJRULWDPD]DUHåDYDQMHSUREOHPDL]VWYDUQRJ
VYHWD'DELVWHGRELOLPDNVLPXPRGRYLKDOJRULWDPDUD]XPHYDQMHQMLKRYHORJL
NHLPHWDPDWLNHMHQHRSKRGQR3UYRþHPRSUHGVWDYLWLDOJRULWPHLRWNULWLUD]OLĀLWH
WHKQLNHSURMHNWRYDQMDDOJRULWDPD=DWLPþHWHXĀLWLROLQHDUQRPSURJUDPLUDQMX
UDQJLUDQMX VWUDQLFH L JUDIRYLPD D NRULVWLþHWH L DOJRULWPH PDåLQVNRJ XĀHQMD L
UD]XPHþHWHPDWHPDWLNXLORJLNXXQMLPD2YDNQMLJDVDGUçLVWXGLMHVOXĀDMHYD
NDRåWRMHSUHGYLāDQMHYUHPHQVNHSURJQR]HJUXSLVDQMHWYLWRYDLPHKDQL]PL]D
SUHSRUXĀLYDQMHILOPRYDNRMHþHYDPSRND]DWLNDNRPRçHWHGDSULPHQLWHRSWL
PDOQRRYHDOJRULWPH.DGD]DYUåLWHĀLWDQMHRYHNQMLJHSRVWDþHWHYHåWLXXSRWUHEL
DOJRULWDPD]DUHåDYDQMHVWYDUQLKUDĀXQVNLKSUREOHPD

ZA KOGA JE OVA KNJIGA


2YDNQMLJDMH]DR]ELOMQHSURJUDPHUH%H]RE]LUDGDOLVWHLVNXVDQSURJUDPHUNRML
çHOLEROMHGDUD]XPHPDWHPDWLNXL]DDOJRULWDPDLOLLPDWHRJUDQLĀHQR]QDQMHQD
SROMXSURJUDPLUDQMDLOLQDXNHRSRGDFLPDDçHOLWHGDQDXĀLWHYLåHRQDĀLQXQDNRML
PRçHWHGDLVNRULVLWHRYHWHVWLUDQHDOJRULWPHGDELVWHSREROMåDOLQDĀLQQDNRMLGL]DM
QLUDWHLSLåHWHNRGRYDNQMLJDþHYDPELWLNRULVQD,VNXVWYRX3\WKRQSURJUDPLUD
QMXMHREDYH]QRDSR]QDYDQMHQDXNHRSRGDFLPDMHNRULVQRDOLQLMHQHRSKRGQR

ŠTA OBUHVATA OVA KNJIGA


3RJODYOMHPregled algoritama²XRYRPSRJODYOMXUH]LPLUDþHPRRVQRYHDOJRUL
WDPD3RJODYOMH]DSRĀLQMHPRRGHOMNRPRRVQRYQLPNRQFHSWLPDNRMLVXSRWUHE
QLGDELVWHUD]XPHOLNDNRIXQNFLRQLåXUD]OLĀLWLDOJRULWPL5H]LPLUDþHPRNDNRVX
OMXGLSRĀHOLGDNRULVWHDOJRULWPHGDELPDWHPDWLĀNLIRUPXOLVDOLRGUHāHQHNODVHL

1
2 UVOD

SUREOHPH7DNRāHþHPRSRPHQXWLRJUDQLĀHQMDUD]OLĀLWLKDOJRULWDPD8VOHGHþHP
RGHOMNXþHPRREMDVQLWLUD]OLĀLWHQDĀLQHVSHFLILNRYDQMDORJLNHDOJRULWPD3RåWRMH
XRYRMNQML]LXSRWUHEOMHQ3\WKRQ]DSLVDQMHDOJRULWDPDREMDåQMHQRMHLNDNRGD
SRGHVLWHRNUXçHQMHGDELVWHSRNUHQXOLSULPHUH=DWLPVXRSLVDQLUD]OLĀLWLKQDĀL
QLQDNRMHPRçHWHGDNYDQWLILNXMHWHLXSRUHGLWHSHUIRUPDQVXDOJRULWPDVDGUXJLP
DOJRULWPLPD1DNUDMXRYRJSRJODYOMDJRYRULþHPRRUD]OLĀLWLPQDĀLQLPDQDNRMH
RGUHāHQDLPSOHPHQWDFLMDDOJRULWPDPRçHGDEXGHSRWYUāHQD
3RJODYOMHStrukture podataka upotrebljene u algoritmima²XRYRPSRJODYOMXþHPRVH
IRNXVLUDWLQDSRWUHEXDOJRULWDPD]DVWUXNWXUDPDSRGDWDNDXPHPRULMLNRMHPRJXGD
VNODGLåWHSULYUHPHQHSRGDWNH$OJRULWPLPRJXGDEXGXYHRPDLQWHQ]LYQLXSRJOH
GXSRGDWDNDLOLL]UDĀXQDYDQMDLOLRED$OL]DVYHUD]OLĀLWHWLSRYHDOJRULWDPDELUDQMH
RGJRYDUDMXþHVWUXNWXUHSRGDWDNDMHYDçQR]DQMLKRYXRSWLPDOQXLPSOHPHQWDFLMX
0QRJLDOJRULWPLLPDMXUHNXU]LYQXLLWHUDWLYQXORJLNXL]DKWHYDMXVSHFLMDOL]RYDQH
VWUXNWXUHSRGDWDNDNRMHVXXRVQRYLLWHUDWLYQHSRSULURGL3RåWRXRYRMNQML]LNRULVWL
PR3\WKRQXRYRPSRJODYOMXþHPRVHIRNXVLUDWLQD3\WKRQVWUXNWXUHSRGDWDNDNRMH
PRJXGDVHXSRWUHEH]DLPSOHPHQWLUDQMHDOJRULWDPDNRMLVXRSLVDQLXRYRMNQML]L
3RJODYOMH$OJRULWPLVRUWLUDQMDLSUHWUDçLYDQMD²XRYRPSRJODYOMXSUHGVWDYLþH
PRRVQRYQHDOJRULWPHNRMLVHNRULVWH]DVRUWLUDQMHLSUHWUDçLYDQMH2YLDOJRULWPL
PRJXNDVQLMHGDSRVWDQXRVQRYD]DPQRJRVORçHQLMHDOJRULWPH3RJODYOMHþHPR
]DSRĀHWLSUHGVWDYOMDQMHPUD]OLĀLWLKWLSRYDDOJRULWDPD]DVRUWLUDQMH7DNRāHþHPR
XSRUHGLWLSHIRUPDQVHUD]OLĀLWLKSULVWXSD=DWLPþHPRSUHGVWDYLWLUD]OLĀLWHDOJR
ULWPH]DSUHWUDJX8SRUHGLþHPRLKLNYDQWLILNRYDQWLQMLKRYXSHUIRUPDQVXLNRP
SOHNVQRVW1DNUDMXRYRJSRJODYOMDSUHGVWDYLþHPRSULPHQXRYLKDOJRULWDPD
3RJODYOMHDizajniranje algoritama²XRYRPSRJODYOMXþHPRSUHGVWDYLWLRVQRYQH
NRQFHSWHGL]DMQDUD]OLĀLWLKDOJRULWDPD7DNRāHþHPRRSLVDWLUD]OLĀLWHWLSRYHDOJRUL
WDPDLJRYRULWLRQMLKRYLPYUOLQDPDLVODERVWLPD5D]XPHYDQMHRYLKNRQFHSDWDMH
YDçQRNDGDMHUHĀRGL]DMQLUDQMXRSWLPDOQLKNRPSOHNVQLKDOJRULWDPD3RJODYOMHþHPR
]DSRĀHWLRSLVRPUD]OLĀLWLKWLSRYDGL]DMQDDOJRULWPD=DWLPþHPRSUHGVWDYLWLUHåHQMH
]DSR]QDWLSUREOHPWUJRYDĀNRJSXWQLND=DWLPþHPRJRYRULWLROLQHDUQRPSURJUD
PLUDQMXLQMHJRYLPRJUDQLĀHQMLPD1DNUDMXþHPRSUHGVWDYLWLSUDNWLĀQLSULPHUNRML
SRND]XMHNDNROLQHDUQRSURJUDPLUDQMHPRçHGDVHXSRWUHEL]DSODQLUDQMHNDSDFLWHWD
3RJODYOMH*UDIRYVNLDOJRULWPL²XRYRPSRJODYOMXþHPRVHIRNXULVDWLQDDOJRULW
PH]DSUREOHPHJUDIDNRMLVXXRELĀDMHQLXUDĀXQDUVNRMQDXFL3RVWRMHPQRJLSUR
EOHPLL]UDĀXQDYDQMDNRMLPRJXQDMEROMHGDVHSUHGVWDYHXWHUPLQLPDJUDIRYD
8RYRPSRJODYOMXþHPRSUHGVWDYLWLPHWRGH]DSUHGVWDYOMDQMHJUDIDL]DSUHWUDçL
YDQMHJUDID3UHWUDçLYDQMHJUDIDSRGUD]XPHYDVLVWHPDWVNRSUDþHQMHLYLFDJUDIDGD
ELVWHRGUHGLOLYUKJUDID$OJRULWPL]DSUHWUDçLYDQMHJUDIDPRJXGDRWNULMXPQR
JRRVWUXNWXULJUDID0QRJLDOJRULWPL]DSRĀLQMXSUHWUDçLYDQMHPXOD]QRJJUDID]D
GRELMDQMHLQIRUPDFLMDRQMHJRYRMVWUXNWXUL1HNROLNRGUXJLKJUDIRYVNLKDOJRULWD
PDUD]UDāXMXRVQRYQRSUHWUDçLYDQMHJUDID7HKQLNH]DSUHWUDçLYDQMHJUDIDQDOD]H
Šta obuhvata ova knjiga 3

VHXVUFXSROMDJUDIRYVNLKDOJRULWDPD8SUYRPRGHOMNXþHPRRSLVDWLGYHQDMĀH
åþHUDĀXQVNHUHSUH]HQWDFLMHJUDIRYDOLVWDVXVHGVWYDLPDWULFHSRYH]DQRVWL=DWLP
þHPRSUHGVWDYLWLMHGQRVWDYDQDOJRULWDPSUHWUDçLYDQMDJUDIDSRGQD]LYRPEUH
DGWKILUVWVHDUFKLSULND]DþHPRNDNRGDNUHLUDWHEUHDGWKILUVWVWDEOR8VOHGHþLP
RGHOMFLPDSUHGVWDYOMHQDMHGHSWKILUVWSUHWUDJDLREH]EHāHQLVXQHNLVWDQGDUGQL
UH]XOWDWLRUHGRVOHGXXNRMHPGHSWKILUVWSUHWUDJDGRVHçHYUKJUDID
3RJODYOMH$OJRULWPLQHQDGJOHGDQRJPDåLQVNRJXĀHQMD²XRYRPSRJODYOMXSUHGVWDYL
þHPRDOJRULWPHQHQDGJOHGDQRJPDåLQVNRJXĀHQMD2YLDOJRULWPLVXNODVLILNRYDQL
NDRQHQDGJOHGDQLMHUPRGHOLOLDOJRULWDPSRNXåDYDGDQDXĀLVYRMVWYHQHVWUXNWX
UHREUDVFHLRGQRVHL]GDWLKSRGDWDNDEH]LNDNYRJQDGJOHGDQMD3UYRVXRSLVDQL
PHWRGLNODVWHURYDQMD7RVXPHWRGLPDåLQVNRJXĀHQMDNRMLSRNXåDYDMXGDSURQDāX
REUDVFHVOLĀQRVWLLRGQRVDPHāXX]RUFLPDSRGDWDNDXVNXSXSRGDWDNDD]DWLPNOD
VWHUXMXRYHX]RUNHXUD]OLĀLWHJUXSHQDSULPHUWDNRGDVYDNDJUXSDLOLNODVWHUX]R
UDNDSRGDWDNDLPDQHNHVOLĀQRVWLQDRVQRYXVYRMVWYHQLKNDUDNWHULVWLNDLOLDWULEXWD
8VOHGHþLPRGHOMFLPDRSLVDQLVXDOJRULWPLUHGXNFLMHGLPHQ]LRQDOQRVWLNRMLVHNRULVWH
NDGDSRVWRMLYLåHDWULEXWD=DWLPVXSUHGVWDYOMHQLQHNLDOJRULWPLNRMLVHEDYHGHWHN
FLMRPDQRPDOLMD1DNUDMXRYRJSRJODYOMDSUHGVWDYLþHPRPLQLQJSUDYLODDVRFLMDFLMH
NRMLMHPHWRGGDWDPLQLQJDNRMLVHNRULVWL]DLVSLWLYDQMHLDQDOL]XYHOLNLKWUDQVDNFLR
QLKVNXSRYDSRGDWDND]DLGHQWLILNRYDQMHREUD]DFDLSUDYLOD2YLREUDVFLSUHGVWD
YOMDMXLQWHUHVDQWQHRGQRVHLDVRFLMDFLMHL]PHāXUD]OLĀLWLKVWDYNLXWUDQVDNFLMDPD
3RJODYOMH$OJRULWPLWUDGLFLRQDOQRJQDGJOHGDQRJXĀHQMD²XRYRPSRJODYOMXRSLVD
þHPRDOJRULWPHWUDGLFLRQDOQRJQDGJOHGDQRJPDåLQVNRJXĀHQMDXRGQRVXQDVNXS
SUREOHPDPDåLQVNRJXĀHQMDXNRMHPSRVWRMLR]QDĀHQLVNXSSRGDWDNDVDXOD]QLP
DWULEXWLPDLRGJRYDUDMXþHL]OD]QHR]QDNHLOLNODVH2YLXOD]LLRGJRYDUDMXþLL]OD
]LVH]DWLPNRULVWH]DREXĀDYDQMHJHQHUDOL]RYDQRJVLVWHPDNRMLPRçHGDVHXSR
WUHEL]DSUHGYLāDQMHUH]XOWDWD]DSUHWKRGQRQHYLāHQHWDĀNHSRGDWDND3UYRþHPR
SUHGVWDYLWLNRQFHSWNODVLILNDFLMHXNRQWHNVWXPDåLQVNRJXĀHQMD=DWLPþHPRSUHG
VWDYLWLQDMMHGQRVWDYQLMHDOJRULWPHPDåLQVNRJXĀHQMDOLQHDUQXUHJUHVLMX1DNRQ
WRJDþHPRJRYRULWLRMHGQRPRGQDMYDçQLMLKDOJRULWDPDVWDEOXRGOXĀLYDQMD7DNR
āHþHPRJRYRULWLRRJUDQLĀHQMLPDLPRþLDOJRULWDPDVWDEODRGOXĀLYDQMDLRSLVDþH
PRGYDQDMYDçQLMDDOJRULWPD690DQG;*%RRVW
3RJODYOMH$OJRULWPLQHXURQVNHPUHçH²SUYRþHPRSUHGVWDYLWLJODYQHNRQFHSWHL
NRPSRQHQWHWLSLĀQHQHXURQVNHPUHçHNRMDSRVWDMHQDMYDçQLMLWLSWHKQLNHPDåLQ
VNRJXĀHQMD=DWLPþHPRSUHGVWDYLWLUD]OLĀLWHWLSRYHQHXURQVNLKPUHçDLWDNRāH
þHPRREMDVQLWLUD]OLĀLWHYUVWHDNWLYDFLRQLKIXQNFLMDNRMHVHNRULVWH]DUHDOL]DFLMX
RYLKQHXURQVNLKPUHçD=DWLPMHGHWDOMQRRSLVDQEDFNSURSDJDWLRQDOJRULWDP2YR
MHQDMĀHåþHXSRWUHEOMDYDQDOJRULWDP]DNRQYHUJHQFLMXSUREOHPDQHXURQVNHPUH
çH=DWLPMHREMDåQMHQDWHKQLNDWUDQVIHUXĀHQMDNRMDPRçHGDVHXSRWUHEL]D]QDW
QRSRMHGQRVWDYOMLYDQMHLGHOLPLĀQXDXWRPDWL]DFLMXREXĀDYDQMDPRGHOD1DNUDMX
MHNDRSULPHUVWYDUQRJVYHWDSUHGVWDYOMeQRNDNRGDXSRWUHELWHGXERNRXĀHQMH]D
GHWHNWRYDQMHREMHNDWDXPXOWLPHGLMDOQLPSRGDFLPD
4 UVOD

3RJODYOMHAlgoritmi za obradu prirodnog jezika²XRYRPSRJODYOMXþHPRSUHGVWDYL


WLDOJRULWPH]DREUDGXprirodnog jezika (NLP)8RYRPSRJODYOMXREXKYDþHQDMH
WHRULMDLSUDNVDQDSURJUHVLYDQQDĀLQ3UYRþHPRSUHGVWDYLWLRVQRYH]DWLPRVQRYQX
PDWHPDWLNX=DWLPþHPRJRYRULWLRQDMĀHåþHXSRWUHEOMDYDQLPQHXURQVNLPPUHçD
PD]DGL]DMQLUDQMHLLPSOHPHQWLUDQMHQHNROLNRYDçQLKVOXĀDMHYDXSRWUHEHWHNVWXDOQLK
SRGDWDND2JUDQLĀHQMD1/3DVXWDNRāHRSLVDQD1DNUDMXSUHGVWDYOMHQDMHVWXGLMD
VOXĀDMDXNRMHPMHPRGHOREXĀHQ]DGHWHNWRYDQMHDXWRUDUDGDQDRVQRYXVWLODSLVDQMD
3RJODYOMH0HKDQL]PL]DSUHSRUXĀLYDQMH²XRYRPSRJODYOMXþHPRVHIRNXVLUD
WLQDPHKDQL]PH]DSUHSRUXĀLYDQMHNRMLVXQDĀLQ]DPRGHORYDQMHLQIRUPDFLMD
GRVWXSQLKXRGQRVXQDSUHIHUHQFHNRULVQLNDD]DWLPXSRWUHEDRYLKLQIRUPDFL
MD]DREH]EHāLYDQMHLQIRUPLVDQLKSUHSRUXNDQDRVQRYXWLKLQIRUPDFLMD2VQRYD
PHKDQL]PD]DSUHSRUXĀLYDQMHMHXYHNVQLPOMHQDLQWHUDNFLMDL]PHāXNRULVQLNDL
SURL]YRGD2YRSRJODYOMHþHPR]DSRĀHWLSUHGVWDYOMDQMHPRVQRYQHLGHMHL]DPHKD
QL]PD]DSUHSRUXĀLYDQMH=DWLPþHPRJRYRULWLRUD]OLĀLWLPWLSRYLPDPHKDQL]PD
]DSUHSRUXĀLYDQMH1DNUDMXRYRJSRJODYOMDRSLVDþHPRNDNRVHPHKDQL]PL]DSUH
SRUXĀLYDQMHNRULVWH]DSUHGODJDQMHVWDYNLLSURL]YRGDUD]OLĀLWLPNRULVQLFLPD
3RJODYOMHAlgoritmi podataka²XRYRPSRJODYOMXþHPRVHIRNXVLUDWLQDSUREOH
PHYH]DQH]DDOJRULWPHXVPHUHQHNDSRGDFLPD3RJODYOMHþHPR]DSRĀHWLNUDWNLP
SUHJOHGRPSUREOHPDYH]DQLK]DSRGDWNH=DWLPþHPRSUHGVWDYLWLNULWHULMXP]D
NODVLILNDFLMXSRGDWDND=DWLPþHPRRSLVDWLNDNRGDSULPHQLWHDOJRULWPHGDELVWH
RODNåDOLSULPHQXSRGDWDNDD]DWLPþHPRSUHGVWDYLWLWHPXNULSWRJUDILMH1DNUDMX
þHPRSUHGVWDYLWLSUDNWLĀDQSULPHUL]GYDMDQMDREUD]DFDL]7ZLWWHUSRGDWDND
3RJODYOMHKriptografija²XRYRPSRJODYOMXþHPRSUHGVWDYLWLDOJRULWPHYH]DQH
]DNULSWRJUDILMX3RJODYOMHþHPR]DSRĀHWLSUHGVWDYOMDQMHPSR]DGLQH=DWLPþHPR
JRYRULWLRDOJRULWPLPDVLPHWULĀQHHQNULSFLMH2EMDVQLþHPR0'i SHA algoritme
KHåLUDQMDLRJUDQLĀHQMDLVODERVWLSRYH]DQHVDLPSOHPHQWLUDQMHPVLPHWULĀQLKDOJR
ULWDPD=DWLPþHPRJRYRULWLRDOJRULWPLPDDVLPHQWULĀQHHQNULSFLMHLNDNRVHRQL
NRULVWH]DNUHLUDQMHGLJLWDOQLKVHUWLILNDWD1DNUDMXþHPRSUHGVWDYLWLSUDNWLĀDQSUL
PHUNRMLUH]LPLUDVYHRYHWHKQLNH
3RJODYOMH$OJRULWPLYHOLNLKUD]PHUD²XRYRPSRJODYOMXþHPRREMDVQLWLNDNR
DOJRULWPLYHOLNLKUD]PHUDREUDāXMXSRGDWNHNRMLQHPRJXGDVHXNORSHXPHPR
ULMXMHGQRJĀYRUDLXNOMXĀLYDQMHREUDGHNRMD]DKWHYDYLåH&38D3RJODYOMHþHPR
]DSRĀHWLRSLVRPWLSRYDDOJRULWDPDNRMLVXQDMSULNODGQLML]DSDUDOHOQRSRNUHWDQMH
=DWLPþHPRJRYRULWLRSUREOHPLPDYH]DQLP]DSDUDOHOL]DFLMXDOJRULWDPD7DNR
āHþHPRSUHGVWDYLWL&8'$DUKLWHNWXUXLRSLVDWLNDNRMHGDQ*38LOLQL]*38RYD
PRçHGDVHXSRWUHEL]DXEU]DYDQMHDOJRULWDPDLNRMHVHSURPHQHPRUDMXL]YUåL
WLXDOJRULWPXGDELVPRHILNDVQRLVNRULVWLOLPRþ*38D1DNUDMXRYRJSRJODYOMD
þHPRJRYRULWLRNODVWHUUDĀXQDUVWYXLRSLVDþHPRNDNR$SDFKH6SDUNNUHLUDUHVLOL
HQWGLVWULEXWHGGDWDVHWRYH 5'' ]DNUHLUDQMHHNVWUHPQREU]LQSDUDOHOQLKLPSOH
PHQWDFLMDVWDQGDUGQLKDOJRULWDPD
Da biste dobili maksimum iz ove knjige 5

3RJODYOMH3UDNWLĀQDUD]PDWUDQMD²RYRSRJODYOMHþHPR]DSRĀHWLYDçQRPWHPRP
REMDåQMHQMDNRMDSRVWDMHVYHYDçQLMDVDGDNDGDMHREMDåQMHQDORJLNDL]DDXWRPD
WL]RYDQRJGRQRåHQMDRGOXND=DWLPþHPRSUHGVWDYLWLHWLNXXSRWUHEHDOJRULWPDL
PRJXþQRVWLNUHLUDQMDELDVDNDGDLKLPSOHPHQWLUDPR=DWLPþHPRGHWDOMQRRSLVDWL
WHKQLNH]DREUDGX13SUREOHPD1DNUDMXþHPRRSLVDWLQDĀLQHLPSOHPHQWLUDQMD
DOJRULWDPDLL]D]RYHL]VWYDUQRJVYHWDSRYH]DQHVDQMLPD

DA BISTE DOBILI MAKSIMUM IZ OVE KNJIGE


BROJ POTREBAN SOFT VER BESPL ATAN/ SPECIFIK ACIJE POTREBAN OS
POGL AVL JA (SA VER ZIJOM) VL ASNIČKI HARDVER A

1-14 Python verzija Besplatan Min 4GB RAM-a, Windows/Linux/Mac


3.7.2 ili novija 8GB+ preporučeno.

Preuzimanje fajlova primera koda


0RåHWHGDSUHX]PHWHIDMORYHVDSULPHULPDNRGD]DRYXNQMLJXQDDGUHVL
KWWSVELWO\ID+M[
.DGDVXIDMORYLSUHX]HWLUDVSDNXMWHLOLHNVWUDKXMWHGLUHNWRULMXPNRULVWHþLQDMQRYL
MXYHU]LMX

Ɣ :LQ5$5=LS]D:LQGRZV
Ɣ =LSHJL=LS8Q5DU;]D0DF
Ɣ =LS3HD=LS]D/LQX[

Preuzimanje kolornih slika


7DNRÿHVPRREH]EHGLOL3')IDMONRMLVDGUåLNRORUQHVOLNHVQLPDNDHNUDQD
GLMDJUDPDNRMLVXXSRWUHEOMHQLXNQML]L0RåHWHGDSUHX]PHWHRYDMIDMOVD
DGUHVH
KWWSVELWO\;F[*N
6 UVOD

Upotrebljene konvencije
8RYRMNQML]LXSRWUHEOMHQMHYHOLNLEURMNRQYHQFLMD]DWHNVW
CodeInTextXND]XMHQDUHĀLNRGDXWHNVWXXQD]LYLPDWDEHOHED]HSRGDWDNDX
QD]LYLPDGLUHNWRULMXPDXQD]LYLPDIDMORYDXHNVWHQ]LMDPDIDMORYDSXWDQMDPD
ODçQLP85/RYLPDNRULVQLĀNLPXQRVLPDL7ZLWHUSRVWRYLPD3ULPHUMHVOHGHþL
Å3RJOHGDMPRNDNRGDGRGDPRQRYLHOHPHQWXVWHNXSRWUHERPpushPHWRGDLOL
XNORQLPRHOHPHQWL]VWHNDXSRWUHERPPHWRGDpop´
%ORNNRGDMHSRVWDYOMHQQDVOHGHþLQDĀLQ
define swap(x, y)
buffer = x
x = y
y = buffer
.DGDçHOLPRGDSULYXĀHPRYDåXSDçQMXQDRGUHāHQLGHREORNDNRGDUHOHYDQWQH
OLQLMHLOLVWDYNHþHELWLLVSLVDQH]DGHEOMDQLPVORYLPD
define swap(x, y)
buffer = x
x = y
y = buffer
6YLXQRVLLOLLVSLVLNRPDQGQHOLQLMHQDSLVDQLVXQDVOHGHþLQDĀLQ
pip install a_package

Zadebljana slova1RYLWHUPLQLLYDçQHUHĀLNRMHYLGLWHQDHNUDQXVXQDSLVDQH
SRGHEOMDQLPVORYLPD1DSULPHUXPHQLMLPDLOLRNYLULPD]DGLMDORJSULND]DþHVHX
WHNVWXQDWDMQDĀLQ1DSULPHUÅ-HGDQQDĀLQGDVPDQMLWHNRPSOHNVQRVWDOJRULWPD
MHGDNRPSURPLWXMHWHQMHJRYXWDĀQRVWNUHLUDMXþLWLSDOJRULWPDSRGQD]LYRPpri-
EOLçQLDOJRULWDP´

Upozorenja ili važne napomene se prikazuju na ovaj način.

Saveti i trikovi se prikazuju ovako.


'HR,
Osnove i osnovni algoritmi
8RYRPRGHOMNXþHPRSUHGVWDYLWLRVQRYQHDVSHNWHDOJRULWDPD,VWUDçLþHPRåWDMH
DOJRULWDPLNDNRGDJDGL]DMQLUDPRDWDNRāHþHPRXĀLWLRVWUXNWXUDPDSRGDWDND
NRMHVHNRULVWHXDOJRULWPLPD8RYRPRGHOMNXþHPRWDNRāHREMDVQLWLDOJRULWPH
]DVRUWLUDQMHLSUHWUDçLYDQMH]DMHGQRVDDOJRULWPLPD]DUHåDYDQMHJUDILĀNLKSUR
EOHPD3RJODYOMDREXKYDþHQDXRYRGHOXVX
Ɣ Poglavlje 13UHJOHGDOJRULWDPD
Ɣ Poglavlje 26WUXNWXUHSRGDWDNDXSRWUHEOMHQHXDOJRULWPLPD
Ɣ Poglavlje 3$OJRULWPL]DVRUWLUDQMHLSUHWUDçLYDQMH
Ɣ Poglavlje 4'L]DMQLUDQMHDOJRULWDPD
Ɣ Poglavlje 5*UDIRYVNLDOJRULWPL

9

Pregled algoritama
8RYRMNQML]LVXREXKYDþHQHLQIRUPDFLMH]DUD]XPHYDQMHNODVLILNRYDQMHVHOHNFLMXL
LPSOHPHQWLUDQMHYDçQLKDOJRULWDPD2VLPåWRþHPRREMDVQLWLQMLKRYXORJLNXWDNRāH
þHPRJRYRULWLRVWUXNWXUDPDSRGDWDNDUD]YRMQLPRNUXçHQMLPDLSURL]YRGQLPRNUXçH
QMLPDNRMDVXSRJRGQD]DUD]OLĀLWHNODVHDOJRULWDPD)RNXVLUDþHPRVHQDPRGHUQHDOJR
ULWPHPDåLQVNRJXĀHQMDNRMLSRVWDMXVYHYDçQLML=DMHGQRVDORJLNRPSUHGVWDYOMHQLVXL
SUDNWLĀQLSULPHULXSRWUHEHDOJRULWDPD]DUHåDYDQMHVWYDUQLKVYDNRGQHYQLKSUREOHPD
8RYRPSRJODYOMXþHPRREH]EHGLWLXYLGXRVQRYHDOJRULWDPD=DSRĀHþHPRVDRGHOM
NRPRRVQRYQLPNRQFHSWLPDNRMLVXSRWUHEQLGDELVWHUD]XPHOLNDNRIXQNFLRQLåX
UD]OLĀLWLDOJRULWPL8RYRPRGHOMNXþHPRUH]LPLUDWLNDNRVXOMXGLSRĀHOLGDNRULVWH
DOJRULWPH]DPDWHPDWLĀNRIRUPXOLVDQMHRGUHāHQHNODVHSUREOHPD7DNRāHþHPRJRYR
ULWLRRJUDQLĀHQMLPDUD]OLĀLWLKDOJRULWDPD8VOHGHþHPRGHOMNXþHPRREMDVQLWLUD]OLĀL
WHQDĀLQH]DVSHFLILNRYDQMHORJLNHDOJRULWPD3RåWRXRYRMNQML]LNRULVWLPR3\WKRQ]D
SLVDQMHDOJRULWDPDREMDåQMHQRMHNDNRGDSRGHVLWHRNUXçHQMH]DSRNUHWDQMHSULPHUD
=DWLPþHPRRSLVDWLUD]OLĀLWHQDĀLQHNYDQWLILNRYDQMDSHUIRUPDQVLDOJRULWPDXSRUHāH
QMXVDGUXJLPDOJRULWPLPD1DNUDMXRYRJSRJODYOMDþHPRJRYRULWLRUD]OLĀLWLPQDĀLQL
PDQDNRMHPRçHPRGDL]YUåLPRYDOLGDFLMXRGUHāHQHLPSOHPHQWDFLMHDOJRULWPD
'DUH]LPLUDPRXRYRPSRJODYOMXREXKYDþHQHVXVOHGHþHJODYQHWHPH
Ɣ äWDMHDOJRULWDP"
Ɣ 6SHFLILNRYDQMHORJLNHDOJRULWPD
Ɣ 3UHGVWDYOMDQMH3\WKRQSDNHWD
Ɣ 7HKQLNHGL]DMQLUDQMDDOJRULWPD

11
12 POGLAVLJE 1 Pregled algoritama

Ɣ $QDOL]DSHUIRUPDQVL
Ɣ 9DOLGDFLMDDOJRULWPD

ŠTA JE ALGORITAM?
1DMMHGQRVWDYQLMHUHĀHQRDOJRULWDPMHVNXSSUDYLOD]DL]YUåDYDQMHQHNLKL]UDĀXQD
YDQMD]DUHåDYDQMHSUREOHPD$OJRULWDPMHGL]DMQLUDQGDGDMHUH]XOWDWH]DELORNRML
YDOLGDQXQRVXVNODGXVDSUHFL]QRGHILQLVDQLPLQVWUXNFLMDPD$NRSRWUDçLWHUHĀ
DOJRULWDPXUHĀQLNXHQJOHVNRJMH]LND NDRåWRMH$PHULFDQ+HULWDJH NRQFHSWMH
GHILQLVDQQDVOHGHþLQDĀLQ

´$OJRULWDPMHNRQDĀDQVNXSQHGYRVPLVOHQLKLQVWUXNFLMDNRMHVRE]LURPQDQHNL
VNXSSRĀHWQLKXVORYDPRJXGDEXGXL]YUåHQHXXQDSUHGRGUHāHQRMVHNYHQFL]D
SRVWL]DQMHRGUHāHQRJFLOMDLNRMHLPDMXSUHSR]QDWOMLYVNXSNUDMQMLKXVORYDµ

'L]DMQLUDQMHDOJRULWPDMHXVWYDULNUHLUDQMHPDWHPDWLĀNRJUHFHSWDQDQDMHILNDVQL
MLQDĀLQNRMLPRçHHILNDVQRGDVHXSRWUHEL]DUHåDYDQMHSUREOHPDL]VWYDUQRJVYHWD
2YDMUHFHSWPRçHGDVHXSRWUHELNDRRVQRYD]DUD]YRMYLåHVWUXNRXSRWUHEOMLYRJLJHQH
ULĀNRJPDWHPDWLĀNRJUHåHQMDNRMHVHPRçHSULPHQLWLQDåLULVNXSVOLĀQLKSUREOHPD

Faze algoritma
5D]OLĀLWHID]HUD]YRMDUDVSRUHāLYDQMDLNRQDĀQHXSRWUHEHDOJRULWPDSULND]DQHVXX
VOHGHþHPGLMDJUDPX
Šta je algoritam? 13

.DRåWRPRçHPRGDYLGLPRSURFHV]DSRĀLQMHUD]XPHYDQMHP]DKWHYDRGLVND]D
SUREOHPDNRMLGHWDOMQRRSLVXMHåWDWUHEDGDEXGHL]YUåHQR.DGDMHSUREOHPMDVQR
LVND]DQYRGLQDVXID]XUD]YRMD
)D]DUD]YRMDVHVDVWRMLL]GYHID]H
Ɣ Faza dizajna8ID]LGL]DMQDSUHGYLāHQLVXLGRNXPHQWRYDQLGHWDOMLR
DUKLWHNWXULORJLFLLLPSOHPHQWDFLMLDOJRULWPD'RNGL]DMQLUDPRDOJRULWDP
WUHEDORELGDLPDPRQDXPXWDĀQRVWLSHUIRUPDQVH0HāXWLP
SUHWUDçLYDQMHUHåHQMD]DGDWLSUREOHPþHXPQRJLPVOXĀDMHYLPDGRYHVWL
GRWRJDGDSURQDāHPRYLåHRGMHGQRJDOWHUQDWLYQRJDOJRULWPD)D]D
GL]DMQDDOJRULWPDMHLWHUDWLYQLSURFHVNRMLXNOMXĀXMHXSRUHāLYDQMHUD]OLĀLWLK
NDQGLGDWD]DDOJRULWPH1HNLDOJRULWPLPRJXGDREH]EHāXMXMHGQRVWDYQDL
EU]DUHåHQMDDOLPRJXNRPSURPLWRYDWLWDĀQRVW'UXJLDOJRULWPLPRJXGD
EXGXYHRPDWDĀQLDOL]ERJVORçHQRVWLQMLKRYRSRNUHWDQMHPRçH]QDĀDMQR
SRWUDMDWL1HNLRGRYLKVORçHQLKDOJRULWDPDPRJXGDEXGXHILNDVQLMLRG
GUXJLK3UHQHJRåWRGRQHVHWHRGOXNXWUHEDSDçOMLYRGDUD]PRWULWH
LQKHUHQWQHNRPSURPLVHNDQGLGDWD]DDOJRULWPH3RVHEQR]DVORçHQH
SUREOHPHGL]DMQLUDQMHHILNDVQRJDOJRULWPDMHYHRPDYDçQR3UDYLOQR
GL]DMQLUDQDOJRULWDPþHUH]XOWLUDWLHILNDVQLPUHåHQMHPNRMHþHELWLX
PRJXþQRVWLGDREH]EHGLLVWRYUHPHQR]DGRYROMDYDMXþXSHUIRUPDQVXL
UD]XPQXWDĀQRVW
Ɣ Faza kodiranja8ID]LNRGLUDQMDGL]DMQLUDQLDOJRULWDPMHNRQYHUWRYDQX
UDĀXQDUVNLSURJUDP9DçQRMHGDDNWXHOQLSURJUDPLPSOHPHQWLUDVYX
ORJLNXLDUKLWHNWXUXSUHGORçHQXXID]LGL]DMQD
)D]HGL]DMQLUDQMDLNRGLUDQMDDOJRULWPDVXSRSULURGLLWHUDWLYQH.UHLUDQMHGL]DMQD
NRMLLVSXQMDYDLIXQNFLRQDOQHLQHIXQNFLRQDOQH]DKWHYHPRçH]DKWHYDWLPQRJRYUH
PHQDLWUXGD)XQNFLRQDOQL]DKWHYLVXRQL]DKWHYLNRMLGLNWLUDMXNRMLMHRGJRYD
UDMXþLL]OD]]DGDWLVNXSXOD]QLKSRGDWDND1HIXQNFLRQDOQL]DKWHYLDOJRULWPDVX
XJODYQRPYH]DQL]DSHUIRUPDQVX]DGDWXYHOLĀLQXSRGDWDND9DOLGDFLMDLDQDOL]D
SHUIRUPDQVHDOJRULWPDRSLVDQLVXNDVQLMHXRYRPSRJODYOMX9DOLGDFLMDDOJRULWPD
SRGUD]XPHYDSRWYUāLYDQMHGDDOJRULWDPLVSXQMDYDVYRMHIXQNFLRQDOQH]DKWHYH
$QDOL]DSHUIRUPDQVHDOJRULWPDSRGUD]XPHYDSRWYUāLYDQMHGDDOJRULWDPLVSXQMDYD
VYRMJODYQLQHIXQNFLRQDOQL]DKWHYSHUIRUPDQVX
14 POGLAVLJE 1 Pregled algoritama

.DGD MH GL]DMQLUDQ L LPSOHPHQWLUDQ X SURJUDPVNRP MH]LNX SR YDåHP L]ERUX


NRGDOJRULWPDMHVSUHPDQGDEXGHUDVSRUHāHQ5DVSRUHāLYDQMHDOJRULWPDXNOX
ĀXMHSURMHNWRYDQMHDNWXHOQRJSURL]YRGQRJRNUXçHQMDXNRMHPþHVHNRGSRNUHWD
WL3URL]YRGQRRNUXçHQMHWUHEDORELGDEXGHSURMHNWRYDQRXVNODGXVDSRGDFLPDL
SRWUHEDPDREUDGHDOJRULWPD1DSULPHU]DDOJRULWPHNRMLVHPRJXSDUDOHOL]RYD
WLELþHSRWUHEDQNODVWHUVDRGJRYDUDMXþLPEURMHPUDĀXQDUVNLKĀYRURYD]DHILND
VQRL]YUåHQMHDOJRULWPD=DDOJRULWPHNRMLLQWHQ]LYQRNRULVWHSRGDWNHELWUHEDORGD
EXGHSURMHNWRYDQSLSHOLQH]DGROD]QHSRGDWNHLVWUDWHJLMD]DNHåLUDQMHLVNODGLåWH
QMHSRGDWDND'L]DMQLUDQMHSURL]YRGQRJRNUXçHQMDMHGHWDOMQRRSLVDQRX3RJODYOMX
$OJRULWPLYHOLNLKUD]PHUDLX3RJODYOMX3UDNWLĀQDUD]PDWUDQMD.DGDMHSURL
]YRGQRRNUXçHQMHSURMHNWRYDQRLLPSOHPHQWLUDQRDOJRULWDPMHUDVSRUHāHQLNRULVWL
XOD]QHSRGDWNHREUDāXMHLKLJHQHULåHL]OD]SUHPD]DKWHYLPD

SPECIFIKOVANJE LOGIKE ALGORITMA


.DGDGL]DMQLUDPRDOJRULWDPYDçQRMHGDSURQDāHPRUD]OLĀLWHQDĀLQH]DVSHFLIL
NRYDQMHGHWDOMD3RWUHEQDMHPRJXþQRVWSURQDODçHQMDQMHJRYHORJLNHLDUKLWHNWXUH
*HQHUDOQRNDRNDGDJUDGLPRNXþXYDçQRMHGDVSHFLILNXMHPRVWUXNWXUXDOJRULWPD
SUHQHJRåWRJDLPSOHPHQWLUDPR=DVORçHQLMHGLVWULEXLUDQHDOJRULWPHSODQLUDQMH
QDĀLQDQDNRMLþHQMLKRYDORJLNDELWLGLVWULEXLUDQDXNODVWHUXXYUHPHL]YUåHQMDMH
YDçQR]DLWHUDWLYQRHILNDVDQSURFHVGL]DMQD3RPRþXSVHXGRNRGDLSODQRYDL]YUåH
QMDREDRYD]DKWHYDVXLVSXQMHQDLRSLVDQDVXXVOHGHþHPRGHOMNX

Razumevanje pseudokoda
1DMMHGQRVWDYQLMLQDĀLQGDVSHFLILNXMHPRORJLNX]DDOJRULWDPMHGDQDSLåHPRRSLV
YLåHJQLYRD]DDOJRULWDPQDSROXVWUXNWXULUDQLQDĀLQåWRVHQD]LYDpseudokod3UH
QHJRåWRQDSLåHPRORJLNXXSVHXGRNRGXNRULVQRMHGDSUYRRSLåHPRJODYQLWRN
SLVDQMHPJODYQLKNRUDNDQDHQJOHVNRPMH]LNX=DWLPRYDMRSLVQDHQJOHVNRPMH]L
NXMHNRQYHUWRYDQXSVHXGRNRGNRMLMHVWUXNWXULUDQQDĀLQSLVDQMDRYRJRSLVDQD
HQJOHVNRPMH]LNXNRMLQDMEOLçHSUHGVWDYOMDORJLNXLWRN]DDOJRULWDP'REURQDSL
VDQSVHXGRNRGELWUHEDORUD]XPQRGDRSLåHNRUDNHDOJRULWPDYLVRNRJQLYRDĀDNL
DNRGHWDOMQLNRGQLMHUHOHYDQWDQ]DJODYQLWRNLVWUXNWXUXDOJRULWPD1DVOHGHþRMVOL
FLSULND]DQMHWRNNRUDND
Specifikovanje logike algoritma 15

,PDMWHQDXPXGDNDGDMHSVHXGRNRGQDSLVDQ NDRåWRþHPRYLGHWLXVOHGHþHPRGHOMNX 
VSUHPQLVPRGDNRGLUDPRDOJRULWDPXSRWUHERPSURJUDPVNRJMH]LNDSRQDåHPL]ERUX

Praktičan primer za pseudokod


8VOHGHþHPSULPHUXSULND]DQMHSVHXGRNRGDOJRULWPD]DGRGHOXUHVXUVDSRGQD]L
vom SRPMP8NODVWHUUDĀXQDUVWYXSRVWRMHPQRJHVLWXDFLMHXNRMLPDSRVWRMHSDUD
OHOQL]DGDFLNRMLWUHEDGDVHSRNUHQXQDVNXSXGRVWXSQLKUHVXUVDNRMLVHNROHNWLYQR
QD]LYDMXVNODGLåWHUHVXUVD2YDMDOJRULWDPGRGHOMXMH]DGDWNH]DUHVXUVHLNUHLUD
VNXSPDSLUDQMDSRGQD]LYRPƺ,PDMWHQDXPXGDSUHGVWDYOMHQLSVHXGRNRGSUHX
]LPDORJLNXLWRNDOJRULWPDNRMLVXGDOMHRSLVDQLXVOHGHþHPRGHOMNX
1: BEGIN Mapping_Phase
2: ͜= { }
3: k = 1
4: FOREACH Ti‫א‬T
5: ͼi = RA(͈k,Ti)
6: add {ͼi,Ti} to ͜
7: state_changeTi [STATE 0: Idle/Unmapped] ຩ[STATE 1: Idle/Mapped]
8: k=k+1
9: IF (k>q)
10: k=1
11: ENDIF
12: END FOREACH
13: END Mapping_Phase
16 POGLAVLJE 1 Pregled algoritama

6DGDþHPRDQDOL]LUDWLRYDMDOJRULWDPOLQLMXSROLQLMX
1. =DSRĀLQMHPRPDSLUDQMHL]YUåDYDQMHPDOJRULWPD6NXSPDSLUDQMDƺMH
SUD]DQ
2. 3UYDSDUWLFLMDMHVHOHNWRYDQDNDRVNODGLåWHUHVXUVD]D7]DGDWDN YLGLWH
OLQLMXXSUHWKRGQRPNRGX 7HOHYLVLRQ5DWLQJ3RLQW 7536 LWHUDWLYQR
SR]LYD5KHXPDWRLG$UWKULWLV 5$ DOJRULWDP]DVYDNL7i]DGDWDNVD
MHGQRPRGSDUWLFLMDVHOHNWRYDQRPNDRVNODGLåWHUHVXUVD
3. 5$DOJRULWDPYUDþDVNXSUHVXUVDL]DEUDQ]DTi]DGDWDNSUHGVWDYOMHQVDǚL
YLGLWHOLQLMXXSUHWKRGQRPNRGX 
4. 7iLǚLVXGRGDWLXVNXSPDSLUDQMD YLGLWHOLQLMXXSUHWKRGQRPNRGX 
5. 6WDQMH]DGDWND7iMHSURPHQMHQRVDSTATE 0:Idle/MappingQDSTATE
1:Idle/Mapped YLGLWHOLQLMXXSUHWKRGQRPNRGX 
6. ,PDMWHQDXPXGD]DSUYXLWHUDFLMXk=1LVHOHNWRYDQDMHSUYDSDUWLFLMD=D
VYDNXVOHGHþXLWHUDFLMXYUHGQRVWNVHSRYHþDYDGR k>q
7. $NRNSRVWDQHYHþLRGTSRQRYRMHUHVHWRYDQQD YLGLWHOLQLMHLX
SUHWKRGQRPNRGX 
8. 2YDMSURFHVVHSRQDYOMDGRNVHPDSLUDQMHL]PHāXVYLK]DGDWDNDLVNXSD
UHVXUVDNRMLþHXSRWUHELWLQHRGUHGLLVDĀXYDXVNXSXPDSLUDQMDSRG
QD]LYRPƺ
9. ,]YUåHQMHVHGHåDYDNDGDMHVYDNLRG]DGDWDNDPDSLUDQXVNXSUHVXUVDX
ID]LPDSLUDQMD

Upotreba odlomaka koda


6D SRSXODUQRåþX MHGQRVWDYQRJ DOL PRþQRJ MH]LND ]D NRGLUDQMH NDR åWR MH 3\W
KRQDOWHUQDWLYQLSULVWXSSRVWDMHSRSXODUDQDWRMHSUHGVWDYOMDQMHORJLNHDOJRULWPD
GLUHNWQRXSURJUDPVNRPMH]LNXXQHNDNRSRMHGQRVWDYOMHQRMYHU]LML.DRLSVHXGR
NRGRYDMVHOHNWRYDQLNRGSUHX]LPDYDçQXORJLNXLVWUXNWXUXSUHGORçHQRJDOJR
ULWPDL]EHJDYDMXþLGHWDOMQLNRG2YDMVHOHNWRYDQLNRGVHSRQHNDG]RYHRGORPDN
NRGD HQJsnippet)8RYRMNQML]LRGORPFLNRGDVXXSRWUHEOMHQLXPHVWRSVHXGRNR
GDNDGDJRGMHWRPRJXþHMHURQLåWHGHMHGDQGRGDWQLNRUDN1DSULPHUSRJOHGDMPR
SULPHURGORPNDNRGDNRMLJRYRULR3\WKRQIXQNFLMLNRMDVHPRçHXSRWUHELWL]D
]DPHQXGYHSURPHQOMLYH
define swap(x, y)
buffer = x
x = y
y = buffer
Specifikovanje logike algoritma 17

Imajte na umu da odlomci koda ne mogu uvek da zamene pseudokod.


U pseudokodu, ponekad, izdvajamo mnogo linija koda kao jednu liniju
pseudokoda, izražavajući logiku algoritma bez ometanja od nepotrebnih
detalja kodiranja.

Kreiranje plana izvršenja


3VHXGRNRGLRGORPFLNRGDQLVXXYHNGRYROMQL]DVSHFLILNRYDQMHORJLNHNRMDVH
RGQRVLQDVORçHQLMHGLVWULEXLUDQHDOJRULWPH1DSULPHUGLVWULEXLUDQLDOJRULWPL
RELĀQRWUHEDGDEXGXSRGHOMHQLXUD]OLĀLWHID]HNRGLUDQMDXYUHPHL]YUåHQMDNRMH
LPDMXUHGRVOHGSULRULWHWD2GJRYDUDMXþDVWUDWHJLMD]DGHOMHQMHYHþHJSUREOHPDQD
RSWLPDODQEURMfaza HQJstage VDRGJRYDUDMXþLPRJUDQLĀHQMLPDSULRULWHWDMHYDçQD
]DHILNDVQRL]YUåHQMHDOJRULWPD
7UHEDGDSURQDāHPRQDĀLQGDSUHGVWDYLPRRYXVWUDWHJLMXNDRLGDXSRWSXQRVWL
SUHGVWDYLPRORJLNXLVWUXNWXUXDOJRULWPD3ODQL]YUåHQMDMHMHGDQRGQDĀLQDSULND]D
GHWDOMDNDNRþHDOJRULWDPELWLSRGHOMHQXJUDQH]DGDWDND=DGDWDNPRJXGDEXGX
PDSHULLOLUHGXNWRULNRMLPRJXGDEXGXJUXSLVDQL]DMHGQRXEORNRYHSRGQD]LYRP
ID]H6OHGHþLPGLMDJUDPRPSULND]DQMHSODQL]YUåHQMDNRMLJHQHULåH$SDFKH6SDUN
L]YUåHQMHSUHL]YUåDYDQMDDOJRULWPD'HWDOMQRVXSULND]DQL]DGDFLL]YUåHQMDQDNRMH
þHELWLSRGHOMHQSRVDRNUHLUDQ]DL]YUåHQMHDOJRULWPD

9LGLWHGDSUHWKRGQLGLMDJUDPLPDSHW]DGDWDNDNRMLVXSRGHOMHQLXGYHUD]OLĀLWH
ID]H6WDJH i 6WDJH
18 POGLAVLJE 1 Pregled algoritama

PREDSTAVLJANJE PYTHON PAKETA


.DGDVXGL]DMQLUDQLDOJRULWPLWUHEDGDEXGXLPSOHPHQWLUDQLXSURJUDPVNLMH]LN
SUHPDGL]DMQX=DRYXNQMLJXMDVDPL]DEUDRSURJUDPVNLMH]LN3\WKRQ,]DEUDRVDP
JD]DWRåWRMH3\WKRQIOHNVLELODQSURJUDPVNLMH]LNRWYRUHQRJNRGD3\WKRQMHWDNR
āHMH]LNSRL]ERUXVYHYDçQLMLKFORXGUDĀXQDUVNLKLQIUDVWUXNWXUDNDRåWRVX$PD-
]RQ:HE6HUYLFHV $:6 0LFURVRIW$]XUHL*RRJOH&ORXG3ODWIRUP *&3 
=YDQLĀQD3\WKRQSRĀHWQDVWUDQLFDMHGRVWXSQDQDKWWSVZZZS\WKRQRUJDGUHVL
QDNRMRMVHWDNRāHQDOD]HLLQVWUXNFLMH]DLQVWDODFLMXLNRULVWDQYRGLĀ]DSRĀHWQLNH
$NRQLVWHUDQLMHNRULVWLOL3\WKRQGREUDLGHMDMHGDSRWUDçLWHYRGLĀH]DSRĀHWQLNHGD
ELVWHJDVDPLQDXĀLOL2VQRYQRUD]XPHYDQMH3\WKRQDþHYDPSRPRþLGDEROMHUD]X
PHWHNRQFHSWHSUHGVWDYOMHQHXRYRMNQML]L
=DRYXNQMLJXRĀHNXMHPGDNRULVWLWHQDMQRYLMXYHU]LMX3\WKRQ8YUHPHSLVDQMD
RYHNQMLJHQDMQRYLMDYHU]LMDMHLWXYHU]LMXþHPRNRULVWLWL]DSRNUHWDQMHSULPH
UDXRYRMNQML]L

Python paketi
3\WKRQMHMH]LNRSåWHQDPHQH'L]DMQLUDQMHWDNRGDGROD]LVDPLQLPDOQRPIXQN
FLRQDOQRåþX1DRVQRYXVOXĀDMDXSRWUHEH]DNRMLQDPHUDYDWHGDNRULVWLWH3\WKRQ
SRWUHEQRMHGDLQVWDOLUDWHGRGDWQHSDNHWHSRPRþXSLSLQVWDODFLRQRJSURJUDPD6OH
GHþDpipNRPDQGDPRçHGDVHXSRWUHEL]DLQVWDOLUDQMHGRGDWQLKSDNHWD
pip install a_package

3DNHWLNRMLVXYHþLQVWDOLUDQLWUHEDORELSHULRGLĀQRGDEXGXDçXULUDQLGDELVWHGREL
OLQDMQRYLMHIXQNFLRQDOQRVWL7RþHWHXUDGLWLXSRWUHERPupgradeLQGLNDWRUD
pip install a_package --upgrade

-RåMHGQD3\WKRQGLVWULEXFLMD]DQDXĀQRUDĀXQDUVWYRMH$QDFRQGDNRMXPRçHWHGD
SUHX]PHWHVDKWWSFRQWLQXXPLRGRZQORDGVDGUHVH
2VLPXSRWUHEHpipNRPDQGH]DLQVWDOLUDQMHQRYLKSDNHWD]D$QDFRQGDGLVWULEXFLMX
WDNRāHLPDPRLRSFLMX]DXSRWUHEXVOHGHþHNRPDQGH]DLQVWDOLUDQMHQRYLKSDNHWD
conda install a_package

'DELVWHDçXULUDOLSRVWRMHþHSDNHWH$QDFRQGDGLVWULEXFLMDREH]EHāXMHRSFLMX]D
XSRWUHEXVOHGHþHNRPDQGH
conda update a_package
3RVWRMLPQRJRYUVWD3\WKRQSDNHWDNRMLVXGRVWXSQL1HNLRGYDçQLKSDNHWDNRMLVX
UHOHYDQWQL]DDOJRULWPHRSLVDQLVXXVOHGHþHPRGHOMNX
Predstavljanje Python paketa 19

SciPy ekosistem
6FLHQWLILF3\WKRQ 6FL3\ ²L]JRYDUDVHsigh pie²MHJUXSD3\WKRQSDNHWDNUHLUDQLK
]DQDXĀQX]DMHGQLFX6DGUçLPQRJHIXQNFLMHXNOMXĀXMXþLLåLURNUDVSRQJHQHUDWRUD
QDVXPLĀQLKEURMHYDUXWLQHOLQHDUQHDOJHEUHLRSWLPL]DWRUH6FL3\MHRELPDQSDNHW
LYUHPHQRPOMXGLVXUD]YLOLPQRJHHNVWHQ]LMHGDELSULODJRGLOLLSURåLULOLSDNHWX
VNODGXVDVYRMLPSRWUHEDPD
6OHGHJODYQLSDNHWLNRMLVXGHRRYRJHNRVLVWHPD
Ɣ 1XP3\=DDOJRULWPHMHYHRPDYDçQDPRJXþQRVWNUHLUDQMD
YLåHGLPHQ]LRQDOQLKVWUXNWXUDSRGDWDNDNDRåWRVXQL]RYLLPDWULFH
1XP3\REH]EHāXMHVNXSQL]RYDLWLSRYDSRGDWDNDPDWULFHNRMLVXYDçQL
]DVWDWLVWLNXLDQDOL]XSRGDWDND'HWDOMHR1XP3\SDNHWXPRçHWHSURQDþL
QDDGUHVLKWWSZZZQXPS\RUJ
Ɣ VFLNLWOHDUQ2YDHNVWHQ]LMDPDåLQVNRJXĀHQMDMHMHGQDRGQDMSRSXODUQLMLK
HNVWHQ]LMD6FL3\HNRVLVWHPD6FLNLWOHDUQREH]EHāXMHåLURNUDVSRQYDçQLK
DOJRULWDPDPDåLQVNRJXĀHQMDXNOMXĀXMXþLNODVLILNDFLMXUHJUHVLMX
NODVWHURYDQMHLYDOLGDFLMXPRGHOD0RçHWHGDSURQDāHWHYLåHLQIRUPDFLMDR
VFLNLWOHDUQSDNHWXQDDGUHVLKWWSVFLNLWOHDUQRUJ
Ɣ pandasSDQGDVMHVRIWYHUVNDELEOLRWHNDRWYRUHQRJNRGD6DGUçLWDEHODUQH
VORçHQHVWUXNWXUHSRGDWDNDNRMHVHNRULVWH]DXOD]L]OD]LREUDGX
WDEHODUQLKSRGDWDNDXUD]OLĀLWLPDOJRULWPLPD3DQGDVELEOLRWHNDVDGUçL
PQRJRNRULVQLKIXQNFLMDLWDNRāHREH]EHāXMHYLVRNRRSWLPL]RYDQH
SHUIRUPDQVH9LåHGHWDOMDRSDQGDVELEOLRWHFLPRçHWHSURQDþLQDDGUHVL
KWWSSDQGDVS\GDWDRUJ
Ɣ 0DWSORWOLE0DWSORWOLEREH]EHāXMHDODWNH]DNUHLUDQMHPRþQLK
YL]XHOL]DFLMD3RGDFLPRJXGDEXGXSUHGVWDYOMHQLNDROLQLMVNLJUDILNRQL
JUDILNRQLUDVWXUDQMDWUDNDVWLGLMDJUDPLKLVWRJUDPLNUXçQLGLMDJUDPLLWDNR
GDOMH9LåHLQIRUPDFLMDPRçHWHSURQDþLQDDGUHVLKWWSVPDWSORWOLERUJ
Ɣ Seaborn6HDERUQPRçHWH]DPLVOLWLNDRVOLĀDQSRSXODUQRMggplot2
ELEOLRWHFLX5X=DVQRYDQDMHQD0DWSORWOLEXLREH]EHāXMHQDSUHGQL
LQWHUIHMV]DFUWDQMHEULOLMDQWQLKVWDWLVWLĀNLKJUDILNRQD9LåHGHWDOMDPRçHWH
SURQDþLQDDGUHVLKWWSVVHDERUQS\GDWDRUJ
Ɣ L3\WKRQL3\WKRQMHSREROMåDQDLQWHUDNWLYQDNRQ]RODNRMDMHGL]DMQLUDQDGD
ELRODNåDODSLVDQMHWHVWLUDQMHLLVSUDYOMDQMHJUHåDND3\WKRQNRGD
Ɣ 3RNUHWDQMH 3\WKRQSURJUDPD,QWHUDNWLYQLUHçLPSURJUDPLUDQMDMH
NRULVWDQ]DXĀHQMHLHNVSHULPHQWLVDQMHVDNRGRP3\WKRQSURJUDPLPRJX
GDEXGXVQLPOMHQLXWHNVWXDOQLIDMOXSRWUHERPHNVWHQ]LMHS\DWDMIDMO
PRçHGDVHSRNUHQHL]NRQ]ROH
20 POGLAVLJE 1 Pregled algoritama

Implementiranje Pythona pomoću Jupyter Notebooka


-Rå MHGDQ QDĀLQ GD SRNUHQHWH 3\WKRQ SURJUDPHU MH SRPRþX -XS\WHU 1RWHERRND
-XS\WHU 1RWHERRN REH]EHāXMH NRULVQLĀNL LQWHUIHMV ]DVQRYDQ QD SUHWUDçLYDĀX ]D
UD]YRMNRGD-XS\WHU1RWHERRNMHXSRWUHEOMHQ]DSUHGVWDYOMDQMHSULPHUDNRGDX
RYRMNQML]L0RJXþQRVWR]QDĀLYDQMDLRSLVLYDQMDNRGDSRPRþXWHNVWRYDLJUDILND
ĀLQLJDRGOLĀQRPDODWNRP]DSUHGVWDYOMDQMHLREMDåQMHQMHDOJRULWDPDLRGOLĀQDMH
DODWND]DXĀHQMH
'DELVmo]DSRĀHOLQRWHERRNSRWUHEQRMHGDSRNUHQHPRJupyter-notebookSURFHV
D]DWLPGDRWYRULPRRPLOMHQLSUHWUDçLYDĀLXQMHPXVWUDQLFXKWWSORFDOKRVW

,PDMWHQDXPXGDVH-XS\WHU1RWHERRNVDVWRMLL]UD]OLĀLWLKEORNRYDNRMLVHQD]LYD
MXþHOLMH
Tehnike dizajniranja algoritma 21

TEHNIKE DIZAJNIRANJA ALGORITMA


$OJRULWDPMHPDWHPDWLĀNRUHåHQMH]DSUREOHPL]VWYDUQRJVYHWD.DGDGL]DMQLUDPR
DOJRULWDPWUHEDORELGDLPDPRQDXPXVOHGHþDWULSUREOHPDGL]DMQDGRNUDGLPR
QDGL]DMQXLSRGHåDYDPRDOJRULWPH
Ɣ 3UREOHP'DOLDOJRULWDPSURL]YRGLUH]XOWDWHNRMHRĀHNXMHPR"
Ɣ 3UREOHP'DOLMHRYRQDMRSWLPDOQLMLQDĀLQGDGRELMHPRRYHUH]XOWDWH"
Ɣ 3UREOHP.DNRþHVHDOJRULWDPL]YUåLWLQDYHþLPVNXSRYLPDSRGDWDND"
9DçQRMHGDUD]XPHPRVORçHQRVWVDPRJSUREOHPDSUHQHJRåWRGL]DMQLUDPRUHåH
QMH]DQMHJD1DSULPHUNRULVQRMHGDGL]DMQLUDPRRGJRYDUDMXþHUHåHQMHDNRNDUDN
WHULåHPRSUREOHPXSRJOHGXQMHJRYLKSRWUHEDLVORçHQRVWL*HQHUDOQRDOJRULWPL
PRJXGDEXGXSRGHOMHQLQDVOHGHþHWLSRYHQDRVQRYXNDUDNWHULVWLNDSUREOHPD
Ɣ  OJRULWPLNRMLLQWHQ]LYQRNRULVWHSRGDWNH$OJRULWPLNRMLLQWHQ]LYQR
$
NRULVWHSRGDWNHVXGL]DMQLUDQLGDREUDāXMXYHOLNHNROLĀLQHSRGDWDND
2ĀHNXMHVHGDLPDMXUHODWLYQRMHGQRVWDYQH]DKWHYHREUDGH$OJRULWDP
NRPSUHVLMHSULPHQMHQQDRJURPDQIDMOMHGREDUSULPHUDOJRULWDPDNRML
LQWHQ]LYQRNRULVWHSRGDWNH=DWDNYHDOJRULWPHYHOLĀLQDSRGDWDNDVH
RĀHNXMHGDEXGHPQRJRYHþDRGPHPRULMHSURFHVQRJPHKDQL]PD MHGDQ
ĀYRULOLNODVWHU LPRçGDþHPRUDWLGDEXGHUD]YLMHQGL]DMQLWHUDWLYQH
REUDGH]DHILNDVQXREUDGXSRGDWDNDXVNODGXVD]DKWHYLPD
Ɣ 5DĀXQVNLLQWHQ]LYQLDOJRULWPL5DĀXQVNLLQWHQ]LYQLDOJRULWPLLPDMX
]QDĀDMQH]DKWHYHREUDGHDOLQHXNOMXĀXMXYHOLNHNROLĀLQHSRGDWDND
-HGQRVWDYDQSULPHUMHDOJRULWDP]DSURQDODçHQMHYHRPDYHOLNLKSURVWLK
EURMHYD3URQDODçHQMHVWUDWHJLMH]DGHOMHQMHDOJRULWPDXUD]OLĀLWHID]HWDNR
GDVXEDUHPQHNHRGID]DSDUDOHOL]RYDQHMHNOMXĀ]DPDNVLPL]LUDQMH
SHUIRUPDQVHDOJRULWPD
Ɣ  DĀXQVNLLQWHQ]LYQLDOJRULWPLNRMLLQWHQ]LYQRNRULVWHSRGDWNH3RVWRMH
5
RGUHāHQLDOJRULWPLNRMLNRULVWHYHOLNHNROLĀLQHSRGDWDNDLWDNRāHLPDMX
]QDĀDMQHUDĀXQVNH]DKWHYH$OJRULWPLXSRWUHEOMHQL]DL]YUåDYDQMHDQDOL]H
VHQWLPHQWDXçLYLPYLGHRVQLPFLPDVXGREDUSULPHUJGHVX]DKWHYL]D
SRGDWNHL]DREUDGXRJURPQL]DL]YUåDYDQMH]DGDWND7DNYLDOJRULWPLVX
DOJRULWPLNRMLYHRPDLQWHQ]LYQRNRULVWHUHVXUVHL]DKWHYDMXSDçOMLYR
SURMHNWRYDQMHDOJRULWPDLLQWHOLJHQWQXGRGHOXGRVWXSQLKUHVXUVD
'DELVPRNDUDNWHULVDOLSUREOHPXSRJOHGXQMHJRYe VORçHQRVWLLSRWUHEDNRULVQRMH
GDLVWUDçLPRQMHJRYHSRGDWNHLL]UDĀXQDPRGLPHQ]LMHGHWDOMQLMHåWRþHPRLXUDGLWL
XVOHGHþHPRGHOMNX
22 POGLAVLJE 1 Pregled algoritama

Dimenzija podataka
'D ELVPR NDWHJRUL]RYDOL GLPHQ]LMX SRGDWDND SUREOHPD SRJOHGDþHPR QMHJRY
RELPbrzinu i EURMQRVWWLSRYD (3Vs)NRMLVXGHILQLVDQLQDVOHGHþLQDĀLQ
Ɣ 2ELP HQJVolume 2ELPMHRĀHNLYDQDYHOLĀLQDSRGDWDNDNRMHþH
DOJRULWDPREUDGLWL
Ɣ Brzina HQJVelocity %U]LQDMHRĀHNLYDQDEU]LQDJHQHULVDQMDQRYLK
SRGDWDNDNDGDMHXSRWUHEOMHQDOJRULWDP0RçHGDEXGHQXOD
Ɣ %URMQRVWWLSRYD HQJVariety %URMQRVWWLSRYDR]QDĀDYDNROLNRUD]OLĀLWLK
WLSRYDSRGDWDNDVHRĀHNXMHGDþHGL]DMQLUDQLDOJRULWDPREUDGLWL
1DVOHGHþRMVOLFLGHWDOMQLMHMHSULND]DQR9DSRGDWDND&HQWDURYRJGLMDJUDPDSUL
ND]XMHQDMMHGQRVWDYQLMHPRJXþHSRGDWNHVDPDOLPRELPRPLQLVNRPEURMQRåþX
WLSRYDLEU]LQH.DNRVHXGDOMDYDPRRGFHQWUDVORçHQRVWSRGDWDNDVHSRYHþDYD
0RçHGDVHSRYHþDXMHGQRMLOLXYLåHRGWULGLPHQ]LMD1DSULPHUXGLPHQ]LMLEU]L
QHLPDPR%DWFKSURFHVNDRQDMMHGQRVWDYQLML]DWLPPeriodicD]DWLPNear Real-
7LPHSURFHV1DNUDMXLPDPR5HDO7LPHSURFHVNRMLMHQDMVORçHQLML]DREUDGXX
NRQWHNVWXEU]LQHSRGDWDND1DSULPHUNROHNFLMDRGçLYLKYLGHRVQLPDNDVDNXSOMH
QLKJUXSRPSUDþHQLKNDPHUDþHLPDWLYHOLNLRELPYHOLNXEU]LQXLYHOLNXEURMQRVW
WLSRYDLPRçGDþHELWLSRWUHEDQRGJRYDUDMXþLGL]DMQGDELVPRPRJOLHILNDVQRGD
VNODGLåWLPRLREUDGLPRSRGDWNH6DGUXJHVWUDQHMHGQRVWDYDQcsvIDMONUHLUDQX
([FHOXþHLPDWLPDOLRELPPDOXEU]LQXLPDOXEURMQRVWWLSRYD
Tehnike dizajniranja algoritma 23

1DSULPHUDNRMHXOD]QLSRGDWDNMHGQRVWDYDQcsvIDMORQGDþHRELPEU]LQDLEURM
QRVWWLSRYDSRGDWDNDELWLQLVND6DGUXJHVWUDQHDNRVXXOD]QLSRGDFLçLYLVWULP
EH]EHGQRVQLKYLGHRNDPHUDRQGDþHRELPEU]LQDLEURMQRVWWLSRYDSRGDWDNDELWL
SULOLĀQRYLVRNLLRYDMSUREOHPELWUHEDORGDLPDPRQDXPXGRNGL]DMQLUDPRDOJR
ULWDP]DQMHJD

Izračunavanje dimenzije
,]UDĀXQDYDQMHGLPHQ]LMHSRGUD]XPHYDSRWUHEHREUDGeLL]UDĀXQDYDQMD]DGDWLSUR
EOHP=DKWHYLREUDGHDOJRULWPDþHRGUHGLWLNRMDYUVWDGL]DMQDMHQDMHILNDVQLMD]D
QMHJD1DSULPHUDOJRULWPLGXERNRJXĀHQMDJHQHUDOQR]DKWHYDMXPQRJRSURFHVQH
PRþL7R]QDĀLGDMH]DDOJRULWPHGXERNRJXĀHQMDYDçQRLPDWLSDUDOHOQXDUKLWHNWX
UXVDYLåHĀYRURYDJGHJRGMHWRPRJXþH

Praktičan primer
3UHWSRVWDYLPRGDçHOLPRGDL]YUåLPRDQDOL]XVHQWLPHQWDQDYLGHRVQLPNX$QDOL]D
VHQWLPHQWDMHPHVWRJGHSRNXåDYDPRGDR]QDĀLPRUD]OLĀLWHGHORYHYLGHRVQLPNDVD
OMXGVNLPHPRFLMDPDWXJHVUHþHVWUDKDUDGRVWLIUXVWUDFLMHLHNVWD]H7RMHUDĀXQVNL
LQWHQ]LYDQ]DGDWDN]DNRMLMHSRWUHEQRPQRJRUDĀXQDVNHVQDJH.DRåWRþHWHYLGHWL
QDVOHGHþRMVOLFLGDELVPRGL]DMQLUDOLL]UDĀXQDYDQMHGLPHQ]LMHSRGHOLOLVPRREUDGX
XSHW]DGDWDNDNRMLVHVDVWRMHL]GYHID]H6YHWUDQVIRUPDFLMHSRGDWDNDLSULSUHPD
VXLPSOHPHQWLUDQHXWULPDSHUD=DWRþHPRSRGHOLWLYLGHRQDWULUD]OLĀLWHSDUWLFLMH
NRMHVHQD]LYDMXrazdelnici HQJsplit 1DNRQåWRVXPDSHULL]YUåHQLUH]XOWLUDMXþL
REUDāHQLYLGHRVQLPDNMHXEDĀHQXGYDDJUHJDWRUDNRMLVHQD]LYDMXUHGXNWRUL HQJ
reducer 'DELVPRL]YUåLOLSRWUHEQXDQDOL]XVHQWLPHQWDUHGXNWRULJUXSLåXYLGHR
VQLPDNXVNODGXVDHPRFLMDPD1DNUDMXUH]XOWDWLVXNRPELQRYDQLXL]OD]
24 POGLAVLJE 1 Pregled algoritama

Imajte na umu da se broj mapera direktno prevodi u izvršni paralelizam


algoritma. Optimalan broj mapera i reduktora zavisi od karakteristike
podataka, tipa algoritma koji treba da se upotrebi i broja dostupnih
resursa.

ANALIZA PERFORMANSE
$QDOL]DSHUIRUPDQVHDOJRULWPDMHYDçDQGHRQMHJRYRJGL]DMQD-HGDQRGQDĀLQDGD
SURFHQLPRSHUIRUPDQVXDOJRULWPDMHGDDQDOL]LUDPRQMHJRYXVORçHQRVW
7HRULMDVORçHQRVWLMHLVWUDçLYDQMHNROLNRVXNRPSOLNRYDQLDOJRULWPL'DELELRNRUL
VWDQDOJRULWDPELWUHEDORGDLPDWULNOMXĀQHIXQNFLMH
Ɣ  UHEDORELGDEXGHWDĀDQ$OJRULWDPQHþHELWLNRULVWDQDNRYDPQHGDMH
7
RGJRYDUDMXþHRGJRYRUH
Ɣ  REDUDOJRULWDPELWUHEDORGDEXGHUD]XPOMLY1DMEROMLDOJRULWDPQDVYHWX
'
QHþHELWLNRULVWDQDNRMHSUHYLåHNRPSOLNRYDQ]DLPSOHPHQWLUDQMHQD
UDĀXQDUX
Ɣ  REDUDOJRULWDPELWUHEDORGDEXGHHILNDVDQÿDNLDNRDOJRULWDP
'
SURL]YRGLWDĀDQUH]XOWDWQHþHYDPPQRJRSRPRþLDNRVHL]YUåDYDKLOMDGX
JRGLQDLOLDNR]DKWHYDPLOLMDUGXWHUDEDMWRYDPHPRULMH
3RVWRMHGYDPRJXþDWLSDDQDOL]H]DNYDQWLILNRYDQMHVORçHQRVWLDOJRULWPD
Ɣ $QDOL]DSURVWRUQHVORçHQRVWL3URFHQMXMH]DKWHYHPHPRULMHSRWUHEQe za
L]YUåDYDQMHDOJRULWPD
Ɣ $QDOL]DYUHPHQVNHVORçHQRVWL3URFHQMXMHYUHPHNRMHMHDOJRULPX
SRWUHEQR]DSRNUHWDQMH
Analiza performanse 25

Analiza prostorne složenosti


$QDOL]DSURVWRUQHVORçHQRVWLSURFHQMXMHNROLĀLQXSRWUHEQHPHPRULMHGDELDOJR
ULWDPREUDGLRXOD]QHSRGDWNH'RNREUDāXMHXOD]QHSRGDWNHDOJRULWDPWUHEDGD
VDĀXYDSULYUHPHQHVWUXNWXUHSRGDWDNDWUDQ]LMHQWDXPHPRULML1DĀLQQDNRMLMH
DOJRULWDPGL]DMQLUDQXWLĀHQDEURMWLSLYHOLĀLQXRYLKVWUXNWXUDSRGDWDND8GRED
GLVWULEXLUDQRJUDĀXQDUVWYDLVDVYHYHþLPNROLĀLQDPDSRGDWDNDNRMHMHSRWUHEQR
REUDGLWLDQDOL]DSURVWRUQHVORçHQRVWLSRVWDMHVYHYDçQLMD9HOLĀLQDWLSLEURMRYLK
VWUXNWXUDSRGDWDNDþHRGUHGLWL]DKWHYH]DPHPRULMX]DRVQRYQLKDUGYHU0RGHUQH
VWUXNWXUHSRGDWDNDXPHPRULMLXSRWUHEOMHQH]DGLVWULEXLUDQRL]UDĀXQDYDQMH²NDR
åWRMH5HVLOLHQW'LVWULEXWHG'DWDVHWV 5'' ²WUHEDORELGDLPDMXHILNDVQHPHKD
QL]PH]DGRGHOXUHVXUVDNRMLVXVYHVQL]DKWHYD]DPHPRULMRPXUD]OLĀLWLPID]DPD
L]YUåHQMDDOJRULWPD
$QDOL]DSURVWRUQHVORçHQRVWLMHREDYH]QD]DHILNDVQRGL]DMQLUDQMHDOJRULWDPD$NR
QLMHL]YUåHQDSUDYLOQDDQDOL]DSURVWRUQHVORçHQRVWLWRNRPGL]DMQLUDQMDRGUHāHQRJ
DOJRULWPDQHGRYROMQRGRVWXSQHPHPRULMH]DSULYUHPHQHVWUXNWXUHSRGDWDNDWUDQ
]LMHQWDPRçHGDGRYHGHGRQHSRWUHEQRJSUHOLYDQMDGLVNDåWRSRWHQFLMDOQRPRçH
]QDWQRGDXWLĀHQDSHUIRUPDQVXLHILNDVQRVWDOJRULWPD
8RYRPSRJODYOMXþHPRGHWDOMQLMHJRYRULWLRYUHPHQVNRMVORçHQRVWL3URVWRUQDVOR
çHQRVWþHELWLGHWDOMQRRSLVDQDX3RJODYOMX$OJRULWPLYHOLNLKUD]PHUDJGHþHPR
RSLVDWLGLVWULEXLUDQHDOJRULWPHYHOLNLKUD]PHUDVDVORçHQLPPHPRULMVNLP]DKWHYL
PDL]YUåHQMD

Analiza vremenske složenosti


$QDOL]DYUHPHQVNHVORçHQRVWLSURFHQMXMHNROLNRYUHPHQDMHSRWUHEQRDOJRULWPX
GDL]YUåLGRGHOMHQL]DGDWDNQDRVQRYXVYRMHVWUXNWXUH=DUD]OLNXRGSURVWRUQH
VORçHQRVWLYUHPHQVNDVORçHQRVWQH]DYLVLRGKDUGYHUDQDNRMHPþHVHDOJRULWDP
SRNUHWDWL$QDOL]DYUHPHQVNHVORçHQRVWL]DYLVLVDPRRGVWUXNWXUHVDPRJDOJRULW
PD8RSåWHQLFLOMDQDOL]HYUHPHQVNHVORçHQRVWLMHGDSRNXåDGDRGJRYRULQDRYD
YDçQDSLWDQMD²GDOLþHVHDOJRULWDPVNDOLUDWL".ROLNRGREURþHDOJRULWDPUXNRYDWL
YHþLPVNXSRYLPDSRGDWDND"
'DELVPRRGJRYRULOLQDRYDSLWDQMDWUHEDORELGDRGUHGLPRHIHNDWDOJRULWPDQD
SHUIRUPDQVXGRNVHYHOLĀLQDSRGDWDNDSRYHþDYDLGDVHXYHULPRGDMHDOJRULWDP
GL]DMQLUDQQDQDĀLQNRMLQHVDPRGDJDĀLQLWDĀQLPYHþĀLQLGDVHDOJRULWDPGREUR
VNDOLUD3HUIRUPDQVDDOJRULWPDSRVWDMHVYHYDçQLMD]DYHþHVNXSRYHSRGDWDNDX
GDQDåQMHPVYHWXÅYHOLNLKSRGDWDND´
26 POGLAVLJE 1 Pregled algoritama

8PQRJLPVOXĀDMHYLPDPRçHPRLPDWLYLåHRGMHGQRJSULVWXSDNRMLVXGRVWXSQL]D
GL]DMQLUDQMHDOJRULWPD&LOML]YUåDYDQMDDQDOL]HYUHPHQVNHVORçHQRVWLXRYRPVOX
ĀDMXELþHVOHGHþL

Å8]LPDMXþLXRE]LURGUHāHQLSUREOHPLYLåHRGMHGQRJDOJRULWPDNRMLMHQDMHILND-
VQLML]DXSRWUHEXXSRJOHGXYUHPHQVNHHILNDVQRVWL"´

0RJX SRVWRMDWL GYD RVQRYQD SULVWXSD ]D L]UDĀXQDYDQMH YUHPHQVNH VORçHQRVWL


DOJRULWPD
Ɣ 3ULVWXSSURILOLVDQMHPQDNRQLPSOHPHQWDFLMH8RYRPSULVWXSX
LPSOHPHQWLUDQLVXUD]OLĀLWLNDQGLGDWLDOJRULWDPDLXSRUHāHQe suQMLKRYe
SHUIRUPDQVe
Ɣ  HRUHWVNLSULVWXSSUHLPSOHPHQWDFLMH8RYRPSULVWXSXPDWHPDWLĀNLMH
7
SULEOLçQRRGUHāHQSHUIRUPDQVVYDNRJDOJRULWPDSUHSRNUHWDQMDDOJRULWPD
3UHGQRVWWHRUHWVNRJSULVWXSDMHåWR]DYLVLVDPRRGVWUXNWXUHVDPRJDOJRULWPD1H
]DYLVLRGKDUGYHUDNRMLþHELWLXSRWUHEOMHQ]DSRNUHWDQMHDOJRULWPDL]ERUDVRIWYHU
VNRJVWHNDSULOLNRPL]YUåHQMDLOLSURJUDPVNRJMH]LNDNRMLMHXSRWUHEOMHQ]DLPSOH
PHQWLUDQMHDOJRULWPD

Procena performansi
3HUIRUPDQVWLSLĀQRJDOJRULWPDþH]DYLVLWLRGWLSDSRGDWDNDNRMLVXPXGDWLNDR
XOD]1DSULPHUDNRVXSRGDFLYHþVRUWLUDQLXVNODGXVDNRQWHNVWRPSUREOHPDNRML
SRNXåDYDPRGDUHåLPRDOJRULWDPPRçHGDVHL]YUåDYDQHYHURYDWQREU]R$NRMH
XSRWUHEOMHQVRUWLUDQXOD]]DWHVWLUDQMHRGUHāHQRJDOJRULWPDWDGDþHUHzultatELWL
QHUHDOQRGREUDSHUIRUPDQVDåWRQLMHVWYDUQDUHIOHNVLMDQMHJRYLKUHDOQLKSHUIRUPDQVL
XYHþLQLVLWXDFLMD'DELVPRREUDGLOLRYX]DYLVQRVWDOJRULWPDXXOD]QLPSRGDFL
PDWUHEDORELGDUD]PRWULPRUD]OLĀLWHWLSRYHVOXĀDMHYDNDGDL]YUåDYDPRDQDOL]X
SHUIRUPDQVi

Najbolji slučaj
8QDMEROMHPVOXĀDMXSRGDFLNRMLVXGDWLNDRXOD]VXRUJDQL]RYDQLWDNRGDþHDOJRUL
WDPSUXçLWLVYRMQDMEROMiSHUIRUPDQV$QDOL]DQDMEROMHJVOXĀDMDGDMHJRUQMXJUDQLFX
SHUIRUPDQVi
Analiza performanse 27

Najgori slučaj
'UXJLQDĀLQGDSURFHQLPRSHUIRUPDQVDOJRULWPDMHGDSRNXåDPRGDSURQDāHPR
PDNVLPDOQRPRJXþHYUHPHNRMHMHSRWUHEQR]DL]YUåHQMH]DGDWNDSRGGDWLPVNX
SRPXVORYD2YDDQDOL]DQDMJRUHJVOXĀDMDDOJRULWPDMHSULOLĀQRNRULVQDMHUPRçHPR
GDJDUDQWXMHPREH]RE]LUDQDXVORYHGDþHSHUIRUPDQVDOJRULWPDXYHNELWLEROMi
RGEURMHYDNRMHGRELMHPRXUH]XOWDWXDQDOL]H$QDOL]DQDMJRUHJVOXĀDMDMHSRVHE
QRNRULVQD]DSURFHQXSHUIRUPDQVaNDGDUHåDYDPRVORçHQHSUREOHPHVDYHþLP
VNXSRYLPDSRGDWDND$QDOL]DQDMJRUHJVOXĀDMDGDMHGRQMXJUDQLFXSHUIRUPDQVi
DOJRULWPD

Prosečan slučaj
3URVHĀDQVOXĀDM]DSRĀLQMHGHOMHQMHPUD]OLĀLWLKPRJXþQLKXOD]DXUD]OLĀLWHJUXSH
=DWLPVHL]YUåDYDDQDOL]DSHUIRUPDQViL]MHGQRJUHSUH]HQWDWLYQRJXOD]DL]VYDNH
JUXSH1DNUDMXL]UDĀXQDYDVHSURVHNSHUIRUPDQViVYDNHJUXSH
$QDOL]DSURVHĀQRJVOXĀDMDQLMHXYHNWDĀQDMHUWUHEDGDUD]PRWULPRVYHUD]OLĀLWH
NRPELQDFLMHLPRJXþQRVWLXOD]D]DDOJRULWDPåWRQLMHXYHNMHGQRVWDYQR

Selektovanje algoritma
.DNR GD ]QDWH NRML DOJRULWDP MH EROMH UHåHQMH" .DNR GD ]QDWH NRML VH DOJRULWDP
SRNUHþHEUçH"9UHPHQVNDVORçHQRVWL%LJ2QRWDFLMD RSLVDQDNDVQLMHXRYRPSRJOD
YOMX VXVWYDUQRGREUHDODWNH]DRGJRYRUQDRYHWLSRYHSLWDQMD
'DELVWHYLGHOLJGHPRçHGDEXGHNRULVWDQX]PLPRMHGQRVWDYDQSULPHUXNRMHPMH
FLOMGDVRUWLUDPROLVWXEURMHYD3RVWRMLQHNROLNRGRVWXSQLKDOJRULWDPDNRMLPRJXGD
L]YUåH]DGDWDN3UREOHPMHNDNRGDL]DEHUHPRSUDYL
3UYRSULPHGEDNRMXPRçHPRGDGDPRMHGDDNRQHPDSUHYLåHEURMHYDQDOLVWLRQGD
QLMHYDçQRNRMLþHPRDOJRULWDPGDL]DEHUHPR]DVRUWLUDQMHOLVWHEURMHYD'DNOHDNR
SRVWRMLVDPREURMHYDXOLVWL Q  RQGDQLMHYDçQRNRMLþHPRDOJRULWDPL]DEUDWL
MHUYHURYDWQRL]YUåHQMHQHþHSRWUDMDWLYLåHRGQHNROLNRPLOLVHNXQGLĀDNLVDYHRPD
ORåHGL]DMQLUDQLPDOJRULWPRP$OLDNRYHOLĀLQDOLVWHSRVWDMHPLOLRQEURMHYDRQGD
MHL]ERUSUDYRJDOJRULWPDYHRPDYDçQD9HRPDORåHQDSLVDQDOJRULWDPPRçHGD
SRWUDMHLQHNROLNRVDWL]DSRNUHWDQMDGRNGREURGL]DMQLUDQLDOJRULWDPPRçHGDL]YU
åLVRUWLUDQMHOLVWH]DQHNROLNRVHNXQGL'DNOH]DYHþHXOD]QHVNXSRYHSRGDWDND
LPDVPLVODLQYHVWLUDWLYUHPHLWUXGL]YUåLWLDQDOL]XSHUIRUPDQViLL]DEUDWLNRUHNWQR
GL]DMQLUDQDOJRULWDPNRMLþHL]YUåLWLSRWUHEDQ]DGDWDNQDHILNDVDQQDĀLQ
28 POGLAVLJE 1 Pregled algoritama

Big O notacija
%LJ2QRWDFLMDVHNRULVWL]DNYDQWLILNRYDQMHSHUIRUPDQViUD]OLĀLWLKDOJRULWDPDNDNR
VHSRYHþDYDYHOLĀLQDXOD]D%LJ2QRWDFLMDMHMHGQDRGSRSXODUQLKPHWRGRORJLMDNRMD
VHNRULVWL]DL]YUåDYDQMHDQDOL]HQDMJRUHJVOXĀDMD5D]OLĀLWHYUVWH%LJ2QRWDFLMDRSL
VDQe suXRYRPRGHOMNX

Konstantna vremenska (O(1)) složenost


$NRDOJRULWDPNRULVWLLVWXNROLĀLQXYUHPHQD]DSRNUHWDQMHQH]DYLVQRRGYHOLĀLQH
XOD]QLKSRGDWDNDNDçHVHGDVHSRNUHþHXNRQVWDQWQRPYUHPHQXLSUHGVWDYOMHQRMH
sa 2  3RJOHGDMPRSULPHUSULVWXSDQWRPHOHPHQWXQL]D%H]RE]LUDQDYHOLĀLQX
QL]DSRWUHEQRMHNRQVWDQWQRYUHPHGDVHGRELMXUH]XOWDWL1DSULPHUVOHGHþDIXQN
FLMDþHYUDWLWLSUYLHOHPHQWQL]DLLPDVORçHQRVW2  
def getFirst(myList):
return myList[0]

5H]XOWDWMHSULND]DQNDR

Ɣ  RGDWDNQRYRJHOHPHQWDXstekXSRWUHERPNRPDQGHpushLOLXNODQMDQMH
'
HOHPHQWDL]VWHNDXSRWUHERPNRPDQGHpop%H]RE]LUDQDYHOLĀLQXVWHND
SRWUHEQDMHLVWDNROLĀLQDYUHPHQD]DGRGDYDQMHLOLXNODQMDQMHHOHPHQWD
Ɣ  ULVWXSDQMHHOHPHQWXKHåWDEHOH RSLVDQRX3RJODYOMXStrukture podataka
3
upotrebljene u algoritmima 
Ɣ %XFNHWVRUWLUDQMH RSLVDQRX3RJODYOMXStrukture podataka upotrebljene u
algoritmima 
Analiza performanse 29

Linearna vremenska (O(n)) složenost


=DDOJRULWDPVHNDçHGDLPDOLQHDUQXYUHPHQVNXVORçHQRVWSUHGVWDYOMHQXVD2 Q 
DNRMHYUHPHL]YUåHQMDGLUHNWQRSURSRUFLRQDOQRYHOLĀLQLXOD]D-HGQRVWDYDQSULPHU
MHGDGRGDPRHOHPHQWHXMHGQRGLPHQ]LRQDOQXVWUXNWXUXSRGDWDND
def getSum(myList):
sum = 0
for item in myList:
sum = sum + item
return sum

9LGLWHJODYQXSHWOMXDOJRULWPD%URMLWHUDFLMDXJODYQRMSHWOMLVHSRYHþDYDOLQHDUQR
VDSRYHþDQMHPYUHGQRVWLnNUHLUDMXþL2 Q VORçHQRVWQDVOHGHþRMVOLFL

1HNLGUXJLSULPHULRSHUDFLMDQL]DVXVOHGHþL
Ɣ 3UHWUDçLYDQMHHOHPHQWD
Ɣ 3URQDODçHQMHPLQLPDOQHYUHGQRVWLPHāXVYLPHOHPHQWLPDQL]D

Kvadratna vremenska (O(n2)) složenost


=DDOJRULWDPVHNDçHGDVHSRNUHþHXNYDGUDWQRPYUHPHQXDNRMHYUHPHL]YUåHQMD
DOJRULWPDSURSRUFLRQDOQRVDNYDGUDWRPXOD]QHYHOLĀLQHQDSULPHUMHGQRVWDYQD
IXQNFLMDNRMDUH]LPLUDGYRGLPHQ]LRQDOQLQL]MHVOHGHþD
def getSum(myList):
sum = 0
for row in myList:
for item in row:
sum += item
return sum
30 POGLAVLJE 1 Pregled algoritama

9LGLWHGDMHXJQHçāHQDXQXWUDåQMDSHWOMDXQXWDUGUXJHJODYQHSHWOMH2YDXJQH
çāHQDSHWOMDGDMHSUHWKRGQRPNRGXVORçHQRVW2 Q 

-RåMHGDQSULPHUMHDOJRULWDPPHKXUDVWRJVRUWLUDQMD RSLVDQRX3RJODYOMXStruk-
ture podataka upotrebljene u algoritmima 

Logaritamska vremenska (O(logn)) složenost


=DDOJRULWDPVHNDçHGDVHSRNUHþHXORJDULWDPVNRPYUHPHQXDNRMHYUHPHL]YUåH
QMDDOJRULWPDSURSRUFLRQDOQRVDORJDULWPRPXOD]QHYHOLĀLQH6DVYDNRPLWHUDFLMRP
XOD]QDYHOLĀLQDVHVDPQMXMH]DNRQVWDQWDQYLåHVWUXNLIDNWRU3ULPHUORJDULWDPVNH
VORçHQRVWLMHELQDUQDSUHWUDJD$OJRULWDPELQDUQHSUHWUDJHVHNRULVWL]DSURQDOD
çHQMHRGUHāHQRJHOHPHQWDXMHGQRGLPHQ]LRQDOQRMVWUXNWXULSRGDWDNDNDRåWRMH
3\WKRQOLVWD(OHPHQWLXQXWDUVWUXNWXUHSRGDWDNDWUHEDGDEXGXVRUWLUDQLXRSDGD
MXþHPUHGRVOHGX$OJRULWDPELQDUQHSUHWUDJHMHLPSOHPHQWLUDQXIXQNFLMLSRGQD]L
vom searchBinaryQDVOHGHþLQDĀLQ
def searchBinary(myList,item):
first = 0
last = len(myList)-1
foundFlag = False
while( first<=last and not foundFlag):
mid = (first + last)//2
if myList[mid] == item :
foundFlag = True
else:
if item < myList[mid]:
last = mid - 1
else:
first = mid + 1
return foundFlag

*ODYQDSHWOMDNRULVWLĀLQMHQLFXGDMHOLVWDXUHāHQDLGHOLOLVWXQDSRODVDVYDNRPLWH
UDFLMRPGRNQHGRāHGRUH]XOWDWD
Analiza performanse 31

1DNRQGHILQLVDQMDIXQNFLMHDOJRULWDPMHWHVWLUDQ]DSUHWUDJXRGUHāHQRJHOHPHQWDX
OLQLMDPDL$OJRULWDPELQDUQHSUHWUDJHMHGHWDOMQLMHRSLVDQX3RJODYOMXAlgo-
ULWPL]DVRUWLUDQMHLSUHWUDçLYDQMH
,PDMWHQDXPXGDPHāXĀHWLULWLSD%LJ2QRWDFLMHNRMLVXSUHGVWDYOMHQL2 Q LPD
QDMJRUHSHUIRUPDQVHD2 ORJQ LPDQDMEROMHSHUIRUPDQVH8VWYDULSHUIRUPDQV
2 ORJQ WLSDPRçHGDVHVPDWUD]ODWQLPVWDQGDUGRP]DSHUIRUPDQVELORNRJDOJR
ULWPD åWRVHQHSRVWLçHXYHN 6DGUXJHVWUDQH2 Q QLMHWROLNRORåNDR2 Q DOL
LSDNDOJRULWPLNRMLSULSDGDMXRYRMNODVLQHPRJXGDVHXSRWUHEHXYHOLNLPVNXSR
YLPDSRGDWDNDMHUYUHPHQVNDVORçHQRVWSRVWDYOMDRJUDQLĀHQMDXNROLĀLQLSRGDWDND
NRMLVHVWYDUQRPRJXREUDGLWL
-HGDQQDĀLQGDVPDQMLWHVORçHQRVWDOJRULWPDMHGDNRPSURPLWXMHWHQMHJRYXWDĀQRVW
NUHLUDMXþLWLSDOJRULWPDSRGQD]LYRPDSURNVLPDFLRQLDOJRULWDP
&HRSURFHVSURFHQHSHUIRUPDQVLDOJRULWDPDMHLWHUDWLYQHSULURGHNDRåWRMHLSULND
]DQRQDVOHGHþRMVOLFL
32 POGLAVLJE 1 Pregled algoritama

VALIDACIJA ALGORITMA
9DOLGDFLMDDOJRULWPDSRWYUāXMHGDREH]EHāXMHPDWHPDWLĀNRUHåHQMH]DSUREOHPNRML
SRNXåDYDPRGDUHåLPR3URFHVYDOLGDFLMHELWUHEDORGDSURYHUDYDUH]XOWDWH]DåWRMH
PRJXþHYLåHYUHGQRVWLLWLSRYDXOD]QLKYUHGQRVWL

Tačni, aproksimacioni i randomizirani algoritmi


9DOLGDFLMDDOJRULWPDWDNRāH]DYLVLLRGWLSDDOJRULWPDMHUVHWHKQLNHWHVWLUDQMD
UD]OLNXMX3UYRþHPRREMDVQLWLUD]OLNXL]PHāXGHWHUPLQLVWLĀNLKLUDQGRPL]LUDQLK
DOJRULWDPD
=DGHWHUPLQLVWLĀNHDOJRULWPHRGUHāHQLXQRVXYHNJHQHULåHSRWSXQRLVWLL]OD]$OL
]DRGUHāHQHNODVHDOJRULWDPDVHNYHQFDQDVXPLĀQLKEURMHYDMHWDNRāHXSRWUHEOMH
QDNDRXOD]åWRL]OD]ĀLQLUD]OLĀLWLPVYDNLSXWNDGDVHDOJRULWDPSRNUHQH$OJRULWDP
NODVWHURYDQMDNVUHGQMLKYUHGQRVWLNRMLMHGHWDOMQRRSLVDQX3RJODYOMXAlgoritmi
QHQDGJOHGDQRJPDåLQVNRJXĀHQMDMHSULPHUWDNYRJDOJRULWPD

$OJRULWPLWDNRāHPRJXGDEXGXSRGHOMHQLXVOHGHþDGYDWLSDQDRVQRYXSUHWSR
VWDYNHLOLDSURNVLPDFLMHXSRWUHEOMHQH]DSRMHGQRVWDYOMHQMHORJLNHåWRĀLQLGDVH
SRNUHþXEUçH
Ɣ  DĀDQDOJRULWDP=DWDĀQe algoritmeVHRĀHNXMHGDNUHLUDMXSUHFL]QR
7
UHåHQMHEH]XYRāHQMDLNDNYLKSUHWSRVWDYNLLDSURNVLPDFLMD
Ɣ  SURNVLPDFLRQLDOJRULWDP.DGDMHVORçHQRVWSUREOHPDSUHYHOLND]DGDWL
$
UHVXUVSRMHGQRVWDYLþHPRSUREOHPQHNLPSUHWSRVWDYNDPD$OJRULWPL
]DVQRYDQLQDRYLPSRMHGQRVWDYOMHQMLPDLOLSUHWSRVWDYNDPDVHQD]LYDMX
DSURNVLPDFLRQLDOJRULWPLNRMLQDPQHGDMXSUHFL]QRUHåHQMH
Validacija algoritma 33

3RJOHGDMPRSULPHUGDELVPRUD]XPHOLUD]OLNXL]PHāXWDĀQLKLDSURNVLPDFLRQLK
DOJRULWDPD²SR]QDWLSUREOHPWUJRYDĀNRJSXWQLNDNRMLMHSUHGVWDYOMHQJRGL
QD7UJRYDĀNLSXWQLNYDVL]D]LYDGDSURQDāHWHQDMNUDþLSXW]DRGUHāHQRJWUJRYFD
NRMLSRVHþXMHVYDNLJUDG L]OLVWHJUDGRYD D]DWLPVHYUDþDQDSRĀHWQXWDĀNX]ERJ
ĀHJDVHLQD]LYDWUJRYDĀNLSXWQLN3UYLSRNXåDMGDREH]EHGLPRUHåHQMHþHXNOMXĀL
YDWLJHQHULVDQMHVYLKSHUPXWDFLMDJUDGRYDLELUDQMHNRPELQDFLMHJUDGRYDNRMDMD
QDMMHIWLQLMD6ORçHQRVWRYRJSULVWXSD]DREH]EHāLYDQMHUHåHQMDMH2 Q JGHQSUHG
VWDYOMDEURMJUDGRYD2ĀLJOHGQRMHGDYUHPHQVNDVORçHQRVWSRVWDMHWHåND]DXSUD
YOMDQMH]DYLåHRGJUDGRYD
$NRMHEURMJUDGRYDYHþLRGMHGDQQDĀLQGDVPDQMLPRVORçHQRVWMHGDSUHGVWDYL
PRQHNHDSURNVLPDFLMHLSUHWSRVWDYNH
=DDSURNVLPDFLRQHDOJRULWPHYDçQRMHGDSRGHVLPRRĀHNLYDQMD]DWDĀQRVWNDGD
SULNXSOMDPR]DKWHYH9DOLGDFLMDDSURNVLPDFLRQRJDOJRULWPDMHXVWYDULYHULILNR
YDQMHGDMHJUHåNDUH]XOWDWDXQXWDUSULKYDWOMLYLKJUDQLFD

Objašnjenje
.DGDVXDOJRULWPLXSRWUHEOMHQL]DYDçQHVOXĀDMHYeYDçQRLPDWLPRJXþQRVWREMDåQMH
QMDUD]ORJDVYDNRJUH]XOWDWDNDGDJRGMHWRSRWUHEQR7RMHYDçQRGDELVPRVHXYH
ULOLGDRGOXNH]DVQRYDQHQDUH]XOWDWLPDDOJRULWDPDQHSUHGVWDYOMDMXRGVWXSDQMD
0RJXþQRVWWDĀQRJLGHQWLILNRYDQMDIXQNFLMDNRMHVHNRULVWHGLUHNWQRLOLLQGLUHNWQR
]DGRQRåHQMHRGUHāHQHRGOXNHQD]LYDVHREMDåQMHQMHDOJRULWPD$OJRULWPLNDGD
VHNRULVWH]DYDçQHVOXĀDMHYHXSRWUHEHWUHEDORELGDEXGXSURFHQMHQL]DRGVWXSD
QMDLSUHGUDVXGH(WLĀNDDQDOL]DDOJRULWDPDSRVWDODMHVWDQGDUGQLGHRYDOLGDFLRQRJ
SURFHVD]DRQHDOJRULWPHNRMLPRJXGDXWLĀXQDGRQRåHQMHRGOXNDNRMHVHRGQRVH
QDçLYRWOMXGL
=DDOJRULWPHNRMLVHNRULVWH]DGXERNRXĀHQMHREMDåQMHQMHMHWHåNRSRVWLþL1DSUL
PHUDNRVHDOJRULWDPNRULVWL]DRGELMDQMHSULMDYH]DKLSRWHNXRVRELYDçQRMHGD
LPDPRWUDQVSDUHQWQRVWLPRJXþQRVWREMDåQMHQMDUD]ORJD
$OJRULWDPVNRREMDåQMHQMHMHDNWLYQDREODVWLVWUDçLYDQMD-HGQDRGHILNDVQLKWHKQL
NDNRMa MHQHGDYQRUD]YLMHQDMH/RFDO,QWHUSUHWDEOH0RGHO$JQRVWLF([SODQDWL-
RQV /,0( NDRåWRMHSUHGVWDYOMHQRQD22. $VVRFLDWLRQIRU&RPSXWLQJ0DFKLQHU\
$&0 QD6SHFLDO,QWHUHVW*URXSRQ.QRZOHGJH'LVFRYHU\ 6,*.'' PHāXQD
URGQRMNRQIHUHQFLMLRWNULþDLLVWUDçLYDQMDSRGDWDNDJRGLQH/,0(MH]DVQRYD
QDQDNRQFHSWXXNRMHPVHPDOHSURPHQHXYRGHXXOD]]DVYDNXLQVWDQFXD]DWLP
VHPDSLUDORNDOQDJUDQLFDRGOXNH]DWXLQVWDQFX=DWLPVHNYDQWLILNXMHXWLFDMVYDNH
SURPHQOMLYH]DGDWXLQVWDQFX
34 POGLAVLJE 1 Pregled algoritama

REZIME
8RYRPSRJODYOMXVPRXĀLOLRRVQRYDPDDOJRULWDPD3UYRVPRXĀLOLRUD]OLĀLWLP
ID]DPDUD]YRMDDOJRULWPD*RYRULOLVPRRUD]OLĀLWLPQDĀLQLPDVSHFLILNRYDQMDORJL
NHDOJRULWPDNRMDMHSRWUHEQD]DQMHJRYRGL]DMQLUDQMH=DWLPVPRRSLVDOLNDNRGD
GL]DMQLUDPRDOJRULWDP8ĀLOLVPRRGYDUD]OLĀLWDQDĀLQDDQDOL]LUDQMDSHUIRUPDQVH
DOJRULWPD1DNUDMXVPRXĀLOLRUD]OLĀLWLPDVSHNWLPDYDOLGDFLMHDOJRULWPD
1DNRQRYRJSRJODYOMDELWUHEDORGDUD]XPHPRSVHXGRNRGDOJRULWPD7UHEDOREL
GDUD]XPHPRUD]OLĀLWHID]HXUD]YRMXLUDVSRUHāLYDQMXDOJRULWPD7DNRāHVPRXĀLOL
NDNRGDNRULVWLPR%LJ2QRWDFLMX]DSURFHQXSHUIRUPDQVLDOJRULWPD
8VOHGHþHPSRJODYOMXþHPRJRYRULWLRVWUXNWXUDPDSRGDWDNDNRMHVHNRULVWHXDOJR
ULWPLPD3UYRþHPRJRYRULWLRVWUXNWXUDPDSRGDWDNDNRMHVXGRVWXSQHX3\WKRQX
=DWLPþHPRSUHJOHGDWLNDNRPRçHPRGDXSRWUHELPRRYHVWUXNWXUHSRGDWDND]D
NUHLUDQMHVRILVWLFLUDQLMLKVWUXNWXUDSRGDWDNDNDRåWRVXVWHNRYLUHGRYLLVWDEODNRML
VXQDPSRWUHEQLGDELVPRNUHLUDOLVORçHQHDOJRULWPH

You might also like