Tabele de dispersiesd/curs/curs-11.pdf · ie hash bun a distribuie cheile uniform ^ n locat, iile...

29
Tabele de dispersie SD 2019/2020

Transcript of Tabele de dispersiesd/curs/curs-11.pdf · ie hash bun a distribuie cheile uniform ^ n locat, iile...

Page 1: Tabele de dispersiesd/curs/curs-11.pdf · ie hash bun a distribuie cheile uniform ^ n locat, iile tabelei. I Ipoteza dispersiei uniforme simple este di cil de garantat, dar exist

Tabele de dispersie

SD 2019/2020

Page 2: Tabele de dispersiesd/curs/curs-11.pdf · ie hash bun a distribuie cheile uniform ^ n locat, iile tabelei. I Ipoteza dispersiei uniforme simple este di cil de garantat, dar exist

Cont, inut

Tabele cu adresare directa

Tabele de dispersie

Dispersie externa

Functii de dispersie

Dispersie interna

FII, UAIC Curs 11 SD 2019/2020 2 / 29

Page 3: Tabele de dispersiesd/curs/curs-11.pdf · ie hash bun a distribuie cheile uniform ^ n locat, iile tabelei. I Ipoteza dispersiei uniforme simple este di cil de garantat, dar exist

Tabele de simboluri

I Tabela de simboluri S cu n ınregistrari;

I Fiecare ınregistrare are asociata o cheie (unica);

I Operat, ii: cauta(S , k), insereaza(S , x), sterge(S , x);

I Cum poate fi organizata structura de date S?

FII, UAIC Curs 11 SD 2019/2020 3 / 29

Page 4: Tabele de dispersiesd/curs/curs-11.pdf · ie hash bun a distribuie cheile uniform ^ n locat, iile tabelei. I Ipoteza dispersiei uniforme simple este di cil de garantat, dar exist

Tabela cu adresare directa

I U = {0, 1, ...,m − 1} mult, imea univers a cheilor;

I Un tablou T [0..m − 1]:

T [k] =

