Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

125 Кібербезпека / 4 Курс / 4.2_Управління інформаційною безпекою / Лiтература / V_P_Babak_A_A_Kliuchnykov-Teoreticheskye_osnovy_zashchity_informat

...pdf
Скачиваний:
132
Добавлен:
23.10.2019
Размер:
21.85 Mб
Скачать

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ЗАЩИТЫ ИНФОРМАЦИИ

Устанавливаются начальные значения вспомогательных сменных F 0, G 1. Принимается от ис-

 

 

 

 

 

ния:

 

 

 

 

 

 

 

 

 

 

 

 

 

F F q xi G,

 

 

Ричард Весли

 

 

 

G p xi G.

 

 

 

 

 

 

 

 

 

 

 

 

Хэмминг (Richard

3. Кодовое слово для x формируется как первые

Wesley Hamming,

log G 1 разрядов после запятой в двоичной запи-

1915 - 1998),

 

 

 

 

си числа (F G / 2).

 

 

 

 

американский

мате-

 

 

 

 

матик, которого мож-

Графическая интерпретация процесса кодирова-

но

назвать

гением

ния аналогична интерпретации

кодов

Шеннона и

одной идеи. Он сфор-

Гильберта - Мура (см. рис. 7.13 и 7.14).

 

 

мулировал ее в 1950 г.

 

 

Пример 7.7. Рассмотрим источник

X a b, c

в своей научной ста-

 

 

 

 

 

 

 

тье,

 

посвященной

из примера 7.5, характеризующийся распределением

кодам для корректи-

вероятностей

pa 0,1; pb 0,6; pc

. Вычисление,

рования ошибок.

Речь

выполняемые арифметическим кодером при кодиро-

шла

о

конструкции

вании последовательности x bcbab длины

n ,

блочного кода, кото-

 

 

 

 

 

 

 

рый

 

корректирует

приведено

в

табл. 7.5, где

F

обозначает

число

одиночные

ошибки,

