La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Metodo della moltiplicazione h(k) = m(kA mod 1) in cui A è una costante reale con 0 < A < 1 ed x mod 1 = x – x è la parte frazionaria. Vantaggi : la scelta.

Presentazioni simili


Presentazione sul tema: "Metodo della moltiplicazione h(k) = m(kA mod 1) in cui A è una costante reale con 0 < A < 1 ed x mod 1 = x – x è la parte frazionaria. Vantaggi : la scelta."— Transcript della presentazione:

1 Metodo della moltiplicazione h(k) = m(kA mod 1) in cui A è una costante reale con 0 < A < 1 ed x mod 1 = x – x è la parte frazionaria. Vantaggi : la scelta di m non è critica e nella pratica funziona bene con tutti i valori di A anche se ci sono ragioni teoriche per preferire linverso del rapporto aureo

2 h(k) si calcola facilmente se si sceglie m = 2 p e A = q/2 w con 0 < q < 2 w dove w è la lunghezza di una parola di memoria. k q = r1r1 w bit h(k)h(k) p bit r0r0

3 Randomizzazione di funzioni hash Più seriamente: per ogni funzione hash si possono trovare delle distribuzioni di probabilità degli input per le quali la funzione non ripartisce bene le chiavi tra le varie liste della tavola hash. Nessuna funzione hash può evitare che un avversario malizioso inserisca nella tavola una sequenza di valori che vadano a finire tutti nella stessa lista.

4 Possiamo usare la randomizzazione per rendere il comportamento della tavola hash indipendente dallinput. Lidea è quella di usare una funzione hash scelta casualmente in un insieme universale di funzioni hash. Questo approccio viene detto hash universale.

5 Un insieme H di funzioni hash che mandano un insieme U di chiavi nellinsieme {0,1,...,m-1} degli indici della tavola hash si dice universale se: per ogni coppia di chiavi distinte j e k vi sono al più |H|/m funzioni hash in H tali che h(j) = h(k) Se scegliamo casualmente la funzione hash in un insieme universale H la probabilità che due chiavi qualsiasi j e k collidano è 1/m, la stessa che si avrebbe scegliendo casualmente le due celle in cui mandare j e k.

6 Proprietà : Supponiamo che la funzione hash h sia scelta casualmente in un insieme universale H e venga usata per inserire n chiavi in una tavola T di m celle e sia k una chiave qualsiasi. La lunghezza attesa E[n h(k) ] della lista h(k) è α = n/m se k non è presente nella tavola ed è minore di α+1 se k è presente. Quindi, indipendentemente dalla distribuzione degli input, una Search richiede tempo medio (1+α) che, se n = O(m), è (1).

7 Dimostrazione : Per ogni coppia di chiavi distinte j e k definiamo una variabile casuale X j,k che vale 1 se h(j) = h(k) e 0 altrimenti. che è il numero di chiavi diverse da j che stanno nella lista h(j). Per ogni j definiamo la variabile casuale Siccome la probabilità che h(j) = h(k) è 1/m abbiamo E[X j,k ] = 1/m.

8 Il valore atteso di Y j è Se j non è presente nella tavola n h(j) =Y j ed il numero di elementi in T diversi da j è n per cui Se j è presente nella tavola n h(j) =Y j +1 ed il numero di elementi in T diversi da j è n-1 per cui

9 Come costruire un insieme universale di funzioni hash Contrariamente a quanto potrebbe sembrare non è molto difficile. Bastano poche nozioni elementari di aritmetica modulare. Per ogni coppia di interi (a,b) tali che 1 a < p e 0 b < p definiamo una funzione hash. Iniziamo scegliendo un numero primo p maggiore di ogni possibile chiave k.

10 Proprietà : la famiglia di funzioni H = {h a,b : 1 a < p, 0 b < p} è universale Dimostrazione : Spezziamo il calcolo di in due fasi calcolando prima: e poi:

11 Mostreremo dapprima che per ogni coppia (k,j) di chiavi distinte sono distinti anche Ci sono p(p-1) coppie (a,b), 1 a < p e 0 b < p. Anche le coppie (k,j) di chiavi distinte tali che 0 k, j < p sono p(p-1). e inoltre, al variare di a e b, si ottengono tutte le coppie distinte (r,s) con 0 r,s < p

12 Siano j e k due chiavi distinte e siano Quindi se le chiavi j e k sono diverse anche r ed s sono diversi. Osserviamo che r - s = a (j - k) mod p 0 in quanto a e j - k non sono divisibili per p (perché 1 a < p e 1 | j – k | < p)

13 Dimostreremo ora che date una coppia (j,k) di chiavi distinte ed una coppia (r,s) di valori distinti con 0 r,s < p esiste una ed una sola coppia (a,b) di interi tali che r = (aj +b) mod p s = (ak +b) mod p 1 a < p 0 b < p Per questo basta dimostrare che tale sistema ha una e una sola soluzione per a e b.

