解決雜湊衝突的四種辦法

2021-10-07 19:40:02 字數 837 閱讀 5221

雜湊是通過對資料進行再壓縮,提高效率的一種解決方法。但由於通過雜湊函式產生的雜湊值是有限的,而資料可能比較多,導致經過雜湊函式處理後仍然有不同的資料對應相同的雜湊值。這時候就產生了雜湊衝突。

裝填因子(裝填因子=資料總數 / 雜湊表長)、雜湊函式、處理衝突的方法

解決雜湊衝突的四種方法

(1)線性探測

按順序決定雜湊值時,如果某資料的雜湊值已經存在,則在原來雜湊值的基礎上往後加乙個單位,直至不發生雜湊衝突。

(2)再平方探測

按順序決定雜湊值時,如果某資料的雜湊值已經存在,則在原來雜湊值的基礎上先加1的平方個單位,若仍然存在則減1的平方個單位。隨之是2的平方,3的平方等等。直至不發生雜湊衝突。

(3)偽隨機探測

按順序決定雜湊值時,如果某資料已經存在,通過隨機函式隨機生成乙個數,在原來雜湊值的基礎上加上隨機數,直至不發生雜湊衝突。

對於相同的雜湊值,使用鍊錶進行連線。使用陣列儲存每乙個鍊錶。

優點:(1)拉鍊法處理衝突簡單,且無堆積現象,即非同義詞決不會發生衝突,因此平均查詢長度較短;

(2)由於拉鍊法中各煉表上的結點空間是動態申請的,故它更適合於造表前無法確定表長的情況;

(3)開放定址法為減少衝突,要求裝填因子α較小,故當結點規模較大時會浪費很多空間。而拉鍊法中可取α≥1,且結點較大時,拉鍊法中增加的指標域可忽略不計,因此節省空間;

(4)在用拉鍊法構造的雜湊表中,刪除結點的操作易於實現。只要簡單地刪去鍊錶上相應的結點即可。

缺點:指標占用較大空間時,會造成空間浪費,若空間用於增大雜湊表規模進而提高開放位址法的效率。

建立公共溢位區儲存所有雜湊衝突的資料。

對於衝突的雜湊值再次進行雜湊處理,直至沒有雜湊衝突。

解決hash衝突的四種辦法

目錄 開放定址法 線性探測再雜湊 二次探測再雜湊 偽隨機探測再雜湊 再雜湊法 鏈位址法 建立公共溢位區 優缺點 開放雜湊 open hashing 拉鍊法 針對桶鏈結構 封閉雜湊 closed hashing 開放定址法 通過構造效能良好的雜湊函式,可以減少衝突,但一般不可能完全避免衝突,因此解決衝...

雜湊衝突及四種解決方法

通過雜湊函式產生的雜湊值是有限的,而資料可能比較多,導致經過雜湊函式處理後仍然有不同的資料對應相同的值。這時候就產生了雜湊衝突。就是根據key即經過乙個函式f key 得到的結果的作為位址去存放當前的key value鍵值對 這個是hashmap的存值方式 但是卻發現算出來的位址上已經有人先來了。就...

雜湊衝突及四種解決方法

雜湊是通過對資料進行再壓縮,提高效率的一種解決方法。但由於通過雜湊函式產生的雜湊值是有限的,而資料可能比較多,導致經過雜湊函式處理後仍然有不同的資料對應相同的值。這時候就產生了雜湊衝突。裝填因子 裝填因子 資料總數 雜湊表長 雜湊函式 處理衝突的方法 1.開放位址方法 1 線性探測 按順序決定值時,...