亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        哈希表沖突處理方法淺析

        2014-08-15 00:54:11葉軍偉
        科技視界 2014年6期
        關(guān)鍵詞:發(fā)生沖突單鏈存儲空間

        葉軍偉

        (麗江師范高等專科學(xué)校,云南 麗江 674100)

        0 引言

        在哈希表中,哈希函數(shù)的設(shè)置是非常靈活的,只要能使任一關(guān)鍵字由此所得的哈希地址都分布在哈希表允許的范圍內(nèi)就可以了。因此常常會出現(xiàn)不同的關(guān)鍵字值對應(yīng)到同一個存儲地址的現(xiàn)象,這就叫沖突。即關(guān)鍵字key1≠key2,但H(key1)=H(key2)。

        適當(dāng)?shù)倪x擇分布均勻的哈希函數(shù)能有效地減少沖突的發(fā)生,但是不能不免沖突。發(fā)生沖突后,必須解決,也即必須尋找下一個可用的地址。因此哈希表的建立通常為如下步驟:第一步,取出一個數(shù)據(jù)元素的關(guān)鍵字key,根據(jù)哈希函數(shù)計算其在哈希表中的存儲地址D,若地址為D 的存儲空間還沒有被占用,則將該數(shù)據(jù)元素存入,否則發(fā)生沖突,執(zhí)行下一步;第二步,根據(jù)規(guī)定的沖突處理方法,計算關(guān)鍵字為key 的數(shù)據(jù)元素的下一個存儲地址,若該地址的存儲空間沒有被占用,則存入,否則繼續(xù)執(zhí)行第二步,直到找出一個空閑的存儲空間為止。由此可見,如何處理沖突是哈希表不可缺少的部分。

        1 開放定址法

        這是應(yīng)用最為廣泛的一種沖突處理方法。其公式描述為:Hi=(H(key)+di) MOD L i=1,2,…,k(k<=L-1)

        其中:H(key)為哈希函數(shù),L 為哈希表的表長,di為增量序列。

        根據(jù)增量序列取值方法的有三種:(1)線性探測再散列di=1,2,3,…,m-1;(2)二次探測再散列di=12,-12,22,-22,32,...,k2,(k<=L/2);(3)偽隨機探測再散列di=偽隨機數(shù)序列。

        用線性探測再散列處理沖突可以保證做到,只要哈希表未滿,總能找到不發(fā)生沖突的地址,但是容易發(fā)生二次聚集的情況,即在處理同義詞的沖突過程中又添加了非同義詞的沖突,效率不高。比如當(dāng)哈希表中k,k+1,k+2 位置上已存放有數(shù)據(jù)時,下一個哈希地址為k,k+1,k+2 和k+3 的數(shù)據(jù)都將填入k+3 的位置,這樣原本不沖突的哈希地址在經(jīng)過沖突處理后,反而發(fā)生沖突,這種現(xiàn)象對查找不利。

        二次探測再散列能夠減少二次聚集的情況,提高效率,但是只能在哈希表的長度為4n+3(n 為整數(shù))的素數(shù)時才能使用。隨機探測再散列,則取決于偽隨機數(shù)序列。

        2 再哈希法

        Hi=RHi(key) i=1,2,...,k

        RHi均是不同的哈希函數(shù),在同義詞發(fā)生地址沖突時用另一個哈希函數(shù)產(chǎn)生新的地址,直到不再發(fā)生沖突為止。再哈希法不易產(chǎn)生二次聚集,但是增加了計算的時間和哈希函數(shù)的數(shù)量,而且不能保證在哈希表未滿時,總能找到不發(fā)生沖突的地址。

        除了對同一關(guān)鍵字用不同的哈希函數(shù)進行再哈希外,還可以用同一哈希函數(shù)對次要關(guān)鍵字進行計算得到新的哈希地址。即:Hi=RH(keyi) i=1,2,...,k。

        比如對中文詞典的進行哈希查找,關(guān)鍵字為一個四字成語,可以把成語的第一個字當(dāng)做關(guān)鍵字key1,計算出哈希地址,若發(fā)生沖突,則把第二個字當(dāng)做key2,計算新的哈希地址,以次類推,還可以計算key3和key4。

        3 鏈地址法

        將所有關(guān)鍵字為同義詞的記錄存儲在同一個線性鏈表中??梢栽诠:瘮?shù)產(chǎn)生的哈希地址區(qū)間上設(shè)計一個指針數(shù)組,其每個元素的初始狀態(tài)都是空指針,作為一個單鏈表的頭指針。凡是哈希地址為i 的記錄都插入到第i 個單鏈表中。在單鏈表中的插入位置可以在表頭或表尾,也可以按一定的順序插入到單鏈表的中間,以保持同義詞在同一線性鏈表中按關(guān)鍵字有序。采用鏈地址法能用有限的哈希地址存放任意多的記錄,但是增加了單鏈表的查找操作。

        4 建立一個公共溢出區(qū)

        建立一個基本表,基本表的大小等于哈希地址的個數(shù),另外再建立一個溢出表。所有哈希地址的第一個記錄存放在基本表中,其他關(guān)鍵字和基本表中關(guān)鍵字為同義詞的記錄,不管它們由哈希函數(shù)得到的哈希地址是什么,一旦發(fā)生沖突,都存放在溢出表中。

        建立基本表需要事先能夠知道哈希地址可能的個數(shù),而溢出表中的數(shù)據(jù)則不能太多,不然難以高效地查找溢出表。也就是說,所有需要存放的記錄的關(guān)鍵字,不能有太多的沖突。

        5 結(jié)束語

        在哈希表上進行查找的過程和哈希造表的過程基本一致。對于給定關(guān)鍵字,根據(jù)造表時設(shè)定的哈希函數(shù)求得哈希地址,若表中此位置上沒有記錄,則說明該哈希表中無此數(shù)據(jù),查找結(jié)束。若有記錄,就比較關(guān)鍵字,若相等,則查找成功;若不相等,則根據(jù)造表時設(shè)定的沖突處理方法查找下一個地址。因此要提高查找的效率,就要盡量減少發(fā)生沖突的情況。

        由于哈希表查找的復(fù)雜度只與哈希表的裝填充因子有關(guān),隨著硬件技術(shù)的不斷發(fā)展,內(nèi)存容量不斷提高,可以通過簡單的降低哈希表填充因子,增大哈希表的長度來降低系統(tǒng)復(fù)雜度,減少沖突發(fā)生的概率。

        [1]張科.多次Hash 快速分詞算法[J].計算機工程與設(shè)計,2007(4).

        [2]嚴蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)(C 語言版)[M].北京:清華大學(xué)出版社,2007.

        [3]李志敏,鄭世慧,楊義先.可用于哈希函數(shù)的安全迭代結(jié)構(gòu)[J].北京郵電大學(xué)學(xué)報,2008(12).

        猜你喜歡
        發(fā)生沖突單鏈存儲空間
        基于多種群協(xié)同進化算法的數(shù)據(jù)并行聚類算法
        蘋果訂閱捆綁服務(wù)Apple One正式上線
        綜藝報(2020年21期)2020-11-30 08:36:49
        逐步添加法制備單鏈環(huán)狀DNA的影響因素探究*
        用好Windows 10保留的存儲空間
        鹽酸克倫特羅生物素化單鏈抗體在大腸埃希氏菌中的表達
        標(biāo)簽
        特別文摘(2016年13期)2016-08-23 18:11:01
        急性淋巴細胞白血病單鏈抗體(scFv)的篩選與鑒定
        DNA處理蛋白A在細菌自然轉(zhuǎn)化中的作用
        巴以在圣殿山發(fā)生沖突
        亚洲一卡2卡3卡4卡5卡精品| 国产剧情无码中文字幕在线观看不卡视频| 久久中文字幕日韩无码视频| 99精品国产自产在线观看| 日韩精品人妻少妇一区二区| 69久久精品亚洲一区二区| 国产极品大秀在线性色| 亚洲av午夜精品无码专区| 国产精品扒开腿做爽爽爽视频 | 人妻少妇精品无码专区动漫| 五月婷婷俺也去开心| 欧美精品一区二区精品久久| 中文字幕视频一区二区| 国产精品久色婷婷不卡| 精品亚洲成a人无码成a在线观看| 亚洲肥老太bbw中国熟女| 91爱爱视频| 综合久久加勒比天然素人| 美女视频黄是免费| 亚洲欧美乱日韩乱国产| 中国凸偷窥xxxx自由视频| 国产精品每日更新在线观看| 免费人成黄页在线观看国产| 少妇免费av一区二区三区久久| 国产av天堂亚洲国产av天堂| 国产男小鲜肉同志免费| 国产一区二区三区影院| 日韩亚洲国产av自拍| 日韩有码中文字幕在线视频 | 全部亚洲国产一区二区| 精品人妻少妇嫩草av无码专区| 大肉大捧一进一出好爽视色大师| 久久99国产亚洲高清观看韩国| 久久这里有精品国产电影网| 亚洲精品99久91在线| 亚洲视频免费在线观看| 深夜爽爽动态图无遮无挡| 亚洲av无码男人的天堂在线| 欧美日本道免费二区三区| 蜜桃传媒免费观看视频| 亚洲av一二三四区四色婷婷|