- •Министерство образования и науки российской федерации федеральное агентство по образованию
- •Захарова ю.Ф. Дискретная математика и ее приложения
- •Введение
- •Глава 1. Введение в теорию множеств.
- •1.1. Основные определения.
- •1.2. Задание множеств
- •1.3. Операции над множествами
- •1.4. Разбиения и покрытия
- •1.5. Представление множеств в эвм.
- •1.5.1. Включение множеств.
- •1.5.2. Объединение множеств.
- •1.5.3. Пересечение множеств.
- •Глава 2. Булева алгебра.
- •2.1. Основные элементарные функции.
- •2.2. Основные элементарные тождества.
- •2.3. Формы представления булевых функций.
- •2.4. Минимизация булевых функций.
- •2.4.1. Метод Куайна.
- •2.4.2. Метод Карно.
- •Глава 3. Исчисление высказываний и исчисление предикатов.
- •3.1. Исчисление высказываний.
- •3.2. Исчисление предикатов.
- •Глава 4. Теория сжатия текстовой информации.
- •4.1. Метод Хаффмена
- •4.1.1. Общие положения
- •4.1.2. Краткое описание метода Хаффмена.
- •4.1.3. Пример использования метода Хаффмена.
- •4.2. Метод Зива Лемпеля (lz-метод)
- •4.2.1. Основные определения
- •4.2.2. Краткое описание lz-метода
- •4.2.3. Пример lz-метода
- •4.3. Метод Зива-Лемпеля-Велча (lzw-метод)
- •4.3.1. Общие положения
- •4.3.2. Краткое описание lzw-метода
- •4.3.3. Пример lzw-метода.
- •4.4. Метод Барроуза-Уиллера.
- •4.4.1. Общие положения.
- •4.4.2. 1 Этап. Преобразование Барроуза-Уилера.
- •4.4.3. 2 Этап. Mtf–метод.
- •4.4.4. 3 Этап. Статистический кодер.
- •4.4.5. Модификации различных этапов.
- •4.4.6. Сравнение алгоритмов сжатия на базе bwt с другими методами.
- •Глава 5. Теория сжатия графической информации. Введение.
- •5.2. Волновой метод (wavelet-метод)
- •5.2.1. Описание метода
- •5.2.2. Пример волнового метода
- •5.3. Дискретное косинус-преобразование (дкп-метод).
- •5.3.1. Описание метода.
- •5.3.2. Пример дкп-метода.
- •5.4. Классический алгоритм jpg.
- •5.5. Фрактальный алгоритм.
- •Глава 6. Введение в криптографию. Введение.
- •6.1. Методы перестановки
- •6.1.1. Матрицы
- •6.1.2. Маршруты Гамильтона
- •6.1.3. Электрический монтаж
- •6.1.4. Особенности перестановки
- •6.2. Методы подстановки
- •6.2.1. Вектор замен
- •6.2.2. Таблицы Вижинера
- •6.3. Метод замены. Использование алгебры матриц.
- •6.4. Аддитивные методы
- •6.5. Стеганология
- •6.6. Ключ. Основные понятия, связанные с ключом и алгоритмом.
- •6.6.1. Основные понятия.
- •6.6.2. Ключ.
- •6.6.3. Случайные и псевдослучайные числа.
- •6.6.4. Действия по шифрованию информации.
- •6.7. Блочные и поточные шифры.
- •6.8. Алгоритмы des, Triple des и их заменяющие.
- •6.8.2. Алгоритм Triple des
- •6.8.3. Коммерческие алгоритмы, заменившие des
- •6.9. Системы с открытым ключом.
- •6.10. Электронная подпись.
- •6.11. Взлом защищенных файлов.
- •6.11.1. Атака на ключ
- •6.11.2. Атака на алгоритм.
- •6.11.3. Скомпрометированный пароль.
- •6.11.4. Подделка открытых ключей.
- •6.11.5. Не до конца удаленные файлы.
- •6.11.6. Вирусы и закладки.
- •6.11.7. Виртуальная память.
- •6.11.8. Нарушение режима физической безопасности. Радиоатака. Фальшивые даты подписи.
- •6.11.10. Утечка информации в многопользовательской среде.
- •Содержание
- •Глава 6. Введение в криптографию. 1
4.3.3. Пример lzw-метода.
Исходные символы текста получают свои кодовые номера априори, например номерами могут быть ASCII-коды символов, а встречающиеся в тексте цепочки символов заносятся в кодовую таблицу для возможного дальнейшего использования.
Здесь в первой колонке мы видим префикс рассматриваемой строки (в начале процесса он пуст), во второй колонке—очередной символ входного текста. Если текущая строка—конкатенация префикса и символа—уже включена в кодовую таблицу, она становится новым префиксом, в противном же случае она регистрируется, префикс (непустой) выводится в результат, а символ заменяет его как новый префикс.
В начале процесса букву “е” сохраняем как префикс. Далее, строка “ех” не встречалась – регистрируем ее с кодом 27 (т.к. в исходном алфавите 27 символов, пронумерованные от 0 до 26 в алфавитном порядке, код 0 имеет символ “_”), букву “х” запоминаем как новый префикс.
ех |
27 |
е |
ха |
28 |
х |
ал |
29 |
а |
ли |
30 |
л |
и_ |
31 |
и |
_м |
32 |
_ |
ме |
33 |
м |
ед |
34 |
е |
дв |
35 |
д |
ве |
36 |
в |
еди |
37 |
34 |
и_н |
38 |
31 |
на |
39 |
н |
а_ |
40 |
а |
_в |
41 |
_ |
вел |
42 |
36 |
ло |
43 |
л |
ос |
44 |
о |
си |
45 |
с |
ип |
46 |
и |
пе |
47 |
п |
еде |
47 |
34 |
е_ |
49 |
е |
_а |
50 |
_ |
а_з |
51 |
40 |
за |
52 |
з |
а_н |
53 |
40 |
ни |
54 |
н |
им |
55 |
и |
ми |
56 |
м |
и_к |
57 |
31 |
ко |
58 |
к |
от |
59 |
о |
т_ |
60 |
т |
_з |
61 |
_ |
зад |
62 |
52 |
до |
63 |
д |
ом |
64 |
о |
м_ |
65 |
м |
4.4. Метод Барроуза-Уиллера.
4.4.1. Общие положения.
Алгоритм сжатия данных на основе преобразования Барроуза-Уилера (Burrows-Wheeler Transform, далее BWT) впервые был описан сравнительно недавно - в 1994 году. Он был опубликован 10 мая в статье "A Block-sorting Lossless Data Compression Algorithm". Хотя утверждается, что один из его авторов, Майкл Уилер, придумал его гораздо раньше, в 1983 году, но тогда не придал ему надлежащего значения.
Сейчас этот метод стремительно обретает популярность среди исследователей в области сжатия данных, появляется все больше и больше научных статей, ему посвященных. Не обделяют его вниманием и программисты, разрабатывающие новые архиваторы. Этот метод привлекателен своей простотой и элегантностью, которые, я надеюсь, оценит также и читатель.
Классический алгоритм, описанный в оригинальной статье, представлял собой совокупность трех методов:
- метод сортировки блока данных (собственно который и называется преобразованием Барроуза-Уилера),
- MoveToFront-преобразование (известное также, как метод перемещения стопки книг),
- простой статистический кодер для сжатия преобразованных на первых двух этапах данных.
