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 anie dostaje kodu jako, 0ale 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).