Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Раздел III. Теор.информации и кодирования Редак...doc
Скачиваний:
15
Добавлен:
16.11.2019
Размер:
1.46 Mб
Скачать

2. Коды источника. Скорость кодирования, скорость создания информации; теоремы Шеннона об источниках; префиксные коды, неравенство Крафта; коды Шеннона – Фено, оптимальные коды Хаффмана.

Обозначим через A некоторое множество, состоящее из D, D>1, элементов: . Назовем его алфавитом кода источника. Элементы алфавита A будем называть кодовыми символами. Последовательности кодовых символов будем называть кодовыми словами, а любое семейство кодовых слов – кодом над алфавитом A. Код называется равномерным, если все слова имеют одинаковую длину. Количество различных слов неравномерного кода с max длиной кодовых слов m равно M < D(Dm-1)/(D-1), для равномерного кода число кодовых слов M <Dm.

Кодированием сообщений ансамбля X посредством кода называется отображение (необязательно взаимно однозначное) множества сообщений во множество кодовых слов.

P.S. Конечное множество X вместе с заданным на нем распределением вероятностей p(x), называется дискретным ансамблем сообщений и обозн. {X, p(x)}.

Код называется равномерным, если кодовые слова имеют одинаковую длину и не равномерным в противном случае.

Основная характеристика кода: количество кодовых символов приходящихся на 1 символ сообщения.

При неравномерном кодировании можем говорить только о среднем числе символов

- среднее число кодовых символов, xi->ci, |ci| = mi

При кодировании блоками длиной n скорость кодирования:

Число

Скорость кодирования - среднее количество кодовых символов приходящихся на 1 символ сообщения.

Число называется средней скоростью неравномерного кодирования посредством двоичного кода при разбиении последовательности сообщений на блоки длины n.

Скорость создания информации источником при неравномерном кодировании называется наименьшее число H такое, что для любого R>H найдется n (длина кодируемых сообщений) и неравномерный код со средней скоростью кодирования R, который допускает однозначное декодирование.

Теоремы Шеннона об источниках

Пусть источник (X, p(x)), X={x1,...,xn} - дискретный источник без памяти, т.е.

1 Теорема Шеннона(обратная теорема кодирования):

для любого двоичного кода при кодировании сообщений длиной n выполняется неравенство

R>= H(X)

Доказательство:

, пользовались неравенством . Доказано.

Теорема:

для любого двоичного кода со свойствами однозначного декодирования выполняется неравенство

Доказательство:

mk - длина кодового слова соответствующая символу xk

использовали, что log(c)=ln(c)*log(e), ln(x)<=x-1 при x>0

Докажем, что для любого бинарного кода со свойствами однозначного декодирования выполняется

где As - число последовательностей кодовых слов общей длины S. Если xk->Uk ,| Uk | = mk , то последовательности Uk1, Uk2,..., UkL->xk1,..., xkL, поэтому (макс число последовательностей из 0 и 1 длины S)

, но mL растет медленее суммы, поэтому неравенство не может выполняться если в сумме основание >= 1 --> оно <=1, то есть . Доказано.

2 Теорема Шеннона(прямая теорема кодирования):

неравномерный двоичный код со свойством однозначного декодирования кодирующей последовательности длины n

Доказательство:

, , R<=H(X)+E

по вспомогательной теореме . Доказано.

Теорема:

Существует двоичный неравномерный код, для которого выполняется неравенство

Доказательство:

-инофрмация элем. сообщения хi

- наименьшее число для которого выполняется неравенство

Ясно, что

Значит по теореме Крафта существует двоичный префиксный код с длинами кодовых слов m1...mn,распишем среднюю длину кодовых слов

Доказано.

Коды, в которых ни одно слово не является началом другого называют префиксными. Префиксные коды являются кодами со свойством однозначного декодирования.

Есть теорема, доказывающая, что скорость кодирования при неравномерном кодировании, как и при равномерном, равна энтропии источника на элементарное сообщение.

Т еорема (Неравенство Крафта): Для того, чтобы существовал двоичный префиксный код с длинами кодовых слов m1, m2, …,mM необходимо и достаточно, чтобы выполнялось неравенство (1).

Доказательство:

Необходимость. Заметим, что максимальное число узлов на каждом ярусе j равно D j. Пусть m = max {m1,…,mM}. Рассмотрим концевой узел порядка mi. Этот узел отстоит от яруса m на m-mi ребер и, следовательно, исключается из яруса возможных узлов. Так как количество узлов, исключаемых из яруса m всеми концевыми узлами порядков m1,…,mM, не может превосходить максимального количества узлов на этом ярусе , то . После деления обеих частей неравенства на Dm получаем (1).

Достаточность. При выполнении (1) дерево с концевыми узлами порядков m1,…,mM может быть построено. Предположим, что среди этого набора порядков числа s встречается ровно раз, s = 1,…,m. Тогда . Перепишем это неравенство следующим образом . Тогда (2). Применим метод мат.индукции. Дерево, содержащее концевых узлов порядка 1 может быть построено. Из (1) следует, что , то есть . Так как максимально возможное количество концевых узлов порядка 1 равно 2 и , то дерево с концевыми узлами порядка 1 может быть построено.

