No método de transformação (hashing), os registros armazenad...
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