Wymóg, aby kodowanie było wolne od prefiksów, skutkuje dużymi drzewami, ponieważ drzewo musi być kompletne. Czy istnieje próg, w którym niekodowane przechowywanie danych o stałej długości byłoby bardziej wydajne niż kodowanie danych?
Wymóg, aby kodowanie było wolne od prefiksów, skutkuje dużymi drzewami, ponieważ drzewo musi być kompletne. Czy istnieje próg, w którym niekodowane przechowywanie danych o stałej długości byłoby bardziej wydajne niż kodowanie danych?
Odpowiedzi:
Entropia H(A)
tego problemu jest 1.998
. Zarówno kodowanie Huffmana, jak i kodowanie o stałej długości dla tego problemu ma średnią długość słowa kodowego jako 2
. I FYI kodowanie, które masz przy użyciu kodowania Huffmana jest nieprawidłowe. Kodowanie Huffmana generuje również kody podobne do stałej długości dla tego problemu. Używa chciwego podejścia. Więc a
nie dostaje kodu jako, 0
ale zamiast tego dostaje 00
. Przerób drzewo generowane za pomocą kodowania Huffmana. Drzewo, które powinieneś zdobyć to:
Kodowanie Huffmana przybliża rozkład populacji z potęgami dwóch prawdopodobieństw. Jeśli prawdziwy rozkład składa się z potęg dwóch prawdopodobieństw (a symbole wejściowe są całkowicie nieskorelowane), kodowanie Huffmana jest optymalne. Jeśli nie, możesz lepiej radzić sobie z kodowaniem zakresu. Jest jednak optymalny spośród wszystkich kodowań, które przypisują określone zestawy bitów do określonych symboli na wejściu.
Tak, zawsze jest optymalne.
Nie, nie ma progu, w którym zużywałoby mniej miejsca do korzystania z niekodowanych danych o stałej długości.
Znalazłem wiele dowodów w Internecie, ale jest wystarczająca dyskusja w artykule w Wikipedii Kodowanie Huffmana .
Obejmuje to również inne techniki, które osiągają wyższą kompresję (praca poza przestrzenią, dla której kod Huffmana jest optymalny).