Kompresní algoritmus Lempel-Ziv v Javě

Java Objektově orientované programování Zdrojákoviště Kompresní algoritmus Lempel-Ziv v Javě

Řešení úlohy je založeno na algoritmu Lempel-Ziv, který v sedmdesátých letech vyvinuli Abraham Lempel a Jacob Ziv.

Jak to funguje

Při kompresi se nahrazují posloupnosti bajtů kódem (index, B), kde index odkazuje na položku ve slovníku a B určuje hodnotu bajtu. Na začátku obsahuje slovník položky 0 až 255 a posloupnost P je prázdná. V každém kroku se ze vstupu načte jeden bajt B. Pokud slovník obsahuje posloupnost P||B, pokračuje se načtením dalšího bajtu. V opačném případě se posloupnost P||B přidá do slovníku, na výstup se zapíše dvojice (index P, B) a P se nastaví na prázdnou posloupnost. V případě, že na vstupu zbývá pouze jeden bajt, na výstup se zapíše kód (X, B), kde X je speciální index vyhrazený pro prázdnou posloupnost.

Při dekompresi se nahrazuje kód (index, B) posloupnostmi bajtů. V každém kroku se ze vstupu načte kód (index, B). Je-li index = X, posloupnost P se nastaví na prázdnou. V opačném případě se posloupnost P načte ze slovníku. Posloupnost P || B se zapíše na výstup a přidá do slovníku.

Pozn.: Symbol || značí zřetězení. Např. 01 02 || 04 je 01 02 04.

Spuštění programu

Soubor zkomprimujete příkazem:

java -jar silvinios-compression.jar INPUT_FILE OUTPUT_FILE

a dekomprimujete příkazem:

java -jar silvinios-compression.jar -d INPUT_FILE OUTPUT_FILE

INPUT_FILE je vstupní soubor a OUTPUT_FILE je soubor výstupní.

Zdrojové kódy

Zdrojové kódy jsou k dispozici ke stažení jako projekt pro Eclipse. Použité kódování je UTF-8.


Galerie

Program byl vytvořen v roce 2013.

 

Stáhnout

Staženo 175x (26.66 kB)
Aplikace je včetně zdrojových kódů v jazyce java

 

  Aktivity (1)

Program pro vás napsal Silvinios
Avatar

Jak se ti líbí článek?
Ještě nikdo nehodnotil, buď první!


 



 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!