- •Министерство образования и науки российской федерации федеральное агентство по образованию
- •Захарова ю.Ф. Дискретная математика и ее приложения
- •Введение
- •Глава 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.2.2. Краткое описание lz-метода
Рассмотрим
алгоритм декодирования. Пусть входной
поток байтов
был закодирован в последовательность
байтов
.
Алгоритм декодирования
пусть по c1 … ck-1 уже восстановили a1 … ai-1,
читаем ck
если (первый бит ck = 0) то //(см. пример на рис.1)
рассмотреть остальные биты ck как двоичную запись числа n
следующие n символов ck+1 … ck+n просто скопировать на выход
если (первый бит ck = 1) то //(см. пример на рис.2)
рассмотреть остальные биты ck как двоичную запись числа n;
считать ck+1 — смещение назад;
скопировать
на выход
;
конец алгоритма
Рис.4
Рис.5
“Минусы” LZ-метода:
cj ограничены (~ 16 бит), следовательно, смещение назад ограничено, т.е. кодировщик “забывает” начало входного потока;
долгий процесс кодирования.
4.2.3. Пример lz-метода
По методу Зива-Лемпеля тот же пример кодируется следующим образом. Сначала записаны номера строк, затем сами строки, затем представление каждой из этих строк в виде пар (номер предыдущей строки, дополняющий символ). В начале образовалось семь строк длины 1. Восьмая буква совпала с первой строкой, поэтому восьмая строка составлена из первой строки и буквы “а”. Девятая строка состоит из одной буквы, а десятая — из восьмой строки и буквы “и”.
1 |
е |
0е |
2 |
х |
0х |
3 |
а |
0а |
4 |
л |
0л |
5 |
и |
0и |
6 |
_ |
0_ |
7 |
м |
0м |
8 |
ед |
1д |
9 |
в |
0в |
10 |
еди |
8и |
11 |
_н |
6н |
12 |
а_ |
3_ |
13 |
ве |
9е |
14 |
ло |
4о |
15 |
с |
0с |
16 |
ип |
5п |
17 |
еде |
8е |
18 |
_а |
6а |
19 |
_з |
6з |
20 |
а_н |
12н |
21 |
им |
5м |
22 |
и_ |
5_ |
23 |
к |
0к |
24 |
о |
0о |
25 |
т |
0т |
26 |
_за |
19а |
27 |
д |
0д |
28 |
ом |
24м |
29 |
_на |
11а |
30 |
п |
0п |
31 |
ер |
1р |
32 |
ед_ |
8_ |
33 |
а_з |
12з |
34 |
а_ни |
20и |
35 |
м_ |
7_ |
36 |
ко |
23о |
37 |
ма |
7а |
38 |
р |
0р |
39 |
ик |
5к |
40 |
и_н |
22н |
41 |
а_в |
12в |
42 |
оз |
24з |
43 |
ду |
27у |
44 |
ш |
0ш |
45 |
н |
0н |
46 |
ом_ |
28_ |
47 |
ша |
44ф |
48 |
ри |
38и |
49 |
ке |
23е |
50 |
_а_ |
18_ |
51 |
з |
0з |
52 |
а_ним |
34м |
53 |
и_р |
22р |
54 |
ак |
3к |
55 |
и_на |
40а |
56 |
_х |
6х |
57 |
ро |
38о |
58 |
мо |
7о |
59 |
й |
0й |
60 |
_с |
6с |
61 |
об |
24б |
62 |
аке |
54е |
63 |
_в |
6в |
64 |
ол |
24л |
65 |
ки |
23и |
66 |
_на_ |
29_ |
67 |
коб |
36б |
68 |
ы |
0ы |
69 |
ле |
4е |
70 |
_л |
6л |
71 |
ь |
0ь |
72 |
вы |
9ы |
73 |
_в_ |
63_ |
74 |
ав |
3в |
75 |
то |
25о |
76 |
моб |
58б |
77 |
ил |
5л |
78 |
е_ |
1_ |
79 |
за |
51а |
80 |
йч |
59ч |
81 |
ики |
39и |
82 |
_в_т |
73т |
83 |
ра |
38а |
84 |
мв |
7в |
85 |
ай |
3й |
86 |
ч |
0ч |
87 |
ике |
39е |
88 |
_ж |
6ж |
89 |
аб |
3б |
90 |
а_на |
20а |
91 |
_м |
6м |
92 |
ет |
1т |
93 |
ле_ |
69_ |
94 |
еду |
8у |
95 |
_т |
25_ |
96 |
и_с |
22с |
97 |
ме |
7е |
98 |
ю |
0ю |
99 |
тс |
25с |
100 |
я |
0я |
101 |
_п |
6п |
102 |
ря |
38я |
103 |
ни |
45и |
104 |
ки_ |
65_ |
105 |
ж |
0ж |
106 |
у |
0у |
107 |
ют |
98т |
108 |
\n |
0 |
109 |
eof |
0 |
Полезно взглянуть на рис. 6, где показаны длины получающихся строк и их изменяющаяся средняя длина. Вы видите, что только около семидесятой строки средняя длина строки превосходит 2 и при записи каждого номера строки в один байт получается небольшой выигрыш. При увеличении длины кодируемого текста выигрыш растет, а закодированную информацию можно еще дополнительно сжимать.
Рис. 6. Длины кодовых строк и поведение средней длины
