Автор работы: Пользователь скрыл имя, 27 Декабря 2011 в 15:13, курсовая работа
Основоположником науки о сжатии информации принято считать Клода Шеннона. Его теорема об оптимальном кодировании показывает, к чему нужно стремиться при кодировании информации и на сколько та или иная информация при этом сожмется. Кроме того, им были проведены опыты по эмпирической оценке избыточности английского текста. Он предлагал людям угадывать следующую букву и оценивал вероятность правильного угадывания. На основе ряда опытов он пришел к выводу, что количество информации в английском тексте колеблется в пределах 0.6 — 1.3 бита на символ.
Введение
Общие сведения
Энтропия и количество информации
Комбинаторная, вероятностная и алгоритмическая оценка количества информации
Моделирование и кодирование
Некоторые алгоритмы сжатия данных
Алгоритм LZ77
Алгоритм LZ78-LZW84
Алгоритм PPM
BWT - преобразование и компрессор
Кодирование Хаффмана
Арифметическое кодирование
Алгоритм арифметического кодирования
Реализация алгоритма арифметического кодирования
Реализация модели
Доказательство правильности декодирования
Приращаемая передача и получение
Отрицательное переполнение
Переполнение и завершение
Адаптивная модель для арифметического кодирования
Эффективность сжатия
Заключение
Список литературы
Курсовая работа
Алгоритмы сжатия данных
Содержание
Введение
Общие сведения
Энтропия и количество информации
Комбинаторная, вероятностная и алгоритмическая оценка количества информации
Моделирование и кодирование
Некоторые алгоритмы сжатия данных
Алгоритм LZ77
Алгоритм LZ78-LZW84
Алгоритм PPM
BWT - преобразование и компрессор
Кодирование Хаффмана
Арифметическое кодирование
Алгоритм арифметического кодирования
Реализация алгоритма арифметического кодирования
Реализация модели
Доказательство правильности декодирования
Приращаемая передача и получение
Отрицательное переполнение
Переполнение и завершение
Адаптивная модель для арифметического кодирования
Эффективность сжатия
Заключение
Список литературы
Приложение 1. Программный код
Приложение
2. Интерфейс программы
Введение
Основоположником
науки о сжатии информации принято
считать Клода Шеннона. Его теорема
об оптимальном кодировании
Первые
алгоритмы сжатия были примитивными
в связи с тем, что была примитивной
вычислительная техника. С развитием
мощностей компьютеров стали
возможными все более мощные алгоритмы.
Настоящим прорывом было изобретение
Лемпелем и Зивом в 1977 г. словарных
алгоритмов. До этого момента сжатие
сводилось к примитивному кодированию
символов. Словарные алгоритмы позволяли
кодировать повторяющиеся строки символов,
что позволило резко повысить
степень сжатия. Важную роль сыграло
изобретение примерно в это же
время арифметического
Будущее
алгоритмов сжатия тесно связано
с будущим компьютерных технологий.
Современные алгоритмы уже
Таким образом, будущее за новыми алгоритмами с высокими требованиями к ресурсам и все более и более высокой степенью сжатия.
Устаревают не только алгоритмы, но и типы информации, на которые они ориентированы. Так, на смену графике с малым числом цветов и неформатированному тексту пришли высококачественные изображения и электронные документы в различных форматах. Известные алгоритмы не всегда эффективны на новых типах данных. Это делает крайне актуальной проблему синтеза новых алгоритмов.
Количество нужной человеку информации неуклонно растет. Объемы устройств для хранения данных и пропускная способность линий связи также растут. Однако количество информации растет быстрее. У этой проблемы есть три решения. Первое - ограничение количества информации. К сожалению, оно не всегда приемлемо. Например, для изображений это означает уменьшение разрешения, что приведет к потере мелких деталей и может сделать изображения вообще бесполезными (например, для медицинских или космических изображений). Второе — увеличение объема носителей информации и пропускной способности каналов связи. Это решение связано с материальными затратами, причем иногда весьма значительными. Третье решение - использование сжатия информации. Это решение позволяет в несколько раз сократить требования к объему устройств хранения данных и пропускной способности каналов связи без дополнительных издержек (за исключением издержек на реализацию алгоритмов сжатия). Условиями его применимости является избыточность информации и возможность установки специального программного обеспечения либо аппаратуры как вблизи источника, так и вблизи приемника информации. Как правило, оба эти условия удовлетворяются.
Именно
благодаря необходимости
Таким образом, разработка и внедрение новых алгоритмов сжатия, а также правильное использование существующих позволит значительно сократить издержки на аппаратное обеспечение вычислительных систем.
При реализации
алгоритма арифметического
Общие
сведения
Энтропия
и количество информации
Под энтропией
в теории информации понимают меру
неопределенности (например, меру неопределенности
состояния некоторого объекта). Для
того чтобы снять эту
Здесь и
далее понятие события
Комбинаторная,
вероятностная и
Наиболее простым способом оценки количества информации является комбинаторный подход. Согласно этому подходу, если переменная х может принадлежать к множеству из N элементов, то энтропия переменного
H(x) = log2 N.
Таким образом, для передачи состояния объекта достаточно I=log2N бит информации. Заметим, что количество информации может быть дробным. Разумеется, дробное количество информации невозможно сохранить на носителе или передать по каналам связи. В то же время, если необходимо передать либо сохранить большое количество блоков информации дробной длины, их всегда можно сгруппировать таким образом, чтобы полностью исключить потери (например, посредством арифметического кодирования).
Основным недостатком комбинаторного подхода является его ориентированность на системы с равновероятными состояниями. В реальном мире события, как правило, не равновероятны. Вероятностный подход к оценке количества информации, учитывающий этот фактор, является наиболее широко используемым на сегодняшний день. Пусть переменная х может принимать N значений хi с вероятностью р(хi). Тогда энтропия N
Обозначим через р(у|х) условную вероятность того, что наступит событие у если событие х уже наступило. В таком случае условная энтропия для переменной Y, которая может принимать М значений yi с условными вероятностями р(уi|х) будет
Приведенные формулы показывают, что вне зависимости от того, как были получены вероятности наступления следующих событий, для кодирования события с вероятностью р достаточно — log2 p бит (в полном соответствии с теоремой Шеннона об оптимальном кодировании).
Алгоритмический
подход применим в тех случаях, когда
данные обладают некоторыми закономерностями.
Согласно этому подходу, если данные
можно описать посредством некоторых
формул либо порождающих алгоритмов, энтропия
данных будет равна минимальному количеству
информации, необходимой для передачи
этих формул либо алгоритмов от источника
информации к приемнику. Алгоритмический
подход используется самостоятельно или
совместно с вероятностным, например,
в некоторых алгоритмах сжатия графической
информации.
Моделирование
и кодирование
Энтропия
набора данных, а значит и максимально
возможная степень сжатия, зависит
от модели. Чем адекватнее модель (чем
качественнее мы можем предсказать
распределение вероятности
Моделирование обеспечивает предсказание вероятности наступления возможных событий, кодирование обеспечивает представление события в виде -log2 p бит, где р - предсказанная вероятность наступления события. Задача моделирования, как правило, более сложная. Это обусловлено высокой сложностью современных моделей данных. В то же время кодирование не является серьезной проблемой. Существует большое количество стандартных кодеров, различающихся по степени сжатия и быстродействию. Как правило, в системах сжатия используемый кодер при необходимости может быть легко заменен другим.
Некоторые
алгоритмы сжатия данных
Алгоритм
LZ77
Этот словарный алгоритм сжатия является самым старым среди методов LZ. Описание было опубликовано в 1977 г., но сам алгоритм разработан не позднее 1975 г.
Алгоритм
LZ77 является родоначальником целого
семейства словарных схем - так
называемых алгоритмов со скользящим
словарем, или скользящим окном. Действительно,
в LZ77 в качестве словаря используется
блок уже закодированной последовательности.
Как правило, по мере выполнения обработки
положение этого блока
Скользящее окно имеет длину N, т. е. в него помещается N символов, и состоит из двух частей:
■ последовательности длины W=N-n уже закодированных символов, которая и является словарем;
■ упреждающего буфера, или буфера предварительного просмотра, длины n; обычно и на порядки меньше W.
Пусть к текущему моменту времени мы уже закодировали t символов S1, S2, ...,St. Тогда словарем будут являться W предшествующих символов St-(W-1), St-(W-1)+1, …, St. Соответственно, в буфере находятся ожидающие кодирования символы St+1, St+2, …, St+n. Очевидно, что если W≥ t, то словарем будет являться вся уже обработанная часть входной последовательности.
Идея алгоритма заключается в поиске самого длинного совпадения между строкой буфера, начинающейся с символа St+1, и всеми фразами словаря. Эти фразы могут начинаться с любого символа St-(W-1), St-(W-1)+1,…, St выходить за пределы словаря, вторгаясь в область буфера, но должны лежать в окне. Следовательно, фразы не могут начинаться с St+1. поэтому буфер не может сравниваться сам с собой. Длина совпадения не должна превышать размера буфера. Полученная в результате поиска фраза St-(i-1), St-(i-1)+1, …, St-(i-1)+(j-1) кодируется с помощью двух чисел: