Kodowanie Huffmana - ilość bitów na znak

Kodowanie Huffmana - ilość bitów na znak
3P
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 72
0

Hej, mam do napisania mini projekt m.in. wyświetlający kod Huffmana dla dowolnego ciągu znaków. Znalazłem kilka rozwiązań i coś mi nie pasuje. Mianowicie dla ciągu "ala ma kota" mamy do zakodowania (wraz ze spacją) 7 znaków. Spokojnie zmieścimy się na 3 bitach 2^3 = 8. Nie wiem czemu wszystkie algorytmy kodują znak na czterech:
a:0
t:100
m:1010
o:1011
:110
k:1110
l:1111

Ja rozpisując na papierze otrzymuję:
k: 000
l: 001
m: 010
o: 011
t: 100
: 101
a:11

Mamy zysk 4 bitów (zamiast 33, wykorzystujemy 29).

Jest ktoś w stanie mi wytłumaczyć w czym tkwi problem?

JD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1
0

Bierzesz jakiś duży tekst, liczysz najczęściej występujące litery w tym tekście na podstawie tych statystyk tworzysz drzewo, gdzie najczęściej występujący znak jest najwyżej i zajmuje np. 1bit, a najrzadziej 8bitów, przy małej ilości znaków kompresja może nie dawać żadnych zysków pamięciowych, ale przy dużych już tak.

No i kodujesz na podstawie tego drzewa te znaki i potem te drzewo dołączasz do danych, żeby szło odkompresować

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.