kod uniwersalny (kompresja danych) - Universal code (data compression)
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:
- Elias kodujący gamma *
- Elias kodowanie delta * ‡
- Elias omega kodowania * ‡
- Exp-Golomba kodowania *, która ma kodowanie Eliasa gamma jako szczególny przypadek. (Stosowany w H.264 / MPEG-4 AVC )
- System Fibonacciego
- Levenshteina kodowania * • Sposób technika kodowania pierwotny uniwersalnego [1]
- Kodowanie bajtu , gdy stosuje się specjalny wzorzec bitowy (z co najmniej dwóch bitów), aby zaznaczyć koniec kodu - na przykład, jeżeli całkowita jest zakodowany jako sekwencja przekąski reprezentujących cyfry w podstawę 15 , a nie bardziej naturalnej podstawy 16 , to najwyższa wartość dziobanie (to znaczy, sekwencja czterech te binarnie) mogą być stosowane do wskazywania końca całkowitą.
- Ilość zmiennej długości
Są to te, non-uniwersalne:
- Jednoargumentowy kodowanie , który jest stosowany w kodach Elias
- Ryż kodowania , który jest stosowany w FLAC kodeka audio i który ma kod unarny jako szczególny przypadek
- Kod golomba , który ma kodowanie ryż i kod unarny jako szczególne przypadki.
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
- Kompresja danych , Debra A. Lelewer i Daniel S. Hirschberg ( University of California, Irvine )
- Teoria informacji, wnioskowania i algorytmy uczenia się przez David MacKay , ma rozdział dotyczący kodów dla liczb całkowitych, w tym wprowadzenie do kodów Elias.
- Кодирование целых чисел ma głównie papiery anglojęzyczne na uniwersalnych i innych kodów całkowitych.