nasport.pmf.ni.ac.rs · 2015. 2. 1. · analiza heširanja analiza heširanja koliko se brzo može...

63

Upload: others

Post on 21-Jan-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje
Page 2: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje
Page 3: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje
Page 4: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje
Page 5: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje
Page 6: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje
Page 7: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje
Page 8: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje
Page 9: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje
Page 10: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje
Page 11: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje
Page 12: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje
Page 13: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje
Page 14: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje
Page 15: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

Problem Solving with Constraints

Intelligent Backtracking Algorithms 16

Example: BT (the dumbest example ever)

{1,2,3,4,5}

{1,2,3,4,5}

{1,2,3,4,5}

{1,2,3,4,5}

{1,2,3,4,5}

V2

V1

V3

V4

V5

CV3,V4={(V3=1,V4=3)}

CV2,V5={(V2=5,V5=1),(V2=5,V5=4)}

-

v[1]

v[2]

v[3]

v[4]

v[5]

v[0]

1

1

1

1

2 1 3 4

2 3 4 5

etc…

Page 16: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje
Page 17: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje
Page 18: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje
Page 19: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje
Page 20: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje
Page 21: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje
Page 22: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje
Page 23: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje
Page 24: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje
Page 25: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje
Page 26: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje
Page 27: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranje

Izbegavanje kolizije pomo cu lanacaAnaliza heširanja

Izbegavanje kolizije pomocu lanaca

U najgorem slucaju vreme ubacivanja je O(1), a proceduraubacivanja delom je brza zbog toga što pretpostavlja daelement x koji se ubacuje ne postoji vec u tabeli. Ovapretpostavka se može proveriti pretraživanjem elemenata preubacivanja. Najgore vreme pretraživanja proporcionalno jedužini liste.

Page 28: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranje

Izbegavanje kolizije pomo cu lanacaAnaliza heširanja

Izbegavanje kolizije pomocu lanaca(cont.)

Brisanje elementa x iz liste može se ostvariti u O(1) vremenu,ako je lista dvostruko povezana (za ulaz koristi x, a ne njegovkljuc).Kod jednostruko povezane liste ne bi od velike koristi bilo uzetielement x umesto kljuca k, jer bi morali da nadjemo x u listiT[h(key[x])], pa bi trebalo uspostaviti vezu izmedju NEXT iprethodnika od x kada se x izbaci. Dakle, u ovom slucaju biprocedure pretraživanja i brisanja imale isto prolazno vreme.

Page 29: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranje

Izbegavanje kolizije pomo cu lanacaAnaliza heširanja

Analiza heširanja

Koliko se brzo može izvršiti heširanje formiranjem lanaca?

Koliko je vremena potrebno za pretraživanje liste da bi senašao element sa datim kljucem?

Definicija

Za datu heš tabelu T sa m celija koja skladišti n elemenata

definisacemo faktor opterecenja α =n

mza tabelu T, koji

predstavlja prosecan broj elemenata smeštenih u jednu celiju.

Najgori slucaj ponašanja pri heširanju formiranjem lanaca jekada svih n kljuceva hešira u istu celiju i formira se lista dužinen. Najgori slucaj pretravživanja tada je O(n) plus vremeneophodno da se izracuna heš funkcija.

Page 30: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranje

Izbegavanje kolizije pomo cu lanacaAnaliza heširanja

Analiza heširanja

Koliko se brzo može izvršiti heširanje formiranjem lanaca?

Koliko je vremena potrebno za pretraživanje liste da bi senašao element sa datim kljucem?

Definicija

Za datu heš tabelu T sa m celija koja skladišti n elemenata

definisacemo faktor opterecenja α =n

mza tabelu T, koji

predstavlja prosecan broj elemenata smeštenih u jednu celiju.

Najgori slucaj ponašanja pri heširanju formiranjem lanaca jekada svih n kljuceva hešira u istu celiju i formira se lista dužinen. Najgori slucaj pretravživanja tada je O(n) plus vremeneophodno da se izracuna heš funkcija.

Page 31: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranje

