Автор работы: Пользователь скрыл имя, 22 Июня 2013 в 16:14, реферат
Архивация - подготовительная обработка (сбор, классификация, каталогизация, сжатие (для цифровой информации)) данных для долгосрочного хранения или передачи их по сети.
Архивация файлов - перекодирование данных с целью уменьшения их объёма.
Резервное копирование (англ. backup) - процесс создания копии данных на носителе (жёстком диске, дискете и т. д.), предназначенном для восстановления данных в оригинальном месте их расположения в случае их повреждения или разрушения, соответствующими программами - резервными дубликаторами данных
Основные термины
стр. 2
Алгоритмы сжатия
Алгоритм RLE
стр. 4
Алгоритм Хаффмана
стр. 4
Арифметическое сжатие
стр. 6
Алгоритм Лемпеля-Зива
стр. 8
Алгоритм двухступенчатого сжатия
стр. 11
Архиваторы
стр. 12
Типы архивов
стр. 15
Список литературы
стр. 16
Содержание
Основные термины |
стр. 2 | |
Алгоритмы сжатия |
||
Алгоритм RLE |
стр. 4 | |
Алгоритм Хаффмана |
стр. 4 | |
Арифметическое сжатие |
стр. 6 | |
Алгоритм Лемпеля-Зива |
стр. 8 | |
Алгоритм двухступенчатого сжатия |
стр. 11 | |
Архиваторы |
стр. 12 | |
Типы архивов |
стр. 15 | |
Список литературы |
стр. 16 |
Основные термины
Архивация - подготовительная обработка (сбор, классификация, каталогизация, сжатие (для цифровой информации)) данных для долгосрочного хранения или передачи их по сети.
Архивация файлов - перекодирование данных с целью уменьшения их объёма.
Резервное копирование (англ.
backup) - процесс создания копии данных
на носителе (жёстком диске, дискете
и т. д.), предназначенном для
Архивные файлы - это документы, рисунки и др. файлы, которые специально сжаты (упакованы) с целью более рационального размещения на дискете или для передачи по электронной почте через интернет с большей скоростью.
Архиватор - программа, осуществляющая упаковку одного и более файлов в архив или серию архивов, для удобства переноса или хранения, а также распаковку архивов. Многие архиваторы используют сжатие без потерь.
Подавляющее большинство современных форматов записи данных содержат их в виде, удобном для быстрого манипулирования, для удобного прочтения пользователями. При этом данные занимают объем больший, чем это действительно требуется для их хранения. Алгоритмы, которые устраняют избыточность записи данных, называются алгоритмами сжатия данных, или алгоритмами архивации.
Существует два вида алгоритмов сжатия данных:
1. алгоритмы сжатия без потерь, при использовании которых данные на приемной восстанавливаются без малейших изменений. При обратимом сжатии смысл выходного блока в точности соответствует смыслу входного, т.е. сжатый блок всегда может быть однозначно развернут в исходный. Именно по этому принципу работают все современные архиваторы;
2. алгоритмы сжатия с потерями, которые удаляют из потока данных информацию, незначительно влияющую на суть данных, либо вообще невоспринимаемую человеком (такие алгоритмы сейчас разработаны только для аудио- и видео - изображений). При необратимом сжатии происходит частичная утеря смысла информационного блока, вследствие чего при развертывании возникает некоторая неоднозначность, т.е. восстановленный блок не полностью соответствует исходному.
Возникает вопрос - зачем же нужен такой метод необратимого сжатия?
Рассмотрим следующий пример. На обычный Audio-CD (формат WAV) помещается в среднем 15-20 композиций, в то время как на CD с композициями в формате MPEG (файлы *.mp3) их может быть более 150. Достигается это именно за счет необратимого сжатия. Как известно, при переводе аналогового (в данном случает звукового) сигнала в цифровую форму, он подвергается дискретизации, т.е. делается выборка величин его уровней с определенной частотой. Устройство человеческого уха таково, что оно не замечает искажений звукового сигнала, если их величина не превышает определенного порога. Произведя необратимое сжатие исходной выборки, а затем, воспроизводя восстановленную выборку, мы не заметим разницы в звучании композиции, если уровень потери информации не превысил некоторого допустимого значения.
Аналогично для изображений, глаз не замечает искажений цвета и яркости, меньших некоторой пороговой величины, а, следовательно, допустимо потерять часть информации в выборке цвет + яркость. На этом принципе построен формат JPEG (файлы *.jpg).
Алгоритмы сжатия
АЛГОРИТМ RLE
Наиболее простой из всех алгоритмов - это алгоритм RLE (Run Length Encoding - Кодирование Длин Серий). Суть метода состоит в замене цепочек повторяющихся символов на этот символ и количество его повторов. Например, последовательность символов ABDCCCCCBAB будет заменена на ABD[C,5]BAB, вместо того чтобы писать символ "С" 5 раз подряд, алгоритм пишет его один раз, и рядом с ним указывает количество его повторов - 5. Недостатком метода является очень низкая степень сжатия текстов. Причина этого очевидна - нет слов, в которых подряд шло бы более двух одинаковых букв, а, следовательно, и сжимать почти нечего. Однако для графических файлов он довольно эффективен, т.к. последовательности одинаковых символов в них встречаются часто. Например, если в файле содержится изображение неба, то подряд может идти несколько сотен одинаковых байт с кодом синего цвета. Реально алгоритм RLE применяется в графических файлах формата PCX, а также как аппаратный протокол сжатия в некоторых типах модемов.
АЛГОРИТМ ХАФФМАНА
Алгоритм Хаффмана (Huffman)
является одним из старейших алгоритмов
сжатия. Он относится к группе алгоритмов
статистического сжатия, т.е. для
работы ему требуются сведения о
частоте появления каждого
Например, пусть имеется 8-символьный входной поток ACBBADAA. Частота появления символа "А" равна 4 / 8 = 0.5 (4 - число символов "А" в потоке, 8 - длина потока). Аналогично для "B" получаем 0.25 , для "C" и "D" - 0.125.
Сущность алгоритма Хаффмана заключается в присвоении символам входного потока двоичных кодов переменной длины, в зависимости от их частоты. Чем чаще встречается символ, тем короче присваиваемый ему код. В нашем примере символу "А" будет присвоен двоичный код 1, символу "В" - 01, символам "C" и "D" - коды 000 и 001 соответственно. Присваиваемые коды должны подчиняться правилу префикса: "Код, использованный в сжатом потоке, не может быть префиксом любого другого кода". Выше мы присвоили символу "В" код 01 именно следуя этому правилу. Если символу "В" был бы присвоен код 10, то при восстановлении исходного потока возникла бы проблема: или истолковать единицу как код символа "А", а ноль как начало кода другого символа, или единица и ноль вместе образуют код для символа "В".
Для получения кодов, удовлетворяющих правилу префикса, обычно используют дерево кодов Хаффмана. "Листьями" этого дерева являются символы, а "ветвям" соответствует цифра 0, если она "растет" влево, или 1, если вправо.
Кодом символа является последовательная запись цифр, соответствующих "ветвям" на пути от "корня" дерева к этому символу. Чем меньше частота символа, тем дальше от "корня" дерева он находится и, соответственно, тем длиннее его код. После проведения сжатия необходимо добавить к выходному потоку полученное дерево, иначе восстановление будет невозможно.
Достоинством алгоритма
Практически алгоритм Хаффмана применяется в архиваторе PKPAK, используется как аппаратный протокол сжатия данных в факсах, а также может применяться как составная часть алгоритма двухступенчатого сжатия.
АРИФМЕТИЧЕСКОЕ СЖАТИЕ
Алгоритм арифметического
Поток, выданный процессом арифметического сжатия, рассматривается как некая двоичная дробь из интервала [0, 1), т.е. результат сжатия можно представить как последовательность двоичных цифр, которыми записывается эта дробь.
Рассмотрим входной поток BBAB. Частоты символов соответственно 0.25 для "А" и 0.75 для "В". Теперь возьмем открытый справа интервал [0, 1). Разобьем его на две части, длина которых пропорциональна частотам символов. Получим субинтервалы [0, 0.75) для "В" и [0.75, 1) для "А". Суть алгоритма сводится к выделению субинтервалов из [0, 1) для каждого из символов входного потока. После выбора из входного потока очередного символа алгоритм уменьшает интервал, выбирая ту его часть, которая соответствует выбранному символу.
Поясним вышесказанное таблицей, в которой демонстрируется сжатие входного потока "BBAB". Для удобства далее будем использовать не десятичные, а обыкновенные дроби.
Мы получили, что
входному потоку ВВАВ
Процесс восстановления
проходит аналогично сжатию: начиная
с базового интервала [0, 1), последовательно
восстанавливаются символы
Вообще говоря, иногда в процессе восстановления на каком-то этапе может получиться бесконечная дробь (например, 1/3 = 0.333:.), и алгоритм зациклится. Для предотвращения этого к входному потоку добавляют так называемый EOS (End of stream - Символ конца потока), выбирая его из числа символов, не встречающихся во входном потоке. Если в процессе восстановления получается интервал, соответствующий EOS, процесс считается законченным.
При применении этого метода возникают две проблемы. Во-первых, необходима вещественная арифметика неограниченной точности, в то время как математический сопроцессор компьютера обеспечивает точность порядка 19-20 значащих цифр, а применение программной эмуляции, очевидно, слишком неэффективно. Во-вторых, если в алгоритмах Хаффмана или RLE мы можем получать символы выходного потока параллельно со сжатием входного, то при арифметическом сжатии результат становится известен лишь после полного просмотра и сжатия входного потока. Исследования, проведенные Рубиным (Rubin), однако, показывают, что на практике можно обойтись целочисленной арифметикой небольшой точности (16-32 разряда), а также добиться последовательной выдачи символов выходного потока по мере чтения входного потока, ценой незначительного снижения степени сжатия.
Практически данный алгоритм иногда применяют в составе алгоритма двухступенчатого сжатия.
АЛГОРИТМ ЛЕМПЕЛЯ-ЗИВА
Алгоритм первоначально был разработан Лемпелом и Зивом (Lempel & Ziv), в дальнейшем подвергался многим усовершенствованиям и дополнениям. Принцип его работы кардинально отличается от всех рассмотренных выше алгоритмов. Главное преимущество его заключается в изначальной однопроходности, т.е. он способен сжимать входной поток по мере поступления символов, не требуя для себя никакой предварительной информации о потоке.
Алгоритм |
Автор |
Описание |
LZ77 |
Лемпель и Зив (Lempel & Ziv) |
Ссылки и символы чередуются. Ссылка адресует подстроку среды предыдущих символов |
LZ78 |
Лемпель и Зив (Lempel & Ziv) |
Аналогично LZ77, ссылка адресует ранее разобранную подстроку |
LZR |
Роден (Roden) |
Аналогично LZ77, ссылка адресует подстроку среди всех предыдущих символов |
LZW |
Велч (Welch) |
Выходной поток состоит только из ссылок, адресующих ранее разобранную подстроку. Все ссылки фиксированной длины |
LZMW |
Миллер и Вегман (Miller & Wegman) |
Подстроки строятся путем слияния двух предыдущих символов |
LZJ |
Джейкобсон (Jakobsson) |
Выходной поток состоит только из ссылок, адресующих подстроку среди всех предыдущих символов |
LZC |
Томас (Thomas) |
Аналогично LZW, но длина ссылок не фиксирована |
LZSS |
Белл (Bell) |
Ссылки и символы различаются по флаг-биту, ссылка указывает на подстроку среди предыдущих N-символов |
LZB |
Белл (Bell) |
Аналогично с LZSS, ссылки кодируются разными способами |
LZT |
Тишер (Tischer) |
Аналогично LZC, подстроки хранятся в LRU |
LZH |
Брэнт (Brent) |
Аналогично LZSS, ссылки сжимаются алгоритмом Хаффмана |
LZFG |
Фиала и Грин (Fiala & Greene) |
Основан на построении цифрового дерева |