[coder și decodor]
[edit] Encoder
- Funcția ia o matrice și lungimea matricei ca argumente, dacă lungimea nu a fost trecută, atunci matricea nu este procesată.
- Inițializați variabilele pentru a stoca ultimul element și pentru a stoca numărul anterior. Inițializați bucla.
- În ciclu: 3.1 Salvați elementul cu indexul. 3.2 Calculați diferența dintre elementul de sub numărul și suprascrieți-l în elementul matricei cu indexul.
[edit] Decodor
- Inițializați variabila pentru a stoca ultimul caracter.
- Inițializați bucla.
- În buclă: 3.1 Adăugați la acest element valoarea elementului anterior. 3.2 Salvați valoarea elementului curent.
[edit] Codarea intervalelor
În codificarea intervalului, toate simbolurile mesajului sunt codificate ca un număr pentru a obține cel mai bun raport de compresie. Aceasta funcționează eficient cu probabilitatea apariției unui simbol care nu este o putere a doi. Codificarea intervalelor funcționează astfel:
- Se alocă o gamă suficientă de numere întregi și se evaluează probabilitatea apariției simbolurilor.
- Domeniul inițial de numere este împărțit în subranje, a căror mărime este proporțională cu probabilitatea de apariție a simbolului pentru care corespund.
- Fiecare caracter al mesajului este codificat, după care intervalul este redus la dimensiunea intervalului simbolului codificat și împărțit din nou de probabilități.
Decodorul ar trebui să aibă aceeași distribuție a probabilității ca atunci când se codifică.
[edit] Exemplu
Codificăm șirul. Mai întâi, hai să trecem prin filtrul delta. Apoi șirul original va arăta astfel:
.
După cum vedem, acum în linia noastră, în loc de personaje diferite de caractere diferite. Apoi aplicăm metoda ferestrei glisante la linia rezultată: