d-Left Hashing

來源:互聯網
上載者:User
 

下面介紹簡單介紹一下d-left hashing。d-left hashing中的d是多個的意思,我們先簡化這個問題,看一看2-left hashing。2-left hashing指的是將一個雜湊表分成長度相等的兩半,分別叫做T1和T2,給T1和T2分別配備一個雜湊函數,h1和h2。在儲存一個新的key時,同時用兩個雜湊函數進行計算,得出兩個地址h1[key]和h2[key]。這時需要檢查T1中的h1[key]位置和T2中的h2[key]位置,哪一個位置已經儲存的(有碰撞的)key比較多,然後將新key儲存在負載少的位置。如果兩邊一樣多,比如兩個位置都為空白或者都儲存了一個key,就把新key儲存在左邊的T1子表中,2-left也由此而來。在尋找一個key時,必須進行兩次hash,同時尋找兩個位置。

 

上面的介紹中有一點要注意,就是在作位置選擇時,考慮的是兩個雜湊函數映射的位置中已經儲存的key(包括碰撞的情況)的個數,而不是兩個子表中已有key的個數。

 

瞭解了2-left hashing,d-left hashing就很好理解,它只是對前者的擴充。2-left hashing固定了子表的個數是2,d-left hashing更加靈活,子表的個數是一個變數d,同時也意味著雜湊函數的個數是d。在d-left hashing中,整個雜湊表被分成d個從左至右依次相鄰的子表,每個子表對應一個相互獨立的雜湊函數。在加入新key時,這個key被d個雜湊函數同時計算,產生d個相互獨立的位置,然後將key加入到負載最輕的位置(bucket)中。如果負載最輕的位置有多個,就把key加入到最左邊的負載最輕的子表中。同樣地,如果要尋找一個key,需要同時尋找d個位置。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.