




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2023/9/22福州大學(xué)數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院1第9章符號(hào)表9.1實(shí)現(xiàn)符號(hào)表的簡(jiǎn)單方法
9.2用散列表實(shí)現(xiàn)符號(hào)表
9.3符號(hào)表的應(yīng)用吳英杰2023/9/22福州大學(xué)數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院2第9章符號(hào)表
學(xué)習(xí)要點(diǎn):
理解抽象數(shù)據(jù)類型符號(hào)表的概念。
掌握數(shù)組實(shí)現(xiàn)符號(hào)表的方法。
理解開(kāi)散列和閉散列的概念。
掌握用開(kāi)散列表實(shí)現(xiàn)符號(hào)表的方法。
掌握除余法、數(shù)乘法、平方取中法、基數(shù)轉(zhuǎn)換法和隨機(jī)數(shù)法等散列函數(shù)構(gòu)造方法。
掌握采用線性重新散列技術(shù)的閉散列表實(shí)現(xiàn)符號(hào)表的方法。返回章目錄2023/9/22福州大學(xué)數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院39.1
實(shí)現(xiàn)符號(hào)表的簡(jiǎn)單方法9.1.0引言ADT符號(hào)表的概念以集合為基礎(chǔ),并支持Member、Insert和Delete三種運(yùn)算的抽象數(shù)據(jù)類型叫做符號(hào)表。ADT符號(hào)表的應(yīng)用公司的客戶符號(hào)表一個(gè)地區(qū)的固定/移動(dòng)電話號(hào)碼符號(hào)表軟件開(kāi)發(fā)中的數(shù)據(jù)符號(hào)表網(wǎng)上的在線符號(hào)表互聯(lián)網(wǎng)/企業(yè)網(wǎng)/局域網(wǎng)網(wǎng)管中的IP地址符號(hào)表等等
2023/9/22福州大學(xué)數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院49.1實(shí)現(xiàn)符號(hào)表的簡(jiǎn)單方法9.1.2用固定數(shù)組實(shí)現(xiàn)符號(hào)表9.1.2.1數(shù)組實(shí)現(xiàn)符號(hào)表類Adictionary的定義typedefstructatab*Table;Typedefstructatab{intarraysize;intlast;setitem*data;}Atab;
2023/9/22福州大學(xué)數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院59.1實(shí)現(xiàn)符號(hào)表的簡(jiǎn)單方法9.1.2用固定數(shù)組實(shí)現(xiàn)符號(hào)表9.1.2.2優(yōu)缺點(diǎn)優(yōu)點(diǎn):結(jié)構(gòu)簡(jiǎn)單,實(shí)現(xiàn)操作的邏輯簡(jiǎn)單。缺點(diǎn):所表示的集合的大小受到數(shù)組大小的限制。三個(gè)基本操作在最壞情況下都需要O(n)。通常集合元素并不占滿整個(gè)數(shù)組,空間沒(méi)有得到充分利用。返回章目錄2023/9/22福州大學(xué)數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院69.2用散列表實(shí)現(xiàn)符號(hào)表9.2.1實(shí)現(xiàn)符號(hào)表的簡(jiǎn)單方法——開(kāi)散列基本設(shè)想:把符號(hào)表中的所有元素散列(hashing)即映射到一個(gè)桶數(shù)組(散列表)的桶中。當(dāng)有多個(gè)不同元素被散列到同一個(gè)桶時(shí),這些元素用鏈在一個(gè)表里。期望散列能均勻,使得當(dāng)桶數(shù)組的規(guī)模與符號(hào)表的規(guī)模同階時(shí),桶數(shù)組的每一個(gè)桶中大致有常數(shù)個(gè)元素,從而對(duì)符號(hào)表的三個(gè)基本操作都只需要常數(shù)時(shí)間。這里的問(wèn)題是如何散列即如何構(gòu)造散列(映射)函數(shù)去達(dá)到設(shè)想的期望?2023/9/22福州大學(xué)數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院7例一組關(guān)鍵字為(21,14,19,58,65,32,72)
H(K)=K%11216532∧19∧72∧1458∧∧
∧
∧∧∧∧∧0123456789102023/9/22福州大學(xué)數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院89.2用散列表實(shí)現(xiàn)符號(hào)表9.2.2用閉散列實(shí)現(xiàn)符號(hào)表9.2.2.1與開(kāi)散列的相同點(diǎn)和區(qū)別相同點(diǎn):把符號(hào)表中的所有元素散列(hashing)即映射到一個(gè)桶數(shù)組(散列表)的桶中。區(qū)別:桶數(shù)組(散列表)的桶直接用來(lái)存放符號(hào)表元素,而且一個(gè)桶只存放一個(gè)元素。出現(xiàn)多個(gè)元素散列到同一個(gè)桶時(shí)(這叫沖突),需要按照確定的規(guī)則在桶數(shù)組中進(jìn)行探測(cè),找還有沒(méi)有存放元素的桶(這叫空桶),然后將發(fā)生沖突的元素放入空桶,解決沖突,實(shí)現(xiàn)散列。
2023/9/22福州大學(xué)數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院9例一組關(guān)鍵字為(20,30,70,15,8,12,18,63,19
)
H(K)=K%111912
7015
183020863下標(biāo):01234567891011用線性探測(cè)法處理沖突!2023/9/22福州大學(xué)數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院109.2.2.2散列方法需要解決的問(wèn)題:1、構(gòu)造好的散列函數(shù)(1)所選函數(shù)盡可能簡(jiǎn)單,以便提高轉(zhuǎn)換速度。(2)所選函數(shù)對(duì)關(guān)鍵字計(jì)算出的地址,應(yīng)在散列地址集中大致均勻分布,以減少空間浪費(fèi)。
2、制定解決沖突的方案。9.2用散列表實(shí)現(xiàn)符號(hào)表3、需要對(duì)ht[]的每一個(gè)桶的狀態(tài)加以標(biāo)記:
state[k]=0表示ht[k]桶存放著元素。
state[k]=1表示ht[k]桶一直是空桶。
state[k]=2表示ht[k]桶現(xiàn)在是空桶但曾經(jīng)存放過(guò)元素2023/9/22福州大學(xué)數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院119.2.2.3散列函數(shù)的構(gòu)造方法
1、直接定址法:取關(guān)鍵字的某個(gè)線性函數(shù)值作為散列地址?!^直觀的方法
H(key)=a*key+b;//a、b為常數(shù)
2、除留余數(shù)法:取關(guān)鍵字的某個(gè)不大于表長(zhǎng)m的數(shù)p除后所得的余數(shù)作為散列地址。——較簡(jiǎn)單、常用的方法
H(key)=key%p;//p<=m
3、平方取中法:取關(guān)鍵字平方后的中間幾位作為散列地址(若超出范圍時(shí),可再取模)。9.2用散列表實(shí)現(xiàn)符號(hào)表2023/9/22福州大學(xué)數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院129.2.2.3散列函數(shù)的構(gòu)造方法
4、折疊法:將關(guān)鍵字分成幾個(gè)部分,再將這幾個(gè)部分結(jié)合(作某一運(yùn)算)起來(lái)的值作為散列地址?!S糜陉P(guān)鍵字的位數(shù)較多的情況
5、數(shù)值分析法:如果事先知道所有可能的關(guān)鍵字的取值時(shí),可通過(guò)對(duì)這些關(guān)鍵字分析,發(fā)現(xiàn)其變化規(guī)律,構(gòu)造出相應(yīng)的函數(shù)。9.2用散列表實(shí)現(xiàn)符號(hào)表2023/9/22福州大學(xué)數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院139.2.2.4處理沖突的方法
1、線性探測(cè)法:當(dāng)由H(k)算出的位置不空時(shí),依次用下面函數(shù)以找出一個(gè)新的空位置。
Hi(k)=(H(k)+di)modm,其中i=1,2,…k(k≤m-1)
其中:m為散列表長(zhǎng)度,di的取值常用如下形式:di=i,即di為增量序列,依次取值1,2,……,m-19.2用散列表實(shí)現(xiàn)符號(hào)表2023/9/22福州大學(xué)數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院14
例:已知散列表的地址區(qū)間為0~11,散列函數(shù)為H(k)=k%11,采用線性探測(cè)法處理沖突,試將以下關(guān)鍵字序列依次存儲(chǔ)到散列表中,構(gòu)造出該散列表,并求出在等概論情況下的平均查找長(zhǎng)度。
20,30,70,15,8,12,18,63,19H(20)=9,可直接存放到A[9]中(搜索時(shí)次數(shù)為1);
……H(19)=8,因?yàn)橄聵?biāo)為8~11的元素均已被占用,故往后搜索并繞回到A[0]存放(搜索時(shí)次數(shù)為5)。9.2用散列表實(shí)現(xiàn)符號(hào)表9.2.2.4處理沖突的方法2023/9/22福州大學(xué)數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院151912
7015
183020863下標(biāo):01234567891011搜索次數(shù):511211134
在等概率情況下,該表成功的平均查找長(zhǎng)度如下:(1×5+2×1+3×1+4×1+5×1)/9=19/99.2用散列表實(shí)現(xiàn)符號(hào)表9.2.2.4處理沖突的方法2023/9/22福州大學(xué)數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院169.2用散列表實(shí)現(xiàn)符號(hào)表9.2.2.4處理沖突的方法2、二次重新散列技術(shù)它選取的探查桶序列為:h(x),h1(x),h2(x),…,h2i(x),h2i+1(x),
其中,,。
3、隨機(jī)重新散列技術(shù)
它選取的探查桶序列為:
,i=1,2,…,B-1。其中,是1,2,…,B-1的一個(gè)隨機(jī)排列。
4、雙重散列技術(shù)
這種方法使用2個(gè)散列函數(shù)h和h’來(lái)產(chǎn)生探索序列:
其中
i=1,2,…,B-1。要求h’(x)的值和B互素。2023/9/22福州大學(xué)數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院179.2用散列表實(shí)現(xiàn)符號(hào)表9.2.3改進(jìn)Delete(x)的基本思想:動(dòng)機(jī)是希望騰出的空桶(記為ht[i])不僅僅可供新元素插入,而且能為提高還在桶數(shù)組中的元素(比如y=ht[j])的查找速度作出貢獻(xiàn):減少查找y的探測(cè)次數(shù)。容易理解,如果不作任何改進(jìn),查找y的探測(cè)次數(shù)會(huì)等于插入y時(shí)的探測(cè)次數(shù)。如果插入y時(shí)x已在桶ht[i]中且與x發(fā)生沖突而增加了插入的探測(cè)次數(shù),那么,現(xiàn)在x不存在了,只要將x騰出的桶ht[i]讓y頂替,就可以使得將來(lái)查找y時(shí)減少探測(cè)次數(shù)。因此改進(jìn)Delete(x)的途徑是在當(dāng)前的桶數(shù)組中找能頂替x的y。如果找不到,就按Delete(x)的原版處理;如果找得到,在用y頂替x之后還可以引起連鎖反應(yīng)。2023/9/22福州大學(xué)數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院189.2用散列表實(shí)現(xiàn)符號(hào)表改進(jìn)Delete(x)的細(xì)節(jié)——找能頂替x的y
假設(shè)被刪除元素x位于桶單元ht[i]?,F(xiàn)考察一個(gè)非空單元ht[j]中的元素y,其散列函數(shù)值設(shè)為h=hf(y),則按從h出發(fā)的線性探測(cè),只要i比j離h近即可使得在頂替后找y的探測(cè)次數(shù)減少。①當(dāng)i<j時(shí),若i<h
j,則不可用元素ht[j]頂替ht[i];若h
i<j或i<j<h,則可用元素ht[j]頂替ht[i]。如下圖(a)。②當(dāng)j<i時(shí),若j<h
I,則可用元素ht[j]頂替ht[i],如下圖
(b);否則不可。這里以線性探測(cè)為前題,以頂替后減少探測(cè)次數(shù)為目標(biāo)。2023/9/22福州大學(xué)數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院199.2用散列表實(shí)現(xiàn)符號(hào)表9.2.4
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國(guó)數(shù)碼SPA水療蒸汽艙數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 動(dòng)物模型定制與行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 體育用品再生塑料配件行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 醇酸樹(shù)脂類型公路非水性涂料企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 照相輔助器材企業(yè)縣域市場(chǎng)拓展與下沉戰(zhàn)略研究報(bào)告
- 鋼渣磷肥企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略研究報(bào)告
- 科技助力提升匯報(bào)質(zhì)量與效率
- 圖書(shū)企業(yè)縣域市場(chǎng)拓展與下沉戰(zhàn)略研究報(bào)告
- 知識(shí)產(chǎn)權(quán)評(píng)估與商業(yè)化運(yùn)營(yíng)的聯(lián)動(dòng)策略
- 上門(mén)遛狗合同范本
- 特種設(shè)備安全技術(shù)檔案(附表格)
- 國(guó)網(wǎng)新聞宣傳與企業(yè)文化管理專責(zé)考試題庫(kù)及答案
- 氫氣儲(chǔ)存和運(yùn)輸 課件 第1、2章 氫氣存儲(chǔ)與運(yùn)輸概述、高壓氣態(tài)儲(chǔ)運(yùn)氫
- 三年級(jí)地方課教案
- 涉外法律文書(shū)寫(xiě)作
- 2022-2023學(xué)年湖南省長(zhǎng)沙市統(tǒng)招專升本語(yǔ)文模擬練習(xí)題三及答案
- 社會(huì)救助法課件
- 第七講+漢字字音
- 新零件的成熟保障MLA
- 【基于杜邦分析法的企業(yè)盈利能力研究國(guó)內(nèi)外文獻(xiàn)綜述4000字】
- 初中語(yǔ)文七下-上下句默寫(xiě)
評(píng)論
0/150
提交評(píng)論