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

Post on 05-Jun-2020

2 views 0 download

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

Tabele de dispersie

SD 2019/2020

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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