Kotisivu | Edellinen sivu | Ylös | Seuraava sivu


20.4 Tiedon pakkaus (kompressio)


Tiedon tallennus tulee sitä halvemmaksi, mitä vähemmän talletettavaa dataa on. Samoin tiedonsiirto käy nopeammin, jos siirrettävää dataa on vähemmän.

Tiedon pakkauksen (kompression) tarkoituksena on ottaa tiedosta "tyhjät pois" niin, että uusi pakattu tieto vie mahdollisimman vähän tilaa. Tästä pakatusta tiedosta täytyy tietenkin vielä pystyä "rekonstruoimaan" alkuperäinen tieto.

  • Kotikoneisiin on saatavilla useita tiedostoja pakkaavia ilmaisohjelmia, kuten Lha, Pkzip, Gzip, Arj, Zoo, Arc, jne.
  • Myös tiedonsiirtoprotokollat saattavat pakata lähetetyn tiedon, näin tekevät esim. modeemeissa V.42bis ja MNP 5.

Pakkausalgoritmeista

Informaatioteorian yksi perustotuuksia on, että yleinen tiedon pakkaminen on mahdotonta.

  • Tämä tarkoittaa käytännössä sitä, että pakkausohjelmat eivät millään voi purea kaikkiin mahdollisiin tiedostoihin;
    • Jokaista pakkautuvaa tiedostoa kohti on olemassa ainakin yksi tiedosto, jonka koko pakatessa vain kasvaa. Tämä ei riipu pakkausohjelmasta.
    • Pakkausohjelmien suunnittelun ideana onkin, että yleisesti käytetyt ja "järkevät" tiedostot pakkautuisivat, "roskaa" täynnä olevat tiedostot voivat taas hyvin kasvaakin.
    • Eri ohjelmat tulkitsevat "järkevät" tiedostot ja "roskatiedostot" eri tavoin, jolloin joku ohjelma puree tiettyihin tiedostoihin paremmin kuin toinen.

Esimerkki

Otetaan esimerkkinä pakkausalgoritmi, joka korvaa tekstin yleisimmät sanat merkinnällä "/numero". Korvatut sanat luetellaan tiedoston alussa. Tekstissä oleva "/" korvataan "//":llä.

Tällä algoritmilla esim. teksti "auto/mopo/vene" pitenisi muotoon "auto//mopo//vene". Algoritmi ei muutenkaan ole kovin hyvä, mutta toimiva kuitenkin. Kokeile itse:

Otetaan teksti

Satu meni saunaan, pisti laukun naulaan./ Satu tuli saunasta, otti laukun naulasta.

Ja pakkauksen tulos:

Satu,sauna,laukun,naula:/1 meni /2an, pisti /3 /4an.// /1 tuli /2sta, otti /3 /4sta.

83 merkkiä -> 84 merkkiä

Lyhyessä tekstissä koko saattaa tosiaan jopa kasvaa, mutta pidemmän tekstin pakkauksessa alkaa pieneneminen näkyä tälläkin algoritmilla.


Häviöllinen pakkaus

Jos pakattavana on kuva- tai ääni-informaatiota, ei pakattua tietoa tarvitse saada palautettua 100 %:sti alkuperäiseen muotoon, kunhan silmä tai korva ei vain huomaa eroa.

Tähän perustuen on kehitetty häviöllisiä pakkausalgoritmeja (lossy compression). Ne pystyvät pakkaamaan tiedon kuin tiedon pienempään tilaan jättämällä pakattavasta tiedosto pois "epäolennaisia" asioita.

  • Kuvien pakkaamiseen tarkoitettu JPEG-pakkaus on häviöllinen algoritmi. MPEG-animaatioformaatissa taas pakataan sekä kuvat että ääni häviöllisesti.

Häviöllinen pakkaus ei tietysti sovi esim. teksti- tai ohjelmatiedostoille, koska niihin ei saa pakkauksessa tulla muutoksia.




Kotisivu | Edellinen sivu | Ylös | Seuraava sivu
Sanahaku | Hakemisto