Коды Голомба: различия между версиями

Материал из in.wiki
Перейти к навигации Перейти к поиску
(Небольшое уточнение (Arbuzello))
w>Arbuzello
(Уточнил, добавил ссылки.)
Строка 24: Строка 24:
  
 
где <math>m</math> — целое положительное число. Поскольку для любого <math>p</math> всегда найдётся не более одного значения <math>m</math>, удовлетворяющего приведённому выше неравенству, предложенная С. Голомбом процедура кодирования геометрического источника оказывается оптимальной для любого значения <math>p</math>.
 
где <math>m</math> — целое положительное число. Поскольку для любого <math>p</math> всегда найдётся не более одного значения <math>m</math>, удовлетворяющего приведённому выше неравенству, предложенная С. Голомбом процедура кодирования геометрического источника оказывается оптимальной для любого значения <math>p</math>.
 +
 +
Чрезвычайно простая в реализации, но не всегда оптимальная разновидность кода Голомба в случае, когда <math>m</math> является степенью 2, называется кодом Райса.
  
 
== Пример ==
 
== Пример ==
Строка 48: Строка 50:
  
 
== Ссылки ==
 
== Ссылки ==
* [http://urchin.earth.li/~twic/Golombs_Original_Paper/Golomb1966.djvu Golomb S.W. Run-length encodings //IEEE Trans. Inf. Theor.–1996.- IT-12, No 3. – pp. 399-401]
+
* [http://urchin.earth.li/~twic/Golombs_Original_Paper/Golomb1966.djvu S. W. Golomb «Run-length encodings» //IEEE Trans. Inf. Theor.–1996.- IT-12, No 3. – pp. 399-401]
* [http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?reload=true&arnumber=1055357 Gallager R.G., Van Voorhis D.C. Optimal source codes for geometrically distributed integer alphabets //IEEE Trans. Inf. Theor.–1975.-IT-21, No 2. – pp. 228-230]
+
* [http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?reload=true&arnumber=1055357 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]
 +
* [http://dx.doi.org/10.1109/TCOM.1971.1090789 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]
 +
 
  
 
{{методы сжатия}}
 
{{методы сжатия}}

Версия от 23:26, 8 сентября 2010

Коды Голомба — семейство энтропийных кодов. Под кодом Голомба может подразумеваться также один из представителей этого семейства.

Рассмотрим источник, независимым образом порождающий неотрицательные числа i i с вероятностями P ( i ) = ( 1 p ) p i P(i) = (1-p)p^{i} , где p p — произвольное положительное число, не превосходящее 1, т.е. источник, описываемый геометрическим распределением. Если при этом целое положительное число m m таково, что p m = 1 2 , p^m = \frac 1 2 ,


то оптимальным посимвольным кодом (т.е. кодом, ставящим в соответствие каждому кодируемому символу определённое кодовое слово) для такого источника будет построенный в соответствии с предложенной С. Голомбом процедурой, согласно которой для любого кодируемого числа n n при известном m m кодовое слово образуют унарная запись числа q = [ n m ] q = \left[ \frac{n}{m}\right] и кодированный в соответствии с описанной ниже процедурой остаток r r от деления n m \frac{n}{m} :


  1. Если m m является степенью числа 2, то код остатка представляет собой двоичную запись числа r r , размещённую в log 2 ( m ) \log_2(m) битах.
  2. Если m m не является степенью 2, вычисляется число b = log 2 ( m ) b = \lceil\log_2(m)\rceil . Далее:
Если r < 2 b m r < 2^b-m , код остатка представляет собой двоичную запись числа r r , размещённую в b 1 b-1 битах,
иначе остаток r r кодируется двоичной записью числа r + 2 b m r+2^b-m , размещённой в b b битах.


Позже Р. Галлагером и Д. Ван Вурхисом было показано, что предложенный Голомбом код оптимален не только для дискретного набора значений p p , удовлетворяющих приведённому выше критерию, но и для любых p p , для которых справедливо двойное неравенство p m + p m + 1 1 < p m + p m 1 , p^{m} + p^{m+1} \le 1 < p^{m} + p^{m-1},


где m m — целое положительное число. Поскольку для любого p p всегда найдётся не более одного значения m m , удовлетворяющего приведённому выше неравенству, предложенная С. Голомбом процедура кодирования геометрического источника оказывается оптимальной для любого значения p p .

Чрезвычайно простая в реализации, но не всегда оптимальная разновидность кода Голомба в случае, когда m m является степенью 2, называется кодом Райса.

Пример

Пусть p = 0.85 p = 0.85 , n = 13 n = 13 .

Удовлетворяющее двойному неравенству Галлагера - Ван Вурхиса значение m = 4 m = 4 .


частное q = [ n m ] = [ 13 4 ] = 3 , q = \left[ \frac{n}{m} \right] = \left[\frac{13}{4} \right] = 3 ,

унарный код 1110 1110 ,


остаток r = 1 , r = 1,

код 01 01 .


Результирующее кодовое слово 1110 | 01 1110|01

Ссылки


Ошибка 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