哈希競猜游戲系統(tǒng)搭建原理
概念
哈希表是一個鍵值存儲數(shù)據(jù)的結(jié)構(gòu)。我們可以通過輸入要查找的值來查找相應(yīng)的值,即key
哈希的思想非常簡單。如果所有鍵都是整數(shù),則可以使用一個直觀的無序數(shù)組來實現(xiàn)它:將鍵作為索引,值是其對應(yīng)的值。通過這種方式,您可以快速訪問任何鍵的值。直觀按鍵的情況就是這樣,我們將其擴展以處理更復(fù)雜類型的鍵

使用哈希查找有兩個步驟:
1使用哈希函數(shù)將找到的鍵轉(zhuǎn)換為數(shù)組的索引。完美情況之下,有所不同的鍵將被轉(zhuǎn)換為有所不同的索引值,但在某些情況之下,我們需要處理多個鍵被散列為相同索引值的情況。因此,哈希查找的第二步是處理沖突
2處理哈希沖突。有許多方法可以處理哈希沖突。
哈希表是時間和空間間權(quán)衡的經(jīng)典示例。如果沒有內(nèi)存限制,可以直接使用鍵作為數(shù)組的索引。那么所有的搜索時間復(fù)雜度都是o,如果沒有時間限制,我們可以使用無序數(shù)組并執(zhí)行順序查找,這需要很少的內(nèi)存。哈希表使用適當?shù)臅r間和空間在這兩個極端間找到均衡。只要調(diào)整哈希函數(shù)算法,在時間和空間之上做出選擇即可。

在哈希表之中,記錄在表中的位置與其關(guān)鍵性字間存在一定的關(guān)系。這樣,我們可以提前知道關(guān)鍵性字在表中的位置,然后通過下標間接找到記錄。使ASL接近0。
1哈希函數(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ù)之外;還需要找到一種“處理沖突”的方法
之中的地址值;盡量減少沖突;在的哈希函數(shù)以外;您還需要找到“處理沖突”的方法

哈希算法種類很多,但是它們都具有如下四大性質(zhì):
哈希算法性質(zhì)一:等長性
不管輸入的數(shù)據(jù)是長是短,算法得出的哈希值都具有相同的長度。哈希值往往很短,通常只有一兩百個字節(jié),占用的存儲空間很小。
哈希算法性質(zhì)二:單向性
由數(shù)據(jù)得出哈希值非常容易,但是從哈希值推導(dǎo)出原始數(shù)據(jù)是不可能的,即使在知道哈希算法細節(jié)的情況下也不可能。這一特性對于確保區(qū)塊鏈的安全性至關(guān)重要。
哈希算法性質(zhì)三:無序性
就算原始數(shù)據(jù)僅僅改變一個字節(jié),它的哈希值也會變得面目全非,完全沒規(guī)律。當然,現(xiàn)實中的哈希值不會是任何有含義的文字,往往是一串隨機字符。
哈希算法性質(zhì)四:一一對應(yīng)性
同一個原始數(shù)據(jù)用同樣的哈希算法,永遠得到同樣的哈希值,一個哈希值只能有唯一的數(shù)據(jù)值與其相對應(yīng)。
掃描二維碼推送至手機訪問。
版權(quán)聲明:本文由財神資訊-領(lǐng)先的體育資訊互動媒體轉(zhuǎn)載發(fā)布,如需刪除請聯(lián)系。