Пред.
След.
Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO
4.8. Коды ХаффменаСначала (предположим, что заданы вероятности различных передаваемых символов. Как и в коде Морзе, желательно сопоставлять наиболее частым символам наиболее короткие последовательности. Если вероятность Без ограничения общности можно считать, что Переставляя кодовые слова, соответствующие символам Вычитая старые члены из новых, получаем изменение средней длины, обусловленное перестановкой новые — старые: Из сделанных выше предположений следует, что это число отрицательно; переставляя кодовые слова, соответствующие символам Рассмотрение кодов Хаффмена начнем с кодирования в двоичном алфавите. Случай Первое доказываемое утверждение состоит в том, что два наименее часто встречающихся символа источника должны кодироваться словами одинаковой длины. Для мгновенного кода никакое кодовое слово не является префиксом другого, поэтому Доказательство свойств кодирования, а также метод кодирования основаны на том, что на каждом шаге происходит сведение кода к более укороченному. Объединим два наименее вероятных символа алфавита источника в один символ, вероятность которого равна сумме соответствующих вероятностей. Таким образом, нужно построить код для источника, у которого число символов уменьшилось на 1. Повторяя этот процесс несколько раз, приходим к более простой задаче кодирования источника, алфавит которого состоит из символов Почему этот процесс (порождает эффективный код? Предположим, что существует более короткий код, т. е. такой, у которого средняя длина удаляя соответствующим двоичныи символ из всех концевых вершин, путь к которым проходит через эту бесполезную точку.) Если в дереве есть только два слова максимальной длины, то они должны иметь общую последнюю вершину ветвления и соответствовать двум наименее вероятным символам. До редукции дерева эти два символа дают вклад
Рис. 48.1. Процесс редукции
Рис. 4.8.2. Процесс разделения Если число слов максимальной длины больше двух, то можно использовать следующее предположение: кодовые слова одинаковой длины можно переставлять, не уменьшая средней длины кода. На основе этого предположения можно считать, что два наименее вероятных символа имеют одну и ту же вершину последнего ветвления. Таким образом, после редукции средняя длина кода уменьшилась на Итак, в любом случае можно укоротить код и уменьшить среднюю длину кода на одну и ту же величину. Применим эту процедуру к двум сравниваемым деревьям декодирования. Поскольку обе средние длины уменьшились на одну и ту же величину, неравенство между средними длинами сохранится. Повторное применение этой процедуры сводит оба дерева к двум символам. Для кода Хаффмена средняя длина равна 1; для другого кода она должна быть меньше 1, что невозможно. Таким образом, код Хаффмена является самым коротким из возможных кодов. Процесс кодирования неоднозначен в нескольких отношениях. Во-первых, сопоставление символов Для двух различных кодов Хаффмена рассмотрим вероятности Если помещать склеенные состояния 1 как можно ниже, то, в соответствии с рис. 4.8.2, получаем длины (I, 2, 3, 4, 4) и средняя длина равна
Если, с другой стороны, ставить склеенные состояния как можно выше (рис. 4.8.3), то получим длины (2, 2, 2, 3, 3) и средняя длина равна
Оба кода имеют одинаковую эффективность (среднюю длину), но разные наборы длин кодовых слов.
Рис. 4.8.3. Другой метод кодирования Какой из этих двух кодов следует выбрать? Более разумным выбором является тот, при котором длина меньше меняется по ансамблю сообщений. Поэтому следует вычислить дисперсию длины для каждого из этих двух случаев:
Таким образом, при использования для кодировании сообщений конечной длины второй код имеет существенно меньшую дисперсию длины и поэтому, возможно, является более предпочтительным. Весьма вероятно, что, помещая склеенное состояние возможно выше, получим код с наименьшей дисперсией. Задачи4.8.1. Построить код Хаффмена для 4.8.2. Постройте код Хаффмена для 4.8.3. Построить код Хаффмена для 4.8.4. Построить код Хаффмена для
|
1 |
Оглавление
|