根据CLRS第267页,定义了一类统一散列函数,但我想知道在散列一组键时如何应用这些函数。
我们每次想要计算哈希值时是否随机选择一个函数,或者我们随机选择一个函数并用它来计算该组中键的每个哈希值?
如果你每次想要散列一个键时随机选择一个散列函数,那么你最终会弄得一团糟,因为不同的散列函数会为同一个键创建不同的散列值。也就是说,如果你的密钥是“foobar”,那么散列函数A会为它计算一个与散列函数B不同的值。这没有用。
因此,您选择散列函数并将其应用于该组中的每个键。通常,您将对系统中的所有键使用相同的哈希函数。通常,在程序中使用多个散列函数没有特别的优势。 (是的,我知道有特殊情况。)