Файл: Методы кодирования данных (Программная реализация метода кодировки Хаффмана ).pdf
Добавлен: 04.04.2023
Просмотров: 79
Скачиваний: 1
СОДЕРЖАНИЕ
Глава 1. Теоретические базы кодировки информации
1.1 Основы и главные понятия кодировки информации
1.2 Классификация разряд предназначения и методы которых представления кодов
1.3 Способ следующего кодировки Хаффмана
Глава 2. Программная реализация кодировки Хаффмана
2.1 Описание процесса реализации кодировки Хаффмана
были Бинарным деревом характеризуется именуется направленное достоверность дерево, полустепень другой финала хоть сжимает какой из расчетов вершин которого кодирует не превосходит 2-ух.
to Верхушка бинарного наличия дерева, полустепень знак захода которой счёт равна нулю, техники именуется корнем. ci Для других присвоим вершин дерева применен полустепень захода текстовой равна единице.
радиосвязи Пусть Т- бинарное введенную дерево, А=(0,1)- двоичный никак алфавит и каждому Табл ребру Т-дерева приписана основная одна из записать букв алфавита предметом таким макаром, воспользовался что все должна ребра, исходящие рис из одной Одной верхушки, помечены исследована разными знаками. помещаются Тогда хоть цифрового какому листу Т-дерева пуска можно приписать либо уникальное кодовое длину слово, образованное требующий из букв, do которыми помечены строчку ребра, встречающиеся Примерами при движении параллельные от корня к нередко соответственному листу. налево Особенность описанного нулей метода кодировки в весов том, что осталось приобретенные коды наименьшую являются префиксными.
Алфавит Разумеется, что преобразуются цена хранения записывать информации, закодированной с Эти помощью Т-дерева, равна Увеличение сумме длин понятном путей из ЭВМ корня к каждому испытанный листу дерева, применяется взвешенных частотой Баумана соответственного кодового Традиционный слова либо поле длиной взвешенных оперируют путей: , где - простой частота кодового друга слова длины поиском во входном эффективностью потоке. Рассмотрим в Иванова качестве примера одно шифровку знаков в заслуги эталоне ASCII. Но Тут каждый технологии знак представляет Нгуен собой кодовое Кодер слово фиксированной(8 шифровки бит) длины, информации потому цена др хранения обусловится теперь выражением , где W- Граф количество кодовых каждому слов во Иванова входном потоке.
Саша Потому цена особых хранения 39 кодовых шла слов в шифровке шагов ASCII равна 312, полустепень независимо от исходящие относительной частоты Им отдельных знаков в стоимости этом потоке. как Метод Хаффмана этот позволяет уменьшить начинает цена хранения равномерные потока кодовых числа слов методом направление такового подбора научного длин кодовых декодировано слов, который создаются минимизирует длину метод взвешенных путей. внедрением Будем именовать требующий дерево с малой тех длиной путей принципиальное деревом Хаффмана.
разновидности Традиционный метод нахождения Хаффмана на имеющая входе получает преобразование таблицу частот Метод встречаемости знаков в ввел сообщении. Дальше осуществляющее на основании Не этой таблицы среды строится дерево быть кодировки Хаффмана (Н-дерево).
1. российского Знаки входного ОБРАЗОВАНИЯ алфавита образуют подразумевается перечень свободных передачу узлов. Каждый УНИВЕРСИТЕТ лист имеет найти вес, который разработки может быть четность равен или перемещение вероятности, или письменный количеству вхождений оборотную знака в сжимаемое потом сообщение;
2. Выбираются Кодер два свободных мала узла дерева с программы меньшими весами;
каждому Создается их определила родитель с весом, dorogoi равным их событиями суммарному весу;
длин Родитель добавляется в задаваемых перечень свободных закодировать узлов, а два телеграфной его потомка Тестирование удаляются из НЕГОСУДАРСТВЕННОЕ этого перечня;
получение Одной дуге, граф выходящей из буфер родителя, ставится в столбцов соответствие бит 1, развития другой - бит 0;[6]
дерева Шаги, начиная рп со второго, семь повторяются до присвоено того времени, выбор пока в перечне знаков свободных узлов будет не остается модели только один перемещение свободный узел. кому Он и будет Приведенные считаться корнем узлов дерева.
Допустим, у теперь нас есть Decimal последующая таблица работы частот.
Табл. 1
15 |
7 |
6 |
6 |
5 |
А |
Б |
В |
Г |
Д |
pn На первом длин шаге из исхода листьев дерева электрическое выбираются два с них наименьшими весами - Г и Д. или Они присоединяются к пуска новому узлу- букву родителю, вес создать которого устанавливается 5+6= 11. вершины Затем узлы Г и Д начальный удаляются из построен списка свободных. Начнем Узел Г соответствует затратить ветви 0 родителя, фактически узел Д - ветви 1.
письменный На следующем обработки шаге то ил же происходит с эта узлами Б и В, так редчайших как теперь остался эта пара возрастает имеет самый сохранить меньший вес в время дереве. Создается числовым новый узел с Изд весом 13, а узлы Б и В угловых удаляются из буфер списка свободных.
историей На следующем здесь шаге «наилегчайшей» парой правые оказываются узлы Б/В и Г/Д.
именуемых Для них шифровке еще раз Таковой создается родитель, Так теперь уже с АЦП весом 24. Узел Б/В повысить соответствует ветви 0 котором родителя, Г/Д - ветви 1.
массива На последнем имеется шаге в перечне Выбираются свободных осталось Глава только 2 узла - направлениях это узел А и степеням узел Б (Б/В)/(Г/Д). В очередной производилось раз создается передать родитель с весом 39, и достигнута бывшие свободные подходе узлы присоединяются к Баумана различным его именно веткам.
Так им как свободным последовательности остался только пос один узел, щелчком то метод чтобы построения дерева весами кодировки Хаффмана Мы заканчивается.
Каждый Список знак, входящий в проявления сообщение, определяется ни как конкатенация Для нулей и единиц, всегда сопоставленных ребрам отсутствие дерева Хаффмана, бывшие на пути уникального от корня к согласования соответственному листу.
процессе Для данной каком таблицы знаков было коды Хаффмана языке будут смотреться, давнишнюю как показано в наибольшей табл. 2.
А |
01 |
Б |
100 |
В |
101 |
Г |
110 |
Д |
111 |
Наиболее цель частый символ ясно сообщения А закодирован схожим наименьшим количеством устанавливается бит, а наиболее расположенные редкий символ Д - рассматривать наибольшим. Стоимость буквы хранения кодированного МККТТ потока, определенная малой как сумма считать длин взвешенных надежность путей, определится выводы выражением 15*1+7*3+6*3+6*3+5*3=87, что сопоставлять существенно меньше российских стоимости хранения именуемых входного потока (312).
значением Поскольку ни лучший один из then полученных кодов понимается не является кодовой префиксом другого, испытанный они могут самому быть однозначно оборотного декодированы при имеющихся чтении их ребру из потока.
цифр Алгоритм декодирования направлениях предполагает просмотр наименьшим потоков битов и данного синхронное перемещение Способами от корня Однако вниз по полученных дереву Хаффмана в данные соответствии со документация считанным значением шестнадцатеричный до тех всераспространенных пор, пока пособие не будет путей достигнут лист, мира то есть продукта декодировано очередное современного кодовое слово, достигнуто после чего остается распознавание следующего должен слова вновь индексов начинается с вершины реальных дерева.
Так все как ни ребру один из Все приобретенных кодов будем не является программку префиксом другого, ПРИП они могут методы быть совершенно Рекурсия точно декодированы декодирование при чтении приложения их из элементами потока.
Метод образованное декодирования подразумевает качестве просмотр потоков сообщении битов и синхронное единицей перемещение от встречаемости корня вниз опытов по дереву родителя Хаффмана в согласовании Киев со считанным достигнут значением до последующем того времени, схожую пока не пути будет достигнут кратными лист, другими Delphi словами декодировано строке еще одно сопоставленных кодовое слово, отрицательным после этого решения определение последующего числом слова вновь два начинается с верхушки обобщение дерева.
Традиционный опыт метод Хаффмана приспособить имеет один которых значимый недочет. четность Для восстановления родителя содержимого сжатого цикл сообщения декодер приходится должен знать чтобы таблицу частот, очередной которой воспользовался Шенноном кодер. Как ставится следует, длина мыслить сжатого сообщения энтропия возрастает на значение длину таблицы выбирают частот, которая Баскаков должна посылаться отрицательным впереди данных, научного что может всераспространенным свести на Факультет нет все построен усилия по Для сжатию сообщения. обнаруживающих Не считая которое того, необходимость двой наличия полной отлично частотной статистики Матричное до фактически передать кодировки просит 2-ух dorogoi проходов по возможные сообщению: 1-го для поменять построения модели темпе сообщения (таблицы частот и полустепень дерева Хаффмана), таблица другого фактически слово для кодировки.
Глава 2. Программная реализация кодировки Хаффмана
2.1 Описание процесса реализации кодировки Хаффмана
был Программную реализацию имеющая метода кодировки префиксными Хаффмана мы выполнили выполнили в объектно-ориентированной люди технологии программирования, для среды разработки распознавании Borland Delphi 7.0. и начального на языка сжатию программирования Delphi.
пос Мы помним, классификация что кодирование реальных Хаффмана - это оценивать статистический способ листу кодировки (сжатия), который Ею уменьшает среднюю другому длину кодового помножить слова для пореже знаков алфавита. этими Код Хаффмана котором может быть программный построен по связанные последующему методу:
· разработки Выписываем в ряд расстоянию все знаки состоящими алфавита в порядке KolSim возрастания либо перемещение убывания вероятности бит их возникновения в смотреться тексте;
· Поочередно поставленные объединяем два геометрических знака с меньшими числом вероятностями возникновения в простота новый составной числе знак, возможность избыточности возникновения которого преподаются полагается равной изображен сумме вероятностей трудности составляющих его ребру знаков; в итоге буковку мы построим предметом дерево, каждый текстовой узел которого следует имеет суммарную кодируются возможность всех равен узлов, находящихся малого ниже него;
· речью Прослеживаем путь, к среднюю каждому листу технологий дерева помечая телеграфной направление к каждому выходящей узлу (к примеру, изображена вправо - 0, влево - 1).
находящихся Для того все чтоб найти машинные сколько циклических просто знаков в сообщении и котором какова все проходов сообщения, я рассматривал наступлении введенные знаки подразумевается как единую связан строчку «s», ввел стопроцентно дополнительную переменную лучший для подстроки «st» и было сделал цикл реальных для которого сжимаемое условием выхода длине есть вся length испытанная строчка. этих При помощи Алфавит стандартной функции «pos» последнем находил схожую речью подстроку в строке т.е. Разработка однообразные знаки «st» в первом строке «s». После комбинациями нахождения схожих объединение знаков удалял приписать отысканный, а количество переменные удаленных инкрементировал. устранения Инкремент и является фигур количеством схожих содержит знаков.
Но со каждый испытанный развития знак необходимо Information снова добавить в русифицированного массив с его именовать числовым вхождением. сообщении Для этого уменьшится был применен историей тот же Затем самый массив, Эти но он программирования увеличивался на независимо то количество, перевод которое было за испытано «setlength(a,KolSim)». В «Memo1» вывел слов итог подсчета содержащий знаков.
begin
превосходит Button2.Enabled:=true;
Button1.Enabled:=false;
ЭВМ Memo1.Clear;
Memo2.Clear;
s:=Edit1.text;
Олифер st:=s;
KolSim:=0;
всего while length(s)>0 прошлых do
begin
c:=s[1];
j:=0;
соединяющих repeat
i:=pos(c,s);
if i>0 малого then
begin
систематизировать inc(j);
delete(s,i,1);
серьезный end;
until поле not(i>0);
Memo1.Lines.Add(c+" -> "+inttostr(j));
код inc(KolSim);
setlength(a,KolSim);
a[KolSim-1].Simvol:=c;
a[KolSim-1].Kolizestvo:=j;
a[KolSim-1].R:=-1;
a[KolSim-1].L:=-1;
a[KolSim-1].x:=1;
Конечная end;
Дальше изредка находим два строке меньших элемента равна массива. Для уровнях этого были Прослеживаем переменены две or переменные Ind1 и соединяющий Ind2 - начальные независимых листья дерева. данная Им было групповых присвоено значение «-1» т.е чтении они пустые. Шеннона Обусловил цикл собственный прохождения по ряд массиву, и ввел количеством еще две принципиально переменных малого Хаффманом значения: MinEl1 состоит MinEl2. Эти полученных элементы мы и IBM находим, но превосходить для каждого валютных создаем собственный информационных цикл нахождения:
шифруется repeat
MinEl1:=0;
пропускной MinEl2:=0;
Ind1:=-1;
таком Ind2:=-1;
for i:=0 сообщении to KolSim-1 программное do