{x daca x ∈ S s, i x .cheie = kNULL altfel.

I Fiecare pozit, ie (slot) din tablou corespunde unei chei din universul U.

I Daca |S | = n, atunci n ≤ m.

FII, UAIC Curs 11 SD 2019/2020 4 / 29

Page 5: Tabele de dispersiesd/curs/curs-11.pdf · ie hash bun a distribuie cheile uniform ^ n locat, iile tabelei. I Ipoteza dispersiei uniforme simple este di cil de garantat, dar exist

Tabela cu adresare directa - Operat, ii

I Operat, ii

Function cauta(T , k)begin

return T [k]end

Procedure insereaza(T , x)begin

T [x .cheie] = xend

Procedure sterge(T , x)begin

T [x .cheie] = NULLend

I Complexitatea timp a operat, iilor: Θ(1)

FII, UAIC Curs 11 SD 2019/2020 5 / 29

Page 6: Tabele de dispersiesd/curs/curs-11.pdf · ie hash bun a distribuie cheile uniform ^ n locat, iile tabelei. I Ipoteza dispersiei uniforme simple este di cil de garantat, dar exist

Tabela cu adresare directa

I Spat, iul de memorare: Θ(|U|).

I Probleme:

I cheile pot sa nu fie numere ıntregi;

I domeniul de valori al cheilor este foarte mare:

I numere pe 64 de bit, i (18.446.744.073.709.551.616 chei diferite)I s, iruri de caractere;

I mult, imea de chei memorate este foarte mica relativ la U.

I Solut, ie: tabela de dispersieI o generalizare a not, iunii de tabela cu adresare directa;

I o structura de date eficienta pentru implementarea dict, ionarelor.

FII, UAIC Curs 11 SD 2019/2020 6 / 29

Page 7: Tabele de dispersiesd/curs/curs-11.pdf · ie hash bun a distribuie cheile uniform ^ n locat, iile tabelei. I Ipoteza dispersiei uniforme simple este di cil de garantat, dar exist

Cont, inut

Tabele cu adresare directa

Tabele de dispersie

Dispersie externa

Functii de dispersie

Dispersie interna

FII, UAIC Curs 11 SD 2019/2020 7 / 29

Page 8: Tabele de dispersiesd/curs/curs-11.pdf · ie hash bun a distribuie cheile uniform ^ n locat, iile tabelei. I Ipoteza dispersiei uniforme simple este di cil de garantat, dar exist

Tabela de dispersie

I Utilizeaza o funct, ie de dispersie (hash) h pentru a asocia cheilor dinuniversul U o valoare din mult, imea {0, 1, · · · ,m − 1}.

I Un element cu cheia k are asociata pozit, ia h(k) ın tabela T .

I Funct, ia de dispersie reduce domeniul de valori a indicilor s, i implicitdimensiunea vectorului memorat.

I Coliziune: ∃ x1, x2 ∈ S astfel ıncat h(x1.cheie) = h(x2.cheie)

FII, UAIC Curs 11 SD 2019/2020 8 / 29

Page 9: Tabele de dispersiesd/curs/curs-11.pdf · ie hash bun a distribuie cheile uniform ^ n locat, iile tabelei. I Ipoteza dispersiei uniforme simple este di cil de garantat, dar exist

Cont, inut

Tabele cu adresare directa

Tabele de dispersie

Dispersie externa

Functii de dispersie

Dispersie interna

FII, UAIC Curs 11 SD 2019/2020 9 / 29

Page 10: Tabele de dispersiesd/curs/curs-11.pdf · ie hash bun a distribuie cheile uniform ^ n locat, iile tabelei. I Ipoteza dispersiei uniforme simple este di cil de garantat, dar exist

Rezolvarea coliziunilor prin ınlant,uire (dispersie externa)

I Inregistrarile care au asociate acelas, i slot vor fi memorate ıntr-o listaliniara. T devine tablou de pointeri.

I Solut, ie simpla, dar necesita spat, iu suplimentar de memorie.

I Cazul cel mai nefavorabil: toate cheile au asociate acelas, i slotI timpul de acces: Θ(n).

FII, UAIC Curs 11 SD 2019/2020 10 / 29

Page 11: Tabele de dispersiesd/curs/curs-11.pdf · ie hash bun a distribuie cheile uniform ^ n locat, iile tabelei. I Ipoteza dispersiei uniforme simple este di cil de garantat, dar exist

Dispersie externa – Operat, ii

Function cauta(T , k)begin

cauta elementul cu cheia k ın lista T [h(k)]end

Procedure insereaza(T , x)begin

insereaza x la ınceputul listei T [h(x .cheie)]end

Procedure sterge(T , x)begin

s, terge x din lista T [h(x .cheie)]end

FII, UAIC Curs 11 SD 2019/2020 11 / 29

Page 12: Tabele de dispersiesd/curs/curs-11.pdf · ie hash bun a distribuie cheile uniform ^ n locat, iile tabelei. I Ipoteza dispersiei uniforme simple este di cil de garantat, dar exist

Dispersie externa – analiza complexitat, ii

I Cautare:Complexitatea ın cazul cel mai nefavorabil depinde de lungimea listei.

I Inserare:Complexitatea ın cazul cel mai nefavorabil: O(1).

I S, tergere:O(1) daca avem liste liniare dublu ınlant,uite; daca lucram cu listeliniare simplu ınlant,uite, trebuie ıntai sa cautam x s, i sa ret, inempredecesorul acestuia pentru a putea reface legatura.

FII, UAIC Curs 11 SD 2019/2020 12 / 29

Page 13: Tabele de dispersiesd/curs/curs-11.pdf · ie hash bun a distribuie cheile uniform ^ n locat, iile tabelei. I Ipoteza dispersiei uniforme simple este di cil de garantat, dar exist

Dispersie externa – analiza complexitat, ii ın cazul mediu

I Ipoteza dispersiei uniforme simple: fiecare cheie k ∈ U are oprobabilitate egala de a fi memorata ın oricare locat, ie din tabela T s, iindependent de locat, iile altor chei.

I Factorul de ıncarcare al tabelei T este

α = n/m,

unde n este numarul de chei (|S |), iar m numarul de locat, ii(dimensiunea tabloului T ).

I Timpul de calcul al funct, iei de dispersie este Θ(1).

FII, UAIC Curs 11 SD 2019/2020 13 / 29

Page 14: Tabele de dispersiesd/curs/curs-11.pdf · ie hash bun a distribuie cheile uniform ^ n locat, iile tabelei. I Ipoteza dispersiei uniforme simple este di cil de garantat, dar exist

Dispersie externa – analiza complexitat, ii ın cazul mediu

Teorema:Considerand o tabela de dispersie ın care coliziunile sunt rezolvate prinınlant,uire, ın ipoteza dispersiei uniforme simple, o cautare fara succes arecomplexitatea timp ın cazul mediu Θ(1 + α).

Teorema:Intr-o tabela de dispersie ın care coliziunile sunt rezolvate prin ınlant,uire,ın ipoteza dispersiei uniforme simple, o cautare cu succes arecomplexitatea timp ın cazul mediu Θ(1 + α).

Corolar:Daca numarul de sloturi este cel put, in proport, ional cu numarul deelemente (n = O(m) sau, echivalent, α = O(1)), atunci operat, ia decautare are complexitatea, ın medie, O(1).

FII, UAIC Curs 11 SD 2019/2020 14 / 29

Page 15: Tabele de dispersiesd/curs/curs-11.pdf · ie hash bun a distribuie cheile uniform ^ n locat, iile tabelei. I Ipoteza dispersiei uniforme simple este di cil de garantat, dar exist

Cont, inut

Tabele cu adresare directa

Tabele de dispersie

Dispersie externa

Functii de dispersie

Dispersie interna

FII, UAIC Curs 11 SD 2019/2020 15 / 29

Page 16: Tabele de dispersiesd/curs/curs-11.pdf · ie hash bun a distribuie cheile uniform ^ n locat, iile tabelei. I Ipoteza dispersiei uniforme simple este di cil de garantat, dar exist

Funct, ia de dispersie

I Determinista: pentru o cheie k , funct, ia trebuie sa furnizezeıntotdeauna aceas, i valoare h(k).

I Aleatoare: vizeaza minimizarea coliziunilor.

I O funct, ie hash buna distribuie cheile uniform ın locat, iile tabelei.

I Ipoteza dispersiei uniforme simple este dificil de garantat, dar existatehnici euristice care funct, ioneaza bine ın practica (atat timp catdeficient,ele acestora pot fi evitate).

FII, UAIC Curs 11 SD 2019/2020 16 / 29

Page 17: Tabele de dispersiesd/curs/curs-11.pdf · ie hash bun a distribuie cheile uniform ^ n locat, iile tabelei. I Ipoteza dispersiei uniforme simple este di cil de garantat, dar exist

Funct, ii de dispersie – Metoda diviziunii

h(k) = k mod m

I Presupunem ca toate cheile sunt numere naturale.I daca cheile nu sunt numere naturale, atunci trebuie gasita o modalitate

de a le interpreta ca numere naturale;I Exemplu: presupunem un identificator de forma (112, 116); ın baza

128, acesta devine (112× 128) + 116 = 14452.

I Nu se alege pentru m o valoare care are un divizor mic d .Preponderent,a cheilor congruente modulo d poate afecta ın modnegativ uniformitatea.

I Daca m = 2r , atunci valoarea funct, iei depinde doar de ultimii r bit, iiai lui k .

I Exemplu: k = 1011000111011010 s, i r = 6 7→ h(k) = 011010.

I Se alege m un numar prim care nu este apropiat de o putere a lui 2sau 10.

FII, UAIC Curs 11 SD 2019/2020 17 / 29

Page 18: Tabele de dispersiesd/curs/curs-11.pdf · ie hash bun a distribuie cheile uniform ^ n locat, iile tabelei. I Ipoteza dispersiei uniforme simple este di cil de garantat, dar exist

Funct, ii de dispersie – Metoda ınmult, irii

h(k) = bm(kA− bkAc)c

I A ∈ (0, 1) este o constanta.

I Valoarea lui m nu este critica (de obicei o putere a lui 2).

h(k) = (kA mod 2w )rsh(w − r)

I m = 2r , (mas, ina ın care cuvintele sunt pe w–bit, i).

I A este un numar impar din intervalul (2w−1, 2w ).

I rsh este operatorul de deplasare la dreapta pe biti.

FII, UAIC Curs 11 SD 2019/2020 18 / 29

Page 19: Tabele de dispersiesd/curs/curs-11.pdf · ie hash bun a distribuie cheile uniform ^ n locat, iile tabelei. I Ipoteza dispersiei uniforme simple este di cil de garantat, dar exist

Funct, ii de dispersie – Metoda ınmult, irii

I Exemplu: m = 23 s, i cuvinte pe w = 7 bit, i.

I Nu se alege A prea aproape de 2w−1 sau 2w .

I Knuth: A = (√

5− 1)/2.

I Inmult, irea modulo 2w este mai rapida ın comparat, ie cu ımpart, irea;operatorul rsh este rapid.

FII, UAIC Curs 11 SD 2019/2020 19 / 29

Page 20: Tabele de dispersiesd/curs/curs-11.pdf · ie hash bun a distribuie cheile uniform ^ n locat, iile tabelei. I Ipoteza dispersiei uniforme simple este di cil de garantat, dar exist

Funct, ii de dispersie – Dispersia universala

h(k) = [(ak + b) mod p] mod m

I p numar prim cu p > |U|;I a, b numere aleatoare din {0, ..., p − 1}.

I k1 6= k2, Pra,b{h(k1) = h(k2)} = 1/m.

FII, UAIC Curs 11 SD 2019/2020 20 / 29

Page 21: Tabele de dispersiesd/curs/curs-11.pdf · ie hash bun a distribuie cheile uniform ^ n locat, iile tabelei. I Ipoteza dispersiei uniforme simple este di cil de garantat, dar exist

Cont, inut

Tabele cu adresare directa

Tabele de dispersie

Dispersie externa

Functii de dispersie

Dispersie interna

FII, UAIC Curs 11 SD 2019/2020 21 / 29

Page 22: Tabele de dispersiesd/curs/curs-11.pdf · ie hash bun a distribuie cheile uniform ^ n locat, iile tabelei. I Ipoteza dispersiei uniforme simple este di cil de garantat, dar exist

Rezolvarea coliziunilor prin adresare deschisa

I Dispersie interna

I Toate elementele sunt memorate ın interiorul tabelei T ; nu esteutilizat spat, iu suplimentar de memorie, ın afara tabelei de dispersie.

I Functia de inserare examineaza tabela pana cand este gasita o locat, ielibera.

I Funct, ia de dispersie depinde atat de cheie cat s, i de numarulexaminarii:

h : U × {0, 1, ...,m − 1} 7→ {0, 1, ...,m − 1}

I Secvent,a de examinari < h(k , 0), h(k , 1), · · · , h(k,m − 1) > trebuiesa fie o permutare a {0, 1, ..,m − 1}.

I Dezavantaje: tabela se poate umple; s, tergerea poate deveni dificila.

FII, UAIC Curs 11 SD 2019/2020 22 / 29

Page 23: Tabele de dispersiesd/curs/curs-11.pdf · ie hash bun a distribuie cheile uniform ^ n locat, iile tabelei. I Ipoteza dispersiei uniforme simple este di cil de garantat, dar exist

Dispersie interna – Operat, ii

Function cauta(T , k)begin

i ← 0repeat

j ← h(k , i)if T [j ] == k then

return jelse

i ← i + 1until T [j ] == NULL OR i == m;return NULL

end

FII, UAIC Curs 11 SD 2019/2020 23 / 29

Page 24: Tabele de dispersiesd/curs/curs-11.pdf · ie hash bun a distribuie cheile uniform ^ n locat, iile tabelei. I Ipoteza dispersiei uniforme simple este di cil de garantat, dar exist

Dispersie interna – Operat, ii

Function insereaza(T , k)begin

i ← 0repeat

j ← h(k , i)if T [j ] == NULL then

T [j ]← kreturn j

elsei ← i + 1

until i == m;return −1

end

FII, UAIC Curs 11 SD 2019/2020 24 / 29

Page 25: Tabele de dispersiesd/curs/curs-11.pdf · ie hash bun a distribuie cheile uniform ^ n locat, iile tabelei. I Ipoteza dispersiei uniforme simple este di cil de garantat, dar exist

Dispersie interna – Strategii pentru examinare

Examinare liniara:

h(k , i) = (h′(k) + i) mod m

I h′(k) o funct, ie de dispersie uzuala.

I Pentru o cheie k, secvent,a de examinare este

h′(k), h′(k) + 1, h′(k) + 2, ..., m − 1, 0, 1, ..., h′(k)− 1.

I Avantaj: metoda simpla.

I Dezavantaj: grupare primara (primary clustering) – se formeaza s, irurilungi de locat, ii ocupate; cres, te timpul mediu de cautare.

FII, UAIC Curs 11 SD 2019/2020 25 / 29

Page 26: Tabele de dispersiesd/curs/curs-11.pdf · ie hash bun a distribuie cheile uniform ^ n locat, iile tabelei. I Ipoteza dispersiei uniforme simple este di cil de garantat, dar exist

Dispersie interna – Strategii pentru examinare

Examinare patratica:

h(k, i) = (h′(k) + c1i + c2i2) mod m

I h′(k) o funct, ie de dispersie uzuala.

I Pentru o cheie k, prima locat, ie examinata este h′(k), iar urmatoarelepozit, ii examinate sunt decalate cu cantitat, i ce depind ıntr-o manierapatratica de pozit, ia anterior examinata.

I Dezavantaj: grupare secundara – daca doua chei au aceeas, i pozit, ie destart a examinarii, atunci secvent,ele de verificare coincid.

I Funct, ioneaza mai bine decat verificarea liniara.

FII, UAIC Curs 11 SD 2019/2020 26 / 29

Page 27: Tabele de dispersiesd/curs/curs-11.pdf · ie hash bun a distribuie cheile uniform ^ n locat, iile tabelei. I Ipoteza dispersiei uniforme simple este di cil de garantat, dar exist

Dispersie interna – Strategii pentru examinare

Dispersie dubla:

h(k, i) = (h1(k) + ih2(k)) mod m

I h1(k) si h2(k) doua funct, ii de dispersie uzuale.

I Pentru o cheie k , prima locat, ie examinata este h1(k), iar urmatoarelepozit, ii examinate sunt decalate fat, a de pozit, ia anterioara cu h2(k)mod m.

I Aceasta metoda produce ın general rezultate foarte bune, cu condit, iaca h2(k) sa fie relativ prim cu m. O modalitate de a realiza acestlucru este sa consideram m o putere a lui 2 s, i sa alegem h2(k) astfelıncat sa rezulte doar numere impare.

FII, UAIC Curs 11 SD 2019/2020 27 / 29

Page 28: Tabele de dispersiesd/curs/curs-11.pdf · ie hash bun a distribuie cheile uniform ^ n locat, iile tabelei. I Ipoteza dispersiei uniforme simple este di cil de garantat, dar exist

Dispersie interna – Analiza complexitat, ii

Ipoteza dispersiei uniforme: fiecare cheie poate avea, cu aceeas, iprobabilitate, oricare din cele m! permutari ca secvent, a de examinare.

Teorema:Intr-o tabela de dispersie cu adresare deschisa, ın ipoteza dispersieiuniforme, cu factor de ıncarcare α < 1, numarul mediu de verificari estecel mult

I 11−α pentru operat, ia de cautare fara succes, s, i

I 1α ln

11−α pentru operat, ia de cautare cu succes.

Corolar:Daca α este constant, atunci accesarea unei tabele de dispersie cuadresare deschisa necesita ın medie un timp constant, Θ(1).

FII, UAIC Curs 11 SD 2019/2020 28 / 29

Page 29: Tabele de dispersiesd/curs/curs-11.pdf · ie hash bun a distribuie cheile uniform ^ n locat, iile tabelei. I Ipoteza dispersiei uniforme simple este di cil de garantat, dar exist

Utilizari

I Tabelele de dispersie sunt folosite la indexarea ın baze de date,compilatoare - tabela de simboluri, cache, etc.

I Aplicat, ii ale funct, iilor de dispersie: CRC, Cryptographic hashfunctions, etc.

FII, UAIC Curs 11 SD 2019/2020 29 / 29