【问题标题】:Quadratic probing over Linear probing二次探测优于线性探测
【发布时间】:2013-06-27 11:48:32
【问题描述】:

对于给定的哈希值,线性探测产生的索引如下:

hh+1h+2h+3等。

对于给定的哈希值,二次探测产生的索引如下:

hh+1h+4h+9等。

在线性的情况下会形成簇,但在二次的情况下不会。

但是当两个过程(方法)都需要采取相同数量的插入或搜索步骤时,为什么二次比线性更有效。谢谢!

【问题讨论】:

    标签: data-structures hashtable probing quadratic-probing linear-probing


    【解决方案1】:

    效率取决于线性探测和二次探测形成的kinds of clustering

    线性探测形成Primary Clustering,一旦形成,集群越大,增长越快。这会严重降低性能。罗伯特·拉福尔举了一个很好的例子:就像有人在购物中心晕倒时聚集的人群。第一批来是因为他们看到受害者摔倒了;后来到达的人聚集在一起,因为他们想知道其他人在看什么。人数越多,人数越多 人们被它所吸引。

    二次探测形成二次聚类。这是一种阻止集群形成的尝试。这个想法是探测更广泛分离的单元,而不是那些与主哈希站点相邻的单元。按照类比,它试图阻止先到者以避免形成人群。与主要聚类相比,次要聚类更微妙,并且在性能方面没有那么严重。

    【讨论】:

      【解决方案2】:

      当您点击一个空槽时,您将停止搜索表,因为您知道如果您点击一个空槽,那么您要查找的值将不在哈希表中。由于减少了聚类,您将更有可能遇到空槽并停止搜索。此外,由于减少了聚类,您在插入时更有可能找到空槽,从而能够更快地搜索到该值。

      【讨论】:

        【解决方案3】:

        因为集群形成较少。这些值将更加分散,因此在二次情况下所需的平均探针数将更少。

        【讨论】:

        • 如果插入相同数量的具有相同哈希值(哈希函数返回的值)的数据项,那么两种情况下探测的数量不相等。
        • 请多解释
        • @hoder 你不明白“平均探测次数会减少”的哪一部分?
        • @EJP:怎么会少?查找元素时不会进行线性探测。您将进行二次探测,与插入密钥时所做的相同。我知道这将导致更少的集群形成。但你提出的论点并不成立。
        • @NeoMHacker 但是 user2902179 提出的相同论点有效吗?
        猜你喜欢
        • 2011-01-21
        • 2016-05-14
        • 2018-07-03
        • 2017-03-07
        • 2013-03-25
        • 2015-08-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多