| .. | ||
| compressor.c | ||
| compressor.h | ||
| main.c | ||
| Makefile | ||
| README.md | ||
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:
- Zistí sa frekvencia bajtov v súbore
- Z frekvencií sa zostaví Huffmanov strom
- Dáta sa zapíšu ako bitový prúd
- 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."