【问题标题】:Average cost of successful search in hash table in chaining链接中在哈希表中成功搜索的平均成本
【发布时间】:2015-06-10 02:34:10
【问题描述】:

我已经搜索了每个地方,但我不明白为什么它是 O(1+a/2) 其中 a 是负载因子。谁能一步一步解释一下。

【问题讨论】:

    标签: performance algorithm hashmap chaining asymptotic-complexity


    【解决方案1】:

    让哈希表中的元素数为n
    这意味着哈希表中有n/a 的单元格(/行)总数,每个单元格都包含一个元素列表。这是负载因子的定义。

    因此,与每个此类单元格相关联的预期元素数量为n/(n/a) = a
    未排序列表中的线性搜索需要遍历一半的元素,直到平均找到正确的元素(我们假设它是一次成功的搜索),因此它需要遍历a/2 元素。

    1 因素来自访问哈希表本身中的正确列表。

    【讨论】:

    • 未排序列表中的线性搜索需要遍历一半的元素。这是我不明白的。为什么呢?可能需要的元素在列表的末尾,为什么我们只需要遍历一半?
    • 平均而言:有时是第一个,有时是最后一个,平均是元素数量的一半。
    • @user4129542 我省略了“平均”这个词,这在这里很重要。直观地说,它有 50% 的机会成为最后的元素,50% 的机会成为最初的元素。 (更彻底的证明可以在证明中找到expected value of uniform distribution 0,...,U 是 U/2
    猜你喜欢
    • 2014-11-10
    • 2015-06-07
    • 2023-03-30
    • 2013-06-01
    • 1970-01-01
    • 2014-04-07
    • 2014-05-26
    • 2013-09-26
    • 2013-04-27
    相关资源
    最近更新 更多