Hashing convencional...

Documentos relacionados
Hashing. Hashing. Hashing versus Indexação. Hashing. Hashing convencional... Exemplo de espalhamento. Revisão...

Hashing Externo. SCC-503 Algoritmos e Estruturas de Dados II. Thiago A. S. Pardo M.C.F. de Oliveira Cristina Ciferri

Hashing externo. Graça Nunes. Fonte: Folk & Zoelick, File Structures

Hashing externo (II) Graça Nunes. Fonte: Folk & Zoelick, File Structures

ACH2024. Aula 22 Hashing Externo - Hashing estático e dinâmico (extensível) Prof Helton Hideraldo Bíscaro

Matemática Discreta 12

Árvores-B (Parte II) Leandro C. Cintra M.C.F. de Oliveira Fonte: Folk & Zoelick, File Structures

indexação e hashing Construção de Índices e Funções Hash Diego Gomes Tomé - MSc. Informática Orientador: Prof. Dr. Eduardo Almeida October 13, 2016

ANÁLISE E PROJETO DE BANCO DE DADOS

Construção de árvores-b. Árvores-B (Parte II) Características Gerais. Características Gerais. Leandro C. Cintra M.C.F. de Oliveira

Métodos de Busca Parte 2

HASHING HASHING 6/10/2008

Árvores-B (Parte IV) Leandro C. Cintra M.C.F. de Oliveira Fonte: Folk & Zoelick, File Structures

Ordem. Árvores-B (Parte IV) Número mínimo de chaves por página. Definição formal das Propriedades de árvores-b /30 1

Árvore-B. Árvore B. Características Gerais. Sistemas de Banco de Dados. Características Gerais. Revisão

Hashing: conceitos. Hashing

Tabelas Hash. informação, a partir do conhecimento de sua chave. Hashing é uma maneira de organizar dados que:

Tabela Hash. Disciplina de Algoritmos e Estrutura de Dados III. Prof. Marcos Antonio Schreiner 15/05/2015

Estruturas de Dados Tabelas de Espalhamento

Árvores-B (Parte Ib) SCC-203 Algoritmos e Estruturas de Dados II. Graça Nunes

Árvores B. Árvores B Parte II. Características. Características. Construção Bottom-Up. Leandro C. Cintra Maria Cristina F. de Oliveira.

SCC0601 Introdução à Ciência da Computação II. Prof. Lucas Antiqueira

Árvores B Partes I e II

Tabelas de hash Acabamos de estudar como implementar uma tabela hashing aberta e estudaremos agora como implementar uma tabela hashing fechada ou

MC3305 Algoritmos e Estruturas de Dados II. Aula 02 Hashing. Prof. Jesús P. Mena-Chalco.

INF70 Gerenciamento de Banco de Dados 2 Índices baseados em Hash

TABELA HASH. Prof. André Backes. Princípio de funcionamento dos métodos de busca

GBC053 Gerenciamento de Banco de Dados Índices baseados em Hash

HASHING Hashing Motivação - Acesso Direto:

Métodos de Busca. Parte 2. ICC2 Prof. Thiago A. S. Pardo. Baseado no material do Prof. Rudinei Goularte

Introdução Métodos de Busca Parte 2 - Hashing

Universidade Estadual do Oeste do Parana - UNIOESTE Jhonata R.de Peder Marcelo Schuck

13 Hashing (parte 2) SCC201/501 - Introdução à Ciência de Computação II

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

Algoritmo: Split. Árvores B Parte IV. Algoritmo: Split. Algoritmo: Split. Algoritmo: Split. Procedimento inicial. Parâmetros

Tabelas de dispersão/hash

Organização de Arquivos

Matrizes esparsas: definição

Dicionários. TAD Orientado a conteúdo

Árvores-B (Parte Ia) SCC-203 Algoritmos e Estruturas de Dados II. Graça Nunes

Lista de Exercícios. Av. Trabalhador São-carlense, 400. centro. São Carlos - SP cep Brasil.

Métodos de Busca Parte 1

Introdução Métodos de Busca Parte 1

Tabelas Hash. Prof. Túlio Toffolo BCC202 Aulas 23 e 24 Algoritmos e Estruturas de Dados I

Banco de Dados. Módulo 15 - Estruturas de Indexação

Ordenação e Busca em Arquivos

Algoritmos de pesquisa. Tabelas de dispersão/hash

