usaa25/sk1/README.md
2026-01-21 18:22:41 +01:00

47 lines
1.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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."