No método de transformação (hashing), os registros armazenad...

Próximas questões
Com base no mesmo assunto
Ano: 2015 Banca: CESPE / CEBRASPE Órgão: TRE-PI
Q1226340 Algoritmos e Estrutura de Dados
No método de transformação (hashing), os registros armazenados em uma tabela são diretamente endereçados a partir de uma transformação aritmética sobre a chave de pesquisa. Com relação às funções de transformação e colisões, assinale a opção correta.
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

A alternativa correta é: D - Endereçamento separado, que é uma forma de resolver colisões, constrói uma lista linear encadeada para cada endereço da tabela.

Vamos entender o contexto da questão. O tema principal aqui é o método de transformação (hashing), que é muito utilizado para mapear dados de maneira eficiente. Ao usar hashing, cada chave de um dado é transformada por uma função hash para determinar seu endereço de armazenamento na tabela.

Funções de transformação são essenciais para o funcionamento eficaz do hashing e devem lidar bem com colisões, que ocorrem quando duas chaves distintas mapeiam para o mesmo endereço.

Agora, vamos analisar as alternativas:

Alternativa D: Essa é a alternativa correta. O endereçamento separado é um método comum de resolver colisões. Ele utiliza listas encadeadas para armazenar múltiplos itens que foram mapeados para o mesmo endereço. Dessa forma, mesmo que ocorram colisões, é possível armazenar todos os itens sem perda de dados.

Alternativa A: Esta afirmação é incorreta. A função hash pode aceitar diferentes tipos de dados como chaves, não apenas numéricos. É comum usar strings, por exemplo, que podem ser transformadas em valores numéricos através de métodos como somar valores ASCII dos caracteres.

Alternativa B: A afirmação está incorreta porque o método mencionado, "resto da multiplicação", não é um método comum ou funcional por si só. Um método famoso é o resto da divisão, onde a chave multiplicada por um valor constante é tomada módulo do tamanho da tabela.

Alternativa C: Esta alternativa está incorreta porque a função hash deve mapear as chaves dentro de um intervalo [0, M-1], onde M é o tamanho da tabela hash, não o valor da chave.

Alternativa E: A descrição está incorreta. No endereçamento aberto, os dados são armazenados diretamente na tabela e resolve-se colisões procurando por espaços disponíveis (usando técnicas como linear probing, quadratic probing, etc.), ao contrário do uso de matrizes esparsas.

Espero que essas explicações ajudem a esclarecer a questão sobre funções de transformação e colisões em hashing. Gostou do comentário? Deixe sua avaliação aqui embaixo!

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

d-

separate chaining (open hashing) armazena chaves dentro e fora da tabela hash, podendo ate exceder o tamanho da tabela, fazendo com que listas encadeadas sejam necessarias para armazenar alem do limite, resultabndo em perda de desempenho do cache e fazendo com alguns table buckets nunca sejam usados.

open addressing (closed hashing): 3 tipos linear, quadratico e double hashing. as chaves estao sempre somente dentro da tabela hash, nao podendo exceder o limite, dificultando operações de delete. buckets podem ser usados mesmo se nao houver chaves.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo