0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

哈希競猜游戲系統(tǒng)開發(fā)Hash算法

搭建punk2558 ? 來源:搭建punk2558 ? 作者:搭建punk2558 ? 2022-06-21 13:45 ? 次閱讀

哈希表就是一種以鍵-值(key-indexed)存儲數(shù)據(jù)的結(jié)構(gòu),我們只要輸入待查找的值即key,即可查找到其對應(yīng)的值。

哈希的思路很簡單,如果所有的鍵都是整數(shù),那么就可以使用一個簡單的無序數(shù)組來實現(xiàn):將鍵作為索引,值即為其對應(yīng)的值,這樣就可以快速訪問任意鍵的值。這是對于簡單的鍵的情況,我們將其擴展到可以處理更加復(fù)雜的類型的鍵。

使用哈希查找有兩個步驟:

1.使用哈希函數(shù)將被查找的鍵轉(zhuǎn)換為數(shù)組的索引。在理想的情況下,不同的鍵會被轉(zhuǎn)換為不同的索引值,但是在有些情況下我們需要處理多個鍵被哈希到同一個索引值的情況。所以哈希查找的第二個步驟就是處理沖突

2.處理哈希碰撞沖突。有很多處理哈希碰撞沖突的方法,本文后面會介紹拉鏈法和線性探測法。

哈希表是一個在時間和空間上做出權(quán)衡的經(jīng)典例子。如果沒有內(nèi)存限制,那么可以直接將鍵作為數(shù)組的索引。那么所有的查找時間復(fù)雜度為O(1);如果沒有時間限制,那么我們可以使用無序數(shù)組并進行順序查找,這樣只需要很少的內(nèi)存。哈希表使用了適度的時間和空間來在這兩個極端之間找到了平衡。只需要調(diào)整哈希函數(shù)算法即可在時間和空間上做出取舍。

在Hash表中,記錄在表中的位置和其關(guān)鍵字之間存在著一種確定的關(guān)系。這樣我們就能預(yù)先知道所查關(guān)鍵字在表中的位置,從而直接通過下標找到記錄。使ASL趨近與0.

1)哈希(Hash)函數(shù)是一個映象,即:將關(guān)鍵字的集合映射到某個地址集合上,它的設(shè)置很靈活,只要這個地址集合的大小不超出允許范圍即可;

2)由于哈希函數(shù)是一個壓縮映象,因此,在一般情況下,很容易產(chǎn)生“沖突”現(xiàn)象,即:key1!=key2,而f(key1)=f(key2)。

3).只能盡量減少沖突而不能完全避免沖突,這是因為通常關(guān)鍵字集合比較大,其元素包括所有可能的關(guān)鍵字,而地址集合的元素僅為哈希表中的地址值

在構(gòu)造這種特殊的“查找表”時,除了需要選擇一個“好”(盡可能少產(chǎn)生沖突)的哈希函數(shù)之外;還需要找到一種“處理沖突”的方法。

一.Hash構(gòu)造函數(shù)的方法

1.直接定址法:

直接定址法是以數(shù)據(jù)元素關(guān)鍵字k本身或它的線性函數(shù)作為它的哈希地址,即:H(k)=k或H(k)=a×k+b;(其中a,b為常數(shù))

2.數(shù)字分析法:

假設(shè)關(guān)鍵字集合中的每個關(guān)鍵字都是由s位數(shù)字組成(u1,u2,…,us),分析關(guān)鍵字集中的全體,并從中提取分布均勻的若干位或它們的組合作為地址。

數(shù)字分析法是取數(shù)據(jù)元素關(guān)鍵字中某些取值較均勻的數(shù)字位作為哈希地址的方法。即當關(guān)鍵字的位數(shù)很多時,可以通過對關(guān)鍵字的各位進行分析,丟掉分布不均勻的位,作為哈希值。它只適合于所有關(guān)鍵字值已知的情況。通過分析分布情況把關(guān)鍵字取值區(qū)間轉(zhuǎn)化為一個較小的關(guān)鍵字取值區(qū)間。

3.折疊法:

將關(guān)鍵字分割成若干部分,然后取它們的疊加和為哈希地址。兩種疊加處理的方法:移位疊加:將分割后的幾部分低位對齊相加;邊界疊加:從一端沿分割界來回折疊,然后對齊相加。

所謂折疊法是將關(guān)鍵字分割成位數(shù)相同的幾部分(最后一部分的位數(shù)可以不同),然后取這幾部分的疊加和(舍去進位),這方法稱為折疊法。這種方法適用于關(guān)鍵字位數(shù)較多,而且關(guān)鍵字中每一位上數(shù)字分布大致均勻的情況。

折疊法中數(shù)位折疊又分為移位疊加和邊界疊加兩種方法,移位疊加是將分割后是每一部分的最低位對齊,然后相加;邊界疊加是從一端向另一端沿分割界來回折疊,然后對齊相加。

審核編輯:符乾江

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4277

    瀏覽量

    62323
  • 哈希算法
    +關(guān)注

    關(guān)注

    1

    文章

    56

    瀏覽量

    10729
收藏 人收藏

    評論

    相關(guān)推薦

    ChatGPT 在游戲開發(fā)中的創(chuàng)新應(yīng)用

    游戲開發(fā)領(lǐng)域,人工智能技術(shù)的應(yīng)用正變得越來越廣泛。ChatGPT,作為一種先進的自然語言處理(NLP)模型,為游戲開發(fā)帶來了許多創(chuàng)新的應(yīng)用。 1. 動態(tài)對話
    的頭像 發(fā)表于 10-25 18:05 ?527次閱讀

    智慧園區(qū)系統(tǒng)開發(fā)對智慧城市建設(shè)發(fā)展的促進

    智慧園區(qū) 系統(tǒng)開發(fā)作為數(shù)字化技術(shù)在園區(qū)管理和運營中的應(yīng)用,不僅有助于提升園區(qū)的智能化水平,還對整個智慧城市建設(shè)發(fā)展起到積極推動作用。通過引入先進的信息技術(shù)、數(shù)據(jù)分析和智能化系統(tǒng),智慧園區(qū)解決方案為
    的頭像 發(fā)表于 09-03 11:21 ?258次閱讀

    恩智浦MBDT加速汽車電機控制系統(tǒng)開發(fā)

    汽車電氣化的推進,也在推動汽車電機控制應(yīng)用的拓展。因此,找到一種更高效的方案,加速汽車電機控制系統(tǒng)開發(fā)的進程,工程師們對此總是抱有濃厚的興趣。
    的頭像 發(fā)表于 08-27 09:59 ?929次閱讀

    基于 FPGA 的飛機大戰(zhàn)游戲系統(tǒng)設(shè)計

    整體介紹系統(tǒng)硬件由 SEA 開發(fā)板(型號 xc7s25ftgb196-1)、游戲手柄拓展板和 HDMI 顯示屏組成。FPGA 讀取按鍵和搖桿的狀態(tài),來控制游戲顯示的內(nèi)容, 其中,F(xiàn)P
    發(fā)表于 07-24 20:03

    鴻蒙開發(fā):Universal Keystore Kit 密鑰管理服務(wù) HMAC ArkTS

    HMAC是密鑰相關(guān)的哈希運算消息認證碼(Hash-based Message Authentication Code),是一種基于Hash函數(shù)和密鑰進行消息認證的方法。
    的頭像 發(fā)表于 07-12 18:22 ?586次閱讀

    鴻蒙開發(fā):Universal Keystore Kit 密鑰管理服務(wù) HMAC C、C++

    HMAC是密鑰相關(guān)的哈希運算消息認證碼(Hash-based Message Authentication Code),是一種基于Hash函數(shù)和密鑰進行消息認證的方法。
    的頭像 發(fā)表于 07-12 09:36 ?281次閱讀

    STM32F439的HASH模塊DMA傳輸計算問題求解

    項目中需要使用439的的HASH模塊計算文件的MD5值,使用的DMA方式,為了提高CPU效率,讓其他任務(wù)在DMA傳輸數(shù)據(jù)、硬件計算MD5期間可以得到運行,DMA的數(shù)據(jù)來自FMC外擴的SDRAM
    發(fā)表于 04-19 06:42

    ARM嵌入式Linux 系統(tǒng)開發(fā)從入門到精通

    ARM嵌入式Linux 系統(tǒng)開發(fā)從入門到精通
    發(fā)表于 03-10 18:44

    【工作準備】OpenHarmony鴻蒙操作系統(tǒng)開發(fā)——基礎(chǔ)必備軟件

    、去問。 軟件列表如下: 一、OpenHarmony 內(nèi)核及子系統(tǒng)開發(fā)軟件列表 1. DevEco Studio 【作用】HarmonyOS 應(yīng)用集成開發(fā)環(huán)境,開發(fā)各種應(yīng)用。 【其他】HAP 應(yīng)用
    的頭像 發(fā)表于 02-23 15:51 ?1637次閱讀
    【工作準備】OpenHarmony鴻蒙操作<b class='flag-5'>系統(tǒng)開發(fā)</b>——基礎(chǔ)必備軟件

    珠海盈致科技在MES系統(tǒng)開發(fā)方面有哪些優(yōu)勢?

    珠海盈致科技在MES系統(tǒng)開發(fā)方面具有豐富的經(jīng)驗和技術(shù)實力。他們自主研發(fā)的SiMDA-MOM智能制造運營管理體系,是一套全面的制造執(zhí)行管理系統(tǒng),涵蓋了SiMDA-SCADA數(shù)據(jù)采集系統(tǒng)
    的頭像 發(fā)表于 01-22 16:29 ?524次閱讀

    康謀方案 | 加速自動駕駛系統(tǒng)開發(fā)的技術(shù)解決方案

    ADTF(AUTOMOTIVE DATA & TIME-TRIGGERED FRAMEWORK)是一款專為自動駕駛系統(tǒng)開發(fā)人員設(shè)計的軟件,提供多種功能和工具,加速系統(tǒng)開發(fā)和測試
    的頭像 發(fā)表于 01-19 15:57 ?366次閱讀
    康謀方案 | 加速自動駕駛<b class='flag-5'>系統(tǒng)開發(fā)</b>的技術(shù)解決方案

    ALVA中標智能工廠AR遠程協(xié)助系統(tǒng)開發(fā)項目

    近日,ALVA Systems 中標上海中臣煙草數(shù)控技術(shù)有限公司(上海煙草機械有限責任公司下屬企業(yè))智能工廠 AR 遠程協(xié)助系統(tǒng)開發(fā)項目。
    的頭像 發(fā)表于 01-12 11:35 ?749次閱讀

    QE for AFE嵌入式系統(tǒng)開發(fā)的評估工具說明

    電子發(fā)燒友網(wǎng)站提供《QE for AFE嵌入式系統(tǒng)開發(fā)的評估工具說明.pdf》資料免費下載
    發(fā)表于 12-21 10:27 ?0次下載
    QE for AFE嵌入式<b class='flag-5'>系統(tǒng)開發(fā)</b>的評估工具說明

    redis hash底層實現(xiàn)原理

    Redis是一個開源的內(nèi)存數(shù)據(jù)庫,使用鍵值對存儲數(shù)據(jù)。其中,Redis中的數(shù)據(jù)結(jié)構(gòu)之一就是哈希Hash),它提供了一種將多個字段(Field)存儲在一個鍵(Key)中的方法。那么Redis的哈希
    的頭像 發(fā)表于 12-04 16:27 ?544次閱讀

    基于模型的設(shè)計嵌入式電機控制系統(tǒng)開發(fā)

    電子發(fā)燒友網(wǎng)站提供《基于模型的設(shè)計嵌入式電機控制系統(tǒng)開發(fā).pdf》資料免費下載
    發(fā)表于 11-23 09:26 ?0次下載
    基于模型的設(shè)計嵌入式電機控制<b class='flag-5'>系統(tǒng)開發(fā)</b>