Viikko 5 palautus

Tämä viikko (n. 30h työskentely) kului suureksi osaksi hajautustaulun toteuttamisen, suorituskykytestauksen sekä dokumentoinnin parissa.

Sain omatekoisen hajautustaulun (HajautusTaulu.java) valmiiksi noin puolessa välissä viikkoa, jonka jälkeen aloitin kattavan suorituskykytestauksen. Testauksen ohessa selvisi, että vaikka luulin hajautustauluni toimivan suhteellisen nopeasti, toiminta ei sitä kyllä ollut. Jonkin verran asiaa mietittyä selvisi mistä syy johtui.
Koska hajautusoperaatioiden (lisäys, poisto ja etsiminen) pitäisi toimia ajassa O(1), päätin etsiä apua Internetistä ja löysinkin tavan, millä saisin nämä operaatiot toimimaan nopeammin.
Koska olin toteuttanut oman hajautustauluni hyvin erilaisella tavalla (vaikkakin samalla idealla), päätin kirjoittaa koko tietorakenteen uudestaan, sillä se tuntui yksinkertaisimmalta vaihtoehdolta. Jätin samalla vanhan hajautustauluni lojumaan projektin koodiin mukaan siltä nojalta, että kiinnostaa katsoa miten sen toteutin.

Omalta osaltani olen viikon saavutuksiin tyytyväinen, sillä ei voi sanoa että vähäinen edistyminen olisi ollut laiskuudesta kiinni. Olisi kyllä pitänyt käyttää enemmän aikaa informaation etsimiseen tietorakenteiden osalta ennen kuin alkaa niitä itse toteuttamaan.

Se mikä nyt jäi puuttumaan oli Huffman algoritmin laajentaminen tai Lempel-Ziv-Welchin algoritmin toteutuksen aloittaminen, johon tällä viikolla kyllä tutustuin. En usko että ehtisin saada mitään suurta viikon kuluessa aikaiseksi, mutta jos projektin toteutuksen kannalta on myös täysin ok että jonkin lisäominaisuuden on aloittanut mikä ei kuitenkaan ole valmis, käytän ensi viikolla näiden parissa aikaa ennen lopullista palautusta.
Tämän lisäksi toinen asia mihin voisin paneutua on selvittää ongelma, minkä takia pakatuista tiedostoista tulee todella suuria (pakkaussuhde n. 80%), vaikka ne onkin toteutettu samalla idealla kuin Huffmanin algoritmiin kuuluukin.