Você está na página 1de 1

Tabela Hash.

Resumo Algoritmos e Estrutura de Dados por Gustavo Pereira

uma estrutura de dados eciente para implementar dicionrios. ex. Tabela[k] = None (onde k a chave e None o dado satlite) Endereamento direto uma tcnica simples e funciona bem quando o nmero de chaves pequeno e no h dois elementos para a mesma chave. Porm, se a tabela for muito grande, o ar mazenamento direto pode ser impraticvel, alm de a quantidade de chaves reais utilizadas pode ser menor que o tamanho da tabela, implicando num desperdcio. Os requisitos de armazenamento (|k|). Nesse caso, uma tabela hash exige muito menos espao de endereamento. Operaes bsicas de um dicionrio como pesquisar, inserir e deletar so rpidas e necessita de tempo O(1). Em uma tabela hash, um elemento com chave k armazenado na posio h(k), h uma funo que calcula a posio do elemento a partir da chave k. dito que um elemento com chave k efetua o hash para a posio h(k), que o valor hash da chave k. Ocorre uma coliso quando duas chaves tem o hash na mesma posio. O melhor evita colises, desenvolvendo tcnicas para tratar as colises. Uma soluo colocar como uma lista ligada (encadeamento). Para uma tabela hash com m posies e n elementos o fator de carga dado por =n/m. Todas as anlises sero feitas em termos de . Pior Caso: todas as n chaves executam o hash na mesma posio. O tempo para pesquisa n mais o tempo de calcular a funo hash. Neste caso no melhor

utilizar uma lista ligada para representar todos os elementos. Supondo que o valor do hash h(k) pode ser calculo em tempo O(1), fazendo depender apenas do comprimento das listas para denir o tempo de procura de um elemento k. Teorema 11.1 Em uma tabela hash na qual as c o l i s e s s o re s o l v i d a s p o r encadeamento, uma pesquisa malsucedida demora o tempo esperado (1+), sob a hiptese de hash uniforma simples. Teorema 11.2 Em uma tabela hash na qual as c o l i s e s s o re s o l v i d a s p o r encadeamento, uma pesquisa bem sucedida demora o tempo (1+), na mdia, sob a hiptese de hash uniforme simples. O que podemos concluir? Se o nmero de posies na tabela hash no mnimo proporcional ao nmero de elementos na tabela: n = O(m), e consequentemente, = n/m = O(m)/m = O(1) . Portanto, a pesquisa demora um tempo constante em mdia. Dado que a insero demora O(1) e a eliminao demora O(1) para listas duplamente ligadas. Todas as operaes de dicionrio podem ser admitidas em tempo O(1) em mdia.

Você também pode gostar