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

1.5 KiB
Raw Blame History

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