Научная статья на тему 'Арифметическое кодирование сообщений с использованием случайных последовательностей'

Арифметическое кодирование сообщений с использованием случайных последовательностей Текст научной статьи по специальности «Математика»

CC BY
928
97
i Надоели баннеры? Вы всегда можете отключить рекламу.
Область наук
Ключевые слова
АРИФМЕТИЧЕСКОЕ КОДИРОВАНИЕ / СЖАТИЕ ДАННЫХ / ЭНТРОПИЯ ИСТОЧНИКА СООБЩЕНИЙ / ЧАСТИЧНО ОПРЕДЕЛЁННЫЕ ДАННЫЕ

Аннотация научной статьи по математике, автор научной работы — Потапов Владимир Николаевич

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

ARITHMETIC CODING OF MESSAGES USING RANDOM SEQUENCE

A modification of the arithmetic coding using a random sequence as a secret key is suggested. The method achieves the theoretical bound of text compression not only for ordinary message but for partially defined data as well

Текст научной работы на тему «Арифметическое кодирование сообщений с использованием случайных последовательностей»

ПРИКЛАДНАЯ ДИСКРЕТНАЯ МАТЕМАТИКА

2008 Прикладная теория кодирования № 2(2)

ПРИКЛАДНАЯ ТЕОРИЯ КОДИРОВАНИЯ

УДК 519.72

АРИФМЕТИЧЕСКОЕ КОДИРОВАНИЕ СООБЩЕНИЙ С ИСПОЛЬЗОВАНИЕМ СЛУЧАЙНЫХ ПОСЛЕДОВАТЕЛЬНОСТЕЙ1

В.Н. Потапов

Институт математики им. С.Л. Соболева СО РАН, г. Новосибирск E-mail: vpotapov@math.nsc.ru

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

Ключевые слова: арифметическое кодирование, сжатие данных, энтропия источника сообщений, частично определённые данные.

Арифметическое кодирование является одним из наиболее известных методов, применяемых для сжатия текстов. В качестве математической модели текста обычно рассматривают множество конечных слов в некотором алфавите A с заданным на множестве слов распределением вероятностей. Кодированием называется инъективное отображение f множества слов в алфавите A в множество двоичных слов. Основными критериями эффективности метода кодирования являются степень сжатия текста и трудоёмкость кодирования и декодирования.

Идея арифметического кодирования, которая будет изложена ниже, была высказана П. Элайесом. Й. Риссанен [1, 2] предложил первый эффективный алгоритм вычисления арифметического кода с почти линейной относительно длины слова трудоёмкостью кодирования и декодирования. В дальнейшем этот метод был развит в многочисленных работах, в частности в [3, 4]. Подробное описание эффективного алгоритма арифметического кодирования имеется в [5].

В настоящей работе предлагается новое воплощение идеи арифметического кодирования с использованием в качестве параметра произвольной случайной последовательности. Новый метод обеспечивает такую же теоретическую степень сжатия сообщений, как и классическая реализация, при этом позволяя использовать произвольную случайную последовательность чисел из интервала (0,1) как секретный ключ. Кроме того, предлагаемый метод позволяет эффективно сжимать не только обычные, но и частично определённые данные, введённые в работах Л.А. Шоломова [6, 7].

Источником сообщений называется пара из конечного алфавита A и распределения вероятностей P на множестве A* конечных слов в алфавите A. Распределение вероятностей должно удовлетворять естественным соотношениям YP(wa)=P(w), где сумма берётся по всем продолжениям wa, aeA, слова weA*, и XP(w) = 1, где сумма берётся по всем словам одинаковой длины. Источник сообщений называется источником без памяти (источником Бернулли), если вероятность буквы в слове не зависит от контекста, т. е. P(ab ..., an) = P(ai)...P(an). Величина I(w)= -log P(w) называется сложностью слова weA относительно источника сообщений (A, P). Из теоремы Шеннона (см., например, [8]) следует, что величина I(w) является длиной двоичного кода слова при оптимальном префиксном кодировании.