(F G ,

округленное с недостаточной точностью

возникающие

 

при

до logG 1 9 двоичных разрядов.

 

 

передаче

сообщений.

 

 

 

 

 

 

 

 

 

Одним из важнейших

Как показано на рис. 7.15, на каждом шаге коди-

разделов

теории

ин-

рования вычисляют начальную точку F и длину G

формации

является

отрезка, которому будет принадлежать число, которое

теория

кодирования,

отвечает кодовой последовательности для заданной

основы которой зало-

последовательности сообщений.

Так, после первого

жил Хемминг. Пио-

шага x1 b

мы знаем, что точка будет подлежать

нерскую работу Хем-

минга было отмечено

отрезку [0,1; 0,7]. Более детально этот отрезок пока-

многими наградами. В

зан на рис. 7.13, б. Поскольку вторая буква

x2 c,

1996 г. в Мюнхене за

начальная точка перемещается в точку 0,52, а длина

исследование

кодов,

интервала уменьшается до 0,18 и т.д. После 5-го шага

которые

корректиру-

F

 

Прибавив сдвиг

G / 2 и

округлив до

ют ошибки, Хемминг

 

был

удостоен

пре-

девяти двоичных знаков, получим F .

 

стижной премии Эду-

Тем самым вся последовательность сообщений

 

 

 

 

 

точника

 

последовательность

сообщений

 

 

 

 

 

x x1, ..., xn .

 

 

 

 

 

 

 

 

 

2. Для

i n выполняются такие вычисле-

арда Рейма.

отображается в одну точку интервала [0,1]. Эта точка

 

 

на рис. 7.15 обозначена кружочком. Как было показа-

510

Глава 7. Кодирование информации

но раньше, девяти разрядов достаточно для того, чтобы последовательность восстановить однозначно, т.е. ближайшая возможная точка, которая отвечает

другой последовательности сообщений, отдалена от F на расстояние не ме-

нее чем 1/29 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 7.5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Шаг i

 

xi

 

p x

 

 

 

 

q x

 

 

 

 

 

 

 

 

 

F

 

G

 

 

 

 

 

 

 

 

i

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

-

 

 

 

-

 

 

 

 

-

 

 

 

 

 

 

 

 

 

0,0000

1,0000

 

1

 

b

 

 

 

0,6

 

 

 

 

0,1

 

 

 

 

 

 

 

 

 

0,1000

0,6000

 

2

 

c

 

 

 

0,3

 

 

 

 

0,7

 

 

 

 

 

 

 

 

 

0,5200

0,1800

 

3

 

b

 

 

 

0,6

 

 

 

 

0,1

 

 

 

 

 

 

 

 

 

0,5380

0,1080

 

4

 

a

 

 

 

0,1

 

 

 

 

0,0

 

 

 

 

 

 

 

 

 

0,5380

0,0108

 

5

 

b

 

 

 

0,6

 

 

 

 

0,1

 

 

 

 

 

 

 

 

 

0,5391

0,0065

 

6

 

Длина кодового слова

 

 

 

 

 

 

 

Кодовое слово

 

 

 

 

 

 

log G 1 9

 

 

 

F G / 2

 

 

 

 

 

 

 

 

ˆ

 

 

 

 

 

 

 

 

 

 

0.5423... F 0.541 100010101

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

pa

0.1

 

pb

0.6

 

 

pc

0.3

F 0 G 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

q

a

0

 

qb

 

ˆ

0.541

q

c

 

 

1

x

b

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

1

 

 

 

 

 

 

 

 

 

paG

 

pbG

 

 

p

G

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F 0.1 G 0.6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F 0.1

q2

 

 

 

 

q3

 

ˆ

 

 

F G 0.7

x2 c

 

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

 

 

 

paG

 

pbG

 

 

 

 

pcG

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F 0.52 G 0.18

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ˆ

 

 

 

 

 

 

 

 

 

F G

 

0.7

 

F 0.52

 

 

 

 

 

 

 

 

 

 

 

 

 

x3 b

 

 

 

 

 

 

F

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

paG

 

pbG

 

 

 

 

p

G

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c

 

 

 

 

 

 

 

F

0.538 G 0.108

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

 

 

F 0.538

ˆ

 

 

 

 

 

 

 

F G 0.646 x4

 

 

 

 

 

 

 

F

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

paG

 

pbG

 

 

 

 

p

G

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c

 

 

 

 

 

 

 

 

F

0.538

G 0.0108

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b

 

 

 

F 0.538

 

 

ˆ

 

 

 

 

0.5423

 

 

F G

 

0.5488

 

x5

 

 

 

 

 

 

 

 

 

F 0.541

 

0.5391 0.0065

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 7.15. Графическая интерпретация арифметического кодирования

Некоторые аспекты практической реализации арифметического коди-

рования.Как вытекает из описания арифметического кодирования, в случае его практической реализации для кодирования последовательностей большой длины n возникают такие проблемы: арифметическое кодирование нуждается в большой (в границе бесконечной) точности вычислений, которая приводит к недопустимо высокой сложности реализации; для формирования кодового слова формально необходима вся последовательность сообщений, которая приводит к недопустимо большой задержке кодирования, которая равняется длине кодированной последовательности сообщений.

511

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ЗАЩИТЫ ИНФОРМАЦИИ

Марсель Голей

(Marcel J.E. Golay, 1902 - 1989),

математик, физик, специалист в области теории информации, который применял математику к реальным практическим военным и промышленным задачам. Родился в Швейцарии. Изучал электротехнику в Швейцарском федеральном технологическом институте в Цюрихе. Работал над решением многих задач, включая газовую хроматографию и оптическую спектроскопию. Его достижение: разработка кодов Голея, обобщение абсолютных бинарных кодов Хэмминга к небинарным кодам, открытие комплементарных последовательностей.

Обе проблемы можно преодолеть. Решение заключается в том, что ту часть данных, которая не принимает участия в дальнейших вычислениях и уже не влияет на окончательный результат, можно изъять из вычислений и выдать на выход кодера. Тем самым уменьшается сложность вычислений и задержка кодирования. Чтобы объяснить, как это делается, рассмотрим работу декодера.

Начнем из анализа работы декодера кода Гильберта - Мура. Пусть для источника X 1, ..., M известные вероятности {p1, ..., pÌ }, по которым вычис-

m 1

лены qm q j , m qm pm / 2, длины слов

j 1

l

log p

/ 2

и кодовые слова длиной l

m

, полу-

m

 

m

 

 

 

ченные округлением значения m . Округленные к lm разрядам после запятой числа m обозначим черезm . Задача декодера состоит в восстановлении сообщения m по соответствующему округленному значению m m . Эта задача выполняется с помощью

приведенного дальше алгоритма.

Пример 7.8. Рассмотрим источник X {a, b, c} с распределением вероятностей pa ; pb ; pc . Допустим, что на вход декодера поступила

двоичная последовательность 0100010101. За этой последовательностью нужно восстановить последовательность закодированных сообщений. Проще возвратиться на несколько страниц назад, ведь в примере 7.7 мы получили именно эту последовательность на выходе кодера. Промежуточные результаты вычислений, выполненных согласно описанному алгоритму декодирования арифметического кода, приведены в табл. 7.6, из которой вытекает, что последовательность сообщения восстановлена правильно.

Возвратимся к вопросу о вычислительной сложности. Сущность проблемы заключается в том, что все вычисления, как в кодере, так и в декодере выполняются с переменными, разрядность которых равняется длине закодированной последовательности сообщений.

512

Глава 7. Кодирование информации

 

 

 

 

 

 

Таблица 7.6

 

 

 

 

 

 

 

 

 

Шаг

S

G

Гипотеза x

q(x)

S qG

Решение xi

p x

 

 

 

 

 

 

 

 

 

 

 

 

100010101 0.100010101 F 0.541

 

 

1

0,0000

1,0000

a

0,0

0.0000 F

b

0,6

 

 

 

 

b

0,1

0.1000 F

 

 

 

 

 

 

c

0,7

0.7000 F

 

 

 

2

0,1000

0,6000

a

0,0

0.1000 F

c

0,3

 

 

 

 

b

0,1

0.1600 F

 

 

 

 

 

 

c

0,7

0.5200 F

 

 

 

3

0,5200

0,1800

a

0,0

0.5200 F

b

0,6

 

 

 

 

 

 

 

 

 

 

 

 

 

b

0,1

0.5380 F

 

 

 

 

 

 

c

0,7

0.6460 F

 

 

 

4

0,5380

0,1080

a

0,0

0.5380 F

a

0,1

 

 

 

 

b

0,1

0.5488 F

 

 

 

5

0,5380

0,0108

a

0,0

0.5380 F

b

0,6

 

 

 

 

b

0,1

0.5391 F

 

 

 

 

 

 

c

0,7

0.5456 F

 

 

 

Возвратимся к вопросу о вычислительной сложности. Сущность проблемы заключается в том, что все вычисления, как в кодере, так и в декодере выполняются с переменными, разрядность которых равняется длине закодированной последовательности сообщений.

Рассмотрим подробнее работу кодера арифметического кода при кодировании последовательности из предыдущего примера. Обратимся к табл. 7.5. Видим, что после 3-го шага кодирования значение F уже не станет меньше 0,5 и больше 0,75 независимо от того, какими будут следующие сообщения источника. Отсюда вытекает, что первые два символа числа F уже не изменятся и могут быть переданы по каналу. После этого можно выполнить нормирование F 2(F 0,5), G 2G и продолжить кодирование.

Точно такое же нормирование выполняет и декодер. Тем самым разрядность сменных сократится без потери в точности вычислений. Нетрудно сформулировать общее правило выполнения такого рода нормирования. Трудности возникают в том случае, когда двоичное представление F содержит серию единиц после нуля (число F близкое к 0,5, но меньше, чем 0,5), т.е. F 0,01111... . Неопределенность устраняется одним из двух способов. Или

появится нулевой разряд F 0,01111...10... , или состоится перенесение в одном из младших разрядов F 0,10000...0... . Если состояние неопреде-

513

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ЗАЩИТЫ ИНФОРМАЦИИ

ленности будет длиться долго, то разрядности ячеек, используемых для хранения F и G, может оказаться недостаточно.

Выход из положения заключается в том, что кодер, соприкоснувшись с такой ситуацией, изменяет форму хранения числа F. Количество разрядов уменьшается за счет того, что в памяти сохраняется не сама серия единиц, а ее длина. В момент появления нуля на выход выдается последовательность вида 0111...1. Если же неопределенность завершилась перенесением, то на выход поступает 1000...0.

Аналогичные приемы применяются при реализации декодера. Кроме того, важно, что для вынесения решений относительно переданных символов не

нужна вся последовательность F , решения о сообщении можно выдать получателю, проанализировав часть кодовой последовательности. На примере 7.9 можно отследить, какой будет задержка принятия решений для каждого из пяти сообщений. Результаты вычисления приведены в табл. 7.7.

Таблица 7.7

Шаг i

Двоичный

Нижняя граница F

F

G

 

символ

 

 

 

1

1

0,5000

0,1000

-

2

0

0,5000

0,7500

b

3

0

0,5000

0,6250

 

4

0

0,5000

0,5625

 

5

1

0,5313

0,5625

c,d

6

0

0,5313

0,5469

a

7

1

0,5390

0,5469

 

8

0

0,5390

0,5430

b

9

1

0,5410

0,5430

 

Выяснилось, что в этом случае первый символ можно выдать получателю после получения из канала двух двоичных символов. По первым пяти символам можно вычислить три первых сообщения, а для однозначного восстановления всех пяти сообщений достаточно 8 бит. Последний 9-й бит в этом случае оказался неиспользованным.

Коды с памятью. По обыкновению рассматривают два типа кодов с памятью: блочные коды и блочные коды с конечной памятью.

Блочный код - это код, который разделяет вектор данных на блоки заданной длины и каждый указанный блок последовательно заменяет кодовым словом из префиксного множества двоичных слов. Образованную последовательность кодовых слов объединяют в результирующую двоичную строку на выходе кодера.

О блочном коде говорят, что он представляет собой блочный код k-го порядка, если все блоки имеют длину, равную k.

Пример 7.9. Сожмем вектор данных X (0,1, 1,0,1,0,0, 1,1,1,1, 0,0,1, 0,1), воспользовавшись блочным кодом 2-го порядка. Сначала разобьем

514

Глава 7. Кодирование информации

вектор X на блоки длиной 2:01, 10, 10, 01, 11, 10, 01, 01. Будем рассматривать эти блоки как элементы нового «гипералфавита» {01, 10, 10}. Чтобы

определить, какой код назначить этому или другому символу этого нового алфавита, определим вектор частот появлений элементов дополнительного алфавита в последовательности блоков. Получим вектор частот (4, 3, 1), т.е.

блок 01, что случается чаще всего - четыре раза, следующий за частотой появления блок 10 - он случается трижды, и блок 11, что случается наиболее реже - лишь один раз.

Оптимальный вектор Крафта для вектора частот (4, 3, 1) - это вектор (1, 2, 2). Таким образом, кодер для оптимального блочного кода 2- го порядка относительно заданного вектора данных X определяется табл. 7.8.

Заменяя каждый блок присвоенным ему кодовым словом из таблицы кодера, получаем последовательность кодовых слов: 0, 10, 10, 0, 11, 10, 0, 0.

 

Таблица 7.8

 

 

 

Таблица кодера

Блок

Кодовое слово

01

0

10

10

11

11

Объединяя эти кодовые слова вместе, имеем исходную последовательность кодера:

B(X ) (0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0).

Можно проверить, что энтропия H (X ) начального вектора X равна 0,9887 бит/букву, а степень сжатия, который получаем в результате использования блочного кода R(X ) 12/16 0,75 бит на выборку данных вышел

меньшим нижней границы энтропии.

Полученный результат, казалось бы, противоречит теореме Шеннона, которая утверждает, что невозможно достичь средней длины кода меньше, чем энтропия источника (см. гл. 5). Тем не менее, на самом деле такого разногласия нет. Если рассмотреть вектор данных X , то можно заметить закономерность: за символом 0 чаще всего идет 1, т.е. условная вероятность P(1/0) существенным образом большая, чем просто P(0). Итак, энтропию

этого источника нужно вычислять как энтропию сложного сообщения, а она, как известно, всегда меньшая, чем для источника простых сообщений.

Код с конечной памятью - это такой код, который при кодировании вектора данных (X1, X2 ,..., Xn ) использует кодовую книгу (словарь), кото-

рый состоит из нескольких разных кодов без памяти. Каждая выборка данных кодируется таким кодом без памяти из кодовой книги, который определяется значением некоторого количества предыдущих выборок данных.

515

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ЗАЩИТЫ ИНФОРМАЦИИ

Кодер с памятью - это такой кодер, который при кодировании текущего символа учитывает значение предыдущего символа.

Таким образом, кодовое слово для текущего символа A будет разным в комбинациях RA, DA ³ CA (другими словами, код имеет память в один сим-

вол источника) (табл. 7.9).

 

Результат кодирования – вектор B(X ) (10111011111011),

имеющий

длину 11 бит и скорость сжатия R 13/11 1,18 бит на символ данных, тогда

как при кодировании равномерным триразрядным кодом из R 3

понадоби-

лось бы 33 бит.

 

 

Таблица 7.9

 

 

 

Кодер

 

 

 

 

Символ, предыдущий символ

 

Кодовое слово

(A, -)

 

1

(B, A)

 

0

(C, A)

 

10

(D, A)

 

11

(A, R)

 

1

(R, B)

 

1

(A, C)

 

1

(A, B)

 

1

Метод Зива - Лемпела. Практически все словарные методы кодирования принадлежат к алгоритмам, предложенным в работе двух израильских ученых Абрама Лемпела и Якоба Зива, опубликованной в 1977 г.

Суть указанных алгоритмов заключается в том, что фразы в тексте, который сжимается, заменяют показателем в том месте, где они в этом тексте уже раньше появлялись.

Эту семью алгоритмов называют методом Зива - Лемпела и обозначают как LZ-сжатие. Этот метод быстро приспосабливается к структуре текста и дает возможность кодировать короткие функциональные слова, поскольку они очень часто в нем появляются. Новые слова и фразы могут также формироваться из частей слова, которые раньше случались.

Декодирование сжатого текста осуществляется непосредственно - происходит простая замена показателя готовой фразой со словаря, на которую тот указывает. На практике LZ-метод дает результативное сжатие, его важным свойством является быстрая работа декодера. (Когда мы говорим о тексте, то допускаем, что кодированию подвергается некоторый вектор данных с конечным дискретным алфавитом, причем это не обязательно текст в буквальном понимании этого слова.)

Большинство словарных методов кодирования названо в честь авторов идеи метода Зива и Лемпела, и часто считают, что все методы используют

516

Глава 7. Кодирование информации

один и тот же самый алгоритм кодирования. На самом деле разные представители этой семьи алгоритмов отличаются в деталях работы.

Словарные методы кодирования можно разбить на две группы.

1. Методы первой группы - находя в кодированной последовательности цепочки символов, которые раньше уже встречались, вместо того, чтобы повторять эти цепочки, заменяют их показателями на предыдущие повторения.

Словарь в этой группе алгоритмов в неявном виде содержится в обрабатываемых данных, а сохраняются лишь показатели на цепочки символов, которые повторяются.

Все методы этой группы базируются на алгоритме, разработанным Лемпелем и Зивом, который получил название LZ77. Наиболее совершенным представителем этой группы, которая воплощает в себе все соответствующие научные достижения, есть алгоритм, опубликованный в 1982 г. Сторером и Шиманским и известный как LZSS.

Процедуру такого кодирования иллюстрирует рис. 7.16.

Входные данные

Выходные данные

001

001

010

010

100

100

011

011

111

111

001

1

010

101

 

100

 

101

 

Рис. 7.16. Процедура кодирования соответственно алгоритмам первой группы

2. Методы второй группы - в дополнение к начальному словарю источника создают словарь фраз, которые являются повторными комбинациями символов начального словаря, которые встречаются во входных данных.

При этом размер словаря источника возрастает и для его кодирования понадобится большее количество бит, но значительную часть этого словаря будут представлять уже не отдельные буквы, а целые слова. Когда кодер обнаруживает фразу, которая раньше уже встречалась, он заменяет ее индексом словаря, который содержит эту фразу. При этом длина кода индекса выходит намного меньшей чем длина кода фразы.

517

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ЗАЩИТЫ ИНФОРМАЦИИ

Все методы этой группы базируются на алгоритме, разработанным и опубликованным Лемпелем и Зивом в 1978 г., - LZ78. Наиболее совершенным на данный момент представителем этой группы словарных методов есть алгоритм LZW, разработанный 1984 года Тери Велчем.

Идею алгоритмов этой группы делает наглядным рис. 7.17.

Входные данные

Выходные данные

 

Словарь

 

 

001

 

 

 

 

 

 

1

1

001

010

 

 

 

 

010

 

 

 

 

 

100

2

2

100

011

 

 

 

 

 

 

011

111

3

100

101

 

 

 

 

111

5

 

 

 

 

 

4

101

011

 

 

 

 

001

 

 

 

 

 

 

101

 

 

 

 

010

 

5

001

010

011

 

 

 

 

 

 

000

 

 

 

 

011

 

 

 

 

 

101

110

 

 

 

 

 

 

 

 

 

000

110

Рис. 7.17. Процедура кодирования соответственно алгоритмам второй группы

Принцип работы алгоритмов второй группы объяснить намного проще, чем принцип алгоритмов первой группы, поэтому начнем рассмотрение принципа действия LZ-кодеров из алгоритма LZW.

Процесс сжатия приобретает довольно простой вид. Последовательно прочитываем символы входного потока (строка) и проверяем, есть ли в уже созданной таблице такая строка. Если строка есть, то считываем следующий символ, а если такой строки нет, ставим в исходный поток код для предыдущего найденного ряда, заносим его в таблицу и начинаем поиск снова.

LZW-декодер, обрабатывая входной поток закодированных данных, возобновляет из него начальные данные. Равно как и алгоритм сжатия, декодер прибавляет красные строки к словарю каждый раз, когда находит во входном потоке новый код. Все, что ему остается сделать, - это превратить входной код в исходную строку символов и отдать его на выход кодера.

Преимуществом этого способа сжатия есть то, что весь словарь новых символов передается декодеру собственно без передачи. В конце процесса декодирования декодер имеет такой же словарь новых символов, какой в

518

Глава 7. Кодирование информации

процессе кодирования был накоплен кодером, при этом его создание было частью процесса декодирования.

Кодирование длин повторений. Кодирование

 

 

 

 

 

 

длин участков (или повторений) может быть доста-

 

 

 

 

 

 

точно эффективным при сжатии двоичных данных,

 

 

 

 

 

 

например черно-белых изображений, которые содер-

 

 

 

 

 

 

жат множество прямых линий и однородных участ-

 

 

 

 

 

 

ков, схем и т.д.

 

 

 

 

 

Ирвинг Рид (Irving

Идея сжатия данных на основе кодирования

S. Reed, 1923),

 

 

длин повторений заключается в том, что вместо

математик и инженер.

кодирования самих данных прибегают к кодированию

Родился

в

Сиетле.

чисел, которые отвечают длинам участков, на ко-

Получила

 

степень

доктора философии в

торых данные сохраняют неизменное значение.

области математики в

Предположим, что нужно закодировать двоичное

Калифорнийском

 

(двухцветное) изображение размером

8 × 8

элемен-

 

технологическом

 

тов. Просканировав это

изображение

 

по

строкам

 

 

институте

 

(1949).

(двум объектам на изображении будут соответство-

 

Член

 

Национальной

вать 0 и 1), в результате получим двоичный вектор

инженерной академии

данных, например:

 

 

 

 

 

и Института инжене-

X (01110000111100000001000000010000000100000

ров по электротехнике

00111100011110111101111)

 

 

и электронике, а так-

 

 

же

лауреат

премии

 

 

 

 

 

 

 

 

длиной 64 бит (скорость начального кода составляет 1

имени

Клода

Элвуда

бит на элемент изображения).

 

 

 

 

Шеннона.

Главное

Выделим в векторе X участки, на которых дан-

достижение -

разра-

ные сохраняют неизменное значение, и определим их

ботка вместе с Густа-

длины. Результирующая

последовательность длин

вом

Соломоном

ал-

гебраических

кодов

участков - положительных целых чисел, отвечающих

выявления

и

исправ-

начальному вектору данных X ,

- будет иметь вид

ление

ошибок,

из-

r (1, 3, 4, 4, 7, 1, 7, 1, 7,1, 7,

4, 3, 4, 1, 4, 1, 4).

вестных

как

 

коды

 

 

 

 

 

 

 

 

 

Теперь эту последовательность, в которой за-

Рида-Соломона. Так-

метна определенная повторяемость, можно закодиро-

же является соизобре-

вать некоторым статистическим кодом, например

тателем

кодов Рида-

кодом Хаффмана без памяти (табл. 7.10).

 

Мюллера.

 

Сделал

 

значительный вклад в

 

 

 

Таблица 7.10

 

 

 

 

 

электротехнику,

в

 

 

 

 

 

 

 

 

 

Кодер

 

 

 

 

частности

радиолока-

 

Длина участка

 

Кодовое слово

 

 

 

цию, сигналов и изоб-

 

4

 

 

0

 

 

 

ражений.

 

 

 

 

1

 

10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

 

110

 

 

 

 

 

 

 

 

 

 

3

 

111

 

 

 

 

 

 

 

 

 

519