Может кто-нибудь с лучшим пониманием методов хеширования, пожалуйста, объясните мне: что делает функцию ниже инъективной хеш-функции?
Эта функция предположительно создает уникальный ключ хеша для дерева поиска, которое:
- содержит только значения от 1 до 99 и
- содержит все возможные значения не более одного раза
Действительно ли необходимо выбрать 100 в качестве множителя (я предполагаю, что 100 не находится в диапазоне возможных значений дерева)?
Разве простое число, такое как, например, 31, также не может надежно дать ожидаемый результат?
int injectiveHashFunc(Tree b){
int[] po = postorder-tree-walk(b);
int key = 0;
for(k = 0; k < po.length; k++) {
key = key * 100 + po[k];
}
return key;
}