Название бинарной схемы кодирования для целочисленных чисел

cs.stackexchange https://cs.stackexchange.com/questions/122137

Вопрос

Я когда-то обнаружил, что в Wikipedia приятная техника кодирования $ k \ in (2 ^ {n-1}, 2 ^ n) $ равномерно распределенные целыми числами сМенее тогда $ \ log_2n $ Средние биты / символ, благодаря простому вычислительному коду переменной длины.В основном он использовал $ \ log_2n $ для некоторых символов и $ \ log_2n - 1 $ для некоторых других.

К сожалению, все мои густоты не подвели меня.Я вспоминаю что-то похожее на «Длина переменной длины», но я продолжаю заканчиваться на VLQ, которые являются разным зверям.Так как я знаю, что ваша память лучше, чем моя, вы можете мне помочь?

Это было полезно?

Решение 2

Техника идея идеально описана в youval Finkeus Ответ.Даже если немного по-другому, это называется Усеченная двоичная кодировка в Википедии.Я не смог найти оригинальный источник для этого, кроме упоминания в Патент , В этом Книга или в этом Google API

Другие советы

Предположим, $ k= 2 ^ {n-1} + t $ , где $ 0 \ leq t <2 ^ {N-1} $ . Используйте следующее для кодирования $ Z \ in \ {0, \ ldots, k-1 \} $ :

    .
  • Если $ z <2 ^ {n-1} -T $ затем кодирует $ z $ В качестве собственного $ (N-1) $ кодировка -bit.
  • в противном случае, напишите $ Z= 2 ^ {N-1} -t + 2 \ Delta + \ epsilon $ , где $ \ delta \ in \ {0, \ ldots, t-1 \} $ и $ \ epsilon \ in \ {0,1 \} $ Кодировать $ Z $ на $ (N-1) $ -BIT CHARDING of $ 2 ^ {n - 1} -t + \ delta $ , а затем $ \ epsilon $ .

Вот пример. Пусть $ k= 11= 2 ^ 3 + 3 $ . Кодировка выглядит следующим образом:

    .
  • $ 0 \ 000 $ .
  • $ 1 001 $ .
  • $ 2 \ до 010 $ .
  • $ 3 \ до 011 $ .
  • $ 4 \ до 100 $ .
  • 5 \ до 1010 $ .
  • $ 6 \ до 1011 $ .
  • $ 7 \ до 1100 $ .
  • $ 8 \ до 1101 $ .
  • 9 \ до 1110 $ .
  • $ 10 \ до 1111 $ .
Лицензировано под: CC-BY-SA с атрибуция
Не связан с cs.stackexchange
scroll top