Статус документа
Статус документа

ГОСТ Р ИСО/МЭК 8825-3-2016 Информационная технология (ИТ). Правила кодирования АСН.1. Часть 3. Спецификация нотации контроля кодирования (ECN)

Приложение Е
(справочное)

     
Поддержка кодовых последовательностей Хаффмана

Е.1 Кодовые последовательности Хаффмана являются оптимальными кодовыми последовательностями для ограниченного набора целочисленных значений, при условии, что частота, с которой каждое значение будет передаваться, известна.

Е.2 Такие кодовые последовательности являются саморазграничивающими (не нуждаются в детерминанте длины) и используют малое число битов для частых значений и большее число битов для менее частых значений.

Е.3 Имеется много возможных кодов Хаффмана. Например, взяв любое такое кодирование, просто измените все "1" на "0" и наоборот, при этом вы получите другое кодирование Хаффмана (но также эффективное). Можно еще делать более сложные изменения для образования других кодов Хаффмана, которые будут тоже эффективными.

Е.4 Для кодирования Хаффмана, которое будет эффективным для декодеров, желательно, чтобы при кодировании последовательных целочисленных значений в одно и то же число битов такие биты определяли бы последовательные целочисленные значения, рассматривая кодирование как кодирование положительного целого числа.

Е.5 Один из кодов ECN Хаффмана был определен как имеющий это свойство, и был разработан макрос Microsoft Word 97, который будет генерировать синтаксис для отображения "MappinglntToBits" (см. 19.7), который как оптимален, так и прост для декодирования.

Е.6 Доступна версия этого приложения, содержащая кнопку "macro", которая будет выдавать спецификацию целочисленных значений, которые должны кодироваться, и частоты их передачи и будет генерировать в режиме инлайн формальную спецификацию отображения, соответствующую нотации ECN (эта версия настоящего приложения с соответствующим макросом свободно доступна на web-сайте МСЭ http://www.itu.int/ITU-T/publications/recs.html под названием "Х.692 Recommendation", а также на web-сайте ИСО http://www.iso.ch/iso/en/ittf/-PubliclyAvailableStandards/c034390_ISO_8825-3_2003(E)_Annex_E.html).

Е.7 Ниже в тексте содержатся три примера спецификации ECN Хаффмана.

Е.8 В версии с макросом двойной щелчок мышью на:

будет добавлять к тексту спецификации отображения ECN Хаффмана.

Е.9 Пользователь версии с макросом может пожелать изменить спецификацию значений, подлежащих отображению, и частот их передачи, чтобы увидеть кодирования, которые вырабатываются в разных случаях.

Примечание - В версии с макросом, когда спецификации кодирования были созданы, они могут быть удалены, спецификация ECN Хаффмана может быть изменена, а кнопка макроса - щелкнута снова.

Е.10 Неформальный синтаксис для спецификации ECN Хаффмана будет ясен из последующих примеров. Все строчки начинаются указателем комментария АСН.1 ("--").

Е.11 Первая строка (если макрос будет использоваться) должна содержать только "ECN Huffman", перед которым имеются два дефиса и один пробел, а последующие строки не чувствительны к регистру клавиатуры и могут содержать больше или меньше пробелов.

Е.12 Вторая строка необходима, она указывает наименьшее и наибольшее значения, подлежащие отображению. Диапазон (верхняя граница минус нижняя граница) ограничен до 1000, но может содержать отрицательные значения. Нет необходимости отображать все значения в диапазоне.

Е.13 Проценты даются либо для одиночных значений, либо для диапазонов значений. Нет необходимости добавлять проценты вплоть до 100%, но если это не сделано, то выдается предупреждение.

Е.14 Строка "REST" факультативна, она дает частоту передачи для каких-либо явно не перечисленных значений диапазона. Если этой строки нет, то отображенными значениями будут только те, которые явно указаны.

Е.15 Последняя строка обязательна, она должна содержать "End Definition" (прописными или строчными буквами). Формальная спецификация кодирования ECN вводится (макросом) после этой строки.

Е.15.1 Первым примером является:

my-int-encoding1 #My-Special-1 ::=

{ USE #BITS

-- ECN Хаффман
-- ДИАПАЗОН (-1-10)
--1 занимает 20%
-- 0 занимает 15%
-- 1 занимает 25%
-- (3-6) занимают 10%
-- Оставшиеся занимают 2%
-- Определение конца
-- Отображения, созданные "ECN Public Domain

-- Software for Huffman encodings, version 1"
MAPPING TO BITS {

-1 TO '11'B,

0 .. 1 TO '01'B ..'10'B,

2 TO '0000001'В,

3 .. 5 ТО '0001'В .. '0011'B,

6 ТО '00001'В,