
- •5.1. Организация данных и управление ими.
- •5.1.1 Данные и их обработка
- •5.1.2. Простые (неструктурированные) типы данных
- •5.1.3. Структурированные типы данных
- •5.1.3.1. Массивы
- •5.1.3.2. Записи
- •5.1.3.3. Множества
- •5.1.3.4. Очередь
- •5.1.3.5. Стек
- •5.1.3.6. Иерархическая организация данных
- •5.2. Понятие «файл» и «файловая система».
- •5.2.1. Определения
- •5.2.2. Структура файла
- •5.3. Структура файловой системы. Файловое дерево.
- •5.3.1. Состав файловой системы
- •5.3.2. Задачи файловой системы
- •5.3.3. Классификация файловых систем
- •5.3.4. Файловое дерево.
- •5.3.5. Файловая система fat
- •5.3.6. Файловая система ntfs
- •5.3.7. Сравнение fat и ntfs
- •5.4. Создание файлов, типизация файлов. Управление версиями файлов. Защита файлов.
- •5.4.1. Атрибуты файлов
- •5.4.2. Операции над файлами
- •5.4.3. Защита файлов
- •5.4.4. Типы файлов – имена и расширения
- •5.5. Сжатие информации.
- •5.5.1 Определения
- •5.5.2. Объекты сжатия
- •5.5.3. Обратимость сжатия
- •5.5.4. Алгоритмы сжатия данных без потери информации
- •5.5.4.1. Алгоритм rle
- •5.5.4.2. Алгоритм kwe
- •5.5.4.3. Алгоритм Хаффмана
- •5.5.4.4. Алгоритм Лемпеля-Зива (lz77, lzw, lzh)
- •5.5.4.5. Алгори́тм Ле́мпеля — Зи́ва — Ве́лча (lzw)
- •5.5.4.6. Свойства алгоритмов сжатия
- •5.5.4.7. Синтетические алгоритмы
- •5.5.5. Алгоритмы сжатия данных с потерей информации
- •5.5.5.1. Сжатие изображений
- •5.5.5.2. Формат gif
- •5.5.5.3. Формат jpeg
- •5.5.5.4. Другие методы сжатия
- •5.5.5.5. Сжатие звука
5.5.4. Алгоритмы сжатия данных без потери информации
Метод кодирования длины серий даёт наилучшие результаты, если сжимаемые данные состоят из длинных последовательностей одних и тех же значений (алгоритмы RLE, KWE).
Метод относительного кодирования. В некоторых случаях информация может состоять из блоков данных, каждый из которых может немного отличаться от предыдущего. Примером могут служить последовательные кадры видеоизображения. Каждый блок кодируется с точки зрения его взаимосвязи с предыдущим блоком.
[54 слайд]
Метод частотно-зависимого кодирования, при котором длина битовой комбинации, представляющей элемент данных, обратно пропорциональна частоте использования этого элемента (коды Хоффмана).
Методы кодирования Lempel-Ziv являются наиболее универсальными для сжатия данных общего назначения. Системы кодирования по методу Lempel-Ziv используют технологию кодирования с применением адаптивного словаря. В данном контексте словарь означает набора строительных блоков, из которых создаётся сжатое сообщение. Строительными блоками могут быть символы алфавита, блок данных (нулей и единиц), хранящихся в компьютере.
[55 слайд]
5.5.4.1. Алгоритм rle
В основу алгоритмов кодирования длины серий RLE (Run-Length Encoding) положен принцип выявления повторяющихся последовательностей данных и замены их простой структурой, в которой указывается код данных и коэффициент повтора.
Например, для последовательности: 0; 0; 0; 127; 127; 0; 255; 255; 255; 255 (всего 10 байтов) образуется следующий вектор:
Значение |
Коэффициент повтора |
0 |
3 |
127 |
2 |
0 |
1 |
255 |
4 |
При записи в строку он имеет вид:
0; 3; 127; 2; 0; 1; 255; 4 (всего 8 байтов).
В данном примере коэффициент сжатия равен 8/10 (80 %).
Программные реализации алгоритмов RLE отличаются простотой, высокой скоростью работы, но в среднем обеспечивают недостаточное сжатие. Наилучшими объектами для данного алгоритма являются графические файлы, в которых большие одноцветные участки изображения кодируются длинными последовательностями одинаковых байтов. Этот метод также может давать заметный выигрыш на некоторых типах файлов баз данных, имеющих таблицы с фиксированной длиной полей. Для текстовых данных методы RLE, как правило, неэффективны.
[56 слайд]
5.5.4.2. Алгоритм kwe
В основу алгоритмов кодирования по ключевым словам (Keyword Encoding) положено кодирование лексических единиц исходного документа группами байтов фиксированной длины. Примером лексической единицы может служить слово (последовательность символов, справа и слева ограниченная пробелами или символами конца абзаца). Результат кодирования сводится в таблицу, которая прикладывается к результирующему коду и представляет собой словарь. Обычно для англоязычных текстов принято использовать двухбайтную кодировку слов. Образующиеся при этом пары байтов называют токенами.
Эффективность данного метода существенно зависит от длины документа, поскольку из-за необходимости прикладывать к архиву словарь длина кратких документов не только не уменьшается, но даже возрастает. Данный алгоритм наиболее эффективен для англоязычных текстовых документов и файлов баз данных. Для русскоязычных документов, отличающихся увеличенной длиной слов и большим количеством приставок, суффиксов и окончаний, не всегда удается ограничиться двухбайтными токенами, и эффективность метода заметно снижается.
[57 слайд]