Омега-код Элиаса: различия между версиями
w>AVB м (переименовал «Омега код Элиаса» в «Омега-код Элиаса»: орфография) |
w>AVB (викификация, оформление, орфография) |
||
Строка 1: | Строка 1: | ||
− | '''Омега код Элиаса | + | '''Омега-код Элиаса''' — это универсальный код для кодирования положительных целых чисел, разработанный Питером Элиасом. |
− | Так же как [[ | + | Так же как [[гамма-код Элиаса]] и [[дельта-код Элиаса]], он работает на приписывании к началу целого числа представления его порядка величины в универсальном коде. Однако в отличие от тех двух кодов, омега-код Элиаса рекурсивно кодирует приписываемое в начало, именно поэтому он также известен, как Рекурсивный код Элиаса. |
Чтобы закодировать число: | Чтобы закодировать число: | ||
− | # Перепишите группу нолей в конец представления. | + | # Перепишите группу нолей в конец представления. |
− | # Если число, которое требуется закодировать, | + | # Если число, которое требуется закодировать, — единица, остановитесь; если нет, добавьте двоичное представление числа в качестве группы в начало представления. |
− | # Повторите предыдущий шаг, с числом только что написанных цифр, минус одго, как с новым числом, которое следует закодировать. | + | # Повторите предыдущий шаг, с числом только что написанных цифр, минус одго, как с новым числом, которое следует закодировать. |
− | Первые несколько кодов показаны ниже. Включая так называемое предполагаемое распределение, описывающее распределение значений, для которых это кодирование выдает в результате код минимального размера | + | Первые несколько кодов показаны ниже. Включая так называемое предполагаемое распределение, описывающее распределение значений, для которых это кодирование выдает в результате код минимального размера (см.: [[универсальный код]]). |
Начало кодирования: | Начало кодирования: | ||
Строка 30: | Строка 30: | ||
16 10 100 10000 0 1/2048 | 16 10 100 10000 0 1/2048 | ||
17 10 100 10001 0 1/2048 | 17 10 100 10001 0 1/2048 | ||
− | |||
− | |||
− | |||
… | … | ||
</source> | </source> | ||
− | Чтобы декодировать число в | + | Чтобы декодировать число в омега-коде Элиаса: |
− | # | + | # Начать с переменной N, установленной в значение 1. |
− | # | + | # Считать первую «группу», следующую за остальными N разрядами, которая будет состоять либо из «0», либо из «1». Если она состоит из «0», это значит, что значение целого числа равно 1; если она начинается с «1», тогда N получает значение группы, которое интерпретируется как двоичное число. |
− | # | + | # Считывать каждую следующую группу; она будет состоять либо из «0», либо из «1», следующих за остальными N разрядами. Если группа равна «0», это значит, что значение целого числа равно N; если она начинается с «1», то N приобреатет значение группы, интерпретируемой как двоичное число. |
+ | Омега-кодирование используется в приложениях, где самое большое кодируемое значение неизвестно заранее, или для сжатия данных, в которых маленькие значения встречаются намного чаще, чем большие. | ||
− | + | == См. также == | |
+ | * [[Гамма-код Элиаса]] | ||
+ | * [[Дельта-код Элиаса]] | ||
− | + | [[Категория:Алгоритмы сжатия без потерь]] | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
[[en:Elias_omega_coding]] | [[en:Elias_omega_coding]] | ||
Строка 63: | Строка 50: | ||
[[ko:엘리어스 오메가 부호]] | [[ko:엘리어스 오메가 부호]] | ||
− | |||
{{изолированная статья}} | {{изолированная статья}} |
Версия от 18:14, 12 мая 2009
Омега-код Элиаса — это универсальный код для кодирования положительных целых чисел, разработанный Питером Элиасом.
Так же как гамма-код Элиаса и дельта-код Элиаса, он работает на приписывании к началу целого числа представления его порядка величины в универсальном коде. Однако в отличие от тех двух кодов, омега-код Элиаса рекурсивно кодирует приписываемое в начало, именно поэтому он также известен, как Рекурсивный код Элиаса.
Чтобы закодировать число:
- Перепишите группу нолей в конец представления.
- Если число, которое требуется закодировать, — единица, остановитесь; если нет, добавьте двоичное представление числа в качестве группы в начало представления.
- Повторите предыдущий шаг, с числом только что написанных цифр, минус одго, как с новым числом, которое следует закодировать.
Первые несколько кодов показаны ниже. Включая так называемое предполагаемое распределение, описывающее распределение значений, для которых это кодирование выдает в результате код минимального размера (см.: универсальный код).
Начало кодирования:
Значение Код Предполагаемое распределение
1 0 1/2
2 10 0 1/8
3 11 0 1/8
4 10 100 0 1/64
5 10 101 0 1/64
6 10 110 0 1/64
7 10 111 0 1/64
8 11 1000 0 1/128
9 11 1001 0 1/128
10 11 1010 0 1/128
11 11 1011 0 1/128
12 11 1100 0 1/128
13 11 1101 0 1/128
14 11 1110 0 1/128
15 11 1111 0 1/128
16 10 100 10000 0 1/2048
17 10 100 10001 0 1/2048
…
Чтобы декодировать число в омега-коде Элиаса:
- Начать с переменной N, установленной в значение 1.
- Считать первую «группу», следующую за остальными N разрядами, которая будет состоять либо из «0», либо из «1». Если она состоит из «0», это значит, что значение целого числа равно 1; если она начинается с «1», тогда N получает значение группы, которое интерпретируется как двоичное число.
- Считывать каждую следующую группу; она будет состоять либо из «0», либо из «1», следующих за остальными N разрядами. Если группа равна «0», это значит, что значение целого числа равно N; если она начинается с «1», то N приобреатет значение группы, интерпретируемой как двоичное число.
Омега-кодирование используется в приложениях, где самое большое кодируемое значение неизвестно заранее, или для сжатия данных, в которых маленькие значения встречаются намного чаще, чем большие.
См. также
en:Elias_omega_coding ja:オメガ符号 ko:엘리어스 오메가 부호
![]() |
Параметр text не задан |
Ошибка Lua в Модуль:Autosorting на строке 85: attempt to index field 'wikibase' (a nil value).Ошибка Lua в Модуль:Autosorting на строке 85: attempt to index field 'wikibase' (a nil value).