Izbegavanje kolizije pomo cu lanacaAnaliza heširanja

Analiza heširanja(cont.)

Prosecni uspeh heširanja zavisi od toga koliko dobro hešfunkcija distribuira skup kljuceva u m celija.Pretpostavimo da je, za proizvoljan element jednakaverovatnoca da hešira u bilo koju od m celija (bez obzira naheširanje ostalih elemenata).

Definicija

Ovu pretpostavku nazivamo jednostavno uniformno heširanje.

Dužinu liste T[j] sa nj, za j = 1, 2, . . . m − 1. Tada jen = n1 + n2 + · · · nm−1 i prosecna vrednost za nj je

E[nj] = α =n

m.

Page 32: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranje

Izbegavanje kolizije pomo cu lanacaAnaliza heširanja

Analiza heširanja(cont.)

Pretpostavimo da heš funkcija h može da se izracuna u O(1)vremenu, tako da vreme potrebno za traženje elementa sakljucem k zavisi linearno od dužine nh(k) liste T[h(k)]. Nekaocekivani broj elemenata koji se ispituju algoritmom budeupravo broj elemenata u listi T[h(k)] za koje se proverava da lije njihov kljuc upravo k.Posmatrajmo dva slucaja:

Pretraživanje je bezuspešno, tj. ni jedan element u tabelinema kljuc k.

Uspešno se pronalazi element sa kljucem k.

Page 33: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranje

Izbegavanje kolizije pomo cu lanacaAnaliza heširanja

Analiza heširanja(cont.)

Teorema:U heš tabeli u kojoj je kolizija izbegnuta formiranjem lanaca, zabezuspešno traganje ocekivano vreme je O(1 + α), uz pret-postavku da je u pitanju jednostavno, uniformno heširanje.

Dokaz: U odnosu na pretpostavku da se radi o jednostavnom,uniformnom heširanju, za proizvoljan kljuc k, koji nije vecsmešten u tabelu, jednaka je verovatnoca da ce biti heširan ubilo koju od m celija. Ocekivano vreme bezuspešnogtraženjakljuca k jednako je ocekivanom vremenu da se do krajapretraži lista T[h(k)], cija je ocekivana dužina E[nh(k)] = α.Dakle, ocekivani broj elemenata koji se ispituju u neuspešnompretraživanju je α, pa je apsolutno vreme O(1 + α) (ukljucujucii vreme racunanja heš funkcije).

Page 34: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranje

Izbegavanje kolizije pomo cu lanacaAnaliza heširanja

Analiza heširanja(cont.)

Situacija uspešnog pretraživanja je pomalo razlicita, obzirom dasvaka lista nema jednaku verovatnocu traženja.Teorema:U heš tabeli u kojoj je kolizija izbegnuta formiranjem lanaca,vreme uspešnog traganja je O(1 + α), uz pretpostavku da jerec o jednostavnom, uniformnom heširanju.

Dokaz: Pretpostavimo da svaki od n elemenata smeštenih utabeli ima jednake verovatnoce da je baš to element koji setraži u tabeli. Broj elemenata koji se ispituju tokom uspešnogtraženja elementa x, za jedan je veci od broja elemenata kojiprethode elementu x u listi. Elementi koji su u listi ispred xubaceni su posle njega, jer se novi elementi smeštaju napocetak liste.

Page 35: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranje

Izbegavanje kolizije pomo cu lanacaAnaliza heširanja

Analiza heširanja(cont.)

Oznacimo sa xi i-ti element ubacen u tabelu, za i = 1, 2, . . . n ineka je ki = key[xi]. Za kljuceve ki i kj definišimo indikatorslucajne promenljive Xij = I{h(ki) = h(kj)}. U odnosu napretpostavku da je u pitanju jednostavno, uniformno heširanje

imamo da je E[Xij] =1

m. Tako je ocekivani broj elemenata koji

se ispituju pri uspešnom traženju:

E[1

n

n∑

i=1

(1 +n

j=i+1

Xij)] =1

n

n∑

i=1

(1 +n

j=i+1

E[Xij])

