кодирование | декодирование | сжатие

> elias | delta | optimal <

// Elias Delta — универсальный код, более эффективный, чем Gamma, для больших целых чисел

0 символы
0 символы

>> возможности

[ЭФФЕКТИВНО]

Лучше, чем Gamma

Более эффективно, чем Elias Gamma, для n > 3.

[УНИВЕРСАЛЬНО]

Универсальный код

Работает для любого положительного целого без параметров.

[АСИМПТОТИКА]

Хорошая асимптотика

Использует log₂(n) + 2log₂(log₂(n)) + 1 бит.

>> техническая информация

Как работает Elias Delta

Elias Delta кодирует положительное целое n в три шага: 1) находим L = ⌊log₂(n)⌋ + 1 (длина в битах), 2) кодируем L с помощью Elias Gamma, 3) дописываем последние L−1 бит числа n. Такое двойное логарифмическое увеличение делает Delta более эффективным, чем Gamma, для больших чисел, сохраняя при этом универсальность.

Примеры Delta‑кодирования

n=1: L=1, Gamma(1)='1', bits='', Delta='1'
n=2: L=2, Gamma(2)='010', bits='0', Delta='0100'
n=3: L=2, Gamma(2)='010', bits='1', Delta='0101'
n=4: L=3, Gamma(3)='011', bits='00', Delta='01100'
n=16: L=5, Gamma(5)='00101', bits='0000', Delta='001010000'

Сравнение длины:
n     | Gamma | Delta | Экономия
1     | 1     | 1     | 0
16    | 9     | 9     | 0
100   | 13    | 12    | 1
1000  | 19    | 16    | 3

Зачем использовать Elias Delta

  • Лучше, чем Gamma, при n > 3
  • Не требует параметров
  • Префиксный (однозначно декодируемый) код
  • Подходит для целых чисел среднего размера
  • Промежуточное звено к Elias Omega

>> часто задаваемые вопросы

Что такое кодирование Elias Delta?

Elias Delta — это улучшенный вариант Elias Gamma: сначала длина двоичного представления кодируется с помощью Gamma, затем добавляются оставшиеся биты. Требует примерно log₂(n) + 2log₂(log₂(n)) + 1 бит, поэтому более эффективно для больших целых чисел.

Delta против Gamma?

Gamma использует 2⌊log₂(n)⌋ + 1 бит, а Delta — log₂(n) + 2log₂(log₂(n)) + 1 бит. Delta лучше при n > 3, и выигрыш растёт с увеличением числа. Для очень маленьких значений (1–3) обе схемы сопоставимы.

Когда использовать Delta вместо Gamma?

Используйте Delta, если ваши данные в основном содержат целые числа > 3. Для очень маленьких чисел (1–2) немного лучше может быть Gamma. Для очень больших чисел рассмотрите Elias Omega, который ещё сильнее улучшает Delta.

Delta — лучший код Элиаса?

Delta — золотая середина. Gamma — самый простой, но наименее эффективный. Delta улучшает сжатие. Omega лучше всего подходит для очень больших чисел, но и самый сложный. Выбор зависит от распределения данных и требований к реализации.