Kodowanie Omega

Kodujący omega lub kodujący omega Elias jest kodowanie entropii wynaleziony przez Peter Elias i stosowane głównie w kompresji danych .

Wytworzony kod omega jest prefiksem i kodem uniwersalnym .

Zasada

Podobnie jak kodowanie gamma i kodowanie delta, kodowanie omega umożliwia kodowanie wszystkich naturalnych liczb całkowitych, z wyjątkiem zera, bez konieczności wcześniejszej znajomości zakresu wartości do zakodowania (w przeciwieństwie do, na przykład, z ustalonym rozmiarem) kodowanie binarne , które umożliwia kodowanie tylko liczb mniejszych niż ustalona z góry górna granica).

Kodowanie

W tym celu kodowanie omega poprzedza binarną reprezentację liczby przez jej długość (w liczbie bitów), podobnie jak kodowanie gamma i delta. Ponieważ zakres wartości, które można przyjąć za pomocą tej długości, również nie jest z góry znany, należy go zakodować za pomocą kodu prefiksu. W przeciwieństwie do kodowania gamma, które wykorzystuje do tego celu jednoargumentowe kodowanie , lub kodowania delta, które wykorzystuje kodowanie gamma, kodowanie omega wykorzystuje kodowanie omega. To kodowanie jest zatem kodowaniem rekurencyjnym .

W praktyce każda reprezentacja binarna jest poprzedzona jej długością minus jeden w kodowaniu omega (ponieważ zerowa długość nie ma sensu), a binarna reprezentacja 1 (odpowiadająca liczbie 1 lub długości 2) jest pomijana, ponieważ niejawna (1 jest więc przypadkiem zatrzymania rekursji). Po całym kodzie omega występuje 0 działające jako separator, wskazujące, że reprezentacja binarna, która go poprzedza, jest liczbą zakodowaną, a nie długością (nie ma dwuznaczności, ponieważ wszystkie reprezentacje binarne zaczynają się od 1).

Rozszyfrowanie

Na początku dekodowania uważa się, że niejawne 1 zostało już zdekodowane, odpowiadające albo liczbie 1, albo długości 2. Na każdym etapie dekodowania rozważany jest następujący pierwszy bit: jeśli jest to 0, wskazuje koniec kodu omega, to znaczy, że ostatnią zdekodowaną wartością była zakodowana liczba (czyli jeden, pierwszy raz); jeśli jest 1, wskazuje początek następnej reprezentacji binarnej, której długość jest ostatnią zdekodowaną wartością plus jeden (czyli dwa, za pierwszym razem).

Kodowanie względnych liczb całkowitych

Podobnie jak w przypadku kodowania gamma i kodowania delta, możliwe jest kodowanie względnych liczb całkowitych z kodowaniem omega, wykorzystując bijection w celu przekształcenia liczb ujemnych lub zerowych w liczby ściśle dodatnie przed faktycznym kodowaniem. Po zdekodowaniu należy wykonać operację odwrotną, aby znaleźć oryginalne względne liczby całkowite.

Długość kodu

Przykłady

Reprezentacja pierwszych ściśle dodatnich liczb naturalnych z kodowaniem omega
Dziesiętny Dwójkowy Kod Omega Równoważny kod delta Równoważny kod gamma
1 1 0 0 0
2 10 10 0 100 0 10 0
3 11 11 0 100 1 10 1
4 100 10 100 0 101 00 110 00
5 101 10 101 0 101 01 110 01

Zobacz też

Powiązane artykuły