=1

n

n∑

i=1

(1 +n

j=i+1

1

m) = 1 +

1

nm

n∑

i=1

(n − i)

Page 36: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranje

Izbegavanje kolizije pomo cu lanacaAnaliza heširanja

Analiza heširanja(cont.)

= 1 +1

nm(

n∑

i=1

n −n

i=1

i) = 1 +1

nm(n2 − n(n + 1)

2)

1 +n

m− n + 1

2m= 1 +

n − 1

2m= 1 +

α

2− α

2n

Dakle, vreme uspešnog pretraživanja jeO(1 + α

2 − α2n) = O(1 + α). Razmotrimo sada neke odluke u

pogledu dizajna dobrih heš funkcija i predstavimo tri šeme zanjihovo kreiranje.Dve šeme, heširanje deljivoscu i heširanje množenjem suheuristicke, dok treca, šema univerzalnog heširanja, koristislucajnost da obezbedi dobar uspeh.

Page 37: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranje

Interpretacija klju ceva kao prirodnih brojevaMetod deljivostiMetod množenjaUniverzalno heširanje

Dobra heš funkcija

Definicija

Šta cini dobru heš funkciju?

Dobra heš funkcija aproksimativno zadovoljava pretpostavkujednostavnog, uniformnog heširanja: svaki kljuc ima jednakuverovatnocu da se smesti u jednu od m celija, bez obzira gdesu drugi kljucevi heširani. Na žalost, obicno je nemoguceproveriti ovaj uslov, jer najcešce nije poznata verovatnocadistribucije kljuceva.Povremeno nam je nacin distribucije poznat. Na primer, ako jepoznato da su nezavisni kljucevi realni brojevi k uniformnodistribuirani u rangu 0 6 k < 1, heš funkcija h(k) = ⌊km⌋zadovoljava uslove jednostavnog, uniformnog heširanja.

Page 38: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranje

Interpretacija klju ceva kao prirodnih brojevaMetod deljivostiMetod množenjaUniverzalno heširanje

Interpretacija kljuceva

Primer:Posmatramo simbolicku tablu (sto kompajlera) u kojoj sukljucevi stringovi karaktera koji predstavljaju identifikatoreprograma. Dobra heš funkcija di trebala da minimizira šansu daslicni simboli, na pr. pt i pts heširaju u istu celiju.

Najveci broj heš funkcija pretpostavlja daje prostor kljucevaskup N = {0, 1, 2 . . . } prirodnih brojeva. Tako, ako kljucevinisu prirodni brojevi, treba naci nacin za njihovu interpretaciju uvidu prirodnih brojeva. Na primer, string karaktera može da sepredstavi kao prirodan broj izražen u odgovarajucoj bazisistema (binarni zapis). Tako identifikator pt može bitipredstavljen kao par decimalnih celih brojeva (112, 116)-njihoviASCII kodovi.

Page 39: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranje

Interpretacija klju ceva kao prirodnih brojevaMetod deljivostiMetod množenjaUniverzalno heširanje

Metod deljivosti

Primenom metoda deljivosti pri kreiranju heš funkcije slikamokljuc k na jedno od m mesta, uzimajuci ostatak pri deljenju k sam. To znaci da je heš funkcija definisana sa h(k) = k mod m.Obzirom da zahteva samo prostu operaciju deljenja, heširanjedeljivošcu je prilicno brzo.Kada koristimo metod deljivosti obicno izbegavamo nekevrtednosti za m. Na primer, ne bi trebalo da m bude stepenbroja 2. Ako je m = 2p, onda je h(k) upravo najniži p-bitni deood k.Prost broj koji nije suviše blizak tacnom stepenu broja 2 jestedobar izbor za m. Pretpostavimo da želimo da otklonimo kolizijuformiranjem lanaca i dodelom heš tabele koja nosi n = 2000stringova karaktera, od kojih svaki karakter ima osam bitova.

Page 40: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranje

Interpretacija klju ceva kao prirodnih brojevaMetod deljivostiMetod množenjaUniverzalno heširanje

