Jump to content

HASHTABLE


Llaverola

Recommended Posts

http://en.wikipedia.org/wiki/Hash_table

Eu sugeria-te ler alguma coisa sobre hash tables, em vez de andar a pedir código. Não é difícil encontrar implementações de hash tables na net, mas é bom que compreendas os conceitos que estão por trás delas, até porque há vários tipos de hash table, com as mais variadas implementações.

Link to comment
Share on other sites

O Rui Carlos disse tudo. Eu tenho a minha implementação de uma hash table mas se ta fornecesse não ias aprender nada com isso e provavelmente não a ias saber usar sem analisar a estrutura de uma hash table.

Contudo, posso enviar-te para o email uma página web da usaco, sobre estruturas de dados (incluindo hash tables). Não posso por o link porque a página não é pública. Só avançando no treino deles é que vamos tendo acesso aos textos deles.

"What we do for ourselves dies with us. What we do for others and the world, remains and is immortal.", Albert Pine

Blog pessoal : contém alguns puzzles, algoritmos e problemas para se resolver com programação.

Link to comment
Share on other sites

  • 2 weeks later...

Uma melhor função de hash é multiplicar os códigos ascci dos caracteres... a soma é demasiado fraca...

melhor ainda é multiplicares o código ascii de cada letra por um número primo, exemplo 37 😄

"What we do for ourselves dies with us. What we do for others and the world, remains and is immortal.", Albert Pine

Blog pessoal : contém alguns puzzles, algoritmos e problemas para se resolver com programação.

Link to comment
Share on other sites

mas ao somar todos caracteres, n vai haver palavras com o mm hashcode...ou vai?

ja agora,é uma soma simpleS? ou cada caracter corresponde ao seu codigo ascii e soma-se esse codigo?

Para não haver colisões podes elevar números primos diferentes ao valor de cada letra.

Por exemplo:

2^str[0] + 3^str[1] + 5^str[3] + 7^str[4] + ...

(os primos não precisam de estar ordenados, apenas precisam de ser todos diferentes).

Matematicamente, garantes que não há duas strings diferentes com o mesmo hash, mas também vão poder atingir valores extremamente elevados. Logo isto não vai evitar colisões na Hash Table, a menos que as posições da tua Hash Table cresçam tanto quanto queiras.

Dependendo do tamanho da Hash Table e das strings, a soma das letras poderá ou não ser suficiente.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.