2012-01-27 22 views
4

以我目前的理解通用散列是其中的哈希函数是随机选择在运行时,为了保证合理的性能对于任何一种输入的方法。基础在通用散列,如何确保无障碍

我明白,我们可能为了防止有人故意选择恶意输入操作(确定性哈希函数的可能性知道)做到这一点。

我的问题是这样的:它是不是真的,我们仍然需要保证的关键将每次我们哈希它的时候被映射到相同的地址?例如,如果我们想要检索信息,但散列函数是随机选择的,那么我们如何保证我们能够回到我们的数据呢?

回答

5

通用散列函数是具有以高概率,从宇宙2随机选择的元素将不会碰撞没有被选择哪个哈希函数物质的属性不同的散列函数族。通常,这是通过让实现从一个哈希函数族中随机选择一个哈希函数来实现的。一旦选择了这个散列函数,散列表就像往常一样工作 - 你使用这个散列函数来计算一个对象的散列码,然后把这个对象放到合适的位置。散列表必须记住它所做的散列函数的选择,并且必须在整个程序中一致地使用它,因为否则(正如您所指出的那样)它会忘记它映射每个元素的位置。

希望这会有所帮助!