Предположим, что дерево с концевыми узлами порядка s, s = 1,…,i-1, может быть построено. Докажем, что к этому дереву можно добавить еще концевых узлов порядка i. Если верно предположение индукции, то из яруса порядка i исключается возможных концевых узлов, каждый узел из яруса s исключается из яруса i (2i-s возможных узлов). Так как максимальное количество возможных концевых узлов на этом уровне равно 2i, то есть количество свободных узлов на ярусе i. Из (2) следует, что количество узлов на ярусе i, которые должны быть добавлены, не превосходит количество свободных узлов. Следовательно, к дереву с концевыми узлами порядка s, s = 1,…,i-1, могут быть добавлены концевых узлов порядка i.

Теорема доказана.

Примером неравномерного кода является код Шеннона - Фено. При кодировании по методу Шеннона - Фено алфавит, расположенный в порядке убывания вероятностей появления символов, разбивается на две группы таким образом, чтобы сумма вероятностей появления символов в каждой группе была приблизительно одинаковой. Каждая группа в свою очередь также разбивается на две по такому же принципу. Операция продолжается до тех пор, пока в каждой группе не останется по одному символу. Каждый символ обозначается двоичным числом, последовательные цифры которого (нули и единицы) показывают, в какую группу попал данный символ при очередном разбиении. В коде Шеннона–Фено часто встречающиеся буквы кодируются относительно короткими двоичными символами, а редкие – длинными.

Кодирование Шеннона—Фено является достаточно старым методом сжатия, и на сегодняшний день оно не представляет особого практического интереса. В большинстве случаев, длина последовательности, сжатой по данному методу, равна длине сжатой последовательности с использованием кодирования Хаффмана. Но на некоторых последовательностях могут сформироваться неоптимальные коды Шеннона—Фено, поэтому более эффективным считается сжатие методом Хаффмана.

Оптимальным кодом называется код, средняя длина кодовых слов равна минимально возможной. В простейшем случае, когда вероятность элементарных сообщений источника {X, p(x)}, X={x1,…,xM} являются целыми отрицательными степенями двойки , i=1,…,M, любой двоичный код со свойствами однозначного декодирования является оптимальным, так как средняя длина кодовых слов равна (по безымянным th выше). В таком коде сообщению xi ставиться в соответствие слово длины mi. Всякое дерево с набором концевых вершин порядков m1,…,mM и указанным правилом дает оптимальный код. Методом построения такого дерева является, например, код Шеннона-Фено.

Рассмотрим общий случай, когда сообщения источника {X, p(x)} имеют произвольную вероятность. Ниже в леммах будим предполагать, что

p(x1)>=p(x2)>=...>=p(xM)

Лемма (1): В оптимальном коде слово, соответствующее наименее вероятному сообщению, имеет наибольшую длину.

Доказательство:

пусть mi - длина кодового сообщения xi. . Предположим, что в оптимальном коде mi > mM для некоторого i < M. Рассмотрим код в котором i-e и M-e кодовые слова исходного кода заменены одно другим. Средняя длина для этого кода удовлетворяет соотношению:

,

что противоречит условию об оптимальности кода.

Доказано.

Лемма (2) :В оптимальном двоичном префиксном коде два наименее вероятных сообщения кодируются словами одинаковой длины, которые, можно считать, различаются только в последнем знаке, одно из них оканчивается нулем, а другое – единицей.

Доказательство:

Пусть m - максимальная длина кодового слова, m = max(mk) где k= 1..N. предположим, что найдется еще 1 кодовое слово такой длины.

Пусть такого нет, тогда у кодового слова последний бит можем стереть, получим код, который тоже будит префиксным, при этом средняя длина кодовых слов уменьшится - противоречие с оптимальностью кода.

Кодовые слова Ui и UM должны отличаться в последнем знаке. В противном случае длины кодовых слов можно было бы уменьшить сохраняя однозначную декодируемость и получить меньшую длину кодовых слов.

Покажем теперь, что эти слова кодируют наименее вероятные сообщения. Предположим противное, что i < M-1. В этом случае среднюю длину кода можно было бы уменьшить, заменив слово Ui на UM-1 и UM-1 на Ui. Противоречие как и в предыдущей лемме с оптимальностью кода, следовательно наибольшую длину имеют слова UM и UM-1.

Доказано.

Лемма (1) (без доказательства): Если оптимален однозначно декодируемый префиксный код для ансамбля X, то оптимален, полученный из него префиксный код для ансамбля X.

Задача построения оптимального префиксного кода сводиться к задаче построения оптимального префиксного кода для ансамбля, содержащего на одно сообщение меньше. В этом ансамбле снова можно выделить два наименее вероятных сообщения и, объединяя их, получить новый ансамбль, содержащий уже на два сообщения меньше, чем исходный. Продолжая эту процедуру можно дойти до ансамбля, содержащего два сообщения, оптимальным кодом для которого являются 0 и 1. Описанный метод построения префиксного кода называется методом Хаффмена.

Классический алгоритм Хаффмана на входе получает таблицу частот встречаемости символов в сообщении. Далее на основании этой таблицы строится дерево кодирования Хаффмана.

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

  2. Выбираются два свободных узла дерева с наименьшими весами.

  3. Создается их родитель с весом, равным их суммарному весу.

  4. Родитель добавляется в список свободных узлов, а двое его детей удаляются из этого списка.

  5. Одной дуге, выходящей из родителя, ставится в соответствие бит 1, другой — бит 0.

  6. Шаги, начиная со второго, повторяются до тех пор, пока в списке свободных узлов не останется только один свободный узел. Он и будет считаться корнем дерева