O custo é esperado, não mágico.
Com distribuição próxima de uniforme e carga controlada, get, put e delete têm custo esperado O(1). Se muitas chaves formarem o mesmo bucket ou uma sequência longa de sondagem, o pior caso continua O(n).
Uma função de dispersão (hash) transforma a chave em um índice para localizar dados rapidamente; colisões exigem uma estratégia de resolução.
Passo 1 · Nesta demonstração, a função mapeia a chave 'lua' para o índice 4; o próximo quadro verifica se esse endereço está livre.
Passo 1: Nesta demonstração, a função mapeia a chave 'lua' para o índice 4; o próximo quadro verifica se esse endereço está livre.
A operação usa um ponto conhecido da estrutura, sem precisar percorrer todos os elementos. O número de passos não cresce com n.
Push, pop e acesso médio em uma Hash Table podem permanecer constantes quando a implementação preserva sua estrutura.Escolha duas técnicas diferentes. As curvas usam a mesma escala visual para explicar como o custo tende a aumentar.
Use este par para contrastar operações locais de extremidade com uma decomposição recursiva cujo número de movimentos cresce exponencialmente. Stacks & Queues tende a crescer mais devagar do que Towers of Hanoi quando aumentam quantidade de itens (n). Isso descreve tendência assintótica, não mede o tempo do seu aparelho.
índice = hash(chave) % capacidadese posição livre: grave o parse houver colisão: avance para a próxima posiçãopare ao encontrar a chave ou um espaço livreO destaque acompanha o passo atual; leia a linha destacada antes de avançar.
Uma Hash Table transforma uma chave em um índice provável de um vetor. O desempenho nasce da combinação entre função de dispersão, regra de igualdade, fator de carga e uma política correta para os conflitos inevitáveis.
Se duas chaves representam o mesmo valor lógico, precisam gerar o mesmo hash. O inverso não vale: chaves diferentes podem cair no mesmo índice; por isso, a tabela ainda compara a chave antes de devolver, substituir ou remover uma associação.
Com distribuição próxima de uniforme e carga controlada, get, put e delete têm custo esperado O(1). Se muitas chaves formarem o mesmo bucket ou uma sequência longa de sondagem, o pior caso continua O(n).
Em sondagem, limpar uma célula pode interromper o caminho de uma chave posterior. Um tombstone marca uma remoção sem encerrar a busca; acumulado demais, porém, aumenta sondagens e pede uma limpeza por rehash.
Menos entradas por posição ou por sequência tende a reduzir comparações e sondagens. Em endereçamento aberto, α deve permanecer abaixo de 1 porque uma posição guarda no máximo um par.
Mudar a capacidade exige reinserir as entradas: o índice depende de M. Uma expansão pode custar O(n) em uma chamada, mas crescer geometricamente mantém o custo amortizado de inserções em O(1).
Se uma chave muda depois de ser inserida e seus campos participam do hash ou da igualdade, uma busca futura pode seguir para outro índice. Prefira chaves imutáveis. Quando as chaves vêm de uma fonte adversarial, colisões fabricadas também podem concentrar trabalho; implementações expostas podem usar hash com chave e limites de carga para reduzir esse risco.