Metod množenja

Nije nam teško da ispitamo po 3 elementa, pa dodeljujemo heš

tabele velicine m = 701. 701 je prost broj blizu2000

3i nije blizu

ni jednog stepena broja 2. Uzimajuci da je svaki kljuc k ceobroj, naša heš funkcija ce biti h(k) = k mod 701.

Metod množenja

Metod množenja za kreiranje heš funkcija obavlja se u dvakoraka. Najpre množimo kljuc k konstantom A ranga 0 < A < 1i izdvajamo mali deo od kA. Zatim ovu vrednost množimo sa mi uzimamo najnižu vrednost rezultata, tj. h(k) = [m(kA mod 1)],gde je ′′kA mod 1′′ vrednost kA − [kA]. Prednost metodamnoženja je što vrednost za m nije kriticna.

Page 41: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranje

Interpretacija klju ceva kao prirodnih brojevaMetod deljivostiMetod množenjaUniverzalno heširanje

Metod množenja

Obicno uzimamo da je to stepen broja 2, obzirom da se tadafunkcija može implementirati na vecini racunara. Pretpostavimoda je velicina reci w bitova i da k odlazi na jednu rec.

Restrikujmo A na razlomke oblikas

2w, gde je s ceo broj

0 < s < 2w. Najpre umnožavamo k w-bitnim celim brojems = A · 2w. Rezultat je r12w + r0, gde je r1 naviša vrednost uproizvodu, a r0 najniži stepen proizvoda. Željena p-bitna hešvrednost sastoji se od p najznacajnijih bitova od r0.I ako ovaj metod radi sa proizvoljnom vrednošcu konstante A,optimalni izbor vrednosti zavisi od karaktera podataka koji seheširaju. Knut predlaže da se uzme

A ≈√

5 − 1

2≈ 0, 6180339887 . . . .

Page 42: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranje

Interpretacija klju ceva kao prirodnih brojevaMetod deljivostiMetod množenjaUniverzalno heširanje

Metod množenja(cont.)

Primer:

Pretpostavimo da je k = 123456, p = 14, m = 214 = 16384 iw = 32.

Page 43: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranje

Interpretacija klju ceva kao prirodnih brojevaMetod deljivostiMetod množenjaUniverzalno heširanje

Metod množenja(cont.)

Primer:

Poslušajmo Knuta i približimo broj A =s

232da bude najbliži

broju

√5 − 1

2. Tako dobijamo da je A =

2654435769

232.

Tada je k · s = 327706022297664 = (76300 · 232) + 17612864, tj.r1 = 76300 i r0 = 17612864.Tako se r0 ekstrakuje u h(k) = 64.

Page 44: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranje

Interpretacija klju ceva kao prirodnih brojevaMetod deljivostiMetod množenjaUniverzalno heširanje

Univerzalno heširanje

Ako zlonameran neprijatelj bira kljuceve koji treba da seheširaju nekom fiksiranom heš funkcijom, on bira n kljuceva kojiheširaju u istu celiju za prosecno vreme O(n). Proizvoljnafiksirana heš funkcija ovako se ponaša na najgori mogucinacin. Jedini efektivan nacin da se situacija popravi je da seheš funkcija izabere slucajno, potpuno nezavisno od kljucevakoji treba da se uskladište.Ovakav pristup koji se naziva univerzalno heširanje može daproizvede dobar uspeh bez obzira na kljuceve koje je neprijateljizabrao.Osnovna ideja univerzalnog heširanja je da slucajno izabereheš funkciju iz klase funkcija koja je definisana na pocetkuizvodjenja.

Page 45: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranje

Interpretacija klju ceva kao prirodnih brojevaMetod deljivostiMetod množenjaUniverzalno heširanje

Univerzalno heširanje(cont.)

