• Nenhum resultado encontrado

Tabelas de espalhamento

N/A
N/A
Protected

Academic year: 2022

Share "Tabelas de espalhamento"

Copied!
43
0
0

Texto

(1)

Análise de Algoritmos

Parte destes slides são adaptações de slides

do Prof. Paulo Feofiloff e do Prof. José Coelho de Pina.

(2)

Tabelas de espalhamento

CLRS Cap 12

(3)

Conjuntos dinâmicos

Conjunto dinâmico, que sofre as seguintes operações:

inserções, remoções, buscas.

Como armazenar tal conjunto?

(4)

Conjuntos dinâmicos

Conjunto dinâmico, que sofre as seguintes operações:

inserções, remoções, buscas.

Como armazenar tal conjunto?

Tempo de pior caso:

inserção busca remoção

LL O(1) O(n) O(1)

ABB O(lg n) O(lg n) O(lg n)

depois da busca

(5)

Conjuntos dinâmicos

Conjunto dinâmico, que sofre as seguintes operações:

inserções, remoções, buscas.

Como armazenar tal conjunto?

Tempo de pior caso:

inserção busca remoção

LL O(1) O(n) O(1)

ABB O(lg n) O(lg n) O(lg n) Tempo esperado:

hashing O(1) O(1) O(1)

(6)

Tabelas de espalhamento

U: universo de chaves possíveis

função de hashing: h : U → {0, . . . , m − 1} m: tamanho da tabela de hashing

(7)

Tabelas de espalhamento

U: universo de chaves possíveis

função de hashing: h : U → {0, . . . , m − 1} m: tamanho da tabela de hashing

Colisão: duas chaves distintas x e y tq h(x) = h(y).

(8)

Tabelas de espalhamento

U: universo de chaves possíveis

função de hashing: h : U → {0, . . . , m − 1} m: tamanho da tabela de hashing

Colisão: duas chaves distintas x e y tq h(x) = h(y). Geralmente se escolhe m de modo que

o número de elementos na tabela seja Θ(m).

(9)

Tabelas de espalhamento

U: universo de chaves possíveis

função de hashing: h : U → {0, . . . , m − 1} m: tamanho da tabela de hashing

Colisão: duas chaves distintas x e y tq h(x) = h(y). Geralmente se escolhe m de modo que

o número de elementos na tabela seja Θ(m). Operações: inserções, remoções, e buscas.

(10)

Tabelas de espalhamento

U: universo de chaves possíveis

função de hashing: h : U → {0, . . . , m − 1} m: tamanho da tabela de hashing

Colisão: duas chaves distintas x e y tq h(x) = h(y). Geralmente se escolhe m de modo que

o número de elementos na tabela seja Θ(m). Operações: inserções, remoções, e buscas.

Resolução de colisões: usando listas ligadas, por exemplo.

(11)

Tabelas de espalhamento

U: universo de chaves possíveis

função de hashing: h : U → {0, . . . , m − 1} m: tamanho da tabela de hashing

Colisão: duas chaves distintas x e y tq h(x) = h(y). Geralmente se escolhe m de modo que

o número de elementos na tabela seja Θ(m). Operações: inserções, remoções, e buscas.

Resolução de colisões: usando listas ligadas, por exemplo.

Aplicações: tabela de símbolos de um compilador.

(12)

Boas funções de hashing

h(k) = k mod m,

onde sugere-se usar como m

um primo distante de potências de 2.

(13)

Boas funções de hashing

h(k) = k mod m,

onde sugere-se usar como m

um primo distante de potências de 2.

h(k) = m(kA mod 1),

onde A é uma constante em (0, 1) e kA mod 1 é a parte fracionária de kA. A escolha de m aqui é livre neste caso.

Knuth sugere que A = (√

5 − 1)/2 = 0.6180339 . . . é uma boa escolha em geral.

(14)

Boas funções de hashing

h(k) = k mod m,

onde sugere-se usar como m

um primo distante de potências de 2.

h(k) = m(kA mod 1),

onde A é uma constante em (0, 1) e kA mod 1 é a parte fracionária de kA. A escolha de m aqui é livre neste caso.

Knuth sugere que A = (√

5 − 1)/2 = 0.6180339 . . . é uma boa escolha em geral.

hashing universal

(15)

Hashing universal

U: conjunto universo (contém todas as possíveis chaves).

n: um número muito menor que |U|.

H: conjunto de funções de U em {0, . . . , n − 1}.

(16)

Hashing universal

U: conjunto universo (contém todas as possíveis chaves).

n: um número muito menor que |U|.

H: conjunto de funções de U em {0, . . . , n − 1}.

Se, para cada par de chaves distintas k, ℓ em U, o número de funções h em H tais que h(k) = h(ℓ) é no máximo |H|/n, então H é uma coleção universal de hashing (para U e n).

(17)

Hashing universal

U: conjunto universo (contém todas as possíveis chaves).

n: um número muito menor que |U|.

H: conjunto de funções de U em {0, . . . , n − 1}.

Se, para cada par de chaves distintas k, ℓ em U, o número de funções h em H tais que h(k) = h(ℓ) é no máximo |H|/n, então H é uma coleção universal de hashing (para U e n).

Teorema: Seja u ∈ U, S ⊆ U tal que |S| ≤ n e H uma

coleção universal de hashing para U e n. Se h é escolhida aleatoriamente de H e X é o número de elementos s em S \ {u} tais que h(s) = h(u), então E[X] ≤ 1.

(18)

Hashing universal

U: conjunto universo n ≪ |U|

H: conjunto de funções de U em {0, . . . , n − 1}.

Teorema: Seja u ∈ U, S ⊆ U tal que |S| ≤ n e H uma

coleção universal de hashing para U e n. Se h é escolhida aleatoriamente de H e X é o número de elementos s em S \ {u} tais que h(s) = h(u), então E[X] ≤ 1.

(19)

Hashing universal

U: conjunto universo n ≪ |U|

H: conjunto de funções de U em {0, . . . , n − 1}.

Teorema: Seja u ∈ U, S ⊆ U tal que |S| ≤ n e H uma

coleção universal de hashing para U e n. Se h é escolhida aleatoriamente de H e X é o número de elementos s em S \ {u} tais que h(s) = h(u), então E[X] ≤ 1.

Prova: Seja si o i-ésimo elemento de S \ {u}.

Xi: variável aleatória binária que vale 1 sse h(si) = h(u).

(20)

Hashing universal

U: conjunto universo n ≪ |U|

H: conjunto de funções de U em {0, . . . , n − 1}.

Teorema: Seja u ∈ U, S ⊆ U tal que |S| ≤ n e H uma

coleção universal de hashing para U e n. Se h é escolhida aleatoriamente de H e X é o número de elementos s em S \ {u} tais que h(s) = h(u), então E[X] ≤ 1.

Prova: Seja si o i-ésimo elemento de S \ {u}.

Xi: variável aleatória binária que vale 1 sse h(si) = h(u). Então X = P

i Xi e E[X] = P

i E[Xi] = P

i Pr{Xi = 1}.

(21)

Hashing universal

U: conjunto universo n ≪ |U|

H: conjunto de funções de U em {0, . . . , n − 1}.

Teorema: Seja u ∈ U, S ⊆ U tal que |S| ≤ n e H uma

coleção universal de hashing para U e n. Se h é escolhida aleatoriamente de H e X é o número de elementos s em S \ {u} tais que h(s) = h(u), então E[X] ≤ 1.

Prova: Seja si o i-ésimo elemento de S \ {u}.

Xi: variável aleatória binária que vale 1 sse h(si) = h(u). Então X = P

i Xi e E[X] = P

i E[Xi] = P

i Pr{Xi = 1}.

Por definição, para cada ℓ em U, com ℓ 6= u, o número de funções h em H tais que h(ℓ) = h(u) é no máximo |H|/n.