Арифметическое кодирование сообщений заключается в следующем. Все слова we An упорядочим лексикографически и для каждого слова определим величины L(w)= XP(x), где сумма берётся по всем словам xeAn, лексикографически меньшим, чем слово w, и R(w) = L(w) + P(w). Разделим полуинтервал [0,1) на полуинтервалы i(w) = [L(w), R(w)). В каждом полуинтервале i(w) длины P(w) найдётся двоично-рациональное число q(w) со знаменателем, не большим, чем 2^ log P(w^, поскольку разность между ближайшими числами с таким знаменателем не превосходит длины полуинтервала. В качестве кода f(w) слова we An рассмотрим

1 Исследование выполнено при финансовой поддержке РФФИ (проект 08-01-00671).

132

В.Н. Потапов

двоичную запись числителя дроби q(w) длиной Г-log P(w)l, в случае необходимости перед двоичной записью числителя следует приписать недостающие нули. Полученное отображение f является инъективным на множестве An по построению, причём для длины кода справедливо неравенство fw)| < I(w) + 1, т. е. длина кода каждого слова является оптимальной с точностью до неизбежного округления к ближайшему целому. Нетрудно видеть, что отображение f будет инъективным и на А*, если каждое продолжение произвольного слова w имеет вероятность меньше, чем P(w)/2. В противном случае отображение f можно преобразовать в инъективное и даже префиксное кодирование без существенного увеличения длины кода, приписывая Cod(n) в качестве префикса к f(w) при weAn, где Cod - префиксное кодирование натуральных чисел, удовлетворяющее свойству |Cod(n)| = log n(1 + o(1)). Примеры таких префиксных кодов натурального ряда имеются, например, в [8, 9].

Предлагается следующая модификация арифметического кодирования. Пусть x1, ..., xn,... - последовательность чисел из интервала (0,1). Рассмотрим слово weAn. Пусть m - номер первого из чисел последовательности, попавших в полуинтервал i(w), т.е. xmei(w). В качестве кода слова w рассмотрим gx(w)=Cod(m). Нетрудно видеть, что отображение gx является инъективным отображением на An.

Теорема 1. Пусть ..., ^т,... - последовательность независимых равномерно распределённых на (0,1)

случайных величин. Тогда E|g^(w)| < I(w)(1+ o(1)) при |w|—

Доказательство. Пусть A с (0, 1). По условию P(^;eA) = P(A) - мера Лебега множества A для всех ie1, ..., n и P(^i, ..., ^n-i£A, ^neA) = (1 - P(A))n-1P(A). Рассмотрим случайную величину m на измеримых подмножествах A с (0, 1), равную номеру первой из случайных £г- , такой, что ^,eA. Очевидно ® -1

E(m) = ^ n( 1 - P(A))n P(A) = 1/P(A). Поскольку log t - выпуклая вверх функция, имеем E(log m) < log(E(m)).

n=1

Пусть A = i(w). Тогда E|g^(w)| = E|Cod(m)| = (1+o(1))E(log m)< (1+o(1)) log (E(m)) = I(w)(1+o(1)) при |w|—«. Теорема доказана.

Так же как известное арифметическое кодирование f предлагаемое кодирование g^ можно преобразовать в префиксное без асимптотического увеличения длины кода. Из теоремы Шеннона следует, что полученная в теореме 1 оценка не улучшаема ни для какого префиксного кодирования, так как средняя длина префиксного кода слова не может быть меньше величины I(w).