Kao i u slucaju brzog sortiranja i ovde slucajnost garantuje dani jedan zaseban ulaz nece izazvati najgori slucaj ponašanja.Zbog slucajnosti algoritam može da se ponaša razlicito zasvako izvodjenje, cak i kad je ulaz isti.Ako se vratimo na primer simbolicke tabele kompajlera,dolazimo do toga da slucajan izbor identifikatora jezika nemože da uslovi loš uspeh.(Verovatnoca da kompajlerslucajnoizabere lošu situaciju veoma je mala.)Neka je H konacna kolekcija heš funkcija koje slikaju datuprostor kljuceva U u skup {0, 1, . . . , m − 1}.

Page 46: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranje

Interpretacija klju ceva kao prirodnih brojevaMetod deljivostiMetod množenjaUniverzalno heširanje

Univerzalno heširanje(cont.)

Definicija:

Kolekcija heš funkcija je univerzalna ako je, za svaki parkljuceva k, l ∈ U, broj heš funkcija h ∈ H za koje je

h(k) = h(l) jednak najviše|H |m

.

Drugim recima, za heš funkciju slucajno izabranu iz H , šansa

za koliziju kljuceva k i l nije veca od1

m, ako su h(k) i h(l)

slucajno izabrane iz skupa {0, 1, . . . , m − 1}.Naredna teorema ce pokazati da univerzalna klasa heš funkcijadaje dobro ponašanje u prosecnom slucaju. Oznacimo sa ni

dužinu liste T[i].

Page 47: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranje

Interpretacija klju ceva kao prirodnih brojevaMetod deljivostiMetod množenjaUniverzalno heširanje

Univerzalno heširanje(cont.)

Teorema:Neka je heš funkcija h izabrana iz uniformne kolekcije hešfunkcija i neka se koristi za heširanje n kljuceva u tabelu Tvelicine m, uz korišcenje lanaca da se izbegne kolizija. Ako kljuck nije u tabeli, onda je ocekivana dužina E[nh(k)] najviše α. Akoje k u tabeli, ocekivana dužina E[nh(k)] koja sadrži kljuc k je na-jviše 1 + α.

Dokaz: Primetimo da ocekivanje zavisi od izbora heš funkcije, ane od distribucije kljuceva. Za svaki par kljuceva k i l definišemoindikator slucajne promenljive Xkl = I{h(k) = h(l)}. Obzirom

da do kolizije dva kljuca dolazi najviše sa verovatnocom1

m,

Page 48: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranje

Interpretacija klju ceva kao prirodnih brojevaMetod deljivostiMetod množenjaUniverzalno heširanje

Univerzalno heširanje(cont.)

to imamo da je E[Xkl] 61

m.

Dalje cemo definisati, za svaki kljuc k slucajnu promenljivu Yk

koja je jednaka broju kljuceva, razlicitih od k, koji heširaju u istuceliju kao k, tako da je

Yk =∑

l∈Tl 6=k

Xkl.

Prema tome imamo

E[Yk] = E[

l∈Tl 6=k

Xkl]

=∑

l∈Tl 6=k

E[Xkl] 6∑

l∈Tl 6=k

1

m.

Page 49: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranje

Interpretacija klju ceva kao prirodnih brojevaMetod deljivostiMetod množenjaUniverzalno heširanje

Univerzalno heširanje(cont.)

Ostatak dokaza zavisi od toga da li je kljuc k u tabeli T.(i) Ako je k /∈ T onda je nh(k) = Yk i |{l ∈ T| l 6= k}| = n, pa jeE[nh(k)] = E[Yk] 6 n

m = α. (ii) Ako k ∈ T, kako se javlja u listi

T[h(k)] i broj Yk ne sadrži kljuc k, imamo da je nh(k) = Yk + 1 i|{l ∈ T| l 6= k}| = n − 1. Dakle važi

E[nh(k)] = E[Yk] + 1 6n − 1

m+ 1 =

n

m+ 1 − 1

m

= 1 + α − 1

m6 1 + α.

Page 50: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranje

Interpretacija klju ceva kao prirodnih brojevaMetod deljivostiMetod množenjaUniverzalno heširanje

Univerzalno heširanje(cont.)

