Омега-код Элиаса: различия между версиями
w>LucienBOT м (робот добавил: fr:Codage omega) |
In.wiki (комментарии | вклад) м (18 версий импортировано: Импорт из Википедии) |
||
(не показано 5 промежуточных версий 5 участников) | |||
Строка 6: | Строка 6: | ||
# Переписать группу нолей в конец представления. | # Переписать группу нолей в конец представления. | ||
# Если число, которое требуется закодировать, — единица, стоп; если нет, добавить двоичное представление числа в качестве группы в начало представления. | # Если число, которое требуется закодировать, — единица, стоп; если нет, добавить двоичное представление числа в качестве группы в начало представления. | ||
− | # Повторить предыдущий шаг, с | + | # Повторить предыдущий шаг, с количеством только что записанных цифр(бит), минус один, как с новым числом, которое следует закодировать. |
Первые несколько кодов показаны ниже. Также дано так называемое предполагаемое распределение, описывающее распределение значений, для которых это кодирование выдаёт в результате код минимального размера (см.: [[универсальный код]]). | Первые несколько кодов показаны ниже. Также дано так называемое предполагаемое распределение, описывающее распределение значений, для которых это кодирование выдаёт в результате код минимального размера (см.: [[универсальный код]]). | ||
Строка 55: | Строка 55: | ||
# Начать с переменной N, установленной в значение 1. | # Начать с переменной N, установленной в значение 1. | ||
# Считать первую «группу», следующую за остальными N разрядами, которая будет состоять либо из «0», либо из «1». Если она состоит из «0», это значит, что значение целого числа равно 1; если она начинается с «1», тогда N получает значение группы, которое интерпретируется как двоичное число. | # Считать первую «группу», следующую за остальными N разрядами, которая будет состоять либо из «0», либо из «1». Если она состоит из «0», это значит, что значение целого числа равно 1; если она начинается с «1», тогда N получает значение группы, которое интерпретируется как двоичное число. | ||
− | # Считывать каждую следующую группу; она будет состоять либо из «0», либо из «1», следующих за остальными N разрядами. Если группа равна «0», это значит, что значение целого числа равно N; если она начинается с «1», то N | + | # Считывать каждую следующую группу; она будет состоять либо из «0», либо из «1», следующих за остальными N разрядами. Если группа равна «0», это значит, что значение целого числа равно N; если она начинается с «1», то N приобретает значение группы, интерпретируемой как двоичное число. |
Омега-кодирование используется в приложениях, где самое большое кодируемое значение неизвестно заранее, или для сжатия данных, в которых маленькие значения встречаются намного чаще, чем большие. | Омега-кодирование используется в приложениях, где самое большое кодируемое значение неизвестно заранее, или для сжатия данных, в которых маленькие значения встречаются намного чаще, чем большие. | ||
Строка 63: | Строка 63: | ||
* [[Дельта-код Элиаса]] | * [[Дельта-код Элиаса]] | ||
+ | == Литература == | ||
+ | * {{статья |author-first=Peter |author-last=Elias |заглавие=Universal codeword sets and representations of the integers |издание={{Нп3|IEEE Transactions on Information Theory}} |том=21 |номер=2 |страницы=194—203 |ссылка=http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1055349 |doi=10.1109/tit.1975.1055349 |язык=en |тип=journal |месяц=3 |год=1975}} | ||
[[Категория:Алгоритмы сжатия без потерь]] | [[Категория:Алгоритмы сжатия без потерь]] | ||
− | |||
− | |||
− | |||
− | |||
− |
Текущая версия от 00:51, 20 августа 2025
Омега-код Элиаса — это универсальный код для кодирования положительных целых чисел, разработанный Питером Элиасом.
Так же, как гамма- и дельта-код Элиаса, он приписывает к началу целого числа порядок его величины в универсальном коде. Однако, в отличие от двух других указанных кодов, омега-код рекурсивно кодирует префикс, именно поэтому он также известен, как рекурсивный код Элиаса.
Чтобы закодировать число:
- Переписать группу нолей в конец представления.
- Если число, которое требуется закодировать, — единица, стоп; если нет, добавить двоичное представление числа в качестве группы в начало представления.
- Повторить предыдущий шаг, с количеством только что записанных цифр(бит), минус один, как с новым числом, которое следует закодировать.
Первые несколько кодов показаны ниже. Также дано так называемое предполагаемое распределение, описывающее распределение значений, для которых это кодирование выдаёт в результате код минимального размера (см.: универсальный код).
Начало кодирования:
Число | Кодирование | Предполагаемая вероятность |
---|---|---|
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 приобретает значение группы, интерпретируемой как двоичное число.
Омега-кодирование используется в приложениях, где самое большое кодируемое значение неизвестно заранее, или для сжатия данных, в которых маленькие значения встречаются намного чаще, чем большие.
См. такжеПравить
ЛитератураПравить
- Universal codeword sets and representations of the integers (англ.) // IEEE Transactions on Information Theory[англ.] : journal. — 1975. — March (vol. 21, no. 2). — P. 194—203. — doi:10.1109/tit.1975.1055349.