Lataa esitys
Esittely latautuu. Ole hyvä ja odota
JulkaistuMari Kouki Muutettu yli 8 vuotta sitten
1
Hajakoodaus Talletetaan alkiot avain-indeksoituun taulukkoon Hajakoodausfunktio Menetelmä avain-indeksin laskemiseen avaimesta Törmäyksen selvitysstrategia algoritmi ja tietorakenne käsittelemään tapaus jossa kaksi avainta kuvautuu samaan indeksin arvoon
2
Hajakoodausfunktio Hajakoodausfunktio h kuvaa kaikkien avaimien joukon U joukoksi {0,1,…,m-1} U k1k1 k5k5 k2k2 k4k4 k3k3 0 m-1 h(k 1 ) h(k 5 ) h(k 2 )= h(k 4 ) h(k 3 ) Kun kaksi avainta kuvautuu samaan indeksin arvoon tapahtuu törmäys.
3
Hajakoodausfunktio Tavoite: satunnainen kuvaus (kaikki indeksi yhtä todennäköisiä kaikille avaimille) Avaimia käsitellään pitkinä kokonaislukuina, taulukon koko M on alkuluku Hajakoodausfunktio: h(K) = K mod M Laske arvo Hornerin säännön avulla: Esim. abcd:n hajakoodausfunktion arvo on 11 97*256 3 +98*256 2 +99 *256 1 +100= (256*(256*(256*97+98)+99)+100 16338831724 % 101 = 11 Numerot liian isoja? Lasketaan jakojäännös jokaisen operaation jälkeen (256*97 + 98) % 101 = 84 (256*84 + 99) % 101 = 90 (256*90 + 100) % 101 = 11 Universaali hajakoodaus: hajakoodausfunktion kerroin vaihtuu jokaisen koodattavan yksikön kohdalla.
4
Alkuluvut hajakoodaustaulukolle ndndn 2 n -d n 85251 93509 1031021 1192039 1234093 1318191 14316381 151932749 161565521 171131071 185262139 191524287 2031048573 2192097143 Taulukko listaa suurimman 2 n :ää pienemmän alkukuvun.
5
Hajakoodausfunktio C-kielellä int haja(char *v, int n){ int h = 0, /* hajakoodin arvo */ a = 127; /* kokonaislukukerroin */ for(; *v != '\0'; v++) h = (a * h + *v) % n; return h; }
6
Universaali hajakoodausfunktio C-kielellä int hajaU(char *v, int n) { int h = 0, a = 31415, /* kokonaislukukerroin */ b = 27183; /* kokonaislukukerroin */ for(; *v != '\0'; v++, a = a * b % (n - 1)) h = (a * h + *v) % n; return h; }
7
Törmäyksen selvitysstrategiat Erillinen ketjutus Taulukon koko (M) paljon alkioiden lukumäärää pienempi (N) n. N/M alkiota jokaisessa taulukon indeksissä Samaan indeksiin kuvautuvat avaimet laitetaan linkitettyyn listaan Avoin osoitteistus (lineaarinen koestus, kaksoishajakoodaus) Taulukon koko paljon alkioiden lukumäärää suurempi Paljon tyhjiä paikkoja taulukossa Törmäyksen sattuessa etsitään vapaa paikka
8
Erillinen ketjutus Hajautetaan taulukolliseen linkitettyjä listoja Hajautus Kuvataan avain välille [0, M-1] Taulukko Viittaus listan alkuun vie vakioajan Linkitetyt listat Lisäys vie vakioajan Haku tapahtuu käyttäen alkeisalgoritmia M liian iso: paljon tyhjiä listoja M liian pieni: listat hyvin pitkiä I HS GR EPEE NC LAAA MX ASERCHINGXMPL 0204442212433
9
Lineaarinen koestus Hajakoodataan isoon taulukkoon, käytetään lineaarihakua klustereiden sisällä Hajakoodaus Kuvataan avain taulukon indeksiin välille [0,M-1] Iso taulukko Ainakin 2 kertaa alkioiden lukumäärä Klusteri Yhtenäinen lohko alkioita
10
Lineaarisen koestuksen esimerkki A 0123456789101112 ASERCHINGXM 73998411710120
11
Lineaarisen koestuksen esimerkki A SA 0123456789101112 ASERCHINGXM 73998411710120
12
Lineaarisen koestuksen esimerkki A SA SAE 0123456789101112 ASERCHINGXM 73998411710120
13
Lineaarisen koestuksen esimerkki A SA SAE E 0123456789101112 ASERCHINGXM 73998411710120
14
Lineaarisen koestuksen esimerkki A SA SAE ER 0123456789101112 ASERCHINGXM 73998411710120
15
Lineaarisen koestuksen esimerkki A SA SAE SAER SACER 0123456789101112 ASERCHINGXM 73998411710120
16
Lineaarisen koestuksen esimerkki A SA SAE SAER SACER SHACER 0123456789101112 ASERCHINGXM 73998411710120
17
Lineaarisen koestuksen esimerkki A SA SAE SAER SACER SHACER SHACERI 0123456789101112 ASERCHINGXM 73998411710120
18
Lineaarisen koestuksen esimerkki A SA SAE SAER SACER SHACER SHACERI SHACERI 0123456789101112 ASERCHINGXM 73998411710120
19
Lineaarisen koestuksen esimerkki A SA SAE SAER SACER SHACER SHACERI SHACERI 0123456789101112 ASERCHINGXM 73998411710120
20
Lineaarisen koestuksen esimerkki A SA SAE SAER SACER SHACER SHACERI SHACERI 0123456789101112 ASERCHINGXM 73998411710120
21
Lineaarisen koestuksen esimerkki A SA SAE SAER SACER SHACER SHACERI SHACERI 0123456789101112 ASERCHINGXM 73998411710120
22
Lineaarisen koestuksen esimerkki A SA SAE SAER SACER SHACER SHACERI SHACERI 0123456789101112 ASERCHINGXM 73998411710120
23
Lineaarisen koestuksen esimerkki A SA SAE SAER SACER SHACER SHACERI SHACERIN 0123456789101112 ASERCHINGXM 73998411710120
24
Lineaarisen koestuksen esimerkki A SA SAE SAER SACER SHACER SHACERI SHACERIN GSHACERIN 0123456789101112 ASERCHINGXM 73998411710120
25
Lineaarisen koestuksen esimerkki A SA SAE SAER SACER SHACER SHACERI SHACERIN GSHACERIN GSHACERIN 0123456789101112 ASERCHINGXM 73998411710120
26
Lineaarisen koestuksen esimerkki A SA SAE SAER SACER SHACER SHACERI SHACERIN GSHACERIN GSHACERIN 0123456789101112 ASERCHINGXM 73998411710120
27
Lineaarisen koestuksen esimerkki A SA SAE SAER SACER SHACER SHACERI SHACERIN GSHACERIN GXSHACERIN 0123456789101112 ASERCHINGXM 73998411710120
28
Lineaarisen koestuksen esimerkki A SA SAE SAER SACER SHACER SHACERI SHACERIN GSHACERIN GXSHACERIN GXSHACERIN 0123456789101112 ASERCHINGXM 73998411710120
29
Lineaarisen koestuksen esimerkki A SA SAE SAER SACER SHACER SHACERI SHACERIN GSHACERIN GXSHACERIN GXSHACERIN 0123456789101112 ASERCHINGXM 73998411710120
30
Lineaarisen koestuksen esimerkki A SA SAE SAER SACER SHACER SHACERI SHACERIN GSHACERIN GXSHACERIN GXMSHACERIN 0123456789101112 ASERCHINGXM 73998411710120
31
Kaksoishajakoodaus Käyttää kahta erilaista hajakoodausfunktiota yhden kuvauksen muodostamiseen. Hajakoodaus Kuvataan avain taulukon indeksiin välille [0,M-1] Toinen hajakoodaus Kuvataan avain ( > 0) askellus arvoon (mielellään suhteellinen alkuluku M:lle.
32
Kaksoishajakoodaus esimerkki A 0123456789101112 ASERCHINGXM 73998411710120 13155533235
33
Kaksoishajakoodaus esimerkki A SA 0123456789101112 ASERCHINGXM 73998411710120 13155533235
34
Kaksoishajakoodaus esimerkki A SA SAE 0123456789101112 ASERCHINGXM 73998411710120 13155533235
35
Kaksoishajakoodaus esimerkki A SA SAE 0123456789101112 ASERCHINGXM 73998411710120 13155533235
36
Kaksoishajakoodaus esimerkki A SA SAE SAE 0123456789101112 ASERCHINGXM 73998411710120 13155533235
37
Kaksoishajakoodaus esimerkki A SA SAE RSAE 0123456789101112 ASERCHINGXM 73998411710120 13155533235
38
Kaksoishajakoodaus esimerkki A SA SAE RSAE 0123456789101112 ASERCHINGXM 73998411710120 13155533235
39
Dynaaminen hajakoodaustaulu Taulun kokoa muutetaan tarpeen mukaan suuremmaksi.
40
Dynaamisen hajakoodauksen esimerkki A 0123 ASERCHINGXM 13
41
A AS 0123 ASERCHINGXM 13
42
A AS EAS 01234567 ASERCHINGXM 5712
43
A AS EAS 01234567 ASERCHINGXM 5712
44
A AS EAS ERAS 01234567 ASERCHINGXM 5712
45
A AS EAS ERAS ESRA 012345678910111213 ASERCHINGXM 71107856
Samankaltaiset esitykset
© 2024 SlidePlayer.fi Inc.
All rights reserved.