Posledica:Korišcenje univerzalnog heširanja u kome se kolizija izbegavapomoc u lanaca u tabeli T sa m celija, ocekivano vreme je O(n)za proizvoljan niz od n INSERT, SEARCH i DELETE operacijakoje sadrže O(m) INSERT operacija.

Dokaz: Obzirom da je broj ubacivanja O(m), imamo da jen = O(m), pa je α = O(1). Operacije INSERT i DELETEzahtevaju konstantno vreme i ocekivano vreme za SEARCHoperaciju je O(1). Zbog linearnosti ocekivanja, ocekivanovreme za taj niz operacija je n · O(1), tj. O(n) .

Page 51: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranje

Interpretacija klju ceva kao prirodnih brojevaMetod deljivostiMetod množenjaUniverzalno heširanje

Konstrukcija univerzalne klase heš funkcija

Konstrukcija univerzalne klase heš funkcija

Relativno je lako konstruisati univerzalnu klasu heš funkcija, uzmalu primenu teorije brojeva.Pocinjemo izborom prostog broja p koji je dovoljno veliki, takoda su sve moguce vrednosti kljuca k sadržane u rangu{1, 2, . . . , p − 1}. Kako Zp oznacava skup {0, 1, 2, . . . , p − 1},skup {1, 2, . . . , p − 1} oznacicemo sa Z

∗p . Pošto

pretpostavljamo da je velicina prostora kljuceva veca od brojacelija heš tabele imamo da je p > m. Sada definišemo hešfunkciju ha,b, za proizvoljno a ∈ Z

∗p i b ∈ Zp korišcenjem

linearne transformacije izvedene iz redukcije po modulu p izatim po modulu m:

ha,b(k) =(

(ak + b) mod p)

mod m.

Page 52: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranje

Interpretacija klju ceva kao prirodnih brojevaMetod deljivostiMetod množenjaUniverzalno heširanje

Konstrukcija univerzalne klase heš funkcija (cont.)

Na primer, za p = 17 i m = 6 imamo h3,4(8) = 5. Neka jefamilija svih heš funkcija

Hp,m = {ha,b| a ∈ Z∗p , b ∈ Zp}.

Svaka heš funkcija ha,b slika Zp u Zm. Ova klasa heš funkcijaima lepu osobinu da je velicina m izlaznog ranga proizvoljan, neobavezno prost broj. Kako imamo p − 1-u mogucnost izbora zaa i p izbora za b, ima p(p − 1) heš funkcija u Hp,m.

Teorema:Napred definisana klasa Hp,m heš funkcija je univerzalna.

Page 53: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranje

Interpretacija klju ceva kao prirodnih brojevaMetod deljivostiMetod množenjaUniverzalno heširanje

Konstrukcija univerzalne klase heš funkcija(cont.)

Dokaz: Posmatrajmo kljuceve k i l iz Zp, tako da je k 6= l.Zadatu heš funkciju ha,b uvedimo oznake:

r = (ak + b) mod p, s = (al + b) mod p.

Tada je r − s = a(k − l) mod p, što znaci da je r 6= s. Dakle, priracunanju svake heš funkcije ha,b iz Hp,m, razliciti ulazi k i lslikaju se u razlicite vrednosti r i s po modulu p. To znaci danema kolizije na "nivou mod p". Štaviše, svaki od p(p − 1)izbora parova (a, b), a 6= 0 povlaci razlicite rezultujuce parove(r, s), r 6= s, pa a, b možemo dobiti u zavisnosti od r i s:

a = (r − s)((k − l)−1 mod p) mod p, b = (r − ak) mod p,

Page 54: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranje

Interpretacija klju ceva kao prirodnih brojevaMetod deljivostiMetod množenjaUniverzalno heširanje

Konstrukcija univerzalne klase heš funkcija(cont.)

gde (k − l)−1 mod p predstavlja jedinstven multiplikativni inverzod (k − l) mod p. Kako ima tacno p(p − 1) parova (r, s), r 6= s,postoji "1-1" korespodencija izmedju parova (a, b), a 6= 0 i(r, s), r 6= s. Tako, za proizvoljan dati par ulaza (k, l), akouzmemo (a, b) uniformno, slucajno iz Z

