Komprese
Abschlussbedingungen
2. Bezeztrátová komprese
2.5. Aritmetické kódování
J. J. Risanen v roce 1976.
Vstupní soubor je převeden na
číslo z intervalu <0;1).
Je třeba znát pravděpodobnost výskytu znaků ve vstupním souboru.
- Řadíme od nejmenší po největší.
Z pravděpodobností výskytu jednotlivých prvků se vytvoří na intervalu <0;1) podintervaly, které ho vyplní.
- Pole mezd obsahuje dolní meze podintervalů.
- Pole mezh obsahuje horní meze podintervalů.
- Součást vstupního i výstupního souboru (+ počet znaků).
Komprese
- Základní inicializace – h = 1; d = 0; s = 1.
- Cyklus postupně pro jednotlivé znaky:
• h := d + s · mezh(aktuálního symbolu)
• d := d + s · mezd(aktuálního symbolu)
• s := h - d - Po provedení cyklu pro poslední znak vybereme reprezentanta K z aktuálního intervalu (d; h).
Dekomprese
Označíme K jako K1 a podle intervalu, do něhož patří, dekomprimujeme první znak
Další znaky dekomprimujeme postupně na základě obecného vzorce pro ítého
reprezentanta: (Ki-1 - mezdi-1) / si-1