我目前正在讨论散列和哈希表,我想知道为什么像下面这样的东西被认为是糟糕的哈希函数(伪代码):
function hash(String_t word, Int table_size)
i = randomly generated number with 0<i<table_size
j = ASCII code of the first letter of word
return i * j % table_size假设在函数调用期间可以存储i的值以实现一致性(例如,使用C中的static关键字将i值存储在函数范围内),为什么这是一个糟糕的哈希函数?
发布于 2016-05-11 11:19:02
一个好的哈希函数应该能很好地工作在不同的输入大小上,条件是表的大小是输入数的常数倍。这不符合这一标准,原因有几点:
人们通常会试图想出一些哈希函数,这些函数一般都能很好地工作,而且你可以证明它们的一些优点。这里有一个非常具体的例子,对我来说最明显的是否定的情况,所以非常怀疑你是否能证明这个构造的任何积极的方面。
https://stackoverflow.com/questions/37160881
复制相似问题