- •Дайте визначення та характеристику двомірного дискретно косінусного перетворення.
- •Д айте визначення та характеристику дискретно сінусного перетворення.
- •18. !!! Неизвестно
- •Модифікування дерева у алгоритмі Хаффмана.
- •Переповнення лічильника у алгоритмі Хаффмана.
- •Спрощений варіант алгоритму Хаффмана стиску даних.
- •Метод арифметичного кодування даних.
- •Метод цілочисленого арифметичного кодування даних.
- •Статистична модель каналу системи зв'язку. Постановка задачі визначення оптимальної прийомної системи.
- •Загальне рішення задачі визначення оптимальної прийомної системи.
Модифікування дерева у алгоритмі Хаффмана.
Конспект:
Символи які розміщені ближче до основи мають найменшу вагу Хемінга кодової комбінації.
Необхідно модифікувати дерево таким чином щоб символи які більш частіше зустрічаються в тексті розміщувались ближче до основи.
Для цього необхідно упорядкувати дерево.
Упорядкування здійснюється зліва на право. Для символів 1 рівня з низу в верх. Коли необхідно виконати заміщення між вузлами сусідніх рівнів.
Книга:
СвойствоХаффманаозначает, что при изучении дерева по всем уровням слева направо и снизу вверх (от листьев к корню) частоты будут упорядочены по возрастанию (неубыванию). Таким образом, нижний левый узел (А) имеет наименьшую частоту, а верхний правый (корень) имеет наибольшую частоту. Это свойство принято называть свойством соперничества.
Причина этого свойства заключается в том, что символы с большими частотами должны иметь более короткие коды и, следовательно, находиться на дереве на болеевысокомуровне. Требование для частот быть упорядоченными на одном уровне устанавливается для определенности. В принципе, без него можно обойтись, но оно упрощает процесс построения дерева.
Приведем последовательность операций при модификации дерева. Цикл начинается в текущем узле (соответствующем новому входному символу). Этот узел будет листом, который мы обозначим X, а его частота пусть будет F. На каждой следующей итерации цикла требуется сделать три действия:
Переповнення лічильника у алгоритмі Хаффмана.
Счетчики частот символовсохраняются на дереве в виде чисел с фиксированнойразрядностью. Поля разрядовмогутпереполниться. Число без знака из 16 двоичных разрядов может накапливать счетчик до числа 216 — 1 = 65535. Простейшее решение этой проблемы заключается в наблюдении за ростом счетчика в корне дерева, и, когда он достигает максимального значения, следует сделать изменение масштаба всех счетчиков путем их целочисленного деления на 2. На практике это обычно делается делением счетчиков листьев с последующим вычислением счетчиков всех внутренних узлов дерева. Каждый внутренний узел равен сумме своих потомков. Однако при таком методе целочисленного деления понижается точность вычислений, что может привести к нарушению свойства соперничества узлов дерева.
Простейший пример приведен на рис. 1.15h. После уполовинива-ния счетчиков листьев, три внутренних узла пересчитаны, как показано на рис. 1.151. Полученное дерево, однако, не удовлетворяетсвойствуХаффмана, посколькусчетчики перестали бытьупорядоченными. Поэтому послекаждойсменымасштабатребуется перестройка дерева, которая, по счастью, будетделаться не слишком часто.
Конспект:
Якщо значення частот символів лічильника переповнюється виникає порушення в алгоритмі. Необхідна зміна масштабу всіх лічильників. Але коли змінюється масштаб порушується співвідношення між вузлами.
Спрощений варіант алгоритму Хаффмана стиску даних.
Этотвариант адаптивного кодированияХаффманаоченьпрост, номенееэффективен. Егоидеязаключается в построениимножестваиз п кодов переменнойдлины на основеравныхвероятностей и случайномприсвоенииэтихкодов п символам. Послечегосменакодовделается «на лету» по мере считывания и сжатиясимволов. Метод не слишкомпроизводителен, посколькукоды не основаны на реальныхвероятностяхсимволоввходногофайла.Основная структура данных - этотаблицаразмера п х 3, в которой три столбцахранят, соответственно, имена п символов, частотысимволов и ихкоды. Таблица все времяупорядочена по второмустолбцу. Когдасчетчики частот вовторомстолбцеизменяются, строки переставляются, ноперемещаютсятолькопервый и второйстолбцы.
Пример кодирование «a2a4a4»
Рис 1.17.
На рис.1.17 изображено начальное состояние. После считывания символа а2 его счетчик увеличивается, и поскольку он теперь наибольший, строки 1 и 2 меняются местами (рис. 1.17Ь). Далее счи-тывается второй символ 04, его счетчик увеличивается, и строки 2 и 4 переставляются (рис. 1.17с). Наконец, после считывания третьего символа а4, его счетчик становится наибольшим, что приводит к перестановке строк 1 и 2 (рис. 1.17d). В этом алгоритме только одно место может вызвать проблему - это переполнение счетчиков. Если переменные счетчиков имеют разрядность к бит, их максимальное значение равно 2^ — 1. Поэтому наступит переполнение после 2^-го увеличения. Это может случиться, если размер сжимаемого файла заранее не известен, что бывает часто. К счастью, нам не надо знать точные значения счетчиков. Нам нужен лишь их порядок, поэтому эту проблему переполнения легко разрешить.