Программные методы защиты информации. Часть 1. Крыжановская Ю.А. - 21 стр.

UptoLike

Составители: 

21
Рассмотрим таблицу снова для следующих двух символов (B и E). Затем продол-
жим поддерживать этот режим , пока все "дерево" не будет сформировано , т.е.
пока все не сведется к одному узлу.
Символ
C A D F B E
Число вхождений
30 10 5 10 20 25
Теперь, когда дерево создано, можно кодировать файл. Нужно всегда начинать из
корня (Root). Кодируя первый символ (лист дерева С), следует прослеживать
вверх по дереву все повороты ветвей и, если делается левый поворот, то запоми-
нается 0-й бит, и аналогично 1-й бит для правого поворота. Так для C, будем идти
влево к 55 (и запомним 0), затем снова влево (0) к самому символу. Код Хаффма-
на для символа C - 00. Для следующего символа (А ) получится - лево, право, лево,
лево, что выливается в последовательность 0100. Выполнив эти действия для всех
символов , получим : C = 00 (2 бита); A = 0100 (4 бита); D = 0101 (4 бита); F = 011
(3 бита); B = 10 (2 бита); E = 11 (2 бита). При кодировании нужно заменить симво-
лы полученными последовательностями.
Для построения префиксных кодов можно также использовать таблицы.
Вспомним , что в случае применения префиксных кодов для кодирования текста
можно не указывать конец символа и записывать один код за другим без раздели-
теля, и рассмотрим текст : "ЗАЩИТА ПРОГРАММ И ДАННЫХ ОТ НСД ".
Объем закодированного текста может быть определен по формуле:
k
V =
Σ
(b
i
* p
i
),
i=1
где k - всего разных символов в тексте;
р
i
- число повторений i-го символа;
b
i
- длина кода i-го символа.
Пример 17:
Символ Частота повторения
Код Объем (бит)
ПРОБЕЛ 5 1
5
25
15
25
55
45
100 (Root)
                                          21



                                               25
Рассмотрим таблицу снова для следующих двух символов (B и E). Затем продол-
жим поддерживать этот режим, пока все "дерево" не будет сформировано, т.е.
пока все не сведется к одному узлу.
 Символ                 C       A   D        F      B        E
 Число вхождений        30     10   5       10      20       25


                                     15
                                                              45

                                               25


                                55


                                                100 (Root)

Теперь, когда дерево создано, можно кодировать файл. Нужно всегда начинать из
корня (Root). Кодируя первый символ (лист дерева С), следует прослеживать
вверх по дереву все повороты ветвей и, если делается левый поворот, то запоми-
нается 0-й бит, и аналогично 1-й бит для правого поворота. Так для C, будем идти
влево к 55 (и запомним 0), затем снова влево (0) к самому символу. Код Хаффма-
на для символа C - 00. Для следующего символа (А) получится - лево, право, лево,
лево, что выливается в последовательность 0100. Выполнив эти действия для всех
символов, получим: C = 00 (2 бита); A = 0100 (4 бита); D = 0101 (4 бита); F = 011
(3 бита); B = 10 (2 бита); E = 11 (2 бита). При кодировании нужно заменить симво-
лы полученными последовательностями.
       Для построения префиксных кодов можно также использовать таблицы.
Вспомним, что в случае применения префиксных кодов для кодирования текста
можно не указывать конец символа и записывать один код за другим без раздели-
теля, и рассмотрим текст: "ЗАЩИТА ПРОГРАММ И ДАННЫХ ОТ НСД".
Объем закодированного текста может быть определен по формуле:
     k
V = Σ (bi * pi),
    i=1
где k - всего разных символов в тексте;
    рi - число повторений i-го символа;
    bi - длина кода i-го символа.
Пример 17:
        Символ Частота повторения                  Код         Объем (бит)
       ПРОБЕЛ                 5                             1       5