Описанная выше модификация арифметического кодирования может быть использована для кодирования частично определённых данных. Задача кодирования частично определённых данных состоит в следующем. Пусть B = 2а - множество подмножеств алфавита A. Слово w = a1...an называется доопределением сообщения W = b1...bn, если atebi для всех i = 1 ...n. Кодированием частично определённых данных называется отображение F из множества B в множество двоичных слов, обладающее свойством: найдётся такая функция (декодирование) F , действующая из множества двоичных слов в множество слов в алфавите A, что F°(F(W)) является доопределением слова WeB*. Таким образом, результатом декодирования будет не исходное частично определённое сообщение, а некоторое его доопределение. Источник частично определённых сообщений без памяти определяется как пара (B, P), где P - некоторое распределение вероятностей на множестве B.

В работе [7] доказан аналог теоремы Шеннона для источников (без памяти) частично определённых сообщений. А именно, доказано, что величина H = min (- ^ P(b)log (^ Q(a), где минимум берётся по все-

\ beB laeb //

возможным распределениям вероятностей Q на алфавите A, является нижней гранью стоимости кодирования, т. е. средней длины кода в расчёте на букву исходного недооределённого сообщения WeB*. Естественно определить сложность beB относительно (B, P) как I(b) = - log ^ Q(a), а сложность I(W) сообщения

aeb

W = b1...bn - как сумму сложностей I(b;).

Пусть Q - распределение вероятностей, на котором достигается минимум H. Для каждого слова weAn определим полуинтервал i(w) в соответствии с распределением Q. Каждому сообщению WeB* поставим в соответствие множество i(W) = и i(w), где объединение берётся по всем словам weA*, доопределяющим сообщение WeB*. Пусть x1, ..., xn,... - последовательность чисел из интервала (0,1). Пусть m - номер первого из чисел последовательности, попавших в множество i(W), т.е. xmei(W). В качестве кода сообщения Wрассмотрим Gx(W) = Cod(m). Нетрудно видеть, что отображение Gxявляется инъективным отображением на Bn.

Теорема 2. Пусть ^,..., ^т,...- последовательность независимых равномерно распределённых на (0,1) случайных величин. Тогда E|G^(W)|< I(W)(1+ o(1)) при W—^.

Доказательство теоремы 2 аналогично доказательству теоремы 1. Из [7] следует, что предложенное кодирование обеспечивает асимптотически минимальную длину кодовых слов.

Арифметическое кодирование сообщений с использованием случайных последовательностей 133

ЛИТЕРАТУРА

1. Rissanen J. Generalized Kraft inequality and arithmetic coding // IBM J. Res. Develop. 1976. V. 20. No. 3. P. 198 - 203.

2. Rissanen J., Langdon G. Universal modelling and coding // IEEE Trans. Inform. Theory. 1981. V. IT-27. No. 1. P. 12 - 23.

3. Рябко Б.Я., Фионов А.Н. Эффективный метод арифметического кодирования для источников с большими алфавитами // Проблемы передачи информации. 1999. Т. 35. Вып. 4. C. 95 - 108.

4. Witten I.H., Neal R.M., Cleary J.G. Arithmetic coding for data compression // Commun. ACM. 1987. V. 30. No. 6. P. 520 -540.

5. Потапов В.Н. Арифметическое кодирование вероятностных источников // Дискретная математика и её приложения: Сб. лекций молодёжных научных школ по дискретной математике и её приложениям II. М.: Изд-во центра прикладных исследований при ММФ МГУ, 2001. С. 59 - 70.

6. Шоломов Л.А. О мере информации нечётких и частично определённых данных // Докл. РАН. 2006. Т. 140. № 1. С. 321 - 325.

7. Шоломов Л.А. Сжатие частично определённой информации // Нелинейная динамика и управление. Вып. 4. М.: Физ-матлит, 2004. С. 385 - 399.

8. Потапов В.Н. Теория информации. Кодирование дискретных вероятностных источников. Новосибирск: Изд. центр НГУ, 1999.

9. Левенштейн В.И. Об избыточности и замедлении разделимого кодирования натуральных чисел // Проблемы кибернетики. М.: Наука, 1968. Вып. 20. С. 173 - 179.

i Надоели баннеры? Вы всегда можете отключить рекламу.