Коды Голомба: различия между версиями
(→Пример) |
|||
Строка 29: | Строка 29: | ||
== Пример == | == Пример == | ||
− | Пусть <math>p = 0.85</math>, <math>n = 13</math>. | + | Пусть <math>p = 0.85</math>, требуется закодировать число <math>n = 13</math>. |
Удовлетворяющее двойному неравенству Галлагера - Ван Вурхиса значение <math>m = 4</math>. | Удовлетворяющее двойному неравенству Галлагера - Ван Вурхиса значение <math>m = 4</math>. | ||
− | + | В соответствии с описанной выше процедурой кодирования кодовое слово, соответствующее кодируемому числу 13, строится как унарная запись частного от деления n/m: | |
− | |||
: <math> q = \left[ \frac{n}{m} \right] = \left[\frac{13}{4} \right] = 3 </math>, | : <math> q = \left[ \frac{n}{m} \right] = \left[\frac{13}{4} \right] = 3 </math>, | ||
− | унарный код <math> | + | (унарный код <math> 0001 </math>, т.е. q нулей с завершающей единицей), |
+ | и кодированного остатка | ||
− | |||
: <math>r = 1</math>, | : <math>r = 1</math>, | ||
− | код <math> 01 </math>. | + | (код <math> 01 </math>, т.е. собственно остаток, записанный в <math>\lceil\log_2(m)\rceil</math> битах). |
− | |||
Результирующее кодовое слово | Результирующее кодовое слово | ||
− | : <math> | + | : <math> 0001|01 </math> |
== Ссылки == | == Ссылки == |
Версия от 17:53, 15 апреля 2011
Коды Голомба — семейство энтропийных кодов. Под кодом Голомба может подразумеваться также один из представителей этого семейства.
Рассмотрим источник, независимым образом порождающий целые неотрицательные числа с вероятностями , где — произвольное положительное число, не превосходящее 1, т.е. источник, описываемый геометрическим распределением. Если при этом целое положительное число таково, что
то оптимальным посимвольным кодом (т.е. кодом, ставящим в соответствие каждому кодируемому символу определённое кодовое слово) для такого источника будет построенный в соответствии с предложенной С. Голомбом процедурой, согласно которой для любого кодируемого числа при известном кодовое слово образуют унарная запись числа и кодированный в соответствии с описанной ниже процедурой остаток от деления :
- Если является степенью числа 2, то код остатка представляет собой двоичную запись числа , размещённую в битах.
- Если не является степенью 2, вычисляется число . Далее:
- Если , код остатка представляет собой двоичную запись числа , размещённую в битах,
- иначе остаток кодируется двоичной записью числа , размещённой в битах.
Позже Р. Галлагером и Д. Ван Вурхисом было показано, что предложенный Голомбом код оптимален не только для дискретного набора значений , удовлетворяющих приведённому выше критерию, но и для любых , для которых справедливо двойное неравенство
где — целое положительное число. Поскольку для любого всегда найдётся не более одного значения , удовлетворяющего приведённому выше неравенству, предложенная С. Голомбом процедура кодирования геометрического источника оказывается оптимальной для любого значения .
Чрезвычайно простая в реализации, но не всегда оптимальная разновидность кода Голомба в случае, когда является степенью 2, называется кодом Райса.
Пример
Пусть , требуется закодировать число .
Удовлетворяющее двойному неравенству Галлагера - Ван Вурхиса значение .
В соответствии с описанной выше процедурой кодирования кодовое слово, соответствующее кодируемому числу 13, строится как унарная запись частного от деления n/m:
(унарный код , т.е. q нулей с завершающей единицей),
и кодированного остатка
(код , т.е. собственно остаток, записанный в битах).
Результирующее кодовое слово
Ссылки
- S. W. Golomb «Run-length encodings» //IEEE Trans. Inf. Theor.–1996.- IT-12, No 3. – pp. 399-401
- R. G. Gallager , D. C. Van Voorhis «Optimal source codes for geometrically distributed integer alphabets» //IEEE Trans. Inf. Theor.–1975.-IT-21, No 2. – pp. 228-230
- R. F. Rice, J. R. Plaunt «Adaptive Variable-Length Coding for Efficient Compression of Spacecraft Television Data» //IEEE Trans. on Commun. –1971.– vol. 16(9), – pp. 889-897
Ошибка Lua в Модуль:Navbox на строке 353: attempt to index local 'listText' (a nil value).
de:Golomb-Code en:Golomb coding es:Codificación Golomb-Rice fr:Codage de Golomb ja:ゴロム符号 pl:Kod Golomba pt:Códigos de Golomb