Hajautustaulujen törmäysten ratkaisutekniikat
Koskinen, Joni (2023)
Koskinen, Joni
2023
Tieto- ja sähkötekniikan kandidaattiohjelma - Bachelor's Programme in Computing and Electrical Engineering
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2023-05-21
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202304264632
https://urn.fi/URN:NBN:fi:tuni-202304264632
Tiivistelmä
Hajautustaulu on laajalti käytössä oleva tehokas tietorakenne, joka parhaimmillaan tarjoaa avain-arvo-parien vakioaikaista tallennusta, hakua ja poistoa. Tallennusoperaatiossa hajautusfunktiolla lasketaan tiivistearvo, jonka perusteella avain-arvo-pari tallennetaan tauluun. Mikään hajautusfunktio ei kuitenkaan ole niin hyvä, että jokainen tiivistearvo olisi ainutlaatuinen. Eri parien välillä tapahtuu väistämättä törmäyksiä eli samalle paikalle yritetään lisätä kahta eri paria. Törmäysten välttämiseksi on kehitetty erilaisia ratkaisutekniikoita.
Tässä työssä käydään läpi hajautustaulujen törmäysten ratkaisutekniikoita tavoitteena löytää tehokkaimmat vaihtoehdot tutkittujen ratkaisujen joukosta. Tekniikoista valikoitiin mukaan joitakin yleisesti tunnettuja vanhempia sekä vähemmän tunnettuja uudempia tekniikoita. Työhön valitut tekniikat ovat lineaarinen kokeilu, hyppytekniikat, käkihajautus, ruutuhyppelyhajautus, pariton-parillinen hajautus, erillisketjutus sekä taulukkorakenne. Työssä esitetään tekniikoiden perustoiminta ja käydään läpi kirjallisuuskatsauksen keinoin niiden suoriutuminen verrattuna toisiinsa eri tahojen suorittamissa kokeissa. Lähteinä työssä on käytetty sekä eri tekniikoiden alkuperäisjulkaisuja että yleisesti eri tekniikoita esitteleviä ja vertailevia tutkimuksia. Työ ei ota kantaa rinnakkaisiin hajautustauluihin, vaan keskittyy hajautustauluihin, jotka eivät huomioi rinnakkaisuutta.
Tutkimuksesta ei saatu suoraan selvitettyä parasta ratkaisutekniikkaa. Tehokkuus riippuu monesta tekijästä eikä parhaiten pärjänneiden tekniikoiden välillä ole suoritettu kokeita. Tuloksista voidaan kuitenkin todeta parhaiten pärjänneiksi tekniikoiksi ruutuhyppelyhajautus, pariton-parillinen hajautus, erilllisketjutus sekä taulukkorakenne. Näistä taulukko pärjää tekstisyötteiden osalta parhaiten, mutta ruutuhyppelyn sekä pariton-parillinen hajautuksen ja erillisketjutuksen paremmuudesta ei saatu selkoa. Tässä työssä annetaan ehdotukseksi tehdä jatkotutkimusta keskittyen vain näihin algoritmeihin ja selvittää, missä olosuhteissa mikäkin on tehokkain vaihtoehto.
Tässä työssä käydään läpi hajautustaulujen törmäysten ratkaisutekniikoita tavoitteena löytää tehokkaimmat vaihtoehdot tutkittujen ratkaisujen joukosta. Tekniikoista valikoitiin mukaan joitakin yleisesti tunnettuja vanhempia sekä vähemmän tunnettuja uudempia tekniikoita. Työhön valitut tekniikat ovat lineaarinen kokeilu, hyppytekniikat, käkihajautus, ruutuhyppelyhajautus, pariton-parillinen hajautus, erillisketjutus sekä taulukkorakenne. Työssä esitetään tekniikoiden perustoiminta ja käydään läpi kirjallisuuskatsauksen keinoin niiden suoriutuminen verrattuna toisiinsa eri tahojen suorittamissa kokeissa. Lähteinä työssä on käytetty sekä eri tekniikoiden alkuperäisjulkaisuja että yleisesti eri tekniikoita esitteleviä ja vertailevia tutkimuksia. Työ ei ota kantaa rinnakkaisiin hajautustauluihin, vaan keskittyy hajautustauluihin, jotka eivät huomioi rinnakkaisuutta.
Tutkimuksesta ei saatu suoraan selvitettyä parasta ratkaisutekniikkaa. Tehokkuus riippuu monesta tekijästä eikä parhaiten pärjänneiden tekniikoiden välillä ole suoritettu kokeita. Tuloksista voidaan kuitenkin todeta parhaiten pärjänneiksi tekniikoiksi ruutuhyppelyhajautus, pariton-parillinen hajautus, erilllisketjutus sekä taulukkorakenne. Näistä taulukko pärjää tekstisyötteiden osalta parhaiten, mutta ruutuhyppelyn sekä pariton-parillinen hajautuksen ja erillisketjutuksen paremmuudesta ei saatu selkoa. Tässä työssä annetaan ehdotukseksi tehdä jatkotutkimusta keskittyen vain näihin algoritmeihin ja selvittää, missä olosuhteissa mikäkin on tehokkain vaihtoehto.
Kokoelmat
- Kandidaatintutkielmat [10016]