O que é uma função hash, é algo que é usado em toda a ciência da computação.
Uma função hash é simplesmente uma função que gera um valor de comprimento fixo para cada entrada que obtém.
Tudo bem, o que isso significa?
Bem, eu tenho aqui um gerador de hash modificado chamado cinco é o tipo de função de hash e há muitos, muitos
tipos de que você deve ter ouvido falar, disparou um para 56 e muitos outros.
Usando essa função hash, vamos ver o que acontece se eu fizer isso.
Olá?
Você vê isso imediatamente, e o cinco faz o hash dessa string e a transforma em um jargão.
Isso é o que uma função hash faz, damos a ela uma entrada e a função gera algum padrão aleatório.
Agora, existem alguns aspectos principais das funções hash.
A primeira é que é uma maneira.
No sentido de que, se eu der isso a alguém, ela não terá ideia do que foi o input e é praticamente impossível
para mim ter qualquer pista sobre o que é o input.
A segunda é que não importa quantas vezes eu diga olá lá, vai ser a mesma coisa.
Mas assim que eu mudar alguma coisa, ela mudará completamente a saída.
Se eu voltar para oi e.
Observe-me apenas mudar para H maiúsculo, mesmo uma letra maiúscula, então começa com cinco D quatro, se
eu fizer H maiúsculo, é completamente diferente novamente.
E olhando para isso, podemos pelo menos dizer que, hmm, não sei para que isso é útil, mas a única coisa que
sei é que não importa o que aconteça, se eu der a mesma entrada, vai dar me o
mesmo resultado.
Mas não tenho ideia de como converter isso de volta em olá.
Isso é o que chamamos de independente ou independente, há diferentes pronúncias, não tenho certeza de quais,
mas é uma maneira elegante de dizer que uma função, dada uma entrada, sempre produz a
mesma saída.
Agora, o único benefício e por que gostaríamos de usar isso e uma estrutura de dados é
que obtemos acesso a dados realmente rápido, porque tudo o que tenho que fazer para encontrar Graps ou Baskett DOT Graps é passar Graps para algo como um hash
cinco vazio.
Ele gera esse número para mim e eu sei imediatamente onde ele está na minha memória em nosso computador.
Mas isso não parece um endereço, parece?
Tecnicamente, uma função hash que usamos para tabelas hash vai pegar graps, gerar algum tipo
de jargão e depois convertê-lo em uma base de índice ou endereço que ela tem com base neste número.
Veja, ao contrário de uma corrida em que acabamos de ordenar índices com tabelas de hash, tudo o que precisamos fazer é fornecer uma chave
e saberemos exatamente onde esse item está em nossa memória.
Mas você deve estar se perguntando, essa função hash de caixa preta não torna as coisas mais lentas?
Porque toda vez queremos adicionar um imóvel.
E um valor de uvas e dez mil para uma mesa de hash, temos que executá-lo por meio da função de hash para
que possamos decidir onde colocá-lo na memória.
E se você percebeu isso, bom trabalho, esse é um grande fator.
Você não quer que isso demore muito tempo porque, bem, toda vez que você adiciona uma propriedade à memória
ou recupera uma propriedade para a memória, porque, novamente, nós duas vezes estamos enviando as uvas-chave para a função hash
para descubra de onde obtê-lo.
Precisamos que isso seja muito, muito rápido.
E, por baixo do capô, lembre-se, como as tabelas de hash existem em todas as linguagens, elas são implementadas com
uma função de hash ideal que é muito, muito rápida.
Como uma nota rodapé.
Funções de hash, como o aumento de cinquenta e seis, demoram muito para gerar um hash.
E é uma função de hashing excessivamente complexa, muito usada em lugares como criptografia, onde você deseja
que isso demore mais, mas isso está fora do escopo deste curso.
Se você estiver interessado, recomendo que verifique as diferenças entre os dois.
Para revisar, temos uma chave que é graps, nós a enviamos por meio de uma função hash que vai fazer o hash
de algo muito, muito rápido e, em seguida, mapear o que quer que seja o hash em um endereço de memória onde
queremos armazenar o nosso.
Os dados são graps 10000.
E quando se trata de funções de hash, você normalmente deixa isso para qualquer
framework ou linguagem que você está usando, e geralmente assumimos um tempo, complexidade ou notação bigo de um, porque isso acontece muito
rápido.
Tudo bem.
Agora que entendemos o que essa caixa preta faz, vamos falar um pouco mais sobre tabelas hash, por que são
úteis e por que em alguns casos são melhores do que iRace.