Gostaria de saber se existe uma função de números de n bits para números de n bits que possui as seguintes características:
- deve ser bijetivo
- Ambos e deve ser calculável rápido bastantef - 1
- deve retornar um número que não tem correlação significativa com sua entrada.
A lógica é esta:
Eu quero escrever um programa que opera com dados. Algumas informações dos dados são armazenadas em uma árvore de pesquisa binária em que a chave de pesquisa é um símbolo de um alfabeto. Com o tempo, adiciono mais símbolos ao alfabeto. Novos símbolos simplesmente obtêm o próximo número gratuito disponível. Portanto, a árvore sempre terá um pequeno viés para chaves menores, o que causa mais reequilíbrio do que eu acho que deveria ser necessário.
Minha idéia é alterar os números dos símbolos com modo que eles estejam amplamente espalhados por todo o intervalo de . Como os números dos símbolos são importantes apenas durante a entrada e a saída, o que ocorre apenas uma vez, a aplicação dessa função não deve ser muito cara.
Pensei em uma iteração do gerador de números aleatórios Xorshift, mas realmente não sei como desfazê-lo, embora teoricamente seja possível.
Alguém conhece essa função?
isso é uma boa ideia?