slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Metodo della moltiplicazione h ( k ) = ? m ( kA mod 1) ? PowerPoint Presentation
Download Presentation
Metodo della moltiplicazione h ( k ) = ? m ( kA mod 1) ?

Loading in 2 Seconds...

play fullscreen
1 / 29

Metodo della moltiplicazione h ( k ) = ? m ( kA mod 1) ? - PowerPoint PPT Presentation


  • 77 Views
  • Uploaded on

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. .

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Metodo della moltiplicazione h ( k ) = ? m ( kA mod 1) ?' - genica


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

Metodo della moltiplicazione

h(k) = m(kAmod1)

in cui A è una costante reale con 0 < A < 1 ed xmod 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 l’inverso del rapporto aureo

slide2

w bit

k

q

=

r1

r0

h(k)

p bit

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

slide3

Randomizzazione di funzioni 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.

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.

slide4

Possiamo usare la randomizzazione per rendere il comportamento della tavola hash indipendente dall’input.

L’idea è quella di usare una funzione hash scelta casualmente in un insieme “universale” di funzioni hash.

Questo approccio viene detto hashuniversale.

slide5

Un insieme H di funzioni hash che mandano un insieme U di chiavi nell’insieme {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.

slide6

Proprietà: Supponiamo che la funzione hashh 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[nh(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 Searchrichiede tempo medio (1+α) che, se n = O(m), è (1).

slide7

Dimostrazione: Per ogni coppia di chiavi distinte j e k definiamo una variabile casuale Xj,k che vale 1 se h(j) = h(k) e 0 altrimenti.

Siccome la probabilità che h(j) = h(k) è 1/m abbiamo E[Xj,k] = 1/m.

Per ogni j definiamo la variabile casuale

che è il numero di chiavi diverse da j che stanno nella lista h(j).

slide8

Il valore atteso di Yj è

Se j non è presente nella tavola nh(j)=Yj ed il numero di elementi in T diversi da j è n per cui

Se j è presente nella tavola nh(j)=Yj+1 ed il numero di elementi in T diversi da j è n-1 per cui

slide9

Come costruire un insieme universale di funzioni hash

Contrariamente a quanto potrebbe sembrare non è molto difficile. Bastano poche nozioni elementari di aritmetica modulare.

Iniziamo scegliendo un numero primo p maggiore di ogni possibile chiave k.

Per ogni coppia di interi (a,b) tali che 1 ≤ a < p e 0 ≤ b < p definiamo una funzione hash.

slide10

Proprietà: la famiglia di funzioni

H = {ha,b : 1 ≤ a < p, 0 ≤ b < p}

è universale

Dimostrazione: Spezziamo il calcolo di

in due fasi calcolando prima:

e poi:

slide11

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).

Mostreremo dapprima che per ogni coppia (k,j) di chiavi distinte sono distinti anche

e inoltre, al variare di a e b, si ottengono tutte le coppie distinte (r,s) con 0 ≤ r,s < p

slide12

Siano j e k due chiavi distinte e siano

Osserviamo che

r-s = a (j - k) modp ≠ 0

in quanto a e j -k non sono divisibili per p (perché 1 ≤a < p e 1 ≤ | j –k | < p)

Quindi se le chiavi j e k sono diverse anche r ed s sono diversi.

slide13

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) modp

s = (ak+b) modp

1 ≤ a < p

0 ≤ b < p

Per questo basta dimostrare che tale sistema ha una e una sola soluzione per a e b.

slide14

Il sistema:

r = (aj+ b) modp

s = (ak+ b) modp

1 ≤ a < p

0 ≤ b < p

si risolve nel modo seguente:

Sottraendo le due equazioni otteniamo

(r – s) modp = a (j – k) modp

Siccome p è primo e j – k è diverso da 0 esiste l’inverso moltiplicativo z = (j – k)–1 tale che z(j – k) modp = 1.

slide15

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:

slide16

Se MCD(a,b)=1 esiste x tale che ax = 1 modb

Per la proprietà precedente

e quindi:

Siccome MCD(j – k, p) = 1 in quanto p è primo e 1 ≤ | j – k | < p possiamo concludere che l’inverso moltiplicativo z = (j – k)–1 di (j – k) esiste.

slide17

Quindi

La condizione 1 ≤ a < p implica amodp = a e quindi a = z (r - s) modp è unico

Esplicitando la prima equazione rispetto a b si ottiene

La condizione 0 ≤ b < p implica

b modp = b

e quindi anche b = (r - aj) modp è unico

slide18

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 ha,b tale che

r = (aj+b) modp

s = (ak+b) modp

Dunque, date due chiavi distinte j e k, se scegliamo casualmente ha,b i due valori

r = (aj+b) modp

s = (ak+b) modp

sono, con uguale probabilità, una qualsiasi coppia di valori distinti tra 0 e p-1.

slide19

La probabilità che j e k collidano è uguale alla probabilità che s = rmodm 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 = rmodm è al più p/m e tra questi quelli diversi da r sono al più

Quindi la probabilità di una collisione è al più

slide20

Dunque se j e k sono chiavi distinte ed a e b sono scelti casualmente

e quindi

H = {ha,b : 1 ≤ a < p, 0 ≤ b < p}

è una famiglia universale di funzioni hash.

slide21

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.

L’inserimento di un elemento avviene nella prima cella libera che si incontra nell’ordine di ispezione.

Nella ricerca di un elemento si visitano le celle sempre nello stesso ordine.

slide22

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 l’ordine di ispezione.

Siccome vogliamo poter ispezionare tutte le celle, la sequenza deve essere una permutazione dell’insieme degli indici 0,1,..., m-1 della tavola.

slide23

La realizzazione delle operazioni è:

Insert(T, k)

i= 0

repeat

j=h(k, i)

ifT[ j ] == nil

T[ j ] =k

returnj

i =i +1

untili == m

“Errore : tavola piena”

slide24

Search(T, k)

i =0

repeat

j = h(k, i)

ifT[ j ]== k

returnj

i =i +1

untili == m or T[ j ]== nil

La realizzazione di Delete è più complicata

Non possiamo infatti limitarci a porre nil nella cella!!! Perché ???

slide25

La Delete si limita ad assegnare alla chiave dell’elemento da togliere un particolare valore diverso da ogni possibile chiave:

Delete(T, i)

T[ i ] =deleted

slide26

La Search continua a funzionare invariata:

Search(T, k)

i =0

repeat

j = h(k, i)

ifT[ j ]== k

returnj

i =i +1

untili == m or T[ j ]== nil

slide27

La Insertdeve essere modificata:

Insert(T, k)

i= 0

repeat

j=h(k,i)

ifT[ j ] == nil

or T[ j ] == deleted

T[ j ] =k

returnj

i=i+1

untili == m

“Errore: tavola piena”

slide28

Con l’indirizzamento aperto la funzione hash fornisce una sequenza di ispezione.

In questo caso l’ipotesi di hash uniforme diventa:

“Ogni chiave ha la stessa probabilità 1/m!di generare una qualsiasi delle m! possibili sequenze di ispezione”

slide29

Vi sono tre tecniche comunemente usate per determinare l’ordine di ispezione:

  • Ispezione lineare
  • Ispezione quadratica
  • Doppio hash

Nessuna delle tre genera tutte le m! sequenze di ispezione.

Le prime due ne generano soltanto m e l’ultima ne genera m2.