Изменения

31 байт добавлено ,  16 лет назад
нет описания правки
Строка 1: Строка 1:  
'''Омега-код Элиаса''' — это универсальный код для кодирования положительных целых чисел, разработанный Питером Элиасом.
 
'''Омега-код Элиаса''' — это универсальный код для кодирования положительных целых чисел, разработанный Питером Элиасом.
   −
Так же как [[гамма-код Элиаса]] и [[дельта-код Элиаса]], он работает на приписывании к началу целого числа представления его порядка величины в универсальном коде. Однако в отличие от тех двух кодов, омега-код Элиаса рекурсивно кодирует приписываемое в начало, именно поэтому он также известен, как Рекурсивный код Элиаса.
+
Так же как [[гамма-код Элиаса]] и [[дельта-код Элиаса]], он работает на приписывании к началу целого числа представления его порядка величины в универсальном коде. Однако в отличие от двух указанных кодов, омега-код Элиаса рекурсивно кодирует префикс, именно поэтому он также известен, как '''рекурсивный код Элиаса'''.
    
Чтобы закодировать число:
 
Чтобы закодировать число:
Строка 12: Строка 12:  
Начало кодирования:
 
Начало кодирования:
 
<source lang="html4strict">
 
<source lang="html4strict">
Значение Код         Предполагаемое распределение
+
Значение Код         Предполагаемая вероятность
 
1         0         1/2
 
1         0         1/2
 
2         10 0         1/8
 
2         10 0         1/8
Строка 33: Строка 33:  
</source>
 
</source>
   −
Чтобы декодировать число в омега-коде Элиаса:
+
Алгоритм декодирования числа, представленного в омега-коде Элиаса:
# Начать с переменной N, установленной в значение 1.
+
 
# Считать первую «группу», следующую за остальными N разрядами, которая будет состоять либо из «0», либо из «1». Если она состоит из «0», это значит, что значение целого числа равно 1; если она начинается с «1», тогда N получает значение группы, которое интерпретируется как двоичное число.
+
# Начать с переменной N, установленной в значение 1.
# Считывать каждую следующую группу; она будет состоять либо из «0», либо из «1», следующих за остальными N разрядами. Если группа равна «0», это значит, что значение целого числа равно N; если она начинается с «1», то N приобреатет значение группы, интерпретируемой как двоичное число.
+
# Считать первую «группу», следующую за остальными N разрядами, которая будет состоять либо из «0», либо из «1». Если она состоит из «0», это значит, что значение целого числа равно 1; если она начинается с «1», тогда N получает значение группы, которое интерпретируется как двоичное число.
 +
# Считывать каждую следующую группу; она будет состоять либо из «0», либо из «1», следующих за остальными N разрядами. Если группа равна «0», это значит, что значение целого числа равно N; если она начинается с «1», то N приобреатет значение группы, интерпретируемой как двоичное число.
    
Омега-кодирование используется в приложениях, где самое большое кодируемое значение неизвестно заранее, или для сжатия данных, в которых маленькие значения встречаются намного чаще, чем большие.
 
Омега-кодирование используется в приложениях, где самое большое кодируемое значение неизвестно заранее, или для сжатия данных, в которых маленькие значения встречаются намного чаще, чем большие.
Анонимный участник