这种可扩展的散列解决方案有什么问题?

时间:2014-08-22 10:55:06

标签: database hash indexing hashtable

我试图掌握可扩展散列的概念,但我对于将值分配给存储桶感到困惑。

例如:

说我想从头开始插入6个值:17,32,14,50,35,21

作为解决方案,这会出现什么问题:

全球深度= 2
铲斗尺寸= 2

00[] --> [][]
01[] --> [][]
10[] --> [][]
11[] --> [][]

这是否意味着每个哈希值只有一个值将指向存储桶,那么您是否增加了全局深度?或者这会有用吗?

我理解这个过程的开始,我只是在这一点上感到困惑。

2 个答案:

答案 0 :(得分:3)

您提供的解决方案没有任何错误,只是不需要增加全局深度。该解决方案与给定的全局深度完全兼容。

假设我们使用最左边的2位选择目录和相应的存储桶。然后,解决方案将如下所示 二进制格式的数字也如下所示

17 - 01 0001
32 - 10 0000
14 - 00 1110
50 - 11 0010
35 - 10 0011
21 - 01 0101

目录-------------水桶
00 -----------------------> 14 |
01 -----------------------> 17 | 21个
10 -----------------------> 32 | 35个
11 -----------------------> 50 |

希望这有帮助。

答案 1 :(得分:0)

你不应该增加全局深度。 哈希的整个想法是选择这样的功能,它将项目或多或少地放在桶中。

这取决于哈希函数。 您可以使用像md5这样复杂的东西作为哈希,而不是在1个桶中获得1个元素,但是你实际上保证只有1个。

因此,一般实现应该在存储桶上使用二进制搜索,在存储桶中使用其他一些搜索。你不能,你不应该动态改变哈希函数。