总是插入哈希表序列

时间:2016-06-26 12:46:43

标签: algorithm hashtable

我遇到了与哈希表有关的问题。

让我们在开放的线性模式中考虑维度2^n的哈希表。

  1. h(k,i) = (k^n + 2*i)mod(2^n)。显示序列 始终可以将{1,2,...2^n}插入哈希表中。
  2. 我试图找出数字插入表格的方式,然后应用归纳法来判断我是否可以证明这个问题。我们老师给我们的任何问题似乎都是这样的,我可以找出一种解决这类问题的方法。

2 个答案:

答案 0 :(得分:1)

这里有很多术语问题。

  1. 你的哈希表没有dimensions(实际上它有,但它是一个维度,而不是2 ^ n),但它有多个插槽/桶。
  2. 你问的问题很可能不是你的书/老师想要你解决的问题。你告诉:
  3.   

    显示序列{1,2,... 2 ^ n}始终可以插入到   哈希表

    问题是在你的情况下,任何自然数都可以插入哈希表中。这很明显,因为你的哈希函数将任何数字映射到[0到2 ^ n]区域内的自然数,并且因为你的哈希函数有2 ^ n个槽,所以任何数字都适合你的哈希值。

    明确说明你的老师想要什么,解释一下你的哈希函数中的k和我是什么,然后再问另一个更准备好的问题。

答案 1 :(得分:1)

  

self.addEventListener('fetch', function(event) { event.respondWith( caches.match(event.request).then(function(response){ if(response){ return response; // get the element from the cache } /*save the fetch(event.request) link to array*/ return fetch(event.request);// How toget the element from the network }) ); }); 。显示序列h(k,i) = (k^n + 2*i)mod(2^n)始终可以插入哈希表中。

关于散列函数的两个观察结果:

    {li>

    {1,2,...2^n},对于k^nn >= 1为奇数,即使k为偶数

    ,也会很奇怪
  • k将探测每一秒(从最后到第一个包裹)

因此,当您散列2*i时,我们知道您会在找到未使用的奇数索引存储桶和偶数索引存储桶之间进行交替。

为了强调这一点,{1,2,...2^n}位将奇数键限制为奇数索引存储桶,将偶数键限制为偶数索引存储桶,而k^n确保所有此类存储桶都被考虑直到空闲找到了。如果2*i没有h(k,i)无法找到未使用的存储桶,i会增加,那么正好有一半的密钥是奇数的,有一半甚至可以使表变满。