∗p × Zp, rezultujuci par

(r, s) ima iste verovatnoce da bude par razlicitih elemenatamodulo p. Sledi da je verovatnoca da dodje do kolizije kljucevak i l jednaka verovatnoci da je r ≡ s(mod p).Za datu vrednost r, od p − 1 moguce vrednosti za s, brojvrednosti r ≡ s(mod p) je najviše

[ p

m

]

− 1 6(p + m − 1

m) − 1 =

p − 1

m.

Page 55: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranjeLinearno ispitivanje

Otvoreno adresiranje

Verovatnoca da ce doci do kolizije kljuceva jep−1

m

p − 1=

1

m.

Prema tome, za proizvoljan par razlicitih vrednosti k, l ∈ Zp je

E[ha,b(k) = ha,b(l)] 61

m,

pa je Hp,m univerzalan.

Otvoreno adresiranje

U otvorenom adresiranju svi elementi se u heš tabele skladištesami. To znaci da svaka tabela ima ulaz koji sadrži ili elementdinamickog skupa ili NIL.

Page 56: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranjeLinearno ispitivanje

Otvoreno adresiranje(cont.)

Kada tražimo element, sistematski ispitujemo celije u tabeli svedok ne nadjemo traženi element ili dok ne postane jasno daelement nije u tabeli. Nema listi i elemenata smeštenih izvantabele kao pri formiranju lanaca. Prema tome, u otvorenomadresiranju se heš tabela može "popuniti", tako da daljaunošenja nisu moguca.Naravno, mogli smo uskladištiti liste za formiranje lanaca u heštabelu, mada je svrha otvorenog adresiranja da se izbegnupokazivaci. Zasebna memorija se oslobadja, ne skladištipokazivace obezbedjujuci heš tabelama veci broj celija za istukolicinu memorije, donoseci, potencujalno, manje kolizije i brževadjenje.Da bi obavili ubacivanje korišcenjem otvorenog adresiranjaispitujemo heš tabelu dok ne nadjemo praznu celiju u kojusmeštamo kljuc.

Page 57: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranjeLinearno ispitivanje

Otvoreno adresiranje(cont.)

Umesto fiksnog uredjenja 0, 1, . . . , m − 1 (kod koga je vremepretraživanja O(n)) niz pozicija koje se ispituju zavisi od kljucakoji treba da se ubaci. Da bi odredili koja celija treba da seispita, proširujemo heš funkciju tako da sadrži probni broj(pocev od 0) kao drugi ulaz. Tako se proširuje heš funkcija idobijamo h : U × {0, 1, . . . , m − 1} 7→ {0, 1, . . . , m − 1}.Otvorenim adresiranjem zahteva se, da za svaki kljuc k, probniniz {h(k, 0), h(k, 1), . . . , h(k, m − 1)} bude permutacija skupa{0, 1, . . . , m − 1}. Tako se svaka pozicija u heš tabeliposmatra, eventualno, kao celija za novi kljuc. U narednimpseudokodovima pretpostavicemo da su elementi heš tabelekljucevi bez dodatnih informacija. Kljuc k poistovecujemo saelementom koji sadrži kljuc k. Svaka celija sadrži ili kljuc ili NIL.

Page 58: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranjeLinearno ispitivanje

Otvoreno adresiranje(cont.)

Page 59: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranjeLinearno ispitivanje

Otvoreno adresiranje(cont.)

Algoritam za traženje kljuca k ispituje isti broj celija kaoalgoritam unošenja koji utvrdjuje kada je k bilo uneto. Brisanjeiz heš tabele sa otvorenim adresiranjem je teško.(*) Time bismo mogli da ucinimo nemogucim da povratimo kljuck za vreme cijeg ubacivanja je celija bila zauzeta.

Page 60: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranjeLinearno ispitivanje

Otvoreno adresiranje(cont.)

