Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
УДК 355.358.1 В.И. Филатов, кандидат технических наук (ктн), доцент кафедры МГТУ им. Н.Э. Баумана факультета «Информатика и системы управления», кафедры ИУ-10, [email protected], г.Москва, Россия И. Грачева, студент, МГТУ им. Н.Э. Баумана факультета «Информатика и системы управления», кафедры ИУ-10, г.Москва, Россия Е. Чаркина, студент, МГТУ им. Н.Э. Баумана факультета «Информатика и системы управления», кафедры ИУ-10, г.Москва, Россия Сравнение алгоритмов сжатия информации В современном информационном мире в условиях растущих требований к скорости передачи данных одной из наиболее актуальных задач является задача кодирования источника или сжатия информации. Так, например, космические аппараты, осуществляющие сьемку поверхности Земли в разных частотных диапазонах, передает информацию, на которая помещается в хранилище изображений, где используются геоинформационными системами для самых разных целей. При этом, объем этой графической информации настолько велик, что при ее сжатии приходится бороться буквально за каждый байт, поскольку даже сжатие не позволяет сильно снизить требования к объемам хранилищ. В тоже время встает необходимость повысить пропускную способность радиоканалов, поскольку ее не хватает, чтобы в полной мере удовлетворить потребности пользователей. На сегодняшний день наибольшее распространение получили два типа методов сжатия без потерь –статистические и словарные. Статистические методы заключаются в том, что если некоторый символ в последовательности встречается относительно часто, то ему ставится в соответствие короткий код, а если символ встречается реже – то присваивается более длинный. В результате такого распределения неравномерного кодирования, средняя длина информационной последовательности становится короче. В словарных методах, находятся похожие цепочки символов, которым присваиваются соответствующие более короткие коды. Эти методы независимы друг от друга и потому могут использоваться совместно для достижения более лучшего сжатия. Рассмотрим более подробно статистический тип на примере кодирования по методу Хаффмана, который заключается в оптимальном префиксном кодировании алфавита с минимальной избыточностью. Этот метод кодирования состоит из двух основных этапов: 1. Построение оптимального кодового дерева. 2. Построение отображения код-символ на основе построенного дерева. Работа алгоритма начинается с составления списка символов (чисел) алфавита в порядке убывания их частоты (вероятности). Пример: Пусть имеется пять символов: a1, a2, ..., a5 с известными вероятностями: p1=0.4, p2=0.2, p3=0.2, p4=0.1 и p5=0.1. Для построения кодов, выбираем сначала пару символов с наименьшими вероятностями – это символы a4 и a5. Наименее вероятному символу ставим в соответствие битовый ноль, а более вероятному – битовую единицу: a4 →1, a5 → 0. Символы a4 и a5 условно объединяются в единый символ a45 с вероятностью появления 0,2. Затем берется третий символ из упорядоченного списка – это символ a3 с вероятностью 0,2. Поэтому код символа a3 будет начинаться с битовой 1, а к кодам символов a4 и a5 дописывается битовый ноль: a3 →1, a4 →10, a5 → 00 Далее, условно объединяем все три символа, в символ a345 с вероятностью появления 0,4 и рассматриваем его со следующим символом списка - a2, вероятность которого 0,2. Так как вероятность появления символа a2 меньше вероятности появления условного символа a345, то код символа a2 будет начинаться с нуля, а кодам символов a3, a4 и a5 приписывается битовая единица: a2 → 0, a3 →11, a4 →101, a5 → 001 Аналогично, получаем для последнего символа 𝑎1 : a1 → 0, a2 → 01, a3 →111, a4 →1011, a5 → 0011 Обычное двоичное кодирование потребовало бы 3 бита для представления одного символа, т.е. в этом случае последовательность можно было бы сжать в 3/2,8=1,07 раза. Однако, чтобы произвести декодирование данных необходимо знать построенные кодовые последовательности, передачу которых осуществляют за счет передачи декодеру частот появления символов в потоке, т.е. в данном случае встает необходимость дополнительно пять чисел. На основе этих частот декодер строит коды, а затем применяет их для декодирования последовательности. Как следствие, чем длиннее кодированная последовательность, тем меньше удельный вес служебной информации переданной декодеру. В качестве меры определения степени статистической избыточности в заданной цифровой последовательности приемлемо использовать энтропию, которая определяет минимальное число бит, необходимое для представления заданной последовательности чисел с последующей возможностью полного восстановления информации. Зная значение энтропии можно определять максимально возможную степень сжатия последовательности и сравнивать конкретный алгоритм с нижней границей. Минимальное число бит, которое необходимо затратить для представления одного символа той или иной информации можно найти с помощью формулы Шеннона [1]: 𝐻(𝑥) = − ∑𝑁 𝑖=1 𝑝𝑖 log 2 𝑝𝑖 𝐻(𝑋) 𝜂= 𝑛̅ (1) 𝑁 𝑛̅ = ∑ 𝑛𝑖 𝑝𝑖 𝑖=1 где 𝑝𝑖 - частота (вероятность) появления i -го числа в последовательности; N – число уникальных чисел в последовательности. Например, применяя данную формулу к представленному примеру получим: Число уникальных символов равно 5 – это a1, a2, a3, a4 и a5. Частота появления цифровых значений равна 𝑝1=0,4, 𝑝2 =0,2, 𝑝3 =0,2, 𝑝4 =0,1 и 𝑝5 =0,1. В результате, минимальное число бит для представления одного символа в такой последовательности равно: H = −0,4 log 2 0,4 − 2 ∗ 0,2 log 2 0,2 − 2 ∗ 0,1 log 2 0,1 ≈ 2,1 бит/символ. Из рассмотренного примера видно, что чем больше разница между вероятностями букв исходного алфавита, тем больше выигрыш кода Хаффмана по сравнению с простым блоковым кодированием. Декодирование блока Хаффмана легко представить, используя кодовое дерево. Принятая кодовая комбинация анализируется посимвольно, в результате чего, начиная с корня дерева, мы попадаем в оконечный узел, соответствующий принятой букве исходного алфавита. В качестве недостатков при этом могут быть: 1.Различные длины кодовых слов приводят к неравномерным задержкам кодирования. 2.Сжатие снижает избыточность, что соответственно повышает предрасположенность к распространению ошибок, т.е. один ошибочно принятый бит может привести к тому, что все последующие символы будут декодироваться неверно. 3.Предполагаются априорные знания вероятности букв, которые на практике не известны, а их оценки часто бывают затруднительны. Тип кодиров ания Хафмана LZW Длинна текста (байт) Номер попытки Рассмотрим алгоритмы универсального кодирования, которые можно рассмотреть в частности в разновидности методов кодирования Лемпела-Зива: Алгоритм «LZ77» - относится к классу универсальных поскольку не требует априорных знаний о статистике символов. Такой метод носит менее математически обоснованный характер, но при этом обладает большей практичностью. Алгоритм «LZW» - длина кода уменьшается, так как не используется буфер, а кодирование проводится только по словарю. Следовательно, кодовая группа определяется только длиной словаря, а декодирование словарного кода происходит в обратном порядке и упрощается тем, что не требует поиска совпадений в словаре. При этом сжатие будет иметь место, если длина полученной кодовой комбинации будет меньше кода того же сообщения при непосредственном кодировании. Данный алгоритм учитывает следующие особенности: 1.Часто повторяющиеся цепочки сообщений кодируются очень эффективно. 2.Редко повторяющиеся символы и их последовательности с течением времени удаляются из словаря. 3.Словарное кодирование асимптотически оптимально, т.е. что длина кодового слова стремится к энтропии этого текста. 4.Практически достижимая степень сжатия для этих алгоритмов 50-60 %. В таблице 1 приведены результаты моделирования сжатий различных сообщений и представлены полученные результаты. Таблица 1 Сравнительная таблица анализированных кодов: 1024 1 1024 2 1024 3 46649 1 46649 2 46649 3 1232967 1 1232967 2 1232967 3 1024 1 1024 2 1024 3 46649 1 46649 2 46649 3 1232967 1 1232967 2 1232967 3 Затр ачен ая памя ть (бай т) 1638 4 1638 4 2048 0 2457 60 2949 12 2498 56 5402 624 5278 048 5373 952 5324 8 4915 2 5734 4 9830 40 4956 16 4915 20 1474 9696 1494 2208 1447 9360 Затраченное время (с) Степен ь сжатия (во скольк о раз меньш е) Коэффицие нт сжатия (размер относительн о старого файла) 0,005502 1,884 0,469 0,00099 1,884 0,469 0,001026 1,885 0,469 0,015961 1,873 0,466 0,013962 1,873 0,466 0,011968 1,873 0,466 0,6774 1,873 0,466 0,600334 1,873 0,466 0,651679 1,873 0,466 0,015481 1,665 0,400 0,005467 1,665 0,400 0,001986 1,664 0,399 0,031914 3,320 0,699 0,025896 3,320 0,699 0,028924 3,320 0,699 4,086556 4,328 0,769 2,273184 4,328 0,769 2,2513674 4,328 0,769 Средняя затраченая память (байт) Средн ее затрач еное время (с) Средняя степень сжатия Средний коэффицие нт сжатия 17749 0,0025 06 1,884 0,469 263509 0,0139 6367 1,873 0,466 5351541 0,6431 3767 1,873 0,466 53248 0,0076 4467 1,665 0,399 656725 0,0289 1133 3,320 0,699 14723755 2,8703 6913 4,328 0,769 LZ77 1024 1 1024 2 1024 3 46649 1 46649 2 46649 3 7577 60 1089 536 8888 32 1314 816 1293 726 1301 273 207,03937 2,334 0,571 216,547574 2,334 0,571 764,0467 2,332 0,571 1910,912556 2,372 0,578 2691,785757 2,372 0,578 2689,552198 2,372 0,578 912043 395,87 7881 2,333 0,571 1303272 2430,7 5017 2,372 0,578 По полученным результатам можно сделать вывод, что: 1. Статистические методы сжатия обладают более высоким быстродействием, но уступают по средним показателям коэффициента сжатия. 2. При увеличении размеров передаваемого объема данных преимущества статистических методов асимптотически теряются, по сравнению со словарными.