Hash Extensivel Rápido acesso a dados com um custo mínimo de processamento (overhead cost).

Slides:



Advertisements
Apresentações semelhantes
gerador de código intermediário
Advertisements

Sistemas operacionais
Sistemas operacionais
Indexação Automática de Documentos
SISTEMAS DE INFORMAÇÃO
Indice estruturado por Hash
Bulk Loading – Algoritmo AULA 12 - COMPLEMENTO Profa. Sandra de Amo GBC053 – BCC Sandra de Amo.
Indices estruturados por B-TREE
Introdução aos Métodos de Acesso AULA 7 – Parte II Profa. Sandra de Amo GBC053 – BCC
Revisão Prova 2 Métodos de Acesso: BTree e Hash AULA 20 Profa. Sandra de Amo GBC053 – BCC
Uma árvore de N chaves organizada em k chaves por página tem profundidade de Lema: O número de descendentes em qualquer nível da árvore é igual ao número.
1 Complexidade de Algoritmos Complexidade de pior caso Complexidade de melhor caso de uso bem menos freqüente em algumas situações específicas Complexidade.
Sistemas Operacionais II - Sistemas de Arquivos -.
Arquivos Extensíveis.
Pesquisa em Memória Primária
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária – Árvores de Busca
Medida do Tempo de Execução de um Programa
Pesquisa em Memória Primária – Árvores de Busca
Medida do Tempo de Execução de um Programa
Pesquisa em Memória Primária
David Menotti Estruturas de Dados I DECOM – UFOP
Busca Cega (Exaustiva)
Hashing (Espalhamento)
A FAST APRIORI implementation
Indexação e Hashing Muitas consultas referenciam apenas uma pequena porção dos registros em uma tabela. Portanto necessitamos ser capaz de localizar estes.
Métodos de Classificação por Seleção: HeapSort
Análise Léxica Supondo o trecho de programa abaixo:
BRUNO ALMEIDA LAURO ARTHUR RIVELINO BELTRÃO
Listas Encadeadas.
Indexação de Arquivos Página de rosto.
Marco Antonio Montebello Júnior
Meta - heurísticas Prof. Aurora
Aula prática 9 Alocação Dinâmica Monitoria de Introdução à Programação
Pesquisa em memória primária: hashing
Pesquisa em Memória Primária
Comparação entre os métodos de ordenação
Sistemas Operacionais
Sistemas Operacionais
INF70 – Gerenciamento de Banco de Dados 2 Índices baseados em Hash Ilmério Reis da Silva UFU/FACOM/BCC.
Algorítmos e estrutura de dados III
Aula 03 – BCC202 Análise de Algoritmos (Parte 1) Túlio Toffolo www
Aula 08 Medidas de posição - Prof. Diovani Milhorim
Universidade Católica de Pelotas Mestrado em Ciência da Computação
Arquivos Estruturados por Hashing– Custos I/O
Introdução e Busca Cega
Introdução aos Agentes Inteligentes Busca Cega (Exaustiva)
Agenda Modos de Endereçamento.
Campus de Caraguatatuba Licenciatura em Matemática Semestre de 2013
Métodos de Desagrupamento Método de Células Móveis
Sistemas Operacionais
ARQUITETURA DE COMPUTADORES II
SISTEMAS OPERACIONAIS I
Sistemas Operacionais
Capítulo VIII Ambientes de Execução
SISTEMAS OPERACIONAIS I Gerenciamento de Arquivos
Experimentação Algorítmica
Tabela Hash Alunos : Gustavo Jorge Zanin nºUSP
© 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice.
Lista Linear Base para outras estruturas
Como analisar um algoritmo
AULA 21 Profa. Sandra de Amo BCC - UFU
Mapa de círculos proporcionais
Técnicas de Compressão de Dados
Sistemas de Arquivos Sistemas Operacionais Profa. Priscila Facciolli
Algoritmos para Seleção AULA 23 Profa. Sandra de Amo GBC053 – BCC.
Sistemas de Arquivos. Alocação em memória – Problemas Quantidade Limitada de Informações Perda de informações quando o processo é terminado Vários processos.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas de Arquivos Capítulo Arquivos 6.2 Diretórios 6.3 Implementação do sistema.
Arrays Outline 7.1 Introdução 7.2 Arrays 7.3 Declarando e Criando Arrays 7.4 Exemplos usando arrays 7.5 Ordenando arrays 7.6 Procurando em.
Sistemas Inteligentes Busca Cega (Exaustiva)
Transcrição da apresentação:

Hash Extensivel Rápido acesso a dados com um custo mínimo de processamento (overhead cost).

Introducao: Os principais objetivos deste método são pesquisa O(1) e tamanho variável conforme a quantidade de contudo. Hash extensível usa a chave gerada pela função hash como uma pseudo-chave, que será quebrada conforme necessidade.

Profundidade: A profundidade deve ser tal que o numero de baldes contenham todas as chaves, é importante que a função hash distribua bem as chaves. Este número de baldes(B) corresponde a 2p indices, assim p = log2 B. Onde B = (numero de chaves)/(taxa de ocupacao). Supondo ocupação máxima temos B = (numero de chaves) / (tamanho do balde).

Inserção Inserção Após obtida a pseudo-chave a partir da chave da informação a ser armazenada, pega-se os p bits mais significativos da pseudo-chave (p se refere a profundidade de diretório ou profundidade global) como índice para acessar um posição do diretório. Por exemplo, se a pseudochave é 10100110 e a profundidade do diretório é 3, acessaremos a posição 101. Nesta posição do diretório teremos uma referência ao balde em que tentaremos inserir o dado( ou uma referência a ele). Daí poderemos ter três casos:

Melhor caso: há espaço no balde e a pseudochave é simplesmente inserida no balde

Caso Intermediário . Não há espaço no balde encontrado , mas ele pode ser divido em mais um balde A profundidade desse balde é menor que a do diretório. Um novo balde é criado, e as pseudochaves são redistribuídas entre o novo balde e o original. A profundidade local desses baldes serão iguais a profundidade do balde original mais um.

Pior caso: Não há espaço no balde encontrado e a entrada do diretório encontrada faz referência a um único balde, ou seja, a profundidade local do balde é igual a profundidade do diretório . O diretório dobra de tamanho e as pseudochaves são distribuídos entre os baldes do novo diretório.

Pesquisa A pesquisa no hash extensível é simples e muito rápida. A chave de pesquisa passa pela função hash retornando a pseudochave. Se a profundidade do diretório é p, os primeiros p bits da pseudochave são usados para compor o índice do diretório. Nesta posição temos a referência ao balde onde faremos pesquisa semelhante a feita num nó de árvore B.

Remoção Após removermos a informação do balde, temos que fazer duas verificações: 1- Se é possível fundi-lo com outro balde (balde amigo). 2- Se o tamanho do diretório pode ser reduzido.

Balde amigo Para a primeira verificação, temos que achar o balde amigo. Para haver um único balde amigo a profundidade do balde tem que ser a mesma do diretório. Dado um índice de um balde, o balde amigo é aquele que difere apenas no último bit do índice.

Redução de tamanho Isto é possível quando cada balde da estrutura é referenciado por pelo menos duas entrada do diretório. Ou seja, a profundidade de todos os baldes é menor que a global .Assim o diretório é reduzido pela metade ( a profundidade decresce de 1) e as referenciais aos baldes são refeitas.

Aplicações e Desemplenho Se o diretório de um hash podeser mantido na memória RAM um simples acesso é necessário para recuperar um registro. Mas, se o diretório é tão grande que ele precise ser mapeado fora da memória RAM, dois acessos podem ser necessários.

Vantagens: O tempo de acesso é completamente independente do tamanho do arquivo. Hash extensível não há necessidade da ordenação dos dados no arquivo. Tamanho tão grande quanto necessário(até um limite definido pela função hash).

Desempenho Quão grande deve ser um diretório para um seterminado número de chaves? A resposta foi dada por Frajolet em 1983: Tamanho estimado do diretório = 3.92 r(1+1/b)/b. Sendo r o número total de registros e b o tamanho do balde.

Sobre o preenchimento dos baldes, espera-se que os baldes estejam entre 0.53 e 0.94 cheios. A análise de Fagin, Nievergelt, Pippenger e Strong sugere que para um número r de registros e um bloco de memória de tamanho b, o número médio de blocos N é aproximadamente: N » r /(b ln 2) A utilização é dada por: r / (b N) que é igual a ln 2 = 0.69.

Assim, esperamos uma utilização de 69% Assim, esperamos uma utilização de 69%. As árvores B tendem a ter uma utilização de 67%, que pode ser aumentado para 85%, se distribuirmos as chaves durante a inserção. Logo, uma árvore B tende a ocupar menos memória, ao custo de se procurar mais para se achar um dado.

Usos Hash extensível é usado quando temos um grande número de informações que estão em constantes mudança e elas têm de ser acessadas rapidamente. Isso ocorre principalmente em sistemas de arquivos de um sistema operacional e sistemas de bancos de dados.