# Kompresor / Dekompresor – Huffmanovo kódovanie ## Zadanie Cieľom projektu je vytvoriť nástroj na bezstratovú kompresiu a dekompresiu ľubovoľných binárnych súborov do veľkosti 10 MB bez použitia algoritmu RLE. Program musí byť ovládateľný z príkazového riadka a používať iba štandardnú knižnicu jazyka C. ## Funkčnosť Program podporuje: - kompresiu súborov pomocou Huffmanovho kódovania, - dekompresiu skomprimovaných súborov, - spracovanie ľubovoľných binárnych dát, - zachovanie úplnej zhody po dekompresii. Rozhranie: ./compressor -c infile outfile ./compressor -d infile outfile ./compressor -h ## Riešenie Použitý algoritmus je Huffmanovo kódovanie: 1. Zistí sa frekvencia bajtov v súbore 2. Z frekvencií sa zostaví Huffmanov strom 3. Dáta sa zapíšu ako bitový prúd 4. Do hlavičky súboru sa uloží veľkosť a frekvenčná tabuľka Formát výstupu: - magické číslo "HUF1" - pôvodná veľkosť súboru - tabuľka frekvencií (256 × uint32_t) - zakódované dáta ## Podmienky funkčnosti - program funguje pre vstupy do 10 MB, - používa iba štandardnú knižnicu C, - testované na súboroch z Canterbury Corpus, - kompresný pomer typicky > 10 %. ## Použité zdroje - D. Huffman: A Method for the Construction of Minimum-Redundancy Codes - Canterbury Corpus (testovacie dáta) - Generatívny model: ChatGPT (OpenAI) Prompt použitý pri generovaní: "Vytvor kompletný C program na kompresiu a dekompresiu binárnych súborov pomocou Huffmanovho kódovania bez použitia RLE."