(22)

Hashing universal

U: conjunto universo n ≪ |U|

H: conjunto de funções de U em {0, . . . , n − 1}.

Teorema: Seja u ∈ U, S ⊆ U tal que |S| ≤ n e H uma

coleção universal de hashing para U e n. Se h é escolhida aleatoriamente de H e X é o número de elementos s em S \ {u} tais que h(s) = h(u), então E[X] ≤ 1.

Prova: Seja si o i-ésimo elemento de S \ {u}.

Xi: variável aleatória binária que vale 1 sse h(si) = h(u). Então X = P

i Xi e E[X] = P

i E[Xi] = P

i Pr{Xi = 1}.

Por definição, para cada ℓ em U, com ℓ 6= u, o número de funções h em H tais que h(ℓ) = h(u) é no máximo |H|/n. Em particular, para cada i, se h é escolhida aleatoriamente

(23)

Hashing universal

Teorema: Seja u ∈ U, S ⊆ U tal que |S| ≤ n e H uma

coleção universal de hashing para U e n. Se h é escolhida aleatoriamente de H e X é o número de elementos s em S \ {u} tais que h(s) = h(u), então E[X] ≤ 1.

Prova: Seja si o i-ésimo elemento de S \ {u}.

Xi: variável aleatória binária que vale 1 sse h(si) = h(u). Então E[X] = P

i E[Xi] = P

i Pr{Xi = 1}.

Para cada ℓ em U \ {u}, o número de funções h em H tais que h(ℓ) = h(u) é no máximo |H|/n.

Para cada i, se h é escolhida aleatoriamente de H, então Pr{Xi = 1} ≤ 1/n.

(24)

Hashing universal

Teorema: Seja u ∈ U, S ⊆ U tal que |S| ≤ n e H uma

coleção universal de hashing para U e n. Se h é escolhida aleatoriamente de H e X é o número de elementos s em S \ {u} tais que h(s) = h(u), então E[X] ≤ 1.

Prova: Seja si o i-ésimo elemento de S \ {u}.

Xi: variável aleatória binária que vale 1 sse h(si) = h(u). Então E[X] = P

i E[Xi] = P

i Pr{Xi = 1}.

Para cada ℓ em U \ {u}, o número de funções h em H tais que h(ℓ) = h(u) é no máximo |H|/n.

Para cada i, se h é escolhida aleatoriamente de H, então Pr{Xi = 1} ≤ 1/n.

Logo E[X] ≤ |S|/n ≤ 1.

(25)

Uma coleção universal de hashing

Seja p um primo tal que U ⊆ {0, . . . , p − 1}. ZZp: conjunto {0, . . . , p − 1}.

ZZp: conjunto {1, . . . , p − 1}.

(26)

Uma coleção universal de hashing

Seja p um primo tal que U ⊆ {0, . . . , p − 1}. ZZp: conjunto {0, . . . , p − 1}.

ZZp: conjunto {1, . . . , p − 1}.

Para todo a em ZZp e b em ZZp, seja

ha,b(k) = ((ak + b) mod p) mod n, para todo k em U.

(27)

Uma coleção universal de hashing

Seja p um primo tal que U ⊆ {0, . . . , p − 1}. ZZp: conjunto {0, . . . , p − 1}.

ZZp: conjunto {1, . . . , p − 1}.

Para todo a em ZZp e b em ZZp, seja

ha,b(k) = ((ak + b) mod p) mod n, para todo k em U.

Teorema: H = {ha,b : a ∈ ZZp e b ∈ ZZp} é universal.

(28)

Uma coleção universal de hashing

p: primo tal que U ⊆ ZZp. Para a em ZZp e b em ZZp,

seja ha,b(k) = ((ak + b) modp) mod n para todo k em U. Teorema: H = {ha,b : a ∈ ZZp e b ∈ ZZp} é universal.

(29)

Uma coleção universal de hashing

p: primo tal que U ⊆ ZZp. Para a em ZZp e b em ZZp,

