kod uniwersalny (kompresja danych) - Universal code (data compression)

Image
Fibonacciego Elias gamma i delta Elias vs kodowania binarnego
Image
Ryż z k  = 2, 3, 4, 5, 8, 16, w porównaniu do binarnej

W kompresji danych , wykorzystując kod uniwersalny dla liczb całkowitych jest kod prefiks , który mapuje liczby całkowite dodatnie na słowa kodu binarnego, z dodatkową właściwość, która bez względu na prawdziwy rozkład prawdopodobieństwa na liczb całkowitych, tak długo, jak dystrybucja jest monotoniczna (czyli p ( I ) ≥  P ( i  + 1) dla wszystkich dodatnich  I ), przy czym oczekiwane długości tych słów kodowych są w stałym elementem spodziewanej długości że optymalna kod dla tego rozkładu prawdopodobieństwa byłoby przypisane. Uniwersalny kod jest asymptotycznie optymalne , gdy stosunek między rzeczywistą i optymalne oczekiwane długości jest ograniczony w funkcji entropii informacji o kodzie, który, oprócz tego, że ograniczone, metody 1, gdy zbliża się do nieskończoności entropii.

Ogólnie rzecz biorąc, większość prefiks kody dla liczb całkowitych przypisać dłuższych słów kodu do większych liczb całkowitych. Taki kod można wykorzystać do skutecznego komunikowania wiadomość wyciągnąć z zestawu możliwych komunikatów, po prostu nakazując zestaw komunikatów poprzez zmniejszenie prawdopodobieństwa, a następnie wysyłając indeks zamierzonego przekazu. Kody uniwersalne nie są zazwyczaj wykorzystywane do precyzyjnego znanych rozkładów prawdopodobieństwa, a nie uniwersalny kod jest znany optymalny dla każdej dystrybucji stosowanych w praktyce.

Uniwersalny kod nie powinien być mylony z uniwersalnym kodem źródłowym , w którym metoda kompresji danych nie musi być ustalony kod prefiks i stosunek rzeczywistych i oczekiwanych optymalnych długości musi zbliżyć jeden. Należy jednak pamiętać, że uniwersalny kod asymptotycznie optymalne może być stosowany na niezależnych identycznie rozproszonych źródeł , używając coraz większych bloków , jako metody uniwersalnej źródłowego kodowania.

Kody uniwersalne a nie uniwersalne

Są pewne uniwersalne kody dla liczb całkowitych; Gwiazdka ( * ) oznacza kod, który może być przekształcony trywialny leksykograficznym kolejności , podczas gdy podwójna sztyletu ( ) oznacza kod, który jest optymalny asymptotycznie:

Są to te, non-uniwersalne:

Ich nonuniversality można zaobserwować zauważyć, że w przypadku każdego z nich wykorzystywane są do kodowania rozkład Gaussa-Kuzmin lub rozkład Zeta z parametru S = 2, oczekuje długość słowa kodowego jest nieskończona. Na przykład, z wykorzystaniem pojedynczego kodowanie na rozkład Zeta daje oczekiwany długość

Z drugiej strony, stosując kodowanie Eliasa gamma uniwersalne dla wyników Gaussa-Kuzmin dystrybucji w oczekiwanej długości słowa kodowego (około 3,51 bitów) w pobliżu entropii (około 3,43 bitów) [2] .

Stosunek do praktycznej kompresji

Kodowanie Huffmana i kodowanie arytmetyczne (kiedy można je stosować) dają co najmniej tak dobre, a często lepszą kompresję niż jakiegokolwiek kodu uniwersalnego.

Jednak kody uniwersalne są przydatne podczas kodowania Huffmana nie mogą być wykorzystane - na przykład, gdy nie wiadomo dokładnie prawdopodobieństwo każdej wiadomości, ale tylko zna rankingi ich prawdopodobieństwa.

Kody uniwersalne są także przydatne, kiedy kody Huffmana są niewygodne. Na przykład, gdy nadajnik ale nie odbiornik zna prawdopodobieństwa wiadomości, Huffman kodowanie wymaga narzut nadawania tych prawdopodobieństw do odbiornika. Korzystanie z uniwersalnego kodu nie ma tego narzutu.

Każdy kod uniwersalny jak siebie siebie ograniczającej (prefiks) kod binarny, ma swój własny „domniemany rozkład prawdopodobieństwa” wydane przez p ( ı ) = 2 - l ( ı ), w których L ( I ) ma długość I -tego słowa kodowego i P ( i ) to prawdopodobieństwo odpowiedni symbol jest. Jeżeli rzeczywiste prawdopodobieństwa wiadomość są Q ( I ) i dywergencja kullbacka-leiblera D KL ( P || P ) jest zminimalizowana przez kod z l ( I ), wówczas optymalna kodu Huffmana dla tego zbioru komunikatów, jest równoważny do tego kodu , Podobnie, jak blisko jest do optymalnego kodu mogą być mierzone za pomocą tej rozbieżności. Ponieważ kody powszechne są prostsze i szybsze do kodowania i dekodowania niż kody Huffmana (który z kolei jest prostsze i szybsze niż kodowania arytmetycznego ), przy czym uniwersalny kod byłby korzystny w przypadku, gdy D KL ( P || P ) jest wystarczająco mały. [3]

Dla każdego rozkładu geometrycznego (gwałtowny rozkład na całkowite), kod Golomb jest optymalna. Z kodami uniwersalnych, rozkład niejawna jest około prawo moc takich jak (dokładniej, o rozkładzie Zipf ). Dla kodu Fibonacciego , rozkład ukryte jest w przybliżeniu , z

gdzie jest stosunek złote . Dla potrójnego kodu przecinek (tj kodowania w podstawy 3, reprezentowane przez 2 bity na symbol), rozkład niejawny jest prawo mocy z . Rozkłady te mają zatem niemal optymalnych kodów z ich odpowiednimi prawami energetycznych.

Linki zewnętrzne