(**) Kada brišemo kljuc iz celije ne možemo je jednostavnouciniti praznom smeštajuci NIL u nju.Jedno rešenje je da celiju oznacimo smeštajuci u nju posebnuvrednost DELETED umesto NIL. Tada bismo modifikovaliproceduri ubacivanja da ovu celiju smatramo praznom, tako dase u nju može ubaciti novi kljuc. Modifikacija procedureSEARCH nije potrebna, jer ce ona preci preko vrednostiDELETED u toku traženja.U našoj analizi pravimo pretpostavku uniformnog heširanja:Pretpostavimo da svaki kljuc ima jednaku verovatnocu da imaproizvoljnu m′ permutaciju od {0, 1, . . . , m − 1}, kao svoj nizispitivanja. Uniformno heširanje je uopštenje pojmajednostavnog, uniformnog heširanja u slucaju kada heš funkcijane proizvodi samo jedan broj, vec citav niz.

Page 61: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranjeLinearno ispitivanje

Otvoreno adresiranje(cont.)

Napomena

Uniformno heširanje je teško za implementaciju, ali je u praksidobro za aproksimaciju.

Za izracunavanje probnog niza u otvorenom adresiranjunajcešce se koriste tri tehnike: linearno ispitivanje, kvadratnoispitivanje i dvostruko heširanje. Sve ove tehnike garantuju daje {h(k, 0), h(k, 1), . . . , h(k, m − 1)} permutacija skupa{0, 1, . . . , m − 1}, za svaki kljuc k.Ni jedna od ovih tehnika ne ispunjava uslove uniformnogheširanja i nije u stanju da generiše više od m2 razlicitih probnihnizova.

Page 62: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranjeLinearno ispitivanje

Linearno ispitivanje

Za datu obicnu heš funkciju h′ : U 7→ {0, 1, . . . m − 1} kojoj seobracamo kao pomocnoj heš funkciji metod linearnogispitivanja koristi heš funkciju h(k, i) = (h′(k) + i) mod m, zai ∈ {0, 1, . . . m − 1}. Za kljuc k prva celija koju ispitujemo jeT[h′(k)], tj. celija zadata pomocnom heš funkcijom. Daljeispitujemo T[h′(k) + 1] itd. dok ne dodjemo do T[m − 1]. Tadaobuhvatamo celije T[0], T[1] . . . dok ne probamo celijuT[h′(k) − 1].Linearno ispitivanje je jednostavno za implementaciju, alidopušta problem poznat kao primarno klastyerovanje.Izgradjuje se dug niz zauzetih celija i raste vreme pretraživanja.Klasteri se prave obzirom da se prazna celija, koja prethodi nizu

od i punih celija, popunjava sledeca sa verovatnocomi + 1

m.

Page 63: nasport.pmf.ni.ac.rs · 2015. 2. 1. · Analiza heširanja Analiza heširanja Koliko se brzo može izvršiti heširanje formiranjem lanaca? Koliko je vremena potrebno za pretraživanje

OvervievDobra heš funkcija

Otvoreno adresiranjeLinearno ispitivanje

Kvadratno ispitivanje

Dug niz zauzetih celija ima tendenciju rasta, pa raste i srednjavrednost traženja.Kvadratno ispitivanje koristi heš funkciju oblikah(k, i) = (h′(k) + c1i + c2i2) mod m, gde je h′ pomocna hešfunkcija, c1, c2 6= 0 pomocne konstante i i ∈ {0, 1, . . . m − 1}.Inicijalna pozicija ispitivanja je T[h′(k)]. Naredne pozicije kojese ispituju izjednacavaju se sa vrednostima koje zavise odponašanja kvadrata posmatranog broja i. Ovaj metod radimnogo bolje od linearnog ispitivanja, ali da bi iskorišcenje heštabele bilo potpuno, vrednosti c1, c2 i m moraju biti ogranicene.Ako dva kljuca imaju isto inicijalno ispitivanje pozicije, njihoviprobni nizovi su jednaki, jer je h(k1, 0) = h(k2, 0), što povlacih(k1, i) = h(k2, i).Ova osobina vodi do blaže forme klasterovanja–sekundarnoklasterovanje.