seja ha,b(k) = ((ak + b) modp) mod n para todo k em U. Teorema: H = {ha,b : a ∈ ZZp e b ∈ ZZp} é universal.

Prova: Mostraremos que, para k e ℓ em U, com k 6= ℓ, o número de funções h em H tq h(k) = h(ℓ) é ≤ |H|/n.

(30)

Uma coleção universal de hashing

p: primo tal que U ⊆ ZZp. Para a em ZZp e b em ZZp,

seja ha,b(k) = ((ak + b) modp) mod n para todo k em U. Teorema: H = {ha,b : a ∈ ZZp e b ∈ ZZp} é universal.

Prova: Mostraremos que, para k e ℓ em U, com k 6= ℓ, o número de funções h em H tq h(k) = h(ℓ) é ≤ |H|/n. Sejam r = (ak + b) mod p e s = (aℓ + b) mod p.

Note que r − s = a(k − ℓ) mod p.

(31)

Uma coleção universal de hashing

p: primo tal que U ⊆ ZZp. Para a em ZZp e b em ZZp,

seja ha,b(k) = ((ak + b) modp) mod n para todo k em U. Teorema: H = {ha,b : a ∈ ZZp e b ∈ ZZp} é universal.

Prova: Mostraremos que, para k e ℓ em U, com k 6= ℓ, o número de funções h em H tq h(k) = h(ℓ) é ≤ |H|/n. Sejam r = (ak + b) mod p e s = (aℓ + b) mod p.

Note que r − s = a(k − ℓ) mod p.

Como p é primo, a 6= 0 e k − ℓ 6= 0, temos que a(k − ℓ) 6= 0 mod p. Ou seja, r 6= s.

(Colisões podem ocorrer apenas devido ao mod n.)

(32)

Uma coleção universal de hashing

p: primo tal que U ⊆ ZZp. Para a em ZZp e b em ZZp,

seja ha,b(k) = ((ak + b) modp) mod n para todo k em U. Teorema: H = {ha,b : a ∈ ZZp e b ∈ ZZp} é universal.

Prova: Mostraremos que, para k e ℓ em U, o número de funções h em H tais que h(k) = h(ℓ) é no máximo |H|/n. Sejam r = (ak + b) mod p e s = (aℓ + b) mod p.

Note que r − s = a(k − ℓ) 6= 0 mod p. Ou seja, r 6= s.

(33)

Uma coleção universal de hashing

p: primo tal que U ⊆ ZZp. Para a em ZZp e b em ZZp,

seja ha,b(k) = ((ak + b) modp) mod n para todo k em U. Teorema: H = {ha,b : a ∈ ZZp e b ∈ ZZp} é universal.

Prova: Mostraremos que, para k e ℓ em U, o número de funções h em H tais que h(k) = h(ℓ) é no máximo |H|/n. Sejam r = (ak + b) mod p e s = (aℓ + b) mod p.

Note que r − s = a(k − ℓ) 6= 0 mod p. Ou seja, r 6= s.

Cada par (a, b) com a 6= 0 resulta num par (r, s) distinto pois determinamos (a, b) unicamente a partir de (r, s):

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

(34)

Uma coleção universal de hashing

p: primo tal que U ⊆ ZZp. Para a em ZZp e b em ZZp,

seja ha,b(k) = ((ak + b) modp) mod n para todo k em U. Teorema: H = {ha,b : a ∈ ZZp e b ∈ ZZp} é universal.

Prova: Sejam r = (ak + b) mod p e s = (aℓ + b) mod p. Note que r − s = a(k − ℓ) 6= 0 mod p. Ou seja, r 6= s.

