![Page 1: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/1.jpg)
MC-202 — Unidade 18Tabela de Espalhamento
Rafael C. S. [email protected]
Universidade Estadual de Campinas
1º semestre/2017
![Page 2: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/2.jpg)
Introdução
Queremos contar o número de ocorrências de cada palavra dabiblioteca
• no idioma, há cerca de milhares de palavras (≈ 435.000)• mas no total, há milhões de ocorrências!
2
![Page 3: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/3.jpg)
Introdução
Queremos contar o número de ocorrências de cada palavra dabiblioteca
• no idioma, há cerca de milhares de palavras (≈ 435.000)
• mas no total, há milhões de ocorrências!
2
![Page 4: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/4.jpg)
Introdução
Queremos contar o número de ocorrências de cada palavra dabiblioteca
• no idioma, há cerca de milhares de palavras (≈ 435.000)• mas no total, há milhões de ocorrências!
2
![Page 5: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/5.jpg)
Exemplo
dia: 6 ocorrênciasescola: 13 ocorrênciasgratuito: 1 ocorrênciailha: 8 ocorrênciasjeito: 5 ocorrênciaslata: 2 ocorrências
Queremos acessar uma palavra como se fosse um vetor:ocorrencias['ilha'] = 8
Primeiras opções:• Vetor - acesso/escrita em O(n)• Vetor ordenado - acesso em O(lg n)
Conseguimos fazer em O(1)?
3
![Page 6: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/6.jpg)
Exemplo
dia: 6 ocorrênciasescola: 13 ocorrênciasgratuito: 1 ocorrênciailha: 8 ocorrênciasjeito: 5 ocorrênciaslata: 2 ocorrências
Queremos acessar uma palavra como se fosse um vetor:ocorrencias['ilha'] = 8
Primeiras opções:• Vetor - acesso/escrita em O(n)• Vetor ordenado - acesso em O(lg n)
Conseguimos fazer em O(1)?
3
![Page 7: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/7.jpg)
Exemplo
dia: 6 ocorrênciasescola: 13 ocorrênciasgratuito: 1 ocorrênciailha: 8 ocorrênciasjeito: 5 ocorrênciaslata: 2 ocorrências
Queremos acessar uma palavra como se fosse um vetor:ocorrencias['ilha'] = 8
Primeiras opções:
• Vetor - acesso/escrita em O(n)• Vetor ordenado - acesso em O(lg n)
Conseguimos fazer em O(1)?
3
![Page 8: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/8.jpg)
Exemplo
dia: 6 ocorrênciasescola: 13 ocorrênciasgratuito: 1 ocorrênciailha: 8 ocorrênciasjeito: 5 ocorrênciaslata: 2 ocorrências
Queremos acessar uma palavra como se fosse um vetor:ocorrencias['ilha'] = 8
Primeiras opções:• Vetor - acesso/escrita em O(n)
• Vetor ordenado - acesso em O(lg n)
Conseguimos fazer em O(1)?
3
![Page 9: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/9.jpg)
Exemplo
dia: 6 ocorrênciasescola: 13 ocorrênciasgratuito: 1 ocorrênciailha: 8 ocorrênciasjeito: 5 ocorrênciaslata: 2 ocorrências
Queremos acessar uma palavra como se fosse um vetor:ocorrencias['ilha'] = 8
Primeiras opções:• Vetor - acesso/escrita em O(n)• Vetor ordenado - acesso em O(lg n)
Conseguimos fazer em O(1)?
3
![Page 10: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/10.jpg)
Exemplo
dia: 6 ocorrênciasescola: 13 ocorrênciasgratuito: 1 ocorrênciailha: 8 ocorrênciasjeito: 5 ocorrênciaslata: 2 ocorrências
Queremos acessar uma palavra como se fosse um vetor:ocorrencias['ilha'] = 8
Primeiras opções:• Vetor - acesso/escrita em O(n)• Vetor ordenado - acesso em O(lg n)
Conseguimos fazer em O(1)?3
![Page 11: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/11.jpg)
Caso fácilSe tivéssemos apenas uma palavra começando com cadaletra era fácil
• bastaria ter um vetor de 24 posições
a 0
b 1c 2d 3e 4
f 5g 6
h 7
i 8...
......
dia
escola
gratuito
ilha
4
![Page 12: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/12.jpg)
Caso fácilSe tivéssemos apenas uma palavra começando com cadaletra era fácil
• bastaria ter um vetor de 24 posições
a 0
b 1c 2d 3e 4
f 5g 6
h 7
i 8...
......
dia
escola
gratuito
ilha
4
![Page 13: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/13.jpg)
Palavras que começam com a mesma letra
0
123
45
67
8...
......
NULL
NULL
NULL
dia
escolaNULL
gratuito
NULL
ilha
Ideia:
• uma lista ligada para cada letra• guardamos os ponteiros para as listas em um vetor
5
![Page 14: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/14.jpg)
Palavras que começam com a mesma letra
0
123
45
67
8...
......
NULL
NULL
NULL
dia
escolaNULL
gratuito
NULL
ilha
Ideia:• uma lista ligada para cada letra
• guardamos os ponteiros para as listas em um vetor
5
![Page 15: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/15.jpg)
Palavras que começam com a mesma letra
0
123
45
67
8...
......
NULL
NULL
NULL
dia
escolaNULL
gratuito
NULL
ilha
Ideia:• uma lista ligada para cada letra• guardamos os ponteiros para as listas em um vetor
5
![Page 16: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/16.jpg)
Palavras que começam com a mesma letra
0
123
45
67
8...
......
NULL
NULL
dia
escolaNULL
gratuito
NULL
ilha
NULL
Inserindo “bola”:• descobrimos a posição pela primeira letra• atualizamos o vetor para apontar para o nó de “bola”
6
![Page 17: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/17.jpg)
Palavras que começam com a mesma letra
0
123
45
67
8...
......
NULL
NULL
dia
escolaNULL
gratuito
NULL
ilha
NULL
Inserindo “bola”:
• descobrimos a posição pela primeira letra• atualizamos o vetor para apontar para o nó de “bola”
6
![Page 18: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/18.jpg)
Palavras que começam com a mesma letra
0
123
45
67
8...
......
NULL
NULL
dia
escolaNULL
gratuito
NULL
ilha
NULL1
Inserindo “bola”:• descobrimos a posição pela primeira letra
• atualizamos o vetor para apontar para o nó de “bola”
6
![Page 19: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/19.jpg)
Palavras que começam com a mesma letra
0
123
45
67
8...
......
NULL
NULL
dia
escolaNULL
gratuito
NULL
ilha
NULL1
Inserindo “bola”:• descobrimos a posição pela primeira letra• atualizamos o vetor para apontar para o nó de “bola”
6
![Page 20: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/20.jpg)
Palavras que começam com a mesma letra
0
123
45
67
8...
......
NULL
NULL
dia
escolaNULL
gratuito
NULL
ilha
1 bola
Inserindo “bola”:• descobrimos a posição pela primeira letra• atualizamos o vetor para apontar para o nó de “bola”
6
![Page 21: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/21.jpg)
Palavras que começam com a mesma letra
0
123
45
67
8...
......
NULL
NULL
dia
escolaNULL
gratuito
NULL
ilha
bola
Inserindo “bela”:• descobrimos a posição pela primeira letra• temos uma colisão com “bola”• inserimos na lista da letra b
7
![Page 22: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/22.jpg)
Palavras que começam com a mesma letra
0
123
45
67
8...
......
NULL
NULL
dia
escolaNULL
gratuito
NULL
ilha
bola
Inserindo “bela”:
• descobrimos a posição pela primeira letra• temos uma colisão com “bola”• inserimos na lista da letra b
7
![Page 23: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/23.jpg)
Palavras que começam com a mesma letra
0
123
45
67
8...
......
NULL
NULL
dia
escolaNULL
gratuito
NULL
ilha
bola
Inserindo “bela”:• descobrimos a posição pela primeira letra
• temos uma colisão com “bola”• inserimos na lista da letra b
7
![Page 24: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/24.jpg)
Palavras que começam com a mesma letra
0
123
45
67
8...
......
NULL
NULL
dia
escolaNULL
gratuito
NULL
ilha
bola
Inserindo “bela”:• descobrimos a posição pela primeira letra• temos uma colisão com “bola”
• inserimos na lista da letra b
7
![Page 25: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/25.jpg)
Palavras que começam com a mesma letra
0
123
45
67
8...
......
NULL
NULL
dia
escolaNULL
gratuito
NULL
ilha
bela bola
Inserindo “bela”:• descobrimos a posição pela primeira letra• temos uma colisão com “bola”• inserimos na lista da letra b
7
![Page 26: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/26.jpg)
Palavras que começam com a mesma letra
0
123
45
67
8...
......
NULL
NULL
dia
escolaNULL
gratuito
NULL
ilha
bela bola
Após a inserção de várias palavras começando com b:• inserimos “bolo”,
“boca”, “broca”• a tabela ficou degenerada em lista
8
![Page 27: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/27.jpg)
Palavras que começam com a mesma letra
0
123
45
67
8...
......
NULL
NULL
dia
escolaNULL
gratuito
NULL
ilha
bela bola
Após a inserção de várias palavras começando com b:
• inserimos “bolo”,
“boca”, “broca”• a tabela ficou degenerada em lista
8
![Page 28: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/28.jpg)
Palavras que começam com a mesma letra
0
123
45
67
8...
......
NULL
NULL
dia
escolaNULL
gratuito
NULL
ilha
bela bola
Após a inserção de várias palavras começando com b:• inserimos “bolo”,
“boca”, “broca”
• a tabela ficou degenerada em lista
8
![Page 29: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/29.jpg)
Palavras que começam com a mesma letra
0
123
45
67
8...
......
NULL
NULL
dia
escolaNULL
gratuito
NULL
ilha
bolo bela bola
Após a inserção de várias palavras começando com b:• inserimos “bolo”,
“boca”, “broca”
• a tabela ficou degenerada em lista
8
![Page 30: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/30.jpg)
Palavras que começam com a mesma letra
0
123
45
67
8...
......
NULL
NULL
dia
escolaNULL
gratuito
NULL
ilha
bolo bela bola
Após a inserção de várias palavras começando com b:• inserimos “bolo”, “boca”,
“broca”
• a tabela ficou degenerada em lista
8
![Page 31: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/31.jpg)
Palavras que começam com a mesma letra
0
123
45
67
8...
......
NULL
NULL
dia
escolaNULL
gratuito
NULL
ilha
boca bolo bela bola
Após a inserção de várias palavras começando com b:• inserimos “bolo”, “boca”,
“broca”
• a tabela ficou degenerada em lista
8
![Page 32: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/32.jpg)
Palavras que começam com a mesma letra
0
123
45
67
8...
......
NULL
NULL
dia
escolaNULL
gratuito
NULL
ilha
boca bolo bela bola
Após a inserção de várias palavras começando com b:• inserimos “bolo”, “boca”, “broca”
• a tabela ficou degenerada em lista
8
![Page 33: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/33.jpg)
Palavras que começam com a mesma letra
0
123
45
67
8...
......
NULL
NULL
dia
escolaNULL
gratuito
NULL
ilha
broca boca bolo bela bola
Após a inserção de várias palavras começando com b:• inserimos “bolo”, “boca”, “broca”
• a tabela ficou degenerada em lista
8
![Page 34: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/34.jpg)
Palavras que começam com a mesma letra
0
123
45
67
8...
......
NULL
NULL
dia
escolaNULL
gratuito
NULL
ilha
broca boca bolo bela bola
Após a inserção de várias palavras começando com b:• inserimos “bolo”, “boca”, “broca”• a tabela ficou degenerada em lista
8
![Page 35: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/35.jpg)
Espalhamento com Encadeamento Separado
0
123
45
67
8
NULL
NULL
NULL
broca
boca
bolo
bela
bola
dia
escola
gratuito
ilha
NULL
NULL
NULL
NULL
NULL
NULL
Corrigindo:
• vamos tentar espalhar melhor• usamos um hash da chave (palavra)• vamos associar a chave a um número inteiro (entre 0 e 8)
9
![Page 36: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/36.jpg)
Espalhamento com Encadeamento Separado
0
123
45
67
8
NULL
NULL
NULL
broca
boca
bolo
bela
bola
dia
escola
gratuito
ilha
NULL
NULL
NULL
NULL
NULL
NULL
Corrigindo:• vamos tentar espalhar melhor
• usamos um hash da chave (palavra)• vamos associar a chave a um número inteiro (entre 0 e 8)
9
![Page 37: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/37.jpg)
Espalhamento com Encadeamento Separado
0
123
45
67
8
NULL
NULL
NULL
broca
boca
bolo
bela
bola
dia
escola
gratuito
ilha
NULL
NULL
NULL
NULL
NULL
NULL
Corrigindo:• vamos tentar espalhar melhor• usamos um hash da chave (palavra)
• vamos associar a chave a um número inteiro (entre 0 e 8)
9
![Page 38: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/38.jpg)
Espalhamento com Encadeamento Separado
0
123
45
67
8
NULL
NULL
NULL
broca h("broca") = 3
boca
bolo
bela
bola
dia
escola
gratuito
ilha
NULL
NULL
NULL
NULL
NULL
NULL
Corrigindo:• vamos tentar espalhar melhor• usamos um hash da chave (palavra)• vamos associar a chave a um número inteiro (entre 0 e 8)
9
![Page 39: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/39.jpg)
Espalhamento com Encadeamento Separado
0
123
45
67
8
NULL
NULL
NULL
broca h("broca") = 3
boca
bolo
bela
bola
dia
escola
gratuito
ilha
broca
NULL
NULL
NULL
NULL
NULL
Corrigindo:• vamos tentar espalhar melhor• usamos um hash da chave (palavra)• vamos associar a chave a um número inteiro (entre 0 e 8)
9
![Page 40: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/40.jpg)
Espalhamento com Encadeamento Separado
0
123
45
67
8
NULL
NULL
NULL
broca h("broca") = 3
boca h("boca") = 0
bolo
bela
bola
dia
escola
gratuito
ilha
broca
NULL
NULL
NULL
NULL
NULL
Corrigindo:• vamos tentar espalhar melhor• usamos um hash da chave (palavra)• vamos associar a chave a um número inteiro (entre 0 e 8)
9
![Page 41: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/41.jpg)
Espalhamento com Encadeamento Separado
0
123
45
67
8
NULL
NULL
NULL
broca h("broca") = 3
boca h("boca") = 0
bolo
bela
bola
dia
escola
gratuito
ilha
broca
boca
NULL
NULL
NULL
NULL
Corrigindo:• vamos tentar espalhar melhor• usamos um hash da chave (palavra)• vamos associar a chave a um número inteiro (entre 0 e 8)
9
![Page 42: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/42.jpg)
Espalhamento com Encadeamento Separado
0
123
45
67
8
NULL
NULL
NULL
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela
bola
dia
escola
gratuito
ilha
broca
boca
NULL
NULL
NULL
NULL
Corrigindo:• vamos tentar espalhar melhor• usamos um hash da chave (palavra)• vamos associar a chave a um número inteiro (entre 0 e 8)
9
![Page 43: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/43.jpg)
Espalhamento com Encadeamento Separado
0
123
45
67
8
NULL
NULL
NULL
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela
bola
dia
escola
gratuito
ilha
broca
boca
bolo
NULL
NULL
NULL
Corrigindo:• vamos tentar espalhar melhor• usamos um hash da chave (palavra)• vamos associar a chave a um número inteiro (entre 0 e 8)
9
![Page 44: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/44.jpg)
Espalhamento com Encadeamento Separado
0
123
45
67
8
NULL
NULL
NULL
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola
dia
escola
gratuito
ilha
broca
boca
bolo
NULL
NULL
NULL
Corrigindo:• vamos tentar espalhar melhor• usamos um hash da chave (palavra)• vamos associar a chave a um número inteiro (entre 0 e 8)
9
![Page 45: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/45.jpg)
Espalhamento com Encadeamento Separado
0
123
45
67
8
NULL
NULL
NULL
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola
dia
escola
gratuito
ilha
broca
boca
bolo
bela
NULL
NULL
Corrigindo:• vamos tentar espalhar melhor• usamos um hash da chave (palavra)• vamos associar a chave a um número inteiro (entre 0 e 8)
9
![Page 46: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/46.jpg)
Espalhamento com Encadeamento Separado
0
123
45
67
8
NULL
NULL
NULL
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia
escola
gratuito
ilha
broca
boca
bolo
bela
NULL
NULL
Corrigindo:• vamos tentar espalhar melhor• usamos um hash da chave (palavra)• vamos associar a chave a um número inteiro (entre 0 e 8)
9
![Page 47: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/47.jpg)
Espalhamento com Encadeamento Separado
0
123
45
67
8
NULL
NULL
NULL
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia
escola
gratuito
ilha
broca
bolo
bela
bola boca
NULL
NULL
Corrigindo:• vamos tentar espalhar melhor• usamos um hash da chave (palavra)• vamos associar a chave a um número inteiro (entre 0 e 8)
9
![Page 48: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/48.jpg)
Espalhamento com Encadeamento Separado
0
123
45
67
8
NULL
NULL
NULL
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia h("dia") = 2
escola
gratuito
ilha
broca
bolo
bela
bola boca
NULL
NULL
Corrigindo:• vamos tentar espalhar melhor• usamos um hash da chave (palavra)• vamos associar a chave a um número inteiro (entre 0 e 8)
9
![Page 49: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/49.jpg)
Espalhamento com Encadeamento Separado
0
123
45
67
8
NULL
NULL
NULL
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia h("dia") = 2
escola
gratuito
ilha
broca
bolo
bola boca
dia bela
NULL
NULL
Corrigindo:• vamos tentar espalhar melhor• usamos um hash da chave (palavra)• vamos associar a chave a um número inteiro (entre 0 e 8)
9
![Page 50: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/50.jpg)
Espalhamento com Encadeamento Separado
0
123
45
67
8
NULL
NULL
NULL
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia h("dia") = 2
escola h("escola") = 7
gratuito
ilha
broca
bolo
bola boca
dia bela
NULL
NULL
Corrigindo:• vamos tentar espalhar melhor• usamos um hash da chave (palavra)• vamos associar a chave a um número inteiro (entre 0 e 8)
9
![Page 51: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/51.jpg)
Espalhamento com Encadeamento Separado
0
123
45
67
8
NULL
NULL
NULL
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia h("dia") = 2
escola h("escola") = 7
gratuito
ilha
broca
bolo
bola boca
dia bela
escola
NULL
Corrigindo:• vamos tentar espalhar melhor• usamos um hash da chave (palavra)• vamos associar a chave a um número inteiro (entre 0 e 8)
9
![Page 52: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/52.jpg)
Espalhamento com Encadeamento Separado
0
123
45
67
8
NULL
NULL
NULL
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia h("dia") = 2
escola h("escola") = 7
gratuito h("gratuito") = 0
ilha
broca
bolo
bola boca
dia bela
escola
NULL
Corrigindo:• vamos tentar espalhar melhor• usamos um hash da chave (palavra)• vamos associar a chave a um número inteiro (entre 0 e 8)
9
![Page 53: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/53.jpg)
Espalhamento com Encadeamento Separado
0
123
45
67
8
NULL
NULL
NULL
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia h("dia") = 2
escola h("escola") = 7
gratuito h("gratuito") = 0
ilha
broca
bolo
dia bela
escola
gratuito bola boca
NULL
Corrigindo:• vamos tentar espalhar melhor• usamos um hash da chave (palavra)• vamos associar a chave a um número inteiro (entre 0 e 8)
9
![Page 54: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/54.jpg)
Espalhamento com Encadeamento Separado
0
123
45
67
8
NULL
NULL
NULL
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia h("dia") = 2
escola h("escola") = 7
gratuito h("gratuito") = 0
ilha h("ilha") = 6
broca
bolo
dia bela
escola
gratuito bola boca
NULL
Corrigindo:• vamos tentar espalhar melhor• usamos um hash da chave (palavra)• vamos associar a chave a um número inteiro (entre 0 e 8)
9
![Page 55: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/55.jpg)
Espalhamento com Encadeamento Separado
0
123
45
67
8
NULL
NULL
NULL
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia h("dia") = 2
escola h("escola") = 7
gratuito h("gratuito") = 0
ilha h("ilha") = 6
broca
bolo
dia bela
escola
gratuito bola boca
ilha
Corrigindo:• vamos tentar espalhar melhor• usamos um hash da chave (palavra)• vamos associar a chave a um número inteiro (entre 0 e 8)
9
![Page 56: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/56.jpg)
Tabela de Espalhamento
Uma função de hashing associa um elemento de um certoconjunto (strings, números, arquivos, etc.) a um número inteirode tamanho conhecido
Uma tabela de espalhamento é um tipo abstrato de dadospara busca em conjuntos dinâmicos cuja implementação temcertas propriedades:
• os dados são acessado por meio de um vetor de tamanhoconhecido
• a posição do vetor é calculada por uma função de hashing
10
![Page 57: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/57.jpg)
Tabela de Espalhamento
Uma função de hashing associa um elemento de um certoconjunto (strings, números, arquivos, etc.) a um número inteirode tamanho conhecido
Uma tabela de espalhamento é um tipo abstrato de dadospara busca em conjuntos dinâmicos cuja implementação temcertas propriedades:
• os dados são acessado por meio de um vetor de tamanhoconhecido
• a posição do vetor é calculada por uma função de hashing
10
![Page 58: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/58.jpg)
Tabela de Espalhamento
Uma função de hashing associa um elemento de um certoconjunto (strings, números, arquivos, etc.) a um número inteirode tamanho conhecido
Uma tabela de espalhamento é um tipo abstrato de dadospara busca em conjuntos dinâmicos cuja implementação temcertas propriedades:
• os dados são acessado por meio de um vetor de tamanhoconhecido
• a posição do vetor é calculada por uma função de hashing
10
![Page 59: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/59.jpg)
Tabela de Espalhamento
Uma função de hashing associa um elemento de um certoconjunto (strings, números, arquivos, etc.) a um número inteirode tamanho conhecido
Uma tabela de espalhamento é um tipo abstrato de dadospara busca em conjuntos dinâmicos cuja implementação temcertas propriedades:
• os dados são acessado por meio de um vetor de tamanhoconhecido
• a posição do vetor é calculada por uma função de hashing
10
![Page 60: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/60.jpg)
Características das tabelas de Espalhamento
Propriedades:
• estimativa do tamanho do conjunto de dados deve serconhecida
• tempo das operações depende da função de hashingescolhida:
– chaves bem espalhadas: tempo “quase” O(1)
– se temos n itens– e uma tabela de tamanho M– tempo de acesso é o tempo de calcular a função de
hashing + O(n/M)
– chaves agrupadas: pior caso de tempo O(n)
– Vira uma lista ligada com todos os elementos
11
![Page 61: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/61.jpg)
Características das tabelas de Espalhamento
Propriedades:• estimativa do tamanho do conjunto de dados deve ser
conhecida
• tempo das operações depende da função de hashingescolhida:
– chaves bem espalhadas: tempo “quase” O(1)
– se temos n itens– e uma tabela de tamanho M– tempo de acesso é o tempo de calcular a função de
hashing + O(n/M)
– chaves agrupadas: pior caso de tempo O(n)
– Vira uma lista ligada com todos os elementos
11
![Page 62: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/62.jpg)
Características das tabelas de Espalhamento
Propriedades:• estimativa do tamanho do conjunto de dados deve ser
conhecida• tempo das operações depende da função de hashing
escolhida:
– chaves bem espalhadas: tempo “quase” O(1)
– se temos n itens– e uma tabela de tamanho M– tempo de acesso é o tempo de calcular a função de
hashing + O(n/M)
– chaves agrupadas: pior caso de tempo O(n)
– Vira uma lista ligada com todos os elementos
11
![Page 63: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/63.jpg)
Características das tabelas de Espalhamento
Propriedades:• estimativa do tamanho do conjunto de dados deve ser
conhecida• tempo das operações depende da função de hashing
escolhida:– chaves bem espalhadas: tempo “quase” O(1)
– se temos n itens– e uma tabela de tamanho M– tempo de acesso é o tempo de calcular a função de
hashing + O(n/M)– chaves agrupadas: pior caso de tempo O(n)
– Vira uma lista ligada com todos os elementos
11
![Page 64: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/64.jpg)
Características das tabelas de Espalhamento
Propriedades:• estimativa do tamanho do conjunto de dados deve ser
conhecida• tempo das operações depende da função de hashing
escolhida:– chaves bem espalhadas: tempo “quase” O(1)
– se temos n itens
– e uma tabela de tamanho M– tempo de acesso é o tempo de calcular a função de
hashing + O(n/M)– chaves agrupadas: pior caso de tempo O(n)
– Vira uma lista ligada com todos os elementos
11
![Page 65: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/65.jpg)
Características das tabelas de Espalhamento
Propriedades:• estimativa do tamanho do conjunto de dados deve ser
conhecida• tempo das operações depende da função de hashing
escolhida:– chaves bem espalhadas: tempo “quase” O(1)
– se temos n itens– e uma tabela de tamanho M
– tempo de acesso é o tempo de calcular a função dehashing + O(n/M)
– chaves agrupadas: pior caso de tempo O(n)
– Vira uma lista ligada com todos os elementos
11
![Page 66: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/66.jpg)
Características das tabelas de Espalhamento
Propriedades:• estimativa do tamanho do conjunto de dados deve ser
conhecida• tempo das operações depende da função de hashing
escolhida:– chaves bem espalhadas: tempo “quase” O(1)
– se temos n itens– e uma tabela de tamanho M– tempo de acesso é o tempo de calcular a função de
hashing + O(n/M)
– chaves agrupadas: pior caso de tempo O(n)
– Vira uma lista ligada com todos os elementos
11
![Page 67: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/67.jpg)
Características das tabelas de Espalhamento
Propriedades:• estimativa do tamanho do conjunto de dados deve ser
conhecida• tempo das operações depende da função de hashing
escolhida:– chaves bem espalhadas: tempo “quase” O(1)
– se temos n itens– e uma tabela de tamanho M– tempo de acesso é o tempo de calcular a função de
hashing + O(n/M)– chaves agrupadas: pior caso de tempo O(n)
– Vira uma lista ligada com todos os elementos
11
![Page 68: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/68.jpg)
Características das tabelas de Espalhamento
Propriedades:• estimativa do tamanho do conjunto de dados deve ser
conhecida• tempo das operações depende da função de hashing
escolhida:– chaves bem espalhadas: tempo “quase” O(1)
– se temos n itens– e uma tabela de tamanho M– tempo de acesso é o tempo de calcular a função de
hashing + O(n/M)– chaves agrupadas: pior caso de tempo O(n)
– Vira uma lista ligada com todos os elementos
11
![Page 69: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/69.jpg)
Obtendo funções de hashing
Uma boa função de hashing depende do conjunto de chavesespecífico
Métodos genéricos:1. Método da divisão2. Método da multiplicação
Hashing perfeito: Se conhecermos todos as chaves a priori, épossível encontrar uma função de hashing injetora
• isto é, não temos colisões• tais funções podem ser difíceis de encontrar
12
![Page 70: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/70.jpg)
Obtendo funções de hashing
Uma boa função de hashing depende do conjunto de chavesespecífico
Métodos genéricos:
1. Método da divisão2. Método da multiplicação
Hashing perfeito: Se conhecermos todos as chaves a priori, épossível encontrar uma função de hashing injetora
• isto é, não temos colisões• tais funções podem ser difíceis de encontrar
12
![Page 71: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/71.jpg)
Obtendo funções de hashing
Uma boa função de hashing depende do conjunto de chavesespecífico
Métodos genéricos:1. Método da divisão
2. Método da multiplicação
Hashing perfeito: Se conhecermos todos as chaves a priori, épossível encontrar uma função de hashing injetora
• isto é, não temos colisões• tais funções podem ser difíceis de encontrar
12
![Page 72: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/72.jpg)
Obtendo funções de hashing
Uma boa função de hashing depende do conjunto de chavesespecífico
Métodos genéricos:1. Método da divisão2. Método da multiplicação
Hashing perfeito: Se conhecermos todos as chaves a priori, épossível encontrar uma função de hashing injetora
• isto é, não temos colisões• tais funções podem ser difíceis de encontrar
12
![Page 73: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/73.jpg)
Obtendo funções de hashing
Uma boa função de hashing depende do conjunto de chavesespecífico
Métodos genéricos:1. Método da divisão2. Método da multiplicação
Hashing perfeito: Se conhecermos todos as chaves a priori, épossível encontrar uma função de hashing injetora
• isto é, não temos colisões• tais funções podem ser difíceis de encontrar
12
![Page 74: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/74.jpg)
Obtendo funções de hashing
Uma boa função de hashing depende do conjunto de chavesespecífico
Métodos genéricos:1. Método da divisão2. Método da multiplicação
Hashing perfeito: Se conhecermos todos as chaves a priori, épossível encontrar uma função de hashing injetora
• isto é, não temos colisões
• tais funções podem ser difíceis de encontrar
12
![Page 75: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/75.jpg)
Obtendo funções de hashing
Uma boa função de hashing depende do conjunto de chavesespecífico
Métodos genéricos:1. Método da divisão2. Método da multiplicação
Hashing perfeito: Se conhecermos todos as chaves a priori, épossível encontrar uma função de hashing injetora
• isto é, não temos colisões• tais funções podem ser difíceis de encontrar
12
![Page 76: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/76.jpg)
Interpretando chaves
Pressupomos que as chaves são números inteiros
E se não for?• Reinterpretamos a chave como uma sequência de bits
b o l a
01100010 01101111 01101100 01100001
Assim, “bola” se torna o número 1.651.469.409
13
![Page 77: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/77.jpg)
Interpretando chaves
Pressupomos que as chaves são números inteiros
E se não for?
• Reinterpretamos a chave como uma sequência de bits
b o l a
01100010 01101111 01101100 01100001
Assim, “bola” se torna o número 1.651.469.409
13
![Page 78: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/78.jpg)
Interpretando chaves
Pressupomos que as chaves são números inteiros
E se não for?• Reinterpretamos a chave como uma sequência de bits
b o l a
01100010 01101111 01101100 01100001
Assim, “bola” se torna o número 1.651.469.409
13
![Page 79: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/79.jpg)
Interpretando chaves
Pressupomos que as chaves são números inteiros
E se não for?• Reinterpretamos a chave como uma sequência de bits
b o l a
01100010 01101111 01101100 01100001
Assim, “bola” se torna o número 1.651.469.409
13
![Page 80: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/80.jpg)
Interpretando chaves
Pressupomos que as chaves são números inteiros
E se não for?• Reinterpretamos a chave como uma sequência de bits
b o l a
01100010 01101111 01101100 01100001
Assim, “bola” se torna o número 1.651.469.409
13
![Page 81: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/81.jpg)
Método da divisão• obtemos o resto da divisão pelo tamanho M do hashing
h(x) = xmodM
Exemplo:
h(“bola”) = 1.651.469.409mod 1783 = 1319
Escolhendo M :• escolher M como uma potência de 2 não é uma boa ideia
– considera apenas os bits menos significativos
• normalmente escolhemos M como um número primolonge de uma potência de 2
14
![Page 82: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/82.jpg)
Método da divisão• obtemos o resto da divisão pelo tamanho M do hashing
h(x) = xmodM
Exemplo:
h(“bola”) = 1.651.469.409mod 1783 = 1319
Escolhendo M :• escolher M como uma potência de 2 não é uma boa ideia
– considera apenas os bits menos significativos
• normalmente escolhemos M como um número primolonge de uma potência de 2
14
![Page 83: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/83.jpg)
Método da divisão• obtemos o resto da divisão pelo tamanho M do hashing
h(x) = xmodM
Exemplo:
h(“bola”) = 1.651.469.409mod 1783 = 1319
Escolhendo M :• escolher M como uma potência de 2 não é uma boa ideia
– considera apenas os bits menos significativos
• normalmente escolhemos M como um número primolonge de uma potência de 2
14
![Page 84: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/84.jpg)
Método da divisão• obtemos o resto da divisão pelo tamanho M do hashing
h(x) = xmodM
Exemplo:
h(“bola”) = 1.651.469.409mod 1783 = 1319
Escolhendo M :
• escolher M como uma potência de 2 não é uma boa ideia
– considera apenas os bits menos significativos
• normalmente escolhemos M como um número primolonge de uma potência de 2
14
![Page 85: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/85.jpg)
Método da divisão• obtemos o resto da divisão pelo tamanho M do hashing
h(x) = xmodM
Exemplo:
h(“bola”) = 1.651.469.409mod 1783 = 1319
Escolhendo M :• escolher M como uma potência de 2 não é uma boa ideia
– considera apenas os bits menos significativos
• normalmente escolhemos M como um número primolonge de uma potência de 2
14
![Page 86: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/86.jpg)
Método da divisão• obtemos o resto da divisão pelo tamanho M do hashing
h(x) = xmodM
Exemplo:
h(“bola”) = 1.651.469.409mod 1783 = 1319
Escolhendo M :• escolher M como uma potência de 2 não é uma boa ideia
– considera apenas os bits menos significativos
• normalmente escolhemos M como um número primolonge de uma potência de 2
14
![Page 87: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/87.jpg)
Método da divisão• obtemos o resto da divisão pelo tamanho M do hashing
h(x) = xmodM
Exemplo:
h(“bola”) = 1.651.469.409mod 1783 = 1319
Escolhendo M :• escolher M como uma potência de 2 não é uma boa ideia
– considera apenas os bits menos significativos
• normalmente escolhemos M como um número primolonge de uma potência de 2
14
![Page 88: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/88.jpg)
Método da multiplicação• multiplicamos por um certo valor real A e obtemos a parte
fracionária
• escolhemos A conveniente, por exemplo A = (√
5 − 1)/2• posição relativa no vetor não depende de M (pode ser
M = 1024)
h(x) = ⌊M (A · xmod 1)⌋
Exemplo:
h(“bola”) = ⌊1024 · [((√
5 − 1)/2 · 1.651.469.409)mod 1]⌋= ⌊1024 · [1020664226,142702mod 1]⌋= ⌊1024 · 0,142702⌋= ⌊146,126848⌋ = 146
O uso da razão áurea como valor de A é sugestão de Knuth
15
![Page 89: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/89.jpg)
Método da multiplicação• multiplicamos por um certo valor real A e obtemos a parte
fracionária• escolhemos A conveniente, por exemplo A = (
√5 − 1)/2
• posição relativa no vetor não depende de M (pode serM = 1024)
h(x) = ⌊M (A · xmod 1)⌋
Exemplo:
h(“bola”) = ⌊1024 · [((√
5 − 1)/2 · 1.651.469.409)mod 1]⌋= ⌊1024 · [1020664226,142702mod 1]⌋= ⌊1024 · 0,142702⌋= ⌊146,126848⌋ = 146
O uso da razão áurea como valor de A é sugestão de Knuth
15
![Page 90: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/90.jpg)
Método da multiplicação• multiplicamos por um certo valor real A e obtemos a parte
fracionária• escolhemos A conveniente, por exemplo A = (
√5 − 1)/2
• posição relativa no vetor não depende de M (pode serM = 1024)
h(x) = ⌊M (A · xmod 1)⌋
Exemplo:
h(“bola”) = ⌊1024 · [((√
5 − 1)/2 · 1.651.469.409)mod 1]⌋= ⌊1024 · [1020664226,142702mod 1]⌋= ⌊1024 · 0,142702⌋= ⌊146,126848⌋ = 146
O uso da razão áurea como valor de A é sugestão de Knuth
15
![Page 91: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/91.jpg)
Método da multiplicação• multiplicamos por um certo valor real A e obtemos a parte
fracionária• escolhemos A conveniente, por exemplo A = (
√5 − 1)/2
• posição relativa no vetor não depende de M (pode serM = 1024)
h(x) = ⌊M (A · xmod 1)⌋
Exemplo:
h(“bola”) = ⌊1024 · [((√
5 − 1)/2 · 1.651.469.409)mod 1]⌋= ⌊1024 · [1020664226,142702mod 1]⌋= ⌊1024 · 0,142702⌋= ⌊146,126848⌋ = 146
O uso da razão áurea como valor de A é sugestão de Knuth
15
![Page 92: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/92.jpg)
Método da multiplicação• multiplicamos por um certo valor real A e obtemos a parte
fracionária• escolhemos A conveniente, por exemplo A = (
√5 − 1)/2
• posição relativa no vetor não depende de M (pode serM = 1024)
h(x) = ⌊M (A · xmod 1)⌋
Exemplo:
h(“bola”) = ⌊1024 · [((√
5 − 1)/2 · 1.651.469.409)mod 1]⌋= ⌊1024 · [1020664226,142702mod 1]⌋= ⌊1024 · 0,142702⌋= ⌊146,126848⌋ = 146
O uso da razão áurea como valor de A é sugestão de Knuth
15
![Page 93: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/93.jpg)
Método da multiplicação• multiplicamos por um certo valor real A e obtemos a parte
fracionária• escolhemos A conveniente, por exemplo A = (
√5 − 1)/2
• posição relativa no vetor não depende de M (pode serM = 1024)
h(x) = ⌊M (A · xmod 1)⌋
Exemplo:
h(“bola”)
= ⌊1024 · [((√
5 − 1)/2 · 1.651.469.409)mod 1]⌋= ⌊1024 · [1020664226,142702mod 1]⌋= ⌊1024 · 0,142702⌋= ⌊146,126848⌋ = 146
O uso da razão áurea como valor de A é sugestão de Knuth
15
![Page 94: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/94.jpg)
Método da multiplicação• multiplicamos por um certo valor real A e obtemos a parte
fracionária• escolhemos A conveniente, por exemplo A = (
√5 − 1)/2
• posição relativa no vetor não depende de M (pode serM = 1024)
h(x) = ⌊M (A · xmod 1)⌋
Exemplo:
h(“bola”) = ⌊1024 · [((√
5 − 1)/2 · 1.651.469.409)mod 1]⌋
= ⌊1024 · [1020664226,142702mod 1]⌋= ⌊1024 · 0,142702⌋= ⌊146,126848⌋ = 146
O uso da razão áurea como valor de A é sugestão de Knuth
15
![Page 95: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/95.jpg)
Método da multiplicação• multiplicamos por um certo valor real A e obtemos a parte
fracionária• escolhemos A conveniente, por exemplo A = (
√5 − 1)/2
• posição relativa no vetor não depende de M (pode serM = 1024)
h(x) = ⌊M (A · xmod 1)⌋
Exemplo:
h(“bola”) = ⌊1024 · [((√
5 − 1)/2 · 1.651.469.409)mod 1]⌋= ⌊1024 · [1020664226,142702mod 1]⌋
= ⌊1024 · 0,142702⌋= ⌊146,126848⌋ = 146
O uso da razão áurea como valor de A é sugestão de Knuth
15
![Page 96: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/96.jpg)
Método da multiplicação• multiplicamos por um certo valor real A e obtemos a parte
fracionária• escolhemos A conveniente, por exemplo A = (
√5 − 1)/2
• posição relativa no vetor não depende de M (pode serM = 1024)
h(x) = ⌊M (A · xmod 1)⌋
Exemplo:
h(“bola”) = ⌊1024 · [((√
5 − 1)/2 · 1.651.469.409)mod 1]⌋= ⌊1024 · [1020664226,142702mod 1]⌋= ⌊1024 · 0,142702⌋
= ⌊146,126848⌋ = 146
O uso da razão áurea como valor de A é sugestão de Knuth
15
![Page 97: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/97.jpg)
Método da multiplicação• multiplicamos por um certo valor real A e obtemos a parte
fracionária• escolhemos A conveniente, por exemplo A = (
√5 − 1)/2
• posição relativa no vetor não depende de M (pode serM = 1024)
h(x) = ⌊M (A · xmod 1)⌋
Exemplo:
h(“bola”) = ⌊1024 · [((√
5 − 1)/2 · 1.651.469.409)mod 1]⌋= ⌊1024 · [1020664226,142702mod 1]⌋= ⌊1024 · 0,142702⌋= ⌊146,126848⌋
= 146
O uso da razão áurea como valor de A é sugestão de Knuth
15
![Page 98: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/98.jpg)
Método da multiplicação• multiplicamos por um certo valor real A e obtemos a parte
fracionária• escolhemos A conveniente, por exemplo A = (
√5 − 1)/2
• posição relativa no vetor não depende de M (pode serM = 1024)
h(x) = ⌊M (A · xmod 1)⌋
Exemplo:
h(“bola”) = ⌊1024 · [((√
5 − 1)/2 · 1.651.469.409)mod 1]⌋= ⌊1024 · [1020664226,142702mod 1]⌋= ⌊1024 · 0,142702⌋= ⌊146,126848⌋ = 146
O uso da razão áurea como valor de A é sugestão de Knuth
15
![Page 99: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/99.jpg)
Método da multiplicação• multiplicamos por um certo valor real A e obtemos a parte
fracionária• escolhemos A conveniente, por exemplo A = (
√5 − 1)/2
• posição relativa no vetor não depende de M (pode serM = 1024)
h(x) = ⌊M (A · xmod 1)⌋
Exemplo:
h(“bola”) = ⌊1024 · [((√
5 − 1)/2 · 1.651.469.409)mod 1]⌋= ⌊1024 · [1020664226,142702mod 1]⌋= ⌊1024 · 0,142702⌋= ⌊146,126848⌋ = 146
O uso da razão áurea como valor de A é sugestão de Knuth15
![Page 100: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/100.jpg)
implementação do TAD
1 #define MAX 178323 typedef struct {4 char chave[10];5 int dado;6 } No;
78 typedef struct {9 No * vetor[MAX];
10 } TabelaHash;1112 void iniciar_tabela(TabelaHash *t);1314 void inserir_tabela(TabelaHash *t, char *chave, int dado);1516 void remover_tabela(TabelaHash *t, char *chave);1718 No *buscar_tabela(TabelaHash *t, char *chave);
16
![Page 101: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/101.jpg)
implementação do TAD
1 #define MAX 178323 typedef struct {4 char chave[10];5 int dado;6 } No;78 typedef struct {9 No * vetor[MAX];
10 } TabelaHash;
1112 void iniciar_tabela(TabelaHash *t);1314 void inserir_tabela(TabelaHash *t, char *chave, int dado);1516 void remover_tabela(TabelaHash *t, char *chave);1718 No *buscar_tabela(TabelaHash *t, char *chave);
16
![Page 102: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/102.jpg)
implementação do TAD
1 #define MAX 178323 typedef struct {4 char chave[10];5 int dado;6 } No;78 typedef struct {9 No * vetor[MAX];
10 } TabelaHash;1112 void iniciar_tabela(TabelaHash *t);1314 void inserir_tabela(TabelaHash *t, char *chave, int dado);1516 void remover_tabela(TabelaHash *t, char *chave);1718 No *buscar_tabela(TabelaHash *t, char *chave);
16
![Page 103: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/103.jpg)
Exemplo de implementação
1 int hash(char *chave) {
2 int i, n = 0;3 for (i = 0; i < strlen(chave); i++)4 n = (256 * n + chave[i]) % MAX;5 return n;6 }78 void inserir_tabela(TabelaHash *t, char *chave, int dado) {9 int n = hash(chave);
10 inserir_lista(&t->vetor[n], chave, dado);11 }1213 void remover_tabela(TabelaHash *t, char *chave) {14 int n = hash(chave);15 remover_lista(&t->vetor[n], chave);16 }
17
![Page 104: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/104.jpg)
Exemplo de implementação
1 int hash(char *chave) {2 int i, n = 0;
3 for (i = 0; i < strlen(chave); i++)4 n = (256 * n + chave[i]) % MAX;5 return n;6 }78 void inserir_tabela(TabelaHash *t, char *chave, int dado) {9 int n = hash(chave);
10 inserir_lista(&t->vetor[n], chave, dado);11 }1213 void remover_tabela(TabelaHash *t, char *chave) {14 int n = hash(chave);15 remover_lista(&t->vetor[n], chave);16 }
17
![Page 105: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/105.jpg)
Exemplo de implementação
1 int hash(char *chave) {2 int i, n = 0;3 for (i = 0; i < strlen(chave); i++)4 n = (256 * n + chave[i]) % MAX;
5 return n;6 }78 void inserir_tabela(TabelaHash *t, char *chave, int dado) {9 int n = hash(chave);
10 inserir_lista(&t->vetor[n], chave, dado);11 }1213 void remover_tabela(TabelaHash *t, char *chave) {14 int n = hash(chave);15 remover_lista(&t->vetor[n], chave);16 }
17
![Page 106: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/106.jpg)
Exemplo de implementação
1 int hash(char *chave) {2 int i, n = 0;3 for (i = 0; i < strlen(chave); i++)4 n = (256 * n + chave[i]) % MAX;5 return n;6 }
78 void inserir_tabela(TabelaHash *t, char *chave, int dado) {9 int n = hash(chave);
10 inserir_lista(&t->vetor[n], chave, dado);11 }1213 void remover_tabela(TabelaHash *t, char *chave) {14 int n = hash(chave);15 remover_lista(&t->vetor[n], chave);16 }
17
![Page 107: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/107.jpg)
Exemplo de implementação
1 int hash(char *chave) {2 int i, n = 0;3 for (i = 0; i < strlen(chave); i++)4 n = (256 * n + chave[i]) % MAX;5 return n;6 }78 void inserir_tabela(TabelaHash *t, char *chave, int dado) {
9 int n = hash(chave);10 inserir_lista(&t->vetor[n], chave, dado);11 }1213 void remover_tabela(TabelaHash *t, char *chave) {14 int n = hash(chave);15 remover_lista(&t->vetor[n], chave);16 }
17
![Page 108: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/108.jpg)
Exemplo de implementação
1 int hash(char *chave) {2 int i, n = 0;3 for (i = 0; i < strlen(chave); i++)4 n = (256 * n + chave[i]) % MAX;5 return n;6 }78 void inserir_tabela(TabelaHash *t, char *chave, int dado) {9 int n = hash(chave);
10 inserir_lista(&t->vetor[n], chave, dado);11 }
1213 void remover_tabela(TabelaHash *t, char *chave) {14 int n = hash(chave);15 remover_lista(&t->vetor[n], chave);16 }
17
![Page 109: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/109.jpg)
Exemplo de implementação
1 int hash(char *chave) {2 int i, n = 0;3 for (i = 0; i < strlen(chave); i++)4 n = (256 * n + chave[i]) % MAX;5 return n;6 }78 void inserir_tabela(TabelaHash *t, char *chave, int dado) {9 int n = hash(chave);
10 inserir_lista(&t->vetor[n], chave, dado);11 }1213 void remover_tabela(TabelaHash *t, char *chave) {
14 int n = hash(chave);15 remover_lista(&t->vetor[n], chave);16 }
17
![Page 110: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/110.jpg)
Exemplo de implementação
1 int hash(char *chave) {2 int i, n = 0;3 for (i = 0; i < strlen(chave); i++)4 n = (256 * n + chave[i]) % MAX;5 return n;6 }78 void inserir_tabela(TabelaHash *t, char *chave, int dado) {9 int n = hash(chave);
10 inserir_lista(&t->vetor[n], chave, dado);11 }1213 void remover_tabela(TabelaHash *t, char *chave) {14 int n = hash(chave);15 remover_lista(&t->vetor[n], chave);16 }
17
![Page 111: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/111.jpg)
Uma boa função de hashing
Uma boa função de hashing espalha bem:
• A probabilidade de uma chave ter um hash específico é(aproximadamente) 1/M
• Ou seja, esperamos que cada lista tenha n/M elementos
Uma boa função de hashing é computada rapidamente - Ex:• #define hash(v , M) (v & (M-1))
– com M uma potência de 2
• Essa função não espalha bem, pois considera apenas osbits menos significativos
• Mas pode ser muito mais rápida do que os outrosmétodos
– & pode ser muito mais rápido que divisão ou multiplicação
18
![Page 112: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/112.jpg)
Uma boa função de hashing
Uma boa função de hashing espalha bem:• A probabilidade de uma chave ter um hash específico é
(aproximadamente) 1/M
• Ou seja, esperamos que cada lista tenha n/M elementos
Uma boa função de hashing é computada rapidamente - Ex:• #define hash(v , M) (v & (M-1))
– com M uma potência de 2
• Essa função não espalha bem, pois considera apenas osbits menos significativos
• Mas pode ser muito mais rápida do que os outrosmétodos
– & pode ser muito mais rápido que divisão ou multiplicação
18
![Page 113: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/113.jpg)
Uma boa função de hashing
Uma boa função de hashing espalha bem:• A probabilidade de uma chave ter um hash específico é
(aproximadamente) 1/M
• Ou seja, esperamos que cada lista tenha n/M elementos
Uma boa função de hashing é computada rapidamente - Ex:• #define hash(v , M) (v & (M-1))
– com M uma potência de 2
• Essa função não espalha bem, pois considera apenas osbits menos significativos
• Mas pode ser muito mais rápida do que os outrosmétodos
– & pode ser muito mais rápido que divisão ou multiplicação
18
![Page 114: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/114.jpg)
Uma boa função de hashing
Uma boa função de hashing espalha bem:• A probabilidade de uma chave ter um hash específico é
(aproximadamente) 1/M
• Ou seja, esperamos que cada lista tenha n/M elementos
Uma boa função de hashing é computada rapidamente - Ex:
• #define hash(v , M) (v & (M-1))
– com M uma potência de 2
• Essa função não espalha bem, pois considera apenas osbits menos significativos
• Mas pode ser muito mais rápida do que os outrosmétodos
– & pode ser muito mais rápido que divisão ou multiplicação
18
![Page 115: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/115.jpg)
Uma boa função de hashing
Uma boa função de hashing espalha bem:• A probabilidade de uma chave ter um hash específico é
(aproximadamente) 1/M
• Ou seja, esperamos que cada lista tenha n/M elementos
Uma boa função de hashing é computada rapidamente - Ex:• #define hash(v , M) (v & (M-1))
– com M uma potência de 2
• Essa função não espalha bem, pois considera apenas osbits menos significativos
• Mas pode ser muito mais rápida do que os outrosmétodos
– & pode ser muito mais rápido que divisão ou multiplicação
18
![Page 116: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/116.jpg)
Uma boa função de hashing
Uma boa função de hashing espalha bem:• A probabilidade de uma chave ter um hash específico é
(aproximadamente) 1/M
• Ou seja, esperamos que cada lista tenha n/M elementos
Uma boa função de hashing é computada rapidamente - Ex:• #define hash(v , M) (v & (M-1))
– com M uma potência de 2
• Essa função não espalha bem, pois considera apenas osbits menos significativos
• Mas pode ser muito mais rápida do que os outrosmétodos
– & pode ser muito mais rápido que divisão ou multiplicação
18
![Page 117: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/117.jpg)
Uma boa função de hashing
Uma boa função de hashing espalha bem:• A probabilidade de uma chave ter um hash específico é
(aproximadamente) 1/M
• Ou seja, esperamos que cada lista tenha n/M elementos
Uma boa função de hashing é computada rapidamente - Ex:• #define hash(v , M) (v & (M-1))
– com M uma potência de 2
• Essa função não espalha bem, pois considera apenas osbits menos significativos
• Mas pode ser muito mais rápida do que os outrosmétodos
– & pode ser muito mais rápido que divisão ou multiplicação
18
![Page 118: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/118.jpg)
Uma boa função de hashing
Uma boa função de hashing espalha bem:• A probabilidade de uma chave ter um hash específico é
(aproximadamente) 1/M
• Ou seja, esperamos que cada lista tenha n/M elementos
Uma boa função de hashing é computada rapidamente - Ex:• #define hash(v , M) (v & (M-1))
– com M uma potência de 2
• Essa função não espalha bem, pois considera apenas osbits menos significativos
• Mas pode ser muito mais rápida do que os outrosmétodos
– & pode ser muito mais rápido que divisão ou multiplicação
18
![Page 119: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/119.jpg)
Uma boa função de hashing
Uma boa função de hashing espalha bem:• A probabilidade de uma chave ter um hash específico é
(aproximadamente) 1/M
• Ou seja, esperamos que cada lista tenha n/M elementos
Uma boa função de hashing é computada rapidamente - Ex:• #define hash(v , M) (v & (M-1))
– com M uma potência de 2
• Essa função não espalha bem, pois considera apenas osbits menos significativos
• Mas pode ser muito mais rápida do que os outrosmétodos
– & pode ser muito mais rápido que divisão ou multiplicação
18
![Page 120: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/120.jpg)
Quebrando um programa que usa hashing
Se descobrirmos qual é a função de hashing que um programausa, podemos prejudicá-lo:
• basta inserir muitos elementos que são mapeados para omesmo valor
• o que pode ser uma forma de prejudicar a performance oucausar bugs
Como podemos nos proteger de um adversário maliciosonesse caso?
• Podemos escolher a função de hashing aleatoriamente
19
![Page 121: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/121.jpg)
Quebrando um programa que usa hashing
Se descobrirmos qual é a função de hashing que um programausa, podemos prejudicá-lo:
• basta inserir muitos elementos que são mapeados para omesmo valor
• o que pode ser uma forma de prejudicar a performance oucausar bugs
Como podemos nos proteger de um adversário maliciosonesse caso?
• Podemos escolher a função de hashing aleatoriamente
19
![Page 122: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/122.jpg)
Quebrando um programa que usa hashing
Se descobrirmos qual é a função de hashing que um programausa, podemos prejudicá-lo:
• basta inserir muitos elementos que são mapeados para omesmo valor
• o que pode ser uma forma de prejudicar a performance oucausar bugs
Como podemos nos proteger de um adversário maliciosonesse caso?
• Podemos escolher a função de hashing aleatoriamente
19
![Page 123: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/123.jpg)
Quebrando um programa que usa hashing
Se descobrirmos qual é a função de hashing que um programausa, podemos prejudicá-lo:
• basta inserir muitos elementos que são mapeados para omesmo valor
• o que pode ser uma forma de prejudicar a performance oucausar bugs
Como podemos nos proteger de um adversário maliciosonesse caso?
• Podemos escolher a função de hashing aleatoriamente
19
![Page 124: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/124.jpg)
Quebrando um programa que usa hashing
Se descobrirmos qual é a função de hashing que um programausa, podemos prejudicá-lo:
• basta inserir muitos elementos que são mapeados para omesmo valor
• o que pode ser uma forma de prejudicar a performance oucausar bugs
Como podemos nos proteger de um adversário maliciosonesse caso?
• Podemos escolher a função de hashing aleatoriamente
19
![Page 125: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/125.jpg)
Hashing UniversalUma coleção H de funções de hashing no intervalo{0, . . . , M − 1} é universal se:
• para todo par de chaves distintas k e ℓ
• o número de funções de hashing h ∈ H para a qualh(k) = h(l) é no máximo |H|/M
Ou seja, é no pior caso igual a escolher o hash uniformementeao acaso
• Se fizermos n operações de Inserção, Busca e Remoção,o tempo esperado é O(n)
Para fazer um hash universal:• escolha p um primo maior do que M
• escolha uniformemente ao acaso a ∈ {1, . . . , p},b ∈ {0, . . . , p}
• defina ha,b(k) = ((ak + b)mod p)modM
20
![Page 126: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/126.jpg)
Hashing UniversalUma coleção H de funções de hashing no intervalo{0, . . . , M − 1} é universal se:
• para todo par de chaves distintas k e ℓ
• o número de funções de hashing h ∈ H para a qualh(k) = h(l) é no máximo |H|/M
Ou seja, é no pior caso igual a escolher o hash uniformementeao acaso
• Se fizermos n operações de Inserção, Busca e Remoção,o tempo esperado é O(n)
Para fazer um hash universal:• escolha p um primo maior do que M
• escolha uniformemente ao acaso a ∈ {1, . . . , p},b ∈ {0, . . . , p}
• defina ha,b(k) = ((ak + b)mod p)modM
20
![Page 127: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/127.jpg)
Hashing UniversalUma coleção H de funções de hashing no intervalo{0, . . . , M − 1} é universal se:
• para todo par de chaves distintas k e ℓ
• o número de funções de hashing h ∈ H para a qualh(k) = h(l) é no máximo |H|/M
Ou seja, é no pior caso igual a escolher o hash uniformementeao acaso
• Se fizermos n operações de Inserção, Busca e Remoção,o tempo esperado é O(n)
Para fazer um hash universal:• escolha p um primo maior do que M
• escolha uniformemente ao acaso a ∈ {1, . . . , p},b ∈ {0, . . . , p}
• defina ha,b(k) = ((ak + b)mod p)modM
20
![Page 128: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/128.jpg)
Hashing UniversalUma coleção H de funções de hashing no intervalo{0, . . . , M − 1} é universal se:
• para todo par de chaves distintas k e ℓ
• o número de funções de hashing h ∈ H para a qualh(k) = h(l) é no máximo |H|/M
Ou seja, é no pior caso igual a escolher o hash uniformementeao acaso
• Se fizermos n operações de Inserção, Busca e Remoção,o tempo esperado é O(n)
Para fazer um hash universal:• escolha p um primo maior do que M
• escolha uniformemente ao acaso a ∈ {1, . . . , p},b ∈ {0, . . . , p}
• defina ha,b(k) = ((ak + b)mod p)modM
20
![Page 129: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/129.jpg)
Hashing UniversalUma coleção H de funções de hashing no intervalo{0, . . . , M − 1} é universal se:
• para todo par de chaves distintas k e ℓ
• o número de funções de hashing h ∈ H para a qualh(k) = h(l) é no máximo |H|/M
Ou seja, é no pior caso igual a escolher o hash uniformementeao acaso
• Se fizermos n operações de Inserção, Busca e Remoção,o tempo esperado é O(n)
Para fazer um hash universal:• escolha p um primo maior do que M
• escolha uniformemente ao acaso a ∈ {1, . . . , p},b ∈ {0, . . . , p}
• defina ha,b(k) = ((ak + b)mod p)modM
20
![Page 130: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/130.jpg)
Hashing UniversalUma coleção H de funções de hashing no intervalo{0, . . . , M − 1} é universal se:
• para todo par de chaves distintas k e ℓ
• o número de funções de hashing h ∈ H para a qualh(k) = h(l) é no máximo |H|/M
Ou seja, é no pior caso igual a escolher o hash uniformementeao acaso
• Se fizermos n operações de Inserção, Busca e Remoção,o tempo esperado é O(n)
Para fazer um hash universal:
• escolha p um primo maior do que M
• escolha uniformemente ao acaso a ∈ {1, . . . , p},b ∈ {0, . . . , p}
• defina ha,b(k) = ((ak + b)mod p)modM
20
![Page 131: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/131.jpg)
Hashing UniversalUma coleção H de funções de hashing no intervalo{0, . . . , M − 1} é universal se:
• para todo par de chaves distintas k e ℓ
• o número de funções de hashing h ∈ H para a qualh(k) = h(l) é no máximo |H|/M
Ou seja, é no pior caso igual a escolher o hash uniformementeao acaso
• Se fizermos n operações de Inserção, Busca e Remoção,o tempo esperado é O(n)
Para fazer um hash universal:• escolha p um primo maior do que M
• escolha uniformemente ao acaso a ∈ {1, . . . , p},b ∈ {0, . . . , p}
• defina ha,b(k) = ((ak + b)mod p)modM
20
![Page 132: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/132.jpg)
Hashing UniversalUma coleção H de funções de hashing no intervalo{0, . . . , M − 1} é universal se:
• para todo par de chaves distintas k e ℓ
• o número de funções de hashing h ∈ H para a qualh(k) = h(l) é no máximo |H|/M
Ou seja, é no pior caso igual a escolher o hash uniformementeao acaso
• Se fizermos n operações de Inserção, Busca e Remoção,o tempo esperado é O(n)
Para fazer um hash universal:• escolha p um primo maior do que M
• escolha uniformemente ao acaso a ∈ {1, . . . , p},b ∈ {0, . . . , p}
• defina ha,b(k) = ((ak + b)mod p)modM
20
![Page 133: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/133.jpg)
Hashing UniversalUma coleção H de funções de hashing no intervalo{0, . . . , M − 1} é universal se:
• para todo par de chaves distintas k e ℓ
• o número de funções de hashing h ∈ H para a qualh(k) = h(l) é no máximo |H|/M
Ou seja, é no pior caso igual a escolher o hash uniformementeao acaso
• Se fizermos n operações de Inserção, Busca e Remoção,o tempo esperado é O(n)
Para fazer um hash universal:• escolha p um primo maior do que M
• escolha uniformemente ao acaso a ∈ {1, . . . , p},b ∈ {0, . . . , p}
• defina ha,b(k) = ((ak + b)mod p)modM
20
![Page 134: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/134.jpg)
Endereçamento aberto
Existe uma alternativa para a implementação de tabela deespalhamento
Endereçamento aberto:• os dados são guardados no próprio vetor• colisões são colocadas em posições livres da tabela
Características:• evita percorrer usando ponteiros e alocação e deslocação
de memória (malloc e free)• se a tabela encher, deve recriar uma tabela maior
– e mudar a função de hashing
• remoção é mais complicada
21
![Page 135: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/135.jpg)
Endereçamento aberto
Existe uma alternativa para a implementação de tabela deespalhamento
Endereçamento aberto:
• os dados são guardados no próprio vetor• colisões são colocadas em posições livres da tabela
Características:• evita percorrer usando ponteiros e alocação e deslocação
de memória (malloc e free)• se a tabela encher, deve recriar uma tabela maior
– e mudar a função de hashing
• remoção é mais complicada
21
![Page 136: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/136.jpg)
Endereçamento aberto
Existe uma alternativa para a implementação de tabela deespalhamento
Endereçamento aberto:• os dados são guardados no próprio vetor
• colisões são colocadas em posições livres da tabela
Características:• evita percorrer usando ponteiros e alocação e deslocação
de memória (malloc e free)• se a tabela encher, deve recriar uma tabela maior
– e mudar a função de hashing
• remoção é mais complicada
21
![Page 137: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/137.jpg)
Endereçamento aberto
Existe uma alternativa para a implementação de tabela deespalhamento
Endereçamento aberto:• os dados são guardados no próprio vetor• colisões são colocadas em posições livres da tabela
Características:• evita percorrer usando ponteiros e alocação e deslocação
de memória (malloc e free)• se a tabela encher, deve recriar uma tabela maior
– e mudar a função de hashing
• remoção é mais complicada
21
![Page 138: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/138.jpg)
Endereçamento aberto
Existe uma alternativa para a implementação de tabela deespalhamento
Endereçamento aberto:• os dados são guardados no próprio vetor• colisões são colocadas em posições livres da tabela
Características:
• evita percorrer usando ponteiros e alocação e deslocaçãode memória (malloc e free)
• se a tabela encher, deve recriar uma tabela maior
– e mudar a função de hashing
• remoção é mais complicada
21
![Page 139: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/139.jpg)
Endereçamento aberto
Existe uma alternativa para a implementação de tabela deespalhamento
Endereçamento aberto:• os dados são guardados no próprio vetor• colisões são colocadas em posições livres da tabela
Características:• evita percorrer usando ponteiros e alocação e deslocação
de memória (malloc e free)
• se a tabela encher, deve recriar uma tabela maior
– e mudar a função de hashing
• remoção é mais complicada
21
![Page 140: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/140.jpg)
Endereçamento aberto
Existe uma alternativa para a implementação de tabela deespalhamento
Endereçamento aberto:• os dados são guardados no próprio vetor• colisões são colocadas em posições livres da tabela
Características:• evita percorrer usando ponteiros e alocação e deslocação
de memória (malloc e free)• se a tabela encher, deve recriar uma tabela maior
– e mudar a função de hashing
• remoção é mais complicada
21
![Page 141: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/141.jpg)
Endereçamento aberto
Existe uma alternativa para a implementação de tabela deespalhamento
Endereçamento aberto:• os dados são guardados no próprio vetor• colisões são colocadas em posições livres da tabela
Características:• evita percorrer usando ponteiros e alocação e deslocação
de memória (malloc e free)• se a tabela encher, deve recriar uma tabela maior
– e mudar a função de hashing
• remoção é mais complicada
21
![Page 142: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/142.jpg)
Endereçamento aberto
Existe uma alternativa para a implementação de tabela deespalhamento
Endereçamento aberto:• os dados são guardados no próprio vetor• colisões são colocadas em posições livres da tabela
Características:• evita percorrer usando ponteiros e alocação e deslocação
de memória (malloc e free)• se a tabela encher, deve recriar uma tabela maior
– e mudar a função de hashing
• remoção é mais complicada
21
![Page 143: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/143.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca
boca
bolo
bela
bola
dia
escola
gratuito
ilha
Inserindo:
• procuramos posição• se houver espaço, guardamos• se não houver espaço, procuramos a próxima posição
livre (módulo M )
22
![Page 144: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/144.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca
bolo
bela
bola
dia
escola
gratuito
ilha
Inserindo:• procuramos posição
• se houver espaço, guardamos• se não houver espaço, procuramos a próxima posição
livre (módulo M )
22
![Page 145: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/145.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca
bolo
bela
bola
dia
escola
gratuito
ilha
Inserindo:• procuramos posição• se houver espaço, guardamos
• se não houver espaço, procuramos a próxima posiçãolivre (módulo M )
22
![Page 146: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/146.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca
bolo
bela
bola
dia
escola
gratuito
ilha
broca
Inserindo:• procuramos posição• se houver espaço, guardamos
• se não houver espaço, procuramos a próxima posiçãolivre (módulo M )
22
![Page 147: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/147.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo
bela
bola
dia
escola
gratuito
ilha
broca
Inserindo:• procuramos posição• se houver espaço, guardamos
• se não houver espaço, procuramos a próxima posiçãolivre (módulo M )
22
![Page 148: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/148.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo
bela
bola
dia
escola
gratuito
ilha
broca
Inserindo:• procuramos posição• se houver espaço, guardamos
• se não houver espaço, procuramos a próxima posiçãolivre (módulo M )
22
![Page 149: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/149.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo
bela
bola
dia
escola
gratuito
ilha
broca
boca
Inserindo:• procuramos posição• se houver espaço, guardamos
• se não houver espaço, procuramos a próxima posiçãolivre (módulo M )
22
![Page 150: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/150.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela
bola
dia
escola
gratuito
ilha
broca
boca
Inserindo:• procuramos posição• se houver espaço, guardamos
• se não houver espaço, procuramos a próxima posiçãolivre (módulo M )
22
![Page 151: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/151.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela
bola
dia
escola
gratuito
ilha
broca
boca
Inserindo:• procuramos posição• se houver espaço, guardamos
• se não houver espaço, procuramos a próxima posiçãolivre (módulo M )
22
![Page 152: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/152.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela
bola
dia
escola
gratuito
ilha
broca
boca
bolo
Inserindo:• procuramos posição• se houver espaço, guardamos
• se não houver espaço, procuramos a próxima posiçãolivre (módulo M )
22
![Page 153: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/153.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola
dia
escola
gratuito
ilha
broca
boca
bolo
Inserindo:• procuramos posição• se houver espaço, guardamos
• se não houver espaço, procuramos a próxima posiçãolivre (módulo M )
22
![Page 154: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/154.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola
dia
escola
gratuito
ilha
broca
boca
bolo
Inserindo:• procuramos posição• se houver espaço, guardamos
• se não houver espaço, procuramos a próxima posiçãolivre (módulo M )
22
![Page 155: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/155.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola
dia
escola
gratuito
ilha
broca
boca
bolo
bela
Inserindo:• procuramos posição• se houver espaço, guardamos
• se não houver espaço, procuramos a próxima posiçãolivre (módulo M )
22
![Page 156: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/156.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia
escola
gratuito
ilha
broca
boca
bolo
bela
Inserindo:• procuramos posição• se houver espaço, guardamos• se não houver espaço, procuramos a próxima posição
livre (módulo M )22
![Page 157: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/157.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia
escola
gratuito
ilha
broca
boca
bolo
bela
Inserindo:• procuramos posição• se houver espaço, guardamos• se não houver espaço, procuramos a próxima posição
livre (módulo M )22
![Page 158: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/158.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia
escola
gratuito
ilha
broca
boca
bolo
bela
bola
Inserindo:• procuramos posição• se houver espaço, guardamos• se não houver espaço, procuramos a próxima posição
livre (módulo M )22
![Page 159: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/159.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia
escola
gratuito
ilha
broca
boca
bolo
bela
bola
Inserindo:• procuramos posição• se houver espaço, guardamos• se não houver espaço, procuramos a próxima posição
livre (módulo M )22
![Page 160: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/160.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia h("dia") = 2
escola
gratuito
ilha
broca
boca
bolo
bela
bola
Inserindo:• procuramos posição• se houver espaço, guardamos• se não houver espaço, procuramos a próxima posição
livre (módulo M )22
![Page 161: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/161.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia h("dia") = 2
escola
gratuito
ilha
broca
boca
bolo
bela
bola
Inserindo:• procuramos posição• se houver espaço, guardamos• se não houver espaço, procuramos a próxima posição
livre (módulo M )22
![Page 162: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/162.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia h("dia") = 2
escola
gratuito
ilha
broca
boca
bolo
bela
bola
Inserindo:• procuramos posição• se houver espaço, guardamos• se não houver espaço, procuramos a próxima posição
livre (módulo M )22
![Page 163: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/163.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia h("dia") = 2
escola
gratuito
ilha
broca
boca
bolo
bela
bola
Inserindo:• procuramos posição• se houver espaço, guardamos• se não houver espaço, procuramos a próxima posição
livre (módulo M )22
![Page 164: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/164.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia h("dia") = 2
escola
gratuito
ilha
broca
boca
bolo
bela
bola
Inserindo:• procuramos posição• se houver espaço, guardamos• se não houver espaço, procuramos a próxima posição
livre (módulo M )22
![Page 165: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/165.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia h("dia") = 2
escola
gratuito
ilha
broca
boca
bolo
bela
bola
dia
Inserindo:• procuramos posição• se houver espaço, guardamos• se não houver espaço, procuramos a próxima posição
livre (módulo M )22
![Page 166: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/166.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia h("dia") = 2
escola h("escola") = 7
gratuito
ilha
broca
boca
bolo
bela
bola
dia
Inserindo:• procuramos posição• se houver espaço, guardamos• se não houver espaço, procuramos a próxima posição
livre (módulo M )22
![Page 167: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/167.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia h("dia") = 2
escola h("escola") = 7
gratuito
ilha
broca
boca
bolo
bela
bola
dia
Inserindo:• procuramos posição• se houver espaço, guardamos• se não houver espaço, procuramos a próxima posição
livre (módulo M )22
![Page 168: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/168.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia h("dia") = 2
escola h("escola") = 7
gratuito
ilha
broca
boca
bolo
bela
bola
dia
escola
Inserindo:• procuramos posição• se houver espaço, guardamos• se não houver espaço, procuramos a próxima posição
livre (módulo M )22
![Page 169: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/169.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia h("dia") = 2
escola h("escola") = 7
gratuito h("gratuito") = 0
ilha
broca
boca
bolo
bela
bola
dia
escola
Inserindo:• procuramos posição• se houver espaço, guardamos• se não houver espaço, procuramos a próxima posição
livre (módulo M )22
![Page 170: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/170.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia h("dia") = 2
escola h("escola") = 7
gratuito h("gratuito") = 0
ilha
broca
boca
bolo
bela
bola
dia
escola
Inserindo:• procuramos posição• se houver espaço, guardamos• se não houver espaço, procuramos a próxima posição
livre (módulo M )22
![Page 171: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/171.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia h("dia") = 2
escola h("escola") = 7
gratuito h("gratuito") = 0
ilha
broca
boca
bolo
bela
bola
dia
escola
Inserindo:• procuramos posição• se houver espaço, guardamos• se não houver espaço, procuramos a próxima posição
livre (módulo M )22
![Page 172: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/172.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia h("dia") = 2
escola h("escola") = 7
gratuito h("gratuito") = 0
ilha
broca
boca
bolo
bela
bola
dia
escola
Inserindo:• procuramos posição• se houver espaço, guardamos• se não houver espaço, procuramos a próxima posição
livre (módulo M )22
![Page 173: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/173.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia h("dia") = 2
escola h("escola") = 7
gratuito h("gratuito") = 0
ilha
broca
boca
bolo
bela
bola
dia
escola
Inserindo:• procuramos posição• se houver espaço, guardamos• se não houver espaço, procuramos a próxima posição
livre (módulo M )22
![Page 174: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/174.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia h("dia") = 2
escola h("escola") = 7
gratuito h("gratuito") = 0
ilha
broca
boca
bolo
bela
bola
dia
escola
Inserindo:• procuramos posição• se houver espaço, guardamos• se não houver espaço, procuramos a próxima posição
livre (módulo M )22
![Page 175: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/175.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia h("dia") = 2
escola h("escola") = 7
gratuito h("gratuito") = 0
ilha
broca
boca
bolo
bela
bola
dia
escola
Inserindo:• procuramos posição• se houver espaço, guardamos• se não houver espaço, procuramos a próxima posição
livre (módulo M )22
![Page 176: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/176.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia h("dia") = 2
escola h("escola") = 7
gratuito h("gratuito") = 0
ilha
broca
boca
bolo
bela
bola
dia
escola
Inserindo:• procuramos posição• se houver espaço, guardamos• se não houver espaço, procuramos a próxima posição
livre (módulo M )22
![Page 177: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/177.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia h("dia") = 2
escola h("escola") = 7
gratuito h("gratuito") = 0
ilha
broca
boca
bolo
bela
bola
dia
escola
gratuito
Inserindo:• procuramos posição• se houver espaço, guardamos• se não houver espaço, procuramos a próxima posição
livre (módulo M )22
![Page 178: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/178.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia h("dia") = 2
escola h("escola") = 7
gratuito h("gratuito") = 0
ilha h("ilha") = 6
broca
boca
bolo
bela
bola
dia
escola
gratuito
Inserindo:• procuramos posição• se houver espaço, guardamos• se não houver espaço, procuramos a próxima posição
livre (módulo M )22
![Page 179: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/179.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia h("dia") = 2
escola h("escola") = 7
gratuito h("gratuito") = 0
ilha h("ilha") = 6
broca
boca
bolo
bela
bola
dia
escola
gratuito
Inserindo:• procuramos posição• se houver espaço, guardamos• se não houver espaço, procuramos a próxima posição
livre (módulo M )22
![Page 180: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/180.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia h("dia") = 2
escola h("escola") = 7
gratuito h("gratuito") = 0
ilha h("ilha") = 6
broca
boca
bolo
bela
bola
dia
escola
gratuito
Inserindo:• procuramos posição• se houver espaço, guardamos• se não houver espaço, procuramos a próxima posição
livre (módulo M )22
![Page 181: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/181.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia h("dia") = 2
escola h("escola") = 7
gratuito h("gratuito") = 0
ilha h("ilha") = 6
broca
boca
bolo
bela
bola
dia
escola
gratuito
Inserindo:• procuramos posição• se houver espaço, guardamos• se não houver espaço, procuramos a próxima posição
livre (módulo M )22
![Page 182: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/182.jpg)
Endereçamento aberto com sondagem linear0
123
45
67
8
broca h("broca") = 3
boca h("boca") = 0
bolo h("bolo") = 5
bela h("bela") = 2
bola h("bola") = 0
dia h("dia") = 2
escola h("escola") = 7
gratuito h("gratuito") = 0
ilha h("ilha") = 6
broca
boca
bolo
bela
bola
dia
escola
gratuito
ilha
Inserindo:• procuramos posição• se houver espaço, guardamos• se não houver espaço, procuramos a próxima posição
livre (módulo M )22
![Page 183: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/183.jpg)
Busca em endereçamento aberto
Como fazer uma busca com endereçamento aberto?
• Basta simular a inserção:
– Calcule a função de hashing– Percorra a tabela em sequência procurando pela chave– Se encontrar a chave, devolva o item correspondente– Se encontrar um espaço vazio, devolva NULL
O que é um espaço vazio em um vetor?• Se for um vetor de ponteiros, pode ser NULL• Se não for um vetor de ponteiros, precisa ser um
elemento dummy
– Ou um valor que nunca será usado– Ou ter um campo indicando que é dummy
23
![Page 184: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/184.jpg)
Busca em endereçamento aberto
Como fazer uma busca com endereçamento aberto?• Basta simular a inserção:
– Calcule a função de hashing– Percorra a tabela em sequência procurando pela chave– Se encontrar a chave, devolva o item correspondente– Se encontrar um espaço vazio, devolva NULL
O que é um espaço vazio em um vetor?• Se for um vetor de ponteiros, pode ser NULL• Se não for um vetor de ponteiros, precisa ser um
elemento dummy
– Ou um valor que nunca será usado– Ou ter um campo indicando que é dummy
23
![Page 185: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/185.jpg)
Busca em endereçamento aberto
Como fazer uma busca com endereçamento aberto?• Basta simular a inserção:
– Calcule a função de hashing
– Percorra a tabela em sequência procurando pela chave– Se encontrar a chave, devolva o item correspondente– Se encontrar um espaço vazio, devolva NULL
O que é um espaço vazio em um vetor?• Se for um vetor de ponteiros, pode ser NULL• Se não for um vetor de ponteiros, precisa ser um
elemento dummy
– Ou um valor que nunca será usado– Ou ter um campo indicando que é dummy
23
![Page 186: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/186.jpg)
Busca em endereçamento aberto
Como fazer uma busca com endereçamento aberto?• Basta simular a inserção:
– Calcule a função de hashing– Percorra a tabela em sequência procurando pela chave
– Se encontrar a chave, devolva o item correspondente– Se encontrar um espaço vazio, devolva NULL
O que é um espaço vazio em um vetor?• Se for um vetor de ponteiros, pode ser NULL• Se não for um vetor de ponteiros, precisa ser um
elemento dummy
– Ou um valor que nunca será usado– Ou ter um campo indicando que é dummy
23
![Page 187: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/187.jpg)
Busca em endereçamento aberto
Como fazer uma busca com endereçamento aberto?• Basta simular a inserção:
– Calcule a função de hashing– Percorra a tabela em sequência procurando pela chave– Se encontrar a chave, devolva o item correspondente
– Se encontrar um espaço vazio, devolva NULL
O que é um espaço vazio em um vetor?• Se for um vetor de ponteiros, pode ser NULL• Se não for um vetor de ponteiros, precisa ser um
elemento dummy
– Ou um valor que nunca será usado– Ou ter um campo indicando que é dummy
23
![Page 188: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/188.jpg)
Busca em endereçamento aberto
Como fazer uma busca com endereçamento aberto?• Basta simular a inserção:
– Calcule a função de hashing– Percorra a tabela em sequência procurando pela chave– Se encontrar a chave, devolva o item correspondente– Se encontrar um espaço vazio, devolva NULL
O que é um espaço vazio em um vetor?• Se for um vetor de ponteiros, pode ser NULL• Se não for um vetor de ponteiros, precisa ser um
elemento dummy
– Ou um valor que nunca será usado– Ou ter um campo indicando que é dummy
23
![Page 189: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/189.jpg)
Busca em endereçamento aberto
Como fazer uma busca com endereçamento aberto?• Basta simular a inserção:
– Calcule a função de hashing– Percorra a tabela em sequência procurando pela chave– Se encontrar a chave, devolva o item correspondente– Se encontrar um espaço vazio, devolva NULL
O que é um espaço vazio em um vetor?
• Se for um vetor de ponteiros, pode ser NULL• Se não for um vetor de ponteiros, precisa ser um
elemento dummy
– Ou um valor que nunca será usado– Ou ter um campo indicando que é dummy
23
![Page 190: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/190.jpg)
Busca em endereçamento aberto
Como fazer uma busca com endereçamento aberto?• Basta simular a inserção:
– Calcule a função de hashing– Percorra a tabela em sequência procurando pela chave– Se encontrar a chave, devolva o item correspondente– Se encontrar um espaço vazio, devolva NULL
O que é um espaço vazio em um vetor?• Se for um vetor de ponteiros, pode ser NULL
• Se não for um vetor de ponteiros, precisa ser umelemento dummy
– Ou um valor que nunca será usado– Ou ter um campo indicando que é dummy
23
![Page 191: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/191.jpg)
Busca em endereçamento aberto
Como fazer uma busca com endereçamento aberto?• Basta simular a inserção:
– Calcule a função de hashing– Percorra a tabela em sequência procurando pela chave– Se encontrar a chave, devolva o item correspondente– Se encontrar um espaço vazio, devolva NULL
O que é um espaço vazio em um vetor?• Se for um vetor de ponteiros, pode ser NULL• Se não for um vetor de ponteiros, precisa ser um
elemento dummy
– Ou um valor que nunca será usado– Ou ter um campo indicando que é dummy
23
![Page 192: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/192.jpg)
Busca em endereçamento aberto
Como fazer uma busca com endereçamento aberto?• Basta simular a inserção:
– Calcule a função de hashing– Percorra a tabela em sequência procurando pela chave– Se encontrar a chave, devolva o item correspondente– Se encontrar um espaço vazio, devolva NULL
O que é um espaço vazio em um vetor?• Se for um vetor de ponteiros, pode ser NULL• Se não for um vetor de ponteiros, precisa ser um
elemento dummy– Ou um valor que nunca será usado
– Ou ter um campo indicando que é dummy
23
![Page 193: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/193.jpg)
Busca em endereçamento aberto
Como fazer uma busca com endereçamento aberto?• Basta simular a inserção:
– Calcule a função de hashing– Percorra a tabela em sequência procurando pela chave– Se encontrar a chave, devolva o item correspondente– Se encontrar um espaço vazio, devolva NULL
O que é um espaço vazio em um vetor?• Se for um vetor de ponteiros, pode ser NULL• Se não for um vetor de ponteiros, precisa ser um
elemento dummy– Ou um valor que nunca será usado– Ou ter um campo indicando que é dummy
23
![Page 194: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/194.jpg)
Remoção em endereçamento aberto
Como fazer a remoção com endereçamento aberto?
• Não podemos apenas remover os elementos da tabela
– Por que?
– Quebraria a busca...
• Opção 1: fazemos o rehash de todos os elementos queestão a seguir no mesmo bloco
– reinserimos os mesmos no hash para ir para a posiçãocorreta
– é custoso e tem que ser implementado com cuidado
• Opção 2: trocamos por um item dummy indicando que oitem foi removido
– mas não pode ser o mesmo que indica espaço vazio
• Opção 3: marcamos o item como removido usando umcampo adicional
24
![Page 195: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/195.jpg)
Remoção em endereçamento aberto
Como fazer a remoção com endereçamento aberto?• Não podemos apenas remover os elementos da tabela
– Por que?
– Quebraria a busca...
• Opção 1: fazemos o rehash de todos os elementos queestão a seguir no mesmo bloco
– reinserimos os mesmos no hash para ir para a posiçãocorreta
– é custoso e tem que ser implementado com cuidado
• Opção 2: trocamos por um item dummy indicando que oitem foi removido
– mas não pode ser o mesmo que indica espaço vazio
• Opção 3: marcamos o item como removido usando umcampo adicional
24
![Page 196: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/196.jpg)
Remoção em endereçamento aberto
Como fazer a remoção com endereçamento aberto?• Não podemos apenas remover os elementos da tabela
– Por que?
– Quebraria a busca...
• Opção 1: fazemos o rehash de todos os elementos queestão a seguir no mesmo bloco
– reinserimos os mesmos no hash para ir para a posiçãocorreta
– é custoso e tem que ser implementado com cuidado
• Opção 2: trocamos por um item dummy indicando que oitem foi removido
– mas não pode ser o mesmo que indica espaço vazio
• Opção 3: marcamos o item como removido usando umcampo adicional
24
![Page 197: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/197.jpg)
Remoção em endereçamento aberto
Como fazer a remoção com endereçamento aberto?• Não podemos apenas remover os elementos da tabela
– Por que?– Quebraria a busca...
• Opção 1: fazemos o rehash de todos os elementos queestão a seguir no mesmo bloco
– reinserimos os mesmos no hash para ir para a posiçãocorreta
– é custoso e tem que ser implementado com cuidado
• Opção 2: trocamos por um item dummy indicando que oitem foi removido
– mas não pode ser o mesmo que indica espaço vazio
• Opção 3: marcamos o item como removido usando umcampo adicional
24
![Page 198: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/198.jpg)
Remoção em endereçamento aberto
Como fazer a remoção com endereçamento aberto?• Não podemos apenas remover os elementos da tabela
– Por que?– Quebraria a busca...
• Opção 1: fazemos o rehash de todos os elementos queestão a seguir no mesmo bloco
– reinserimos os mesmos no hash para ir para a posiçãocorreta
– é custoso e tem que ser implementado com cuidado• Opção 2: trocamos por um item dummy indicando que o
item foi removido
– mas não pode ser o mesmo que indica espaço vazio
• Opção 3: marcamos o item como removido usando umcampo adicional
24
![Page 199: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/199.jpg)
Remoção em endereçamento aberto
Como fazer a remoção com endereçamento aberto?• Não podemos apenas remover os elementos da tabela
– Por que?– Quebraria a busca...
• Opção 1: fazemos o rehash de todos os elementos queestão a seguir no mesmo bloco
– reinserimos os mesmos no hash para ir para a posiçãocorreta
– é custoso e tem que ser implementado com cuidado• Opção 2: trocamos por um item dummy indicando que o
item foi removido
– mas não pode ser o mesmo que indica espaço vazio
• Opção 3: marcamos o item como removido usando umcampo adicional
24
![Page 200: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/200.jpg)
Remoção em endereçamento aberto
Como fazer a remoção com endereçamento aberto?• Não podemos apenas remover os elementos da tabela
– Por que?– Quebraria a busca...
• Opção 1: fazemos o rehash de todos os elementos queestão a seguir no mesmo bloco
– reinserimos os mesmos no hash para ir para a posiçãocorreta
– é custoso e tem que ser implementado com cuidado
• Opção 2: trocamos por um item dummy indicando que oitem foi removido
– mas não pode ser o mesmo que indica espaço vazio
• Opção 3: marcamos o item como removido usando umcampo adicional
24
![Page 201: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/201.jpg)
Remoção em endereçamento aberto
Como fazer a remoção com endereçamento aberto?• Não podemos apenas remover os elementos da tabela
– Por que?– Quebraria a busca...
• Opção 1: fazemos o rehash de todos os elementos queestão a seguir no mesmo bloco
– reinserimos os mesmos no hash para ir para a posiçãocorreta
– é custoso e tem que ser implementado com cuidado• Opção 2: trocamos por um item dummy indicando que o
item foi removido
– mas não pode ser o mesmo que indica espaço vazio
• Opção 3: marcamos o item como removido usando umcampo adicional
24
![Page 202: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/202.jpg)
Remoção em endereçamento aberto
Como fazer a remoção com endereçamento aberto?• Não podemos apenas remover os elementos da tabela
– Por que?– Quebraria a busca...
• Opção 1: fazemos o rehash de todos os elementos queestão a seguir no mesmo bloco
– reinserimos os mesmos no hash para ir para a posiçãocorreta
– é custoso e tem que ser implementado com cuidado• Opção 2: trocamos por um item dummy indicando que o
item foi removido– mas não pode ser o mesmo que indica espaço vazio
• Opção 3: marcamos o item como removido usando umcampo adicional
24
![Page 203: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/203.jpg)
Remoção em endereçamento aberto
Como fazer a remoção com endereçamento aberto?• Não podemos apenas remover os elementos da tabela
– Por que?– Quebraria a busca...
• Opção 1: fazemos o rehash de todos os elementos queestão a seguir no mesmo bloco
– reinserimos os mesmos no hash para ir para a posiçãocorreta
– é custoso e tem que ser implementado com cuidado• Opção 2: trocamos por um item dummy indicando que o
item foi removido– mas não pode ser o mesmo que indica espaço vazio
• Opção 3: marcamos o item como removido usando umcampo adicional
24
![Page 204: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/204.jpg)
Inserção e Busca RevisitadasSe fizermos a remoção marcando o item como removido,precisamos mudar a inserção e a busca
Inserção:• Calculamos a função hashing e temos um resultado h
• Inserimos na primeira posição vazia ou com itemremovido a partir de h
Busca:• Calculamos a função hashing e temos um resultado h
• Procuramos o item em sequência
– Veja se ao encontrar o item, ele não foi removido
• Pare ao encontrar uma posição vazia
– Passe por cima de itens removidos
• Cuidado para não ciclar...
25
![Page 205: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/205.jpg)
Inserção e Busca RevisitadasSe fizermos a remoção marcando o item como removido,precisamos mudar a inserção e a busca
Inserção:
• Calculamos a função hashing e temos um resultado h
• Inserimos na primeira posição vazia ou com itemremovido a partir de h
Busca:• Calculamos a função hashing e temos um resultado h
• Procuramos o item em sequência
– Veja se ao encontrar o item, ele não foi removido
• Pare ao encontrar uma posição vazia
– Passe por cima de itens removidos
• Cuidado para não ciclar...
25
![Page 206: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/206.jpg)
Inserção e Busca RevisitadasSe fizermos a remoção marcando o item como removido,precisamos mudar a inserção e a busca
Inserção:• Calculamos a função hashing e temos um resultado h
• Inserimos na primeira posição vazia ou com itemremovido a partir de h
Busca:• Calculamos a função hashing e temos um resultado h
• Procuramos o item em sequência
– Veja se ao encontrar o item, ele não foi removido
• Pare ao encontrar uma posição vazia
– Passe por cima de itens removidos
• Cuidado para não ciclar...
25
![Page 207: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/207.jpg)
Inserção e Busca RevisitadasSe fizermos a remoção marcando o item como removido,precisamos mudar a inserção e a busca
Inserção:• Calculamos a função hashing e temos um resultado h
• Inserimos na primeira posição vazia ou com itemremovido a partir de h
Busca:• Calculamos a função hashing e temos um resultado h
• Procuramos o item em sequência
– Veja se ao encontrar o item, ele não foi removido
• Pare ao encontrar uma posição vazia
– Passe por cima de itens removidos
• Cuidado para não ciclar...
25
![Page 208: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/208.jpg)
Inserção e Busca RevisitadasSe fizermos a remoção marcando o item como removido,precisamos mudar a inserção e a busca
Inserção:• Calculamos a função hashing e temos um resultado h
• Inserimos na primeira posição vazia ou com itemremovido a partir de h
Busca:
• Calculamos a função hashing e temos um resultado h
• Procuramos o item em sequência
– Veja se ao encontrar o item, ele não foi removido
• Pare ao encontrar uma posição vazia
– Passe por cima de itens removidos
• Cuidado para não ciclar...
25
![Page 209: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/209.jpg)
Inserção e Busca RevisitadasSe fizermos a remoção marcando o item como removido,precisamos mudar a inserção e a busca
Inserção:• Calculamos a função hashing e temos um resultado h
• Inserimos na primeira posição vazia ou com itemremovido a partir de h
Busca:• Calculamos a função hashing e temos um resultado h
• Procuramos o item em sequência
– Veja se ao encontrar o item, ele não foi removido
• Pare ao encontrar uma posição vazia
– Passe por cima de itens removidos
• Cuidado para não ciclar...
25
![Page 210: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/210.jpg)
Inserção e Busca RevisitadasSe fizermos a remoção marcando o item como removido,precisamos mudar a inserção e a busca
Inserção:• Calculamos a função hashing e temos um resultado h
• Inserimos na primeira posição vazia ou com itemremovido a partir de h
Busca:• Calculamos a função hashing e temos um resultado h
• Procuramos o item em sequência
– Veja se ao encontrar o item, ele não foi removido• Pare ao encontrar uma posição vazia
– Passe por cima de itens removidos
• Cuidado para não ciclar...
25
![Page 211: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/211.jpg)
Inserção e Busca RevisitadasSe fizermos a remoção marcando o item como removido,precisamos mudar a inserção e a busca
Inserção:• Calculamos a função hashing e temos um resultado h
• Inserimos na primeira posição vazia ou com itemremovido a partir de h
Busca:• Calculamos a função hashing e temos um resultado h
• Procuramos o item em sequência– Veja se ao encontrar o item, ele não foi removido
• Pare ao encontrar uma posição vazia
– Passe por cima de itens removidos
• Cuidado para não ciclar...
25
![Page 212: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/212.jpg)
Inserção e Busca RevisitadasSe fizermos a remoção marcando o item como removido,precisamos mudar a inserção e a busca
Inserção:• Calculamos a função hashing e temos um resultado h
• Inserimos na primeira posição vazia ou com itemremovido a partir de h
Busca:• Calculamos a função hashing e temos um resultado h
• Procuramos o item em sequência– Veja se ao encontrar o item, ele não foi removido
• Pare ao encontrar uma posição vazia
– Passe por cima de itens removidos
• Cuidado para não ciclar...
25
![Page 213: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/213.jpg)
Inserção e Busca RevisitadasSe fizermos a remoção marcando o item como removido,precisamos mudar a inserção e a busca
Inserção:• Calculamos a função hashing e temos um resultado h
• Inserimos na primeira posição vazia ou com itemremovido a partir de h
Busca:• Calculamos a função hashing e temos um resultado h
• Procuramos o item em sequência– Veja se ao encontrar o item, ele não foi removido
• Pare ao encontrar uma posição vazia– Passe por cima de itens removidos
• Cuidado para não ciclar...
25
![Page 214: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/214.jpg)
Inserção e Busca RevisitadasSe fizermos a remoção marcando o item como removido,precisamos mudar a inserção e a busca
Inserção:• Calculamos a função hashing e temos um resultado h
• Inserimos na primeira posição vazia ou com itemremovido a partir de h
Busca:• Calculamos a função hashing e temos um resultado h
• Procuramos o item em sequência– Veja se ao encontrar o item, ele não foi removido
• Pare ao encontrar uma posição vazia– Passe por cima de itens removidos
• Cuidado para não ciclar...
25
![Page 215: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/215.jpg)
Sondagem quadrática
0
123
45
67
89
10
broca h("broca") = 1
brocaboca h("boca") = 2bocabolo h("bolo") = 10
bolo
bela h("bela") = 5
belabola h("bola") = 7
bola
dia h("dia") = 3
dia
escola
gratuito
ilha
h("escola")
h("escola") + 12
h("escola") + 22
h("escola") + 32
h("escola") + 42
h("gratuito")
h("gratuito") + 12
h("gratuito") + 22
h("gratuito") + 32
h("ilha")
h("ilha") + 12
Inserindo:• se não houver espaço, procuramos posição livre
“pulando” quadrados26
![Page 216: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/216.jpg)
Sondagem quadrática
0
123
45
67
89
10
broca h("broca") = 1
brocaboca h("boca") = 2bocabolo h("bolo") = 10
bolo
bela h("bela") = 5
belabola h("bola") = 7
bola
dia h("dia") = 3
dia
escola h("escola") = 1
gratuito
ilha
h("escola")
h("escola") + 12
h("escola") + 22
h("escola") + 32
h("escola") + 42
h("gratuito")
h("gratuito") + 12
h("gratuito") + 22
h("gratuito") + 32
h("ilha")
h("ilha") + 12
Inserindo:• se não houver espaço, procuramos posição livre
“pulando” quadrados26
![Page 217: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/217.jpg)
Sondagem quadrática
0
123
45
67
89
10
broca h("broca") = 1
brocaboca h("boca") = 2bocabolo h("bolo") = 10
bolo
bela h("bela") = 5
belabola h("bola") = 7
bola
dia h("dia") = 3
dia
escola h("escola") = 1
gratuito
ilha
h("escola")
h("escola") + 12
h("escola") + 22
h("escola") + 32
h("escola") + 42
h("gratuito")
h("gratuito") + 12
h("gratuito") + 22
h("gratuito") + 32
h("ilha")
h("ilha") + 12
Inserindo:• se não houver espaço, procuramos posição livre
“pulando” quadrados26
![Page 218: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/218.jpg)
Sondagem quadrática
0
123
45
67
89
10
broca h("broca") = 1
brocaboca h("boca") = 2bocabolo h("bolo") = 10
bolo
bela h("bela") = 5
belabola h("bola") = 7
bola
dia h("dia") = 3
dia
escola h("escola") = 1
gratuito
ilha
h("escola")
h("escola") + 12
h("escola") + 22
h("escola") + 32
h("escola") + 42
h("gratuito")
h("gratuito") + 12
h("gratuito") + 22
h("gratuito") + 32
h("ilha")
h("ilha") + 12
Inserindo:• se não houver espaço, procuramos posição livre
“pulando” quadrados26
![Page 219: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/219.jpg)
Sondagem quadrática
0
123
45
67
89
10
broca h("broca") = 1
brocaboca h("boca") = 2bocabolo h("bolo") = 10
bolo
bela h("bela") = 5
belabola h("bola") = 7
bola
dia h("dia") = 3
dia
escola h("escola") = 1
gratuito
ilha
h("escola")
h("escola") + 12
h("escola") + 22
h("escola") + 32
h("escola") + 42
h("gratuito")
h("gratuito") + 12
h("gratuito") + 22
h("gratuito") + 32
h("ilha")
h("ilha") + 12
Inserindo:• se não houver espaço, procuramos posição livre
“pulando” quadrados26
![Page 220: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/220.jpg)
Sondagem quadrática
0
123
45
67
89
10
broca h("broca") = 1
brocaboca h("boca") = 2bocabolo h("bolo") = 10
bolo
bela h("bela") = 5
belabola h("bola") = 7
bola
dia h("dia") = 3
dia
escola h("escola") = 1
gratuito
ilha
h("escola")
h("escola") + 12
h("escola") + 22
h("escola") + 32
h("escola") + 42
h("gratuito")
h("gratuito") + 12
h("gratuito") + 22
h("gratuito") + 32
h("ilha")
h("ilha") + 12
Inserindo:• se não houver espaço, procuramos posição livre
“pulando” quadrados26
![Page 221: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/221.jpg)
Sondagem quadrática
0
123
45
67
89
10
broca h("broca") = 1
brocaboca h("boca") = 2bocabolo h("bolo") = 10
bolo
bela h("bela") = 5
belabola h("bola") = 7
bola
dia h("dia") = 3
dia
escola h("escola") = 1
gratuito
ilha
h("escola")
h("escola") + 12
h("escola") + 22
h("escola") + 32
h("escola") + 42
h("gratuito")
h("gratuito") + 12
h("gratuito") + 22
h("gratuito") + 32
h("ilha")
h("ilha") + 12
Inserindo:• se não houver espaço, procuramos posição livre
“pulando” quadrados26
![Page 222: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/222.jpg)
Sondagem quadrática
0
123
45
67
89
10
broca h("broca") = 1
brocaboca h("boca") = 2bocabolo h("bolo") = 10
bolo
bela h("bela") = 5
belabola h("bola") = 7
bola
dia h("dia") = 3
dia
escola h("escola") = 1
gratuito
ilha
h("escola")
h("escola") + 12
h("escola") + 22
h("escola") + 32
h("escola") + 42
h("gratuito")
h("gratuito") + 12
h("gratuito") + 22
h("gratuito") + 32
h("ilha")
h("ilha") + 12
escola
Inserindo:• se não houver espaço, procuramos posição livre
“pulando” quadrados26
![Page 223: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/223.jpg)
Sondagem quadrática
0
123
45
67
89
10
broca h("broca") = 1
brocaboca h("boca") = 2bocabolo h("bolo") = 10
bolo
bela h("bela") = 5
belabola h("bola") = 7
bola
dia h("dia") = 3
dia
escola h("escola") = 1
gratuito h("gratuito") = 2
ilha
h("escola")
h("escola") + 12
h("escola") + 22
h("escola") + 32
h("escola") + 42
h("gratuito")
h("gratuito") + 12
h("gratuito") + 22
h("gratuito") + 32
h("ilha")
h("ilha") + 12
escola
Inserindo:• se não houver espaço, procuramos posição livre
“pulando” quadrados26
![Page 224: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/224.jpg)
Sondagem quadrática
0
123
45
67
89
10
broca h("broca") = 1
brocaboca h("boca") = 2bocabolo h("bolo") = 10
bolo
bela h("bela") = 5
belabola h("bola") = 7
bola
dia h("dia") = 3
dia
escola h("escola") = 1
gratuito h("gratuito") = 2
ilha
h("escola")
h("escola") + 12
h("escola") + 22
h("escola") + 32
h("escola") + 42
h("gratuito")
h("gratuito") + 12
h("gratuito") + 22
h("gratuito") + 32
h("ilha")
h("ilha") + 12
escola
Inserindo:• se não houver espaço, procuramos posição livre
“pulando” quadrados26
![Page 225: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/225.jpg)
Sondagem quadrática
0
123
45
67
89
10
broca h("broca") = 1
brocaboca h("boca") = 2bocabolo h("bolo") = 10
bolo
bela h("bela") = 5
belabola h("bola") = 7
bola
dia h("dia") = 3
dia
escola h("escola") = 1
gratuito h("gratuito") = 2
ilha
h("escola")
h("escola") + 12
h("escola") + 22
h("escola") + 32
h("escola") + 42
h("gratuito")
h("gratuito") + 12
h("gratuito") + 22
h("gratuito") + 32
h("ilha")
h("ilha") + 12
escola
Inserindo:• se não houver espaço, procuramos posição livre
“pulando” quadrados26
![Page 226: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/226.jpg)
Sondagem quadrática
0
123
45
67
89
10
broca h("broca") = 1
brocaboca h("boca") = 2bocabolo h("bolo") = 10
bolo
bela h("bela") = 5
belabola h("bola") = 7
bola
dia h("dia") = 3
dia
escola h("escola") = 1
gratuito h("gratuito") = 2
ilha
h("escola")
h("escola") + 12
h("escola") + 22
h("escola") + 32
h("escola") + 42
h("gratuito")
h("gratuito") + 12
h("gratuito") + 22
h("gratuito") + 32
h("ilha")
h("ilha") + 12
escola
Inserindo:• se não houver espaço, procuramos posição livre
“pulando” quadrados26
![Page 227: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/227.jpg)
Sondagem quadrática
0
123
45
67
89
10
broca h("broca") = 1
brocaboca h("boca") = 2bocabolo h("bolo") = 10
bolo
bela h("bela") = 5
belabola h("bola") = 7
bola
dia h("dia") = 3
dia
escola h("escola") = 1
gratuito h("gratuito") = 2
ilha
h("escola")
h("escola") + 12
h("escola") + 22
h("escola") + 32
h("escola") + 42
h("gratuito")
h("gratuito") + 12
h("gratuito") + 22
h("gratuito") + 32
h("ilha")
h("ilha") + 12
escola
Inserindo:• se não houver espaço, procuramos posição livre
“pulando” quadrados26
![Page 228: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/228.jpg)
Sondagem quadrática
0
123
45
67
89
10
broca h("broca") = 1
brocaboca h("boca") = 2bocabolo h("bolo") = 10
bolo
bela h("bela") = 5
belabola h("bola") = 7
bola
dia h("dia") = 3
dia
escola h("escola") = 1
gratuito h("gratuito") = 2
ilha
h("escola")
h("escola") + 12
h("escola") + 22
h("escola") + 32
h("escola") + 42
h("gratuito")
h("gratuito") + 12
h("gratuito") + 22
h("gratuito") + 32
h("ilha")
h("ilha") + 12
escola
gratuito
Inserindo:• se não houver espaço, procuramos posição livre
“pulando” quadrados26
![Page 229: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/229.jpg)
Sondagem quadrática
0
123
45
67
89
10
broca h("broca") = 1
brocaboca h("boca") = 2bocabolo h("bolo") = 10
bolo
bela h("bela") = 5
belabola h("bola") = 7
bola
dia h("dia") = 3
dia
escola h("escola") = 1
gratuito h("gratuito") = 2
ilha h("ilha") = 3
h("escola")
h("escola") + 12
h("escola") + 22
h("escola") + 32
h("escola") + 42
h("gratuito")
h("gratuito") + 12
h("gratuito") + 22
h("gratuito") + 32
h("ilha")
h("ilha") + 12
escola
gratuito
Inserindo:• se não houver espaço, procuramos posição livre
“pulando” quadrados26
![Page 230: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/230.jpg)
Sondagem quadrática
0
123
45
67
89
10
broca h("broca") = 1
brocaboca h("boca") = 2bocabolo h("bolo") = 10
bolo
bela h("bela") = 5
belabola h("bola") = 7
bola
dia h("dia") = 3
dia
escola h("escola") = 1
gratuito h("gratuito") = 2
ilha h("ilha") = 3
h("escola")
h("escola") + 12
h("escola") + 22
h("escola") + 32
h("escola") + 42
h("gratuito")
h("gratuito") + 12
h("gratuito") + 22
h("gratuito") + 32
h("ilha")
h("ilha") + 12
escola
gratuito
Inserindo:• se não houver espaço, procuramos posição livre
“pulando” quadrados26
![Page 231: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/231.jpg)
Sondagem quadrática
0
123
45
67
89
10
broca h("broca") = 1
brocaboca h("boca") = 2bocabolo h("bolo") = 10
bolo
bela h("bela") = 5
belabola h("bola") = 7
bola
dia h("dia") = 3
dia
escola h("escola") = 1
gratuito h("gratuito") = 2
ilha h("ilha") = 3
h("escola")
h("escola") + 12
h("escola") + 22
h("escola") + 32
h("escola") + 42
h("gratuito")
h("gratuito") + 12
h("gratuito") + 22
h("gratuito") + 32
h("ilha")
h("ilha") + 12
escola
gratuito
Inserindo:• se não houver espaço, procuramos posição livre
“pulando” quadrados26
![Page 232: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/232.jpg)
Sondagem quadrática
0
123
45
67
89
10
broca h("broca") = 1
brocaboca h("boca") = 2bocabolo h("bolo") = 10
bolo
bela h("bela") = 5
belabola h("bola") = 7
bola
dia h("dia") = 3
dia
escola h("escola") = 1
gratuito h("gratuito") = 2
ilha h("ilha") = 3
h("escola")
h("escola") + 12
h("escola") + 22
h("escola") + 32
h("escola") + 42
h("gratuito")
h("gratuito") + 12
h("gratuito") + 22
h("gratuito") + 32
h("ilha")
h("ilha") + 12
escola
gratuito
ilha
Inserindo:• se não houver espaço, procuramos posição livre
“pulando” quadrados26
![Page 233: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/233.jpg)
Sondagem quadrática
De maneira geral, a sondagem quadrática é definida por umafunção
h(k, i) = (hash(k) + c1i + c2i2)modM
onde• c1 e c2 são constantes• h(k, i) indica qual posição sondar após ter falhado a
inserção i vezes
Importante:• É necessário escolher c1 e c2 corretamente para usar
todas as M posições da tabela
– Por exemplo, escolha c1 = c2 = 1/2 e M uma potência de 2
27
![Page 234: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/234.jpg)
Sondagem quadrática
De maneira geral, a sondagem quadrática é definida por umafunção
h(k, i) = (hash(k) + c1i + c2i2)modM
onde• c1 e c2 são constantes• h(k, i) indica qual posição sondar após ter falhado a
inserção i vezes
Importante:• É necessário escolher c1 e c2 corretamente para usar
todas as M posições da tabela
– Por exemplo, escolha c1 = c2 = 1/2 e M uma potência de 2
27
![Page 235: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/235.jpg)
Sondagem quadrática
De maneira geral, a sondagem quadrática é definida por umafunção
h(k, i) = (hash(k) + c1i + c2i2)modM
onde
• c1 e c2 são constantes• h(k, i) indica qual posição sondar após ter falhado a
inserção i vezes
Importante:• É necessário escolher c1 e c2 corretamente para usar
todas as M posições da tabela
– Por exemplo, escolha c1 = c2 = 1/2 e M uma potência de 2
27
![Page 236: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/236.jpg)
Sondagem quadrática
De maneira geral, a sondagem quadrática é definida por umafunção
h(k, i) = (hash(k) + c1i + c2i2)modM
onde• c1 e c2 são constantes
• h(k, i) indica qual posição sondar após ter falhado ainserção i vezes
Importante:• É necessário escolher c1 e c2 corretamente para usar
todas as M posições da tabela
– Por exemplo, escolha c1 = c2 = 1/2 e M uma potência de 2
27
![Page 237: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/237.jpg)
Sondagem quadrática
De maneira geral, a sondagem quadrática é definida por umafunção
h(k, i) = (hash(k) + c1i + c2i2)modM
onde• c1 e c2 são constantes• h(k, i) indica qual posição sondar após ter falhado a
inserção i vezes
Importante:• É necessário escolher c1 e c2 corretamente para usar
todas as M posições da tabela
– Por exemplo, escolha c1 = c2 = 1/2 e M uma potência de 2
27
![Page 238: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/238.jpg)
Sondagem quadrática
De maneira geral, a sondagem quadrática é definida por umafunção
h(k, i) = (hash(k) + c1i + c2i2)modM
onde• c1 e c2 são constantes• h(k, i) indica qual posição sondar após ter falhado a
inserção i vezes
Importante:
• É necessário escolher c1 e c2 corretamente para usartodas as M posições da tabela
– Por exemplo, escolha c1 = c2 = 1/2 e M uma potência de 2
27
![Page 239: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/239.jpg)
Sondagem quadrática
De maneira geral, a sondagem quadrática é definida por umafunção
h(k, i) = (hash(k) + c1i + c2i2)modM
onde• c1 e c2 são constantes• h(k, i) indica qual posição sondar após ter falhado a
inserção i vezes
Importante:• É necessário escolher c1 e c2 corretamente para usar
todas as M posições da tabela
– Por exemplo, escolha c1 = c2 = 1/2 e M uma potência de 2
27
![Page 240: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/240.jpg)
Sondagem quadrática
De maneira geral, a sondagem quadrática é definida por umafunção
h(k, i) = (hash(k) + c1i + c2i2)modM
onde• c1 e c2 são constantes• h(k, i) indica qual posição sondar após ter falhado a
inserção i vezes
Importante:• É necessário escolher c1 e c2 corretamente para usar
todas as M posições da tabela– Por exemplo, escolha c1 = c2 = 1/2 e M uma potência de 2
27
![Page 241: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/241.jpg)
Hashing duploÉ como a sondagem linear:
• Quando detectamos conflito, ao invés de dar um pulo de 1• damos um pulo h(k, i) calculado a partir de uma segunda
função de hashing
Isto é,h(k, i) = (hash1(k) + i · hash2(k)) mod M
Cuidados:• hash2(k) nunca pode ser zero• hash2(k) precisa ser co-primo com M
– garante que as sequências são longas
Exemplos:• Escolha M como uma potência de 2 e faça que hash2(k)
seja sempre ímpar• Escolha M como um número primo e faça que
hash2(k) < M
28
![Page 242: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/242.jpg)
Hashing duploÉ como a sondagem linear:
• Quando detectamos conflito, ao invés de dar um pulo de 1
• damos um pulo h(k, i) calculado a partir de uma segundafunção de hashing
Isto é,h(k, i) = (hash1(k) + i · hash2(k)) mod M
Cuidados:• hash2(k) nunca pode ser zero• hash2(k) precisa ser co-primo com M
– garante que as sequências são longas
Exemplos:• Escolha M como uma potência de 2 e faça que hash2(k)
seja sempre ímpar• Escolha M como um número primo e faça que
hash2(k) < M
28
![Page 243: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/243.jpg)
Hashing duploÉ como a sondagem linear:
• Quando detectamos conflito, ao invés de dar um pulo de 1• damos um pulo h(k, i) calculado a partir de uma segunda
função de hashing
Isto é,h(k, i) = (hash1(k) + i · hash2(k)) mod M
Cuidados:• hash2(k) nunca pode ser zero• hash2(k) precisa ser co-primo com M
– garante que as sequências são longas
Exemplos:• Escolha M como uma potência de 2 e faça que hash2(k)
seja sempre ímpar• Escolha M como um número primo e faça que
hash2(k) < M
28
![Page 244: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/244.jpg)
Hashing duploÉ como a sondagem linear:
• Quando detectamos conflito, ao invés de dar um pulo de 1• damos um pulo h(k, i) calculado a partir de uma segunda
função de hashing
Isto é,h(k, i) = (hash1(k) + i · hash2(k)) mod M
Cuidados:• hash2(k) nunca pode ser zero• hash2(k) precisa ser co-primo com M
– garante que as sequências são longas
Exemplos:• Escolha M como uma potência de 2 e faça que hash2(k)
seja sempre ímpar• Escolha M como um número primo e faça que
hash2(k) < M
28
![Page 245: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/245.jpg)
Hashing duploÉ como a sondagem linear:
• Quando detectamos conflito, ao invés de dar um pulo de 1• damos um pulo h(k, i) calculado a partir de uma segunda
função de hashing
Isto é,h(k, i) = (hash1(k) + i · hash2(k)) mod M
Cuidados:
• hash2(k) nunca pode ser zero• hash2(k) precisa ser co-primo com M
– garante que as sequências são longas
Exemplos:• Escolha M como uma potência de 2 e faça que hash2(k)
seja sempre ímpar• Escolha M como um número primo e faça que
hash2(k) < M
28
![Page 246: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/246.jpg)
Hashing duploÉ como a sondagem linear:
• Quando detectamos conflito, ao invés de dar um pulo de 1• damos um pulo h(k, i) calculado a partir de uma segunda
função de hashing
Isto é,h(k, i) = (hash1(k) + i · hash2(k)) mod M
Cuidados:• hash2(k) nunca pode ser zero
• hash2(k) precisa ser co-primo com M
– garante que as sequências são longas
Exemplos:• Escolha M como uma potência de 2 e faça que hash2(k)
seja sempre ímpar• Escolha M como um número primo e faça que
hash2(k) < M
28
![Page 247: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/247.jpg)
Hashing duploÉ como a sondagem linear:
• Quando detectamos conflito, ao invés de dar um pulo de 1• damos um pulo h(k, i) calculado a partir de uma segunda
função de hashing
Isto é,h(k, i) = (hash1(k) + i · hash2(k)) mod M
Cuidados:• hash2(k) nunca pode ser zero• hash2(k) precisa ser co-primo com M
– garante que as sequências são longas
Exemplos:• Escolha M como uma potência de 2 e faça que hash2(k)
seja sempre ímpar• Escolha M como um número primo e faça que
hash2(k) < M
28
![Page 248: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/248.jpg)
Hashing duploÉ como a sondagem linear:
• Quando detectamos conflito, ao invés de dar um pulo de 1• damos um pulo h(k, i) calculado a partir de uma segunda
função de hashing
Isto é,h(k, i) = (hash1(k) + i · hash2(k)) mod M
Cuidados:• hash2(k) nunca pode ser zero• hash2(k) precisa ser co-primo com M
– garante que as sequências são longas
Exemplos:• Escolha M como uma potência de 2 e faça que hash2(k)
seja sempre ímpar• Escolha M como um número primo e faça que
hash2(k) < M
28
![Page 249: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/249.jpg)
Hashing duploÉ como a sondagem linear:
• Quando detectamos conflito, ao invés de dar um pulo de 1• damos um pulo h(k, i) calculado a partir de uma segunda
função de hashing
Isto é,h(k, i) = (hash1(k) + i · hash2(k)) mod M
Cuidados:• hash2(k) nunca pode ser zero• hash2(k) precisa ser co-primo com M
– garante que as sequências são longas
Exemplos:
• Escolha M como uma potência de 2 e faça que hash2(k)seja sempre ímpar
• Escolha M como um número primo e faça quehash2(k) < M
28
![Page 250: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/250.jpg)
Hashing duploÉ como a sondagem linear:
• Quando detectamos conflito, ao invés de dar um pulo de 1• damos um pulo h(k, i) calculado a partir de uma segunda
função de hashing
Isto é,h(k, i) = (hash1(k) + i · hash2(k)) mod M
Cuidados:• hash2(k) nunca pode ser zero• hash2(k) precisa ser co-primo com M
– garante que as sequências são longas
Exemplos:• Escolha M como uma potência de 2 e faça que hash2(k)
seja sempre ímpar
• Escolha M como um número primo e faça quehash2(k) < M
28
![Page 251: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/251.jpg)
Hashing duploÉ como a sondagem linear:
• Quando detectamos conflito, ao invés de dar um pulo de 1• damos um pulo h(k, i) calculado a partir de uma segunda
função de hashing
Isto é,h(k, i) = (hash1(k) + i · hash2(k)) mod M
Cuidados:• hash2(k) nunca pode ser zero• hash2(k) precisa ser co-primo com M
– garante que as sequências são longas
Exemplos:• Escolha M como uma potência de 2 e faça que hash2(k)
seja sempre ímpar• Escolha M como um número primo e faça que
hash2(k) < M28
![Page 252: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/252.jpg)
Sondagem linear e Hashing duplo1
Sondagem linear - tempo de busca médio
n/M 1/2 2/3 3/4 9/10com sucesso 1.5 2.0 3.0 5.5sem sucesso 2.5 5.0 8.5 55.5
Hashing duplo - tempo de busca médio
n/M 1/2 2/3 3/4 9/10com sucesso 1.4 1.6 1.8 2.6sem sucesso 1.5 2.0 3.0 5.5
De qualquer forma, é muito importante não deixar a tabelaencher muito:
• Você pode aumentar o tamanho da tabela dinamicamente• Porém, precisa fazer um rehash de cada elemento para a
nova tabela
1Baseado em Sedgewick, R. Algorithms in C, third edition, Addison-Wesley. 1998.29
![Page 253: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/253.jpg)
Sondagem linear e Hashing duplo1
Sondagem linear - tempo de busca médio
n/M 1/2 2/3 3/4 9/10com sucesso 1.5 2.0 3.0 5.5sem sucesso 2.5 5.0 8.5 55.5
Hashing duplo - tempo de busca médio
n/M 1/2 2/3 3/4 9/10com sucesso 1.4 1.6 1.8 2.6sem sucesso 1.5 2.0 3.0 5.5
De qualquer forma, é muito importante não deixar a tabelaencher muito:
• Você pode aumentar o tamanho da tabela dinamicamente• Porém, precisa fazer um rehash de cada elemento para a
nova tabela
1Baseado em Sedgewick, R. Algorithms in C, third edition, Addison-Wesley. 1998.29
![Page 254: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/254.jpg)
Sondagem linear e Hashing duplo1
Sondagem linear - tempo de busca médio
n/M 1/2 2/3 3/4 9/10com sucesso 1.5 2.0 3.0 5.5sem sucesso 2.5 5.0 8.5 55.5
Hashing duplo - tempo de busca médio
n/M 1/2 2/3 3/4 9/10com sucesso 1.4 1.6 1.8 2.6sem sucesso 1.5 2.0 3.0 5.5
De qualquer forma, é muito importante não deixar a tabelaencher muito:
• Você pode aumentar o tamanho da tabela dinamicamente• Porém, precisa fazer um rehash de cada elemento para a
nova tabela
1Baseado em Sedgewick, R. Algorithms in C, third edition, Addison-Wesley. 1998.29
![Page 255: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/255.jpg)
Sondagem linear e Hashing duplo1
Sondagem linear - tempo de busca médio
n/M 1/2 2/3 3/4 9/10com sucesso 1.5 2.0 3.0 5.5sem sucesso 2.5 5.0 8.5 55.5
Hashing duplo - tempo de busca médio
n/M 1/2 2/3 3/4 9/10com sucesso 1.4 1.6 1.8 2.6sem sucesso 1.5 2.0 3.0 5.5
De qualquer forma, é muito importante não deixar a tabelaencher muito:
• Você pode aumentar o tamanho da tabela dinamicamente
• Porém, precisa fazer um rehash de cada elemento para anova tabela
1Baseado em Sedgewick, R. Algorithms in C, third edition, Addison-Wesley. 1998.29
![Page 256: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/256.jpg)
Sondagem linear e Hashing duplo1
Sondagem linear - tempo de busca médio
n/M 1/2 2/3 3/4 9/10com sucesso 1.5 2.0 3.0 5.5sem sucesso 2.5 5.0 8.5 55.5
Hashing duplo - tempo de busca médio
n/M 1/2 2/3 3/4 9/10com sucesso 1.4 1.6 1.8 2.6sem sucesso 1.5 2.0 3.0 5.5
De qualquer forma, é muito importante não deixar a tabelaencher muito:
• Você pode aumentar o tamanho da tabela dinamicamente• Porém, precisa fazer um rehash de cada elemento para a
nova tabela1Baseado em Sedgewick, R. Algorithms in C, third edition, Addison-Wesley. 1998.
29
![Page 257: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/257.jpg)
ConclusãoHashing é uma boa estrutura de dados para
• inserir, remover e buscar dados pela sua chaverapidamente
• com uma boa função de hashing, essas operações levamtempo O(1)
• mas não é boa se quisermos fazer operação relacionadasa ordem das chaves
Escolhendo a implementação:• Sondagem linear é o mais rápido se a tabela for esparsa• Hashing duplo usa melhor a memória
– mas gasta mais tempo para computar a segunda funçãode hash
• Encadeamento separado é mais fácil de implementar
– Usa memória a mais para os ponteiros
30
![Page 258: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/258.jpg)
ConclusãoHashing é uma boa estrutura de dados para
• inserir, remover e buscar dados pela sua chaverapidamente
• com uma boa função de hashing, essas operações levamtempo O(1)
• mas não é boa se quisermos fazer operação relacionadasa ordem das chaves
Escolhendo a implementação:• Sondagem linear é o mais rápido se a tabela for esparsa• Hashing duplo usa melhor a memória
– mas gasta mais tempo para computar a segunda funçãode hash
• Encadeamento separado é mais fácil de implementar
– Usa memória a mais para os ponteiros
30
![Page 259: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/259.jpg)
ConclusãoHashing é uma boa estrutura de dados para
• inserir, remover e buscar dados pela sua chaverapidamente
• com uma boa função de hashing, essas operações levamtempo O(1)
• mas não é boa se quisermos fazer operação relacionadasa ordem das chaves
Escolhendo a implementação:• Sondagem linear é o mais rápido se a tabela for esparsa• Hashing duplo usa melhor a memória
– mas gasta mais tempo para computar a segunda funçãode hash
• Encadeamento separado é mais fácil de implementar
– Usa memória a mais para os ponteiros
30
![Page 260: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/260.jpg)
ConclusãoHashing é uma boa estrutura de dados para
• inserir, remover e buscar dados pela sua chaverapidamente
• com uma boa função de hashing, essas operações levamtempo O(1)
• mas não é boa se quisermos fazer operação relacionadasa ordem das chaves
Escolhendo a implementação:• Sondagem linear é o mais rápido se a tabela for esparsa• Hashing duplo usa melhor a memória
– mas gasta mais tempo para computar a segunda funçãode hash
• Encadeamento separado é mais fácil de implementar
– Usa memória a mais para os ponteiros
30
![Page 261: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/261.jpg)
ConclusãoHashing é uma boa estrutura de dados para
• inserir, remover e buscar dados pela sua chaverapidamente
• com uma boa função de hashing, essas operações levamtempo O(1)
• mas não é boa se quisermos fazer operação relacionadasa ordem das chaves
Escolhendo a implementação:
• Sondagem linear é o mais rápido se a tabela for esparsa• Hashing duplo usa melhor a memória
– mas gasta mais tempo para computar a segunda funçãode hash
• Encadeamento separado é mais fácil de implementar
– Usa memória a mais para os ponteiros
30
![Page 262: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/262.jpg)
ConclusãoHashing é uma boa estrutura de dados para
• inserir, remover e buscar dados pela sua chaverapidamente
• com uma boa função de hashing, essas operações levamtempo O(1)
• mas não é boa se quisermos fazer operação relacionadasa ordem das chaves
Escolhendo a implementação:• Sondagem linear é o mais rápido se a tabela for esparsa
• Hashing duplo usa melhor a memória
– mas gasta mais tempo para computar a segunda funçãode hash
• Encadeamento separado é mais fácil de implementar
– Usa memória a mais para os ponteiros
30
![Page 263: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/263.jpg)
ConclusãoHashing é uma boa estrutura de dados para
• inserir, remover e buscar dados pela sua chaverapidamente
• com uma boa função de hashing, essas operações levamtempo O(1)
• mas não é boa se quisermos fazer operação relacionadasa ordem das chaves
Escolhendo a implementação:• Sondagem linear é o mais rápido se a tabela for esparsa• Hashing duplo usa melhor a memória
– mas gasta mais tempo para computar a segunda funçãode hash
• Encadeamento separado é mais fácil de implementar
– Usa memória a mais para os ponteiros
30
![Page 264: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/264.jpg)
ConclusãoHashing é uma boa estrutura de dados para
• inserir, remover e buscar dados pela sua chaverapidamente
• com uma boa função de hashing, essas operações levamtempo O(1)
• mas não é boa se quisermos fazer operação relacionadasa ordem das chaves
Escolhendo a implementação:• Sondagem linear é o mais rápido se a tabela for esparsa• Hashing duplo usa melhor a memória
– mas gasta mais tempo para computar a segunda funçãode hash
• Encadeamento separado é mais fácil de implementar
– Usa memória a mais para os ponteiros
30
![Page 265: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/265.jpg)
ConclusãoHashing é uma boa estrutura de dados para
• inserir, remover e buscar dados pela sua chaverapidamente
• com uma boa função de hashing, essas operações levamtempo O(1)
• mas não é boa se quisermos fazer operação relacionadasa ordem das chaves
Escolhendo a implementação:• Sondagem linear é o mais rápido se a tabela for esparsa• Hashing duplo usa melhor a memória
– mas gasta mais tempo para computar a segunda funçãode hash
• Encadeamento separado é mais fácil de implementar
– Usa memória a mais para os ponteiros
30
![Page 266: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/266.jpg)
ConclusãoHashing é uma boa estrutura de dados para
• inserir, remover e buscar dados pela sua chaverapidamente
• com uma boa função de hashing, essas operações levamtempo O(1)
• mas não é boa se quisermos fazer operação relacionadasa ordem das chaves
Escolhendo a implementação:• Sondagem linear é o mais rápido se a tabela for esparsa• Hashing duplo usa melhor a memória
– mas gasta mais tempo para computar a segunda funçãode hash
• Encadeamento separado é mais fácil de implementar– Usa memória a mais para os ponteiros
30
![Page 267: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/267.jpg)
Conclusão
Além disso, funções de hashing podem ser aplicada emverificações de paridade:
• Para evitar erros de transmissão, podemos, além deinformar uma chave, transmitir o resultado da função dehashing. Exemplos:
– dígitos verificadores– sequências de verificação para arquivos (MD5 e SHA)
• Guardamos o hash de uma senha no banco de dados aoinvés da senha em si
– evitamos vazamento de informação em caso de ataque– mas temos que garantir que a probabilidade de duas
senhas terem o mesmo hash seja ínfima...
31
![Page 268: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/268.jpg)
Conclusão
Além disso, funções de hashing podem ser aplicada emverificações de paridade:
• Para evitar erros de transmissão, podemos, além deinformar uma chave, transmitir o resultado da função dehashing. Exemplos:
– dígitos verificadores– sequências de verificação para arquivos (MD5 e SHA)
• Guardamos o hash de uma senha no banco de dados aoinvés da senha em si
– evitamos vazamento de informação em caso de ataque– mas temos que garantir que a probabilidade de duas
senhas terem o mesmo hash seja ínfima...
31
![Page 269: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/269.jpg)
Conclusão
Além disso, funções de hashing podem ser aplicada emverificações de paridade:
• Para evitar erros de transmissão, podemos, além deinformar uma chave, transmitir o resultado da função dehashing. Exemplos:
– dígitos verificadores
– sequências de verificação para arquivos (MD5 e SHA)• Guardamos o hash de uma senha no banco de dados ao
invés da senha em si
– evitamos vazamento de informação em caso de ataque– mas temos que garantir que a probabilidade de duas
senhas terem o mesmo hash seja ínfima...
31
![Page 270: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/270.jpg)
Conclusão
Além disso, funções de hashing podem ser aplicada emverificações de paridade:
• Para evitar erros de transmissão, podemos, além deinformar uma chave, transmitir o resultado da função dehashing. Exemplos:
– dígitos verificadores– sequências de verificação para arquivos (MD5 e SHA)
• Guardamos o hash de uma senha no banco de dados aoinvés da senha em si
– evitamos vazamento de informação em caso de ataque– mas temos que garantir que a probabilidade de duas
senhas terem o mesmo hash seja ínfima...
31
![Page 271: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/271.jpg)
Conclusão
Além disso, funções de hashing podem ser aplicada emverificações de paridade:
• Para evitar erros de transmissão, podemos, além deinformar uma chave, transmitir o resultado da função dehashing. Exemplos:
– dígitos verificadores– sequências de verificação para arquivos (MD5 e SHA)
• Guardamos o hash de uma senha no banco de dados aoinvés da senha em si
– evitamos vazamento de informação em caso de ataque– mas temos que garantir que a probabilidade de duas
senhas terem o mesmo hash seja ínfima...
31
![Page 272: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/272.jpg)
Conclusão
Além disso, funções de hashing podem ser aplicada emverificações de paridade:
• Para evitar erros de transmissão, podemos, além deinformar uma chave, transmitir o resultado da função dehashing. Exemplos:
– dígitos verificadores– sequências de verificação para arquivos (MD5 e SHA)
• Guardamos o hash de uma senha no banco de dados aoinvés da senha em si
– evitamos vazamento de informação em caso de ataque
– mas temos que garantir que a probabilidade de duassenhas terem o mesmo hash seja ínfima...
31
![Page 273: MC-202 — Unidade 18 Tabela de Espalhamentorafael/cursos/1s2017/mc...MC-202 — Unidade 18 Tabela de Espalhamento Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual](https://reader030.vdocuments.site/reader030/viewer/2022040205/5f358efbc90b6230c22e70b2/html5/thumbnails/273.jpg)
Conclusão
Além disso, funções de hashing podem ser aplicada emverificações de paridade:
• Para evitar erros de transmissão, podemos, além deinformar uma chave, transmitir o resultado da função dehashing. Exemplos:
– dígitos verificadores– sequências de verificação para arquivos (MD5 e SHA)
• Guardamos o hash de uma senha no banco de dados aoinvés da senha em si
– evitamos vazamento de informação em caso de ataque– mas temos que garantir que a probabilidade de duas
senhas terem o mesmo hash seja ínfima...
31