14 Il sistema: r = (aj + b) mod p s = (ak + b) mod p 1 a < p 0 b < p si risolve nel modo seguente: Sottraendo le due equazioni otteniamo (r – s) mod p = a (j – k) mod p Siccome p è primo e j – k è diverso da 0 esiste linverso moltiplicativo z = (j – k) –1 tale che z(j – k) mod p = 1.

15 Esistenza inverso moltiplicativo Esistono x e y tali che MCD(a,b) = ax + by Dimostrazione per induzione su b Se b = 0: Se b > 0:

16 Se MCD(a,b)=1 esiste x tale che ax = 1 mod b Per la proprietà precedente e quindi: Siccome MCD(j – k, p) = 1 in quanto p è primo e 1 | j – k | < p possiamo concludere che linverso moltiplicativo z = (j – k) –1 di (j – k) esiste.

17 Quindi Esplicitando la prima equazione rispetto a b si ottiene La condizione 0 b < p implica b mod p = b e quindi anche b = (r - aj) mod p è unico La condizione 1 a < p implica a mod p = a e quindi a = z (r - s) mod p è unico

18 Dunque per ogni coppia (j,k) di chiavi distinte ed ogni coppia (r,s) di valori distinti 0 r,s < p esiste una ed una sola funzione h a,b tale che r = (aj +b) mod p s = (ak +b) mod p Dunque, date due chiavi distinte j e k, se scegliamo casualmente h a,b i due valori r = (aj +b) mod p s = (ak +b) mod p sono, con uguale probabilità, una qualsiasi coppia di valori distinti tra 0 e p-1.

19 La probabilità che j e k collidano è uguale alla probabilità che s = r mod m quando la coppia (r,s) di valori distinti viene scelta casualmente Dato r il numero di valori s con 0 s < p tali che s = r mod m è al più p/m e tra questi quelli diversi da r sono al più Quindi la probabilità di una collisione è al più

20 Dunque se j e k sono chiavi distinte ed a e b sono scelti casualmente e quindi è una famiglia universale di funzioni hash. H = {h a,b : 1 a < p, 0 b < p}

21 Risoluzione delle collisioni con indirizzamento aperto Con la tecnica di indirizzamento aperto tutti gli elementi stanno nella tavola. La funzione hash non individua una singola cella ma un ordine in cui ispezionare tutte le celle. Linserimento di un elemento avviene nella prima cella libera che si incontra nellordine di ispezione. Nella ricerca di un elemento si visitano le celle sempre nello stesso ordine.

22 La funzione hash è una funzione h(k,i) che al variare di i tra 0 ed m-1 fornisce, per ciascuna chiave k, una sequenza di indici h(k,0), h(k,1),..., h(k,m-1) che rappresenta lordine di ispezione. Siccome vogliamo poter ispezionare tutte le celle, la sequenza deve essere una permutazione dellinsieme degli indici 0,1,..., m-1 della tavola.

23 La realizzazione delle operazioni è: Insert(T, k) i = 0 repeat j = h(k, i) if T[ j ] == nil T[ j ] = k return j i = i +1 until i == m Errore : tavola piena

24 La realizzazione di Delete è più complicata Non possiamo infatti limitarci a porre nil nella cella!!! Perché ??? Search(T, k) i = 0 repeat j = h(k, i) if T[ j ] == k return j i = i +1 until i == m or T[ j ] == nil

25 Delete(T, i) T[ i ] = deleted La Delete si limita ad assegnare alla chiave dellelemento da togliere un particolare valore diverso da ogni possibile chiave:

26 La Search continua a funzionare invariata: Search(T, k) i = 0 repeat j = h(k, i) if T[ j ] == k return j i = i +1 until i == m or T[ j ] == nil

27 La Insert deve essere modificata: Insert(T, k) i = 0 repeat j = h(k, i) if T[ j ] == nil or T[ j ] == deleted T[ j ] = k return j i = i+1 until i == m Errore: tavola piena

28 Con lindirizzamento aperto la funzione hash fornisce una sequenza di ispezione. In questo caso lipotesi di hash uniforme diventa: Ogni chiave ha la stessa probabilità 1/m! di generare una qualsiasi delle m! possibili sequenze di ispezione

29 Vi sono tre tecniche comunemente usate per determinare lordine di ispezione: 1. Ispezione lineare 2. Ispezione quadratica 3. Doppio hash Nessuna delle tre genera tutte le m! sequenze di ispezione. Le prime due ne generano soltanto m e lultima ne genera m 2.


Scaricare ppt "Metodo della moltiplicazione h(k) = m(kA mod 1) in cui A è una costante reale con 0 < A < 1 ed x mod 1 = x – x è la parte frazionaria. Vantaggi : la scelta."

Presentazioni simili


Annunci Google