Cada par (a, b) com a 6= 0 resulta num par (r, s) distinto pois a = ((r − s)((k − ℓ)1 mod p) modp e b = (r − ak) mod p

(35)

Uma coleção universal de hashing

p: primo tal que U ⊆ ZZp. Para a em ZZp e b em ZZp,

seja ha,b(k) = ((ak + b) modp) mod n para todo k em U. Teorema: H = {ha,b : a ∈ ZZp e b ∈ ZZp} é universal.

Prova: Sejam r = (ak + b) mod p e s = (aℓ + b) mod p. Note que r − s = a(k − ℓ) 6= 0 mod p. Ou seja, r 6= s.

Cada par (a, b) com a 6= 0 resulta num par (r, s) distinto pois a = ((r − s)((k − ℓ)1 mod p) modp e b = (r − ak) mod p é a única solução em ZZp do sistema

r = ak + b mod p s = aℓ + b mod p nas variáveis a e b.

(36)

Uma coleção universal de hashing

p: primo tal que U ⊆ ZZp. Para a em ZZp e b em ZZp,

seja ha,b(k) = ((ak + b) modp) mod n para todo k em U. Teorema: H = {ha,b : a ∈ ZZp e b ∈ ZZp} é universal.

Prova: Sejam r = (ak + b) mod p e s = (aℓ + b) mod p. Note que r − s = a(k − ℓ) 6= 0 mod p. Ou seja, r 6= s. Cada um dos p(p − 1) pares (a, b) com a 6= 0

resulta num par (r, s) distinto com r 6= s.

(37)

Uma coleção universal de hashing

p: primo tal que U ⊆ ZZp. Para a em ZZp e b em ZZp,

seja ha,b(k) = ((ak + b) modp) mod n para todo k em U. Teorema: H = {ha,b : a ∈ ZZp e b ∈ ZZp} é universal.

Prova: Sejam r = (ak + b) mod p e s = (aℓ + b) mod p. Note que r − s = a(k − ℓ) 6= 0 mod p. Ou seja, r 6= s. Cada um dos p(p − 1) pares (a, b) com a 6= 0

resulta num par (r, s) distinto com r 6= s.

Existem p(p − 1) pares possíveis de (r, s) com r 6= s. Logo há uma bijeção entre os (a, b) e os (r, s).

(38)

Uma coleção universal de hashing

p: primo tal que U ⊆ ZZp. Para a em ZZp e b em ZZp,

seja ha,b(k) = ((ak + b) modp) mod n para todo k em U. Teorema: H = {ha,b : a ∈ ZZp e b ∈ ZZp} é universal.

Prova: Sejam r = (ak + b) mod p e s = (aℓ + b) mod p. Note que r − s = a(k − ℓ) 6= 0 mod p. Ou seja, r 6= s. Cada um dos p(p − 1) pares (a, b) com a 6= 0

resulta num par (r, s) distinto com r 6= s.

Existem p(p − 1) pares possíveis de (r, s) com r 6= s. Logo há uma bijeção entre os (a, b) e os (r, s).

Resta então determinar quantos pares (r, s) com r 6= s são tais que r = s mod n, ou seja, r − s = 0 mod n.

(39)

Uma coleção universal de hashing

p: primo tal que U ⊆ ZZp. Para a em ZZp e b em ZZp,

seja ha,b(k) = ((ak + b) modp) mod n para todo k em U. Teorema: H = {ha,b : a ∈ ZZp e b ∈ ZZp} é universal.

Prova: Sejam r = (ak + b) mod p e s = (aℓ + b) mod p. Há uma bijeção entre os (a, b) e os (r, s) com r 6= s. Resta determinar quantos pares (r, s) com r 6= s

são tais que r = s mod n, ou seja, r − s = 0 mod n.

(40)

Uma coleção universal de hashing

p: primo tal que U ⊆ ZZp. Para a em ZZp e b em ZZp,

seja ha,b(k) = ((ak + b) modp) mod n para todo k em U. Teorema: H = {ha,b : a ∈ ZZp e b ∈ ZZp} é universal.

Prova: Sejam r = (ak + b) mod p e s = (aℓ + b) mod p. Há uma bijeção entre os (a, b) e os (r, s) com r 6= s. Resta determinar quantos pares (r, s) com r 6= s

são tais que r = s mod n, ou seja, r − s = 0 mod n. Para cada r ∈ ZZp,

(p − 1)/n⌋ valores de s 6= r tais que s = r mod n.

(41)

Uma coleção universal de hashing

p: primo tal que U ⊆ ZZp. Para a em ZZp e b em ZZp,

seja ha,b(k) = ((ak + b) modp) mod n para todo k em U. Teorema: H = {ha,b : a ∈ ZZp e b ∈ ZZp} é universal.

Prova: Sejam r = (ak + b) mod p e s = (aℓ + b) mod p. Há uma bijeção entre os (a, b) e os (r, s) com r 6= s. Resta determinar quantos pares (r, s) com r 6= s

são tais que r = s mod n, ou seja, r − s = 0 mod n. Para cada r ∈ ZZp,

(p − 1)/n⌋ valores de s 6= r tais que s = r mod n. Logo há p⌊(p − 1)/n⌋ ≤ p(p − 1)/n = |H|/n pares (r, s) com r 6= s tais que s = r mod n.

(42)

Uma coleção universal de hashing

p: primo tal que U ⊆ ZZp. Para a em ZZp e b em ZZp,

seja ha,b(k) = ((ak + b) modp) mod n para todo k em U. Teorema: H = {ha,b : a ∈ ZZp e b ∈ ZZp} é universal.

Prova: Sejam r = (ak + b) mod p e s = (aℓ + b) mod p. Há uma bijeção entre os (a, b) e os (r, s) com r 6= s. Para cada r ∈ ZZp,

(p − 1)/n⌋ valores de s 6= r tais que s = r mod n. Logo há p⌊(p − 1)/n⌋ ≤ p(p − 1)/n = |H|/n pares (r, s) com r 6= s tais que s = r mod n.

(43)

Uma coleção universal de hashing

p: primo tal que U ⊆ ZZp. Para a em ZZp e b em ZZp,

seja ha,b(k) = ((ak + b) modp) mod n para todo k em U. Teorema: H = {ha,b : a ∈ ZZp e b ∈ ZZp} é universal.

Prova: Sejam r = (ak + b) mod p e s = (aℓ + b) mod p. Há uma bijeção entre os (a, b) e os (r, s) com r 6= s. Para cada r ∈ ZZp,

(p − 1)/n⌋ valores de s 6= r tais que s = r mod n. Logo há p⌊(p − 1)/n⌋ ≤ p(p − 1)/n = |H|/n pares (r, s) com r 6= s tais que s = r mod n.

Portanto há ≤ |H|/n funções h em H tais que h(k) = h(ℓ).

Referências

Documentos relacionados

concentrado de factor XI durante e/ou após o parto não é obrigatório em mulheres com deficiência grave de factor XI e pode ser restringido a doentes em que ocorra hemor- ragia grave

Foi investigado, no período de outubro de 1997 a outubro de 1998, a possível associação de Vibrio cholerae com o zooplâncton dos estuários dos rios Anil e Bacanga, em São Luis –

Um outro sistema robótico do tipo rodas, figura 10, é utilizado para inspecionar e limpar a superfície interna de dutos de concreto (Saenz, Elkmann, Stuerze, Kutzner, &

O ensino da compreensão requer, também, a consideração de diferentes momentos – antes, durante e depois da leitura –, e o imprescindível papel dos professores no sentido de

агтев ае реяса de arrasto- а emprega.r па provincia.. Лrt. ,de Angola е dividido еш

A PROMOçãO DE ExPERIêNCIAS E OS 8 MOBILIzADORES CHAVE Tomamos como exemplo quatro dos oito moblizadores para elaborar este guia que tem como objetivo ilustrar de

A possibilidade de mobilidade combinada com a comunicação entre usuários apresenta-se como característica determinante da tecnologia de sistemas móveis. Os projetos apresentados

Profa: Eu vou retomar. Tu tem que passar do tridimensional, para o bidimensional, para o contorno. Não pode ter muita poluição. E ainda tu tem que nomear. Me dá um objeto.