Kodowanie Huffmana - ilość bitów na znak

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?

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ć

1 użytkowników online, w tym zalogowanych: 0, gości: 1