运行时分析的概率?

时间:2016-03-20 01:45:50

标签: algorithm hash

这是一个家庭作业问题,我对它的正确方法感到非常困惑。

存在 m个插槽的哈希表。我们假设简单统一哈希假设(SUHA)。

我们执行n个插入操作,但所有n个元素都映射到插槽0.(这可能不太可能,但可能)。

现在问题是要求搜索随机密钥' x'其哈希值可能存在于表中,也可能不存在。 搜索完成后运行时的上限是什么?

这是我的方法:

由于我们假设SUHA,哈希到一个槽的密钥的概率是1 / m。如果密钥确实哈希到槽0,那么搜索需要O(n)时间,否则需要O(m-1)时间。通过这个逻辑,解是[1 / m] * O(n)+ [(m-1)/ m] * O(m-1),简化为O(n / m + [(m-1)) ^ 2] / M)。

1。可以通过这种方式将概率乘以渐近运行时间吗?

2。甚至可能在确定运行时方面起作用吗?

2 个答案:

答案 0 :(得分:1)

我相信你正在考虑这个错误。概率不应该被考虑在内。由于问题是要求上限,将该问题翻译成最糟糕的情况是什么?

最糟糕的情况是,如果x像前面的每个哈希值一样哈希到0。现在想象x是最后一个哈希的元素。您必须遍历可能的位置,直到找到您要查找的元素,具体取决于冲突解决方案。这将使它成为O(n),因为它取决于问题中所示的n个先前哈希的数量。

最好的情况就是说,如果x没有哈希到0。由于计算哈希是O(1),一旦你哈希到一个密钥,它是否存在,另一个O( 1)整体操作,O(1)操作。

答案 1 :(得分:1)

上限意味着最坏的情况。

当您将概率设为'1 / m'时,您正在计算平均情况。

您现在可以尝试这个问题,而不是在下面,因为我将编写解决方案:

最糟糕的情况是:

  • 密钥将散列到所有插入内容所在的同一个插槽中。

在这种情况下,您将必须遍历该插槽的所有元素,从而导致O(n)的运行时间。