Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Hajakoodaus Talletetaan alkiot avain-indeksoituun taulukkoon Hajakoodausfunktio Menetelmä avain-indeksin laskemiseen avaimesta Törmäyksen selvitysstrategia.

Samankaltaiset esitykset


Esitys aiheesta: "Hajakoodaus Talletetaan alkiot avain-indeksoituun taulukkoon Hajakoodausfunktio Menetelmä avain-indeksin laskemiseen avaimesta Törmäyksen selvitysstrategia."— Esityksen transkriptio:

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


Lataa ppt "Hajakoodaus Talletetaan alkiot avain-indeksoituun taulukkoon Hajakoodausfunktio Menetelmä avain-indeksin laskemiseen avaimesta Törmäyksen selvitysstrategia."

Samankaltaiset esitykset


Iklan oleh Google