TABELAS DE DISPERSÃO/HASH

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

Bases de Dados. Remoções em árvores B + Remoção em árvores B +

TAD dicionário. Métodos do TAD dicionário:

UNIVERSIDADE DE SÃO PAULO - ICMC Departamento de Ciências da Computação SCC-203 Algoritmos e Estruturas de Dados 2-2 Sem /2012 Profa.

Árvores B Parte III. Propriedades, Remoção & Inserção Revisitada. Adaptado e Estendido dos Originais de:

Tabelas de Dispersão. Algoritmos e Estruturas de Dados Verão Cátia Vaz 1

Dicionários. Prof. César Melo

Árvores B. Hashing. Estrutura de Dados II Jairo Francisco de Souza

Árvore-B* Profa. Dra. Cristina Dutra de Aguiar Ciferri

UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO

Cap. 5 Indexação Baseada em Hashing

Árvores B. Hashing. Estrutura de Dados II Jairo Francisco de Souza

Árvores B Parte IV. Revisão de Inserção. Organização. Variantes. Leandro C. Cintra Maria Cristina F. de Oliveira

Acesso Sequencial Indexado

Hashing. Cormen Capítulo 11

Índice. Índices. Índice simples. Em geral, um índice fornece mecanismos para localizar informações

Implemente a função de remoção de uma chave na tabela hashing fechada em questão. void remover(tabela tabela, int n) {

ESTRUTURA DE DADOS E ALGORITMOS. Hashing (Tabela de Dispersão) Cristina Boeres

Armazenamento Secundário. Endereços no disco. Organização da informação no disco. Organização da informação no disco

Modelo Relacional. Josino Rodrigues

Pesquisa em Memória Primária. Prof. Jonas Potros

Definição. Árvores B Parte III. Propriedades Gerais. Propriedade (No. Mín. de Chaves) Leandro C. Cintra Maria Cristina F.

A Invenção da B-Tree. Árvores B Parte I. Problema. Problema. Introdução. Leandro C. Cintra Maria Cristina F. de Oliveira. Solução?

Capítulo 11: Implementação de Sistemas de Arquivos. Operating System Concepts 8th Edition

Tabela Hash. Disciplina: Estruturas de Dados Professora: Camila Taumaturgo M.Sc.

ARMAZENAMENTO SECUNDÁRIO, PARTE 1 Professora Rosane Minghim

Aula 13 Árvores Rubro-Negras

Bit (Binary Digit) é a menor unidade de armazenamento de informação dentro do computador; Byte é a união de 8 bits capaz de representar 256

SCC Capítulo 5 Métodos de Busca [3]

Aula 19 Árvores Rubro-Negras

Hashing Endereçamento Direto Tabelas Hash

Tabelas de Dispersão - Introdução (1)

Estrutura de indexação de arquivos

EA075 Memória virtual

Árvores-B (Parte I) SCC-503 Algoritmos e Estruturas de Dados II. Thiago A. S. Pardo Leandro C. Cintra M.C.F. de Oliveira

Sumário. Definição do Plano de Execução

3 Plano de Execução de Consultas

A Invenção da B-Tree. Árvores B Parte I. Problema. Problema. Árvores Binárias de Busca. Árvores Binárias de Busca. Introdução

Edital de Seleção 055/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Árvores. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo

Organização de Arquivos. Thiago A. S. Pardo Leandro C. Cintra M.C.F. de Oliveira Cristina D. A. Ciferri

Pesquisa em Memória Secundária. Prof. Jonas Potros

Busca em Memória Primária Estrutura de Dados II

Busca em Memória Primária Estrutura de Dados II

A inserção da chave 6 da árvore acima resulta na árvore abaixo.

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Pré-Processamento de Documentos

ACH2025. Laboratório de Bases de Dados Aula 8. Indexação e Hashing Parte 1. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO

AED Algoritmos e Estruturas de Dados LEEC /2007. Tabelas de Dispersão

Acesso a registros. Acesso a Registros. Acesso a registros. Chaves. Forma Canônica da Chave. Forma Canônica da Chave

Transcrição:

Hashing M.C.F. de Oliveira & Cristina Ciferri 2006/2007 Fonte: Folk & Zoelick, File Structures 1 Hashing convencional... Revisão... 2 1

Hashing 0 chave de busca K = LOWELL h(k) endereço 4 1 2 3 4 5... LOWELL...... endereço gerado pela função hash espaço de endereçamento: registros de tamanho fixo 3 Exemplo de espalhamento 4 2

Hashing Função hash caixa preta que produz um endereço toda vez que uma chave de busca é passada como parâmetro Endereço resultante usado para armazenamento e recuperação de registros no arquivo de dados Nomenclatura h(k) endereço K: chave de busca 5 Hashing versus Indexação Semelhança ambos envolvem associação de uma chave de busca a um endereço de registro Diferença (hashing) endereço gerado é aleatório não existe relação óbvia entre a chave e a localização do registro no arquivo de dados duas chaves diferentes podem ser transformadas para o mesmo endereço colisão 6 3

Exemplo de Colisão nome código ASC II 1ª e 2ª letras produto endereço gerado BALL 66 65 66 x 65 = 4.290 290 LOWELL 76 79 76 x 79 = 6.004 004 TREE 84 82 84 x 82 = 6.888 888 OLIVER 7 Exemplo de Colisão nome código ASC II 1ª e 2ª letras produto endereço gerado BALL 66 65 66 x 65 = 4.290 290 LOWELL 76 79 76 x 79 = 6.004 004 TREE 84 82 84 x 82 = 6.888 888 OLIVER 79 76 79 x 76 = 6.004 004 chaves sinônimas: LOWELL e OLIVER 8 4

Colisão: Solução 1 Encontrar um algoritmo de hashing perfeito que não produza colisões Cenário de uso conjunto de dados pequenos e estáveis Limitação abordagem não indicada para determinadas configurações de número de chaves e de dinâmica dos dados perfect hashing algorithm 9 Colisão: Solução 2 Encontrar um algoritmo de hashing que produza poucas colisões Objetivo evitar o agrupamento de registros em certos endereços Funcionalidade espalhar os registros aleatoriamente no espaço disponível para armazenamento distribuir o mais uniformemente possível 10 5

Colisão: Solução 3 Ajustar a forma de armazenamento dos registros Possibilidade 1: usar memória extra aumentar o espaço de endereçamento, para um mesmo conjunto de registros cenário de uso poucos registros para serem distribuídos entre muitos endereços 11 Colisão: Solução 3 É muito fácil encontrar um algoritmo hash que evita colisões se existem poucos registros para serem distribuídos entre muitos endereços É muito mais difícil encontrar um algoritmo hash que evita colisões quando o número de registros e de endereços é aproximadamente o mesmo 12 6

Colisão: Solução 3 Possibilidade 1: uso de memória extra complexidade de espaço perda de espaço de armazenamento Exemplo registros: 75 espaço de endereçamento: 1.000 alocado versus usado = 7,5% alocado versus não usado = 92,5% 13 Colisão: Solução 3 Possibilidade 2: armazenar mais de um registro em um único endereço uso de buckets cada endereço é suficientemente grande para armazenar diversos registros exemplo registros de 80 bytes bucket de 512 bytes complexidade de espaço cada endereço pode armazenar até 6 registros! perda de espaço para registros sem sinônimos 14 7

Distribuição de Registros Como uma função hash distribui (espalha) os registros no espaço de endereços? (a) melhor caso (b) pior caso (c) caso aceitável registro A B C D E F G endereço 1 2 3 4 5 6 7 8 9 10 registro A B C D E F G endereço 1 2 3 4 5 6 7 8 9 10 7 registros x 10 endereços registro A B C D E F G endereço 1 2 3 4 5 6 7 8 9 10 15 Distribuição Uniforme (a) Registros espalhados uniformemente entre os endereços Características sem colisão muito difícil de ser obtida 16 8

Distribuição Aleatória (c) Os registros espalhados no espaço de endereços com algumas colisões Propriedades (função randômica) para uma certa chave, todos os endereços possuem a mesma probabilidade de serem escolhidos a probabilidade de um endereço ser escolhido por uma outra chave não varia em função deste endereço já ter sido escolhido na geração de um grande número de endereços, alguns endereços são gerados mais freqüentemente que outros 17 Outros Métodos de Hash Examinar as chaves em busca de um padrão Segmentar a chave em diversos pedaços e depois fundir os pedaços Dividir a chave por um número Elevar a chave ao quadrado e pegar o meio Transformar a base 18 9

Categorias de Hashing Hashing estático: garante acesso O(1), para arquivos estáticos Hashing dinâmico: extensão do hashing estático para tratar arquivos dinâmicos 19 Organização de índices hashing único arquivo Os dados e o índice hashing ficam no mesmo arquivo dois arquivos Os dados ficam em um arquivo e o índice hashing das chaves fica em outro 20 10

Hashing Extensível Espalhamento convencional: pouco adequado a arquivos dinâmicos, que crescem e diminuem com o tempo Espalhamento Extensível (Extendible Hashing): permite um auto-ajuste do espaço de endereçamento do espalhamento Idéia chave é combinar o espalhamento convencional com uma técnica de recuperação de informações denominada trie 21 Trie também conhecida como radix searching tree, ou árvore de busca digital árvore de busca na qual o fator de sub-divisão, ou número máximo de filhos por nó, é igual ao número de símbolos do alfabeto que compõe as chaves boa opção para manter chaves grandes e de tamanho variável... origem do nome: palavra retrieval 22 11

Exemplo Tries 23 Tries e espalhamento extensível Espalhamento extensível: tries de ordem 2 Tabela de espalhamento indexa um conjunto de cestos (buckets) Conjunto de chaves (ou registros) armazenadas em cestos Busca por chave: análise bit-a-bit do valor de key ou do valor de h(key) permite localizar o seu cesto 24 12

Tries e espalhamento extensível Nível dos nós folha: cestos contendo várias chaves (ou registros) 25 Bucket (Cesto) Segmento físico útil de armazenamento externo página, trilha ou segmento de trilha 26 13

Como representar a trie? Se for mantida como uma árvore, são necessárias várias comparações para descer ao longo de sua estrutura Solução mais eficiente: representá-la como um diretório de endereços 27 Transformando uma trie em um diretório A trie deve ser uma árvore binária completa Se não for, pode ser extendida 28 14

Transformando a trie em um diretório Uma vez completa, trie pode ser representada por um vetor O vetor fornece acesso direto aos endereços Exemplo: endereço começando com os bits 10 pode ser encontrado a partir de um ponteiro na posição 10 2 do diretório 29 Diretório Profundidade do cesto: indicação do número de bits da chave necessários para determinar quais registros ele contém Informação mantida junto ao cesto Ex. Cesto A: profundidade 1 Cestos B e C: profundidade 2 30 15

Diretório Inicialmente, a profundidade é a mesma para todos os cestos, e define a profundidade do diretório 31 Subdivisão para tratar overflow Se um registro precisa ser inserido e não há espaço no cesto associado ao seu endereço base, então o cesto é sub-dividido (spliting). Isso é feito adicionando mais um bit aos endereços se o novo espaço de endereçamento já estava previsto no diretório, nenhuma alteração é necessária senão, é necessário dobrar o espaço de endereçamento do diretório para acomodar o novo bit 32 16

Subdivisão para tratar overflow 33 Subdivisão para tratar overflow 34 17

Inserção de chave Seja d a profundidade do índice, dada pela maior profundidade dos cestos Localiza chave no diretório: seja i a profundidade do seu cesto Se a inserção da chave provoca a subdivisão do cesto, existem 2 casos a considerar: i < d e i = d 35 Inserção de chave Se i < d Remaneja os registros entre os 2 cestos Insere nova chave no cesto adequado Altera a profundidade de ambos os cestos Se i = d é necessário dobrar o tamanho do diretório Profundidade do índice passa a ser d + 1, assim como a dos cestos envolvidos na inserção antigo conteúdo de todas as posições do índice copiado para o novo índice 36 18

Eliminação de chave Localiza chave no diretório Se encontrada, elimina a chave do seu cesto Verifica-se se o cesto possui um buddy bucket Um par de cestos buddy é formado por dois cestos que são descendentes imediatos do mesmo nó na trie Se o buddy bucket existe, então verifica se é possível unir os cestos buddy Verifica se é possível diminuir (colapsar) o tamanho do diretório 37 Par de cestos buddy Se a profundidade do diretório é 0, então não existem buddy Se a profundidade do cesto for menor que a profundidade do diretório, tal cesto não tem buddy Caso o buddy exista, pode-se determinar o endereço do cesto buddy usando o cesto atual 38 19

Colapso de diretórios Se um par de cestos buddy é colapsado, pode acontecer que todo cesto tenha, no mínimo, um par de endereços referenciando-o Neste caso, o diretório pode ser colapsado, e seu tamanho reduzido pela metade 39 20