Започнах да научавам за хеширането от CLRS (Cormen et al.). Успях да разбера математическата процедура и как следва компютърната реализация. Книгата просто посочва математическата процедура като-
-> multiply the key k with a constant A (0<A<1), results into kA;
-> extract the fractional part of kA by doing (kA mod 1);
-> multiply the result with m (usually taken to be a power of 2 for easy
implementation on computers);
-> take the floor of this result and that is the hashed value;
-> therefore, this is the hashing function, h(k) = floor[m*(kA mod 1)]
книгата по-нататък посочва как ще бъде приложен на повечето компютри, предимствата му пред метода на разделяне и предложението на Кнут за стойността на „А“.
Това, което не мога да разбера, е ЗАЩО следваме тази процедура на конкретно умножаване на ключа с число (A) в диапазона от 0 до 1 и след това вземане на дробната част, последвано от умножение по m и след това вземане на думата?
Това създава ли хеширани стойности, които „наподобяват много“ SUHA (предположение за просто равномерно хеширане), т.е. в идеалния случай всеки ключ трябва независимо да хешира към всеки от m слота, така че този метод дава ли резултати, „по-близки“ до този идеал?