- •ПРЕДИСЛОВИЕ
- •Глава 1. ИНФОРМАЦИОННАЯ ЭНТРОПИЯ
- •§ 1.3. Модели источников дискретных сообщений
- •§ 1.5. Равномерное кодирование
- •Глава 2. МЕТОДЫ КОДИРОВАНИЯ
- •§ 2.1. Неравномерное кодирование: постановка задачи
- •§ 2.3. Кодирование Хаффмана
- •§ 2.5. Арифметическое кодирование
- •СПИСОК ЛИТЕРАТУРЫ
- •ОТВЕТЫ К ЗАДАЧАМ ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ
- •ЗАКЛЮЧЕНИЕ
ЗАКЛЮЧЕНИЕ
В настоящем учебном пособии изложены, во-первых, математические основы современных методов обработки информации с точки зрения вопросов эффективного сжатия данных, а во-вторых, описываются теоретические алгоритмы кодирования, реализующие наиболее популярные из них. Предложенные алгоритмы позволяют обеспечить прикладные и поисковые научные исследования в области теории информации.
Алгоритм Хаффмана дает возможность сжимать преимущественно текстовую и графическую информацию, поэтому закономерно является основой многих компьютерных программ, посвященных этим задачам.
Кодирование Шеннона открывает широкие возможности с педагогической точки зрения, поскольку конкретная практическая реализация основанных на нем алгоритмов сжатия данных будет иметь заметно более простой вид по сравнению с алгоритмом Хаффмана, что позволит студентам лучше понять и усвоить материал.
Алгоритмом Гильберта – Мура возможно решить две проблемы: роста сложности построения кодовых слов и декодирования таких слов, возникающие при кодировании больших последовательностей неупорядоченных по какому-либо признаку символов.
Арифметическое кодирование уже на протяжении нескольких десятилетий заслуженно остается наиболее эффективным методом кодирования в случае дробных неравномерных интервалов распределения вероятностей кодируемых символов, что делает его более гибким в сравнении с алгоритмом Хаффмана.
Для более глубокой самостоятельной проработки рассмотренных алгоритмов оптимального кодирования приведен список литературы, позволяющий закрепить знания, полученные в области теории информации.
82
СПИСОК ЛИТЕРАТУРЫ
1.Shannon, C. E. A mathematical theory of communication / С. Е. Shannon // The Bell System Technical Journal. – 1948. – Vol. 27, no. 3. – Р. 379–423.
2.Феллер, В. Введение в теорию вероятностей и ее приложения :
в2 т. : пер. с англ. / В. Феллер. – Москва : Мир, 1984. – Т. 1. – 528 с.
3.Кудряшев, Б. Д. Теория информации : учеб. для вузов / Б. Д. Кудря-
шов. – Санкт-Петербург : Питер, 2009.– 314 с.– ISBN 978-5-388-00178-8.
4.Gallager, R. Variations on a theme by Huffman / R. Gallager // IEEE Transactions on Information Theory. – 1978. – Vol. 24, no. 6. – P. 668–674.
5.Manstetten, D. Tight bounds on the redundancy of Huffman codes / D. Manstetten // IEEE Transactions on Information Theory. – 1992. – Vol. 38, no. 1. – Р. 144–151.
6.Witten, I. H. Arithmetic coding for data compression / I. H. Witten, R. M. Neal, J. G. Cleary // Communications of the ACM. – 1987. – Vol. 30, no. 6. – Р. 520–540.
83
ОТВЕТЫ К ЗАДАЧАМ ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ
Г Л АВ А 1
§ 1.1
Задача 1. а) I(a) ≈1.737 бит, I(b) ≈3.322бит, I(c) ≈0.737 бит;
б) I(a) = I(b) = I(c) = log2 3 ≈1.585 бит.
Задача 2. N = 32 . Задача 3. H( X ) = 2 бит. Задача 4. H( X ) = 2.75 бит.
Задача 5. |
H( XY ) = 2.452 бит; нет, не |
являются, так как |
H (X ) ≈1.571 бит, |
H(Y ) ≈ 0.881 бит и H( XY ) ≠ H( X )H(Y ). |
|
Задача 6. H( Xrus ) ≈ 4.463 бит; H(X[eng]) ≈ 4.174 |
бит. |
|
§ 1.2
Задача 1. H( X ) = H(Y ) = log2 3 бит, H( X |Y ) = H(Y | X ) =1 бит.
Задача 2. а) H( X ) ≈1.157 бит; б) 1000 H(Y | X ) ≈ 472.36 бит;
в) H(Y ) ≈ 1.094 бит.
Задача 3. H(Y | X ) ≈0.329 бит. Задача 4. H( X ) ≈1.858 бит. Задача 5. H(B | A) ≈1.584 бит.
§ 1.3
Задача 1. p1 =(0.6,0.4) .
Задача 2.α =1/ 2, β =0.
Задача 3. p =(2 / 5,3 / 5).
Задача 4. |
|
|
|
|
|
|
|
0.25 |
0.50 |
0.25 |
|
Π = |
|
0.40 |
0.60 |
0.00 |
|
|
. |
||||
|
|
1.00 |
0.00 |
0.00 |
|
|
|
|
84
Задача 5. Марковский источник имеет два стационарных распределения:
p(1) = (0,3 / 5,0,2 / 5) и p(2) = (3 / 5,0,2 / 5,0).
Задача 6. В общем случае не является, так как при начальном распре-
делении p1 =(α,β,γ,1−α −β −γ ) вектор p∞ |
имеет вид |
|||||||||
|
3 |
(α +γ ), |
3 |
(1−α −γ ), |
2 |
(α |
+γ ), |
2 |
(1 |
|
p∞ = |
5 |
5 |
5 |
5 |
−α −γ ) . |
|||||
|
|
|
|
|
|
|
||||
Задача 7. а) 0.4231, 0.0279 и 0.0018; б) 0.5770, 0.0970 и 0.0163.
§ 1.4
|
|
|
Задача |
1. |
|
|
|
H1( X ) ≡ H( X ) ≈0.998 бит, |
|
H2 ( X ) ≈0.933 |
бит, |
|||||||||||||||||||||||||
|
H3( X ) ≈0.911 бит. |
H( X | X ) ≈0.868бит. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
Задача 2. Начиная с n =130. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
|
|
Задача 3. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
H ( X ) =t2−t |
−(1 |
−2−t )log |
2 |
(1−2−t ), H |
2 |
( X ) = 2−1(H ( X ) +2−t ). |
|
||||||||||||||||||||||||||
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
||||||||
§ 1.5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
Задача 1. а) Так как |
|
X |
|
n |
=115 =161051 > 2l = 28 = 256, то |
|
С |
|
= 2l = 256 . |
||||||||||||||||||||||||
|
|
|
|
|||||||||||||||||||||||||||||||||
Поэтому |
R = log |
2 |
|
C |
|
/ n =8 / 3 бит/символ. |
б) В |
этом |
случае |
|||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
X |
|
n =113 =1331 < 2l |
= 216 = 65536, следовательно |
|
С |
|
= |
|
X |
|
n =1331, |
откуда |
|||||||||||||||||||||||
|
|
|
|
|
|
|||||||||||||||||||||||||||||||
имеем R = log |
2 |
|
C |
|
/ n =11/ 3 бит/символ. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Задача 2. Указание: множество X n \ T должно содержать 9 кодируемых блоков, вероятности которых равны 0.01 или 0.02.
85
Г Л АВ А 2
§ 2.1
Задача 1. Код C1 .
Задача 3. l = 2.69 бит.
Задача 4. C1 ={00,010,110,111} и C2 ={01,10,000,001,110,111}.
§ 2.3
Задача 1. Код Хаффмана:a = 11, b = 01, c = 101, d = 000, e = 001, f = 1000,
g =1001;средняядлина |
|
= 2.55 бит; избыточность r ≈ 0.0218 бит. |
|
||||||||||||||||||||
l |
|
||||||||||||||||||||||
Задача 2. Средние длины кодов Хаффмана: |
|
|
|||||||||||||||||||||
а) для X : |
|
|
|
|
|
|
=3 / 2 бит; |
|
|
|
|
|
|
|
|
|
|||||||
l |
|
|
|
|
|
|
|
|
|
|
|||||||||||||
б) для X 2 : |
|
|
|
=3 бит; |
|
|
|
|
|
|
|
|
|
||||||||||
l |
|
|
|
|
|
|
|
|
|
||||||||||||||
в) для X 3 : |
|
|
|
=9 / 2 бит; |
|
|
|
|
|
|
|
|
|
||||||||||
l |
|
|
|
|
|
|
|
|
|
||||||||||||||
Во всех случаях избыточность равна нулю: r = 0 бит. |
|
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
log |
|
N |
|
|
|
|
Задача 3. l = log |
|
|
|
|
|
|
|
|
|
|
|||||||||||||
2 |
N +2 |
− |
|
2 |
2 |
. |
|
|
|
||||||||||||||
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
N |
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
§ 2.4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Задача 1. Код Шеннона: |
a = 00, |
b = 01, |
c =100, |
d =1011, |
e =1100 , |
||||||||||||||||||
f =11100, g =11110 . |
|
Средняя |
длина: |
|
= 2.85 |
бит; избыточность: |
|||||||||||||||||
|
l |
||||||||||||||||||||||
r = 0.3218 бит. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Задача 2. Код Гильберта – Мура: |
a = 00001, b = 0011, c =100, |
d =1100, |
|||||||||||||||||||||
e =11110 . Средняя длина: |
|
=3.8 бит; избыточность: r =1.6781 бит. |
|||||||||||||||||||||
l |
|||||||||||||||||||||||
§ 2.5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Задача |
1. |
|
Арифметический |
|
код |
слова |
x =bfcea |
равен |
|||||||||||||||
0101111001000100. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
Задача 2. cарифм(x) = 011011, |
I(x) ≈6.7616 бит, cшенн(x) =0100010. |
||||||||||||||||||||||
86
Приложение А ТАБЛИЦЫ ЧАСТОТНОСТЕЙ БУКВ РУССКОГО
И АНГЛИЙСКОГО ЯЗЫКОВ
Таблица А.1
Таблица частотностей букв русского алфавита
Ранг |
Буква |
Частотность, % |
1 |
О |
10.97 |
2 |
Е |
8.45 |
3 |
А |
8.01 |
4 |
И |
7.35 |
5 |
Н |
6.70 |
6 |
Т |
6.26 |
7 |
С |
5.47 |
8 |
Р |
4.73 |
9 |
В |
4.54 |
10 |
Л |
4.40 |
11 |
К |
3.49 |
12 |
М |
3.21 |
13 |
Д |
2.98 |
14 |
П |
2.81 |
15 |
У |
2.62 |
16 |
Я |
2.01 |
17 |
Ы |
1.90 |
18 |
Ь |
1.74 |
19 |
Г |
1.70 |
20 |
З |
1.65 |
21 |
Б |
1.59 |
22 |
Ч |
1.44 |
23 |
Й |
1.21 |
24 |
Х |
0.97 |
25 |
Ж |
0.94 |
26 |
Ш |
0.73 |
27 |
Ю |
0.64 |
28 |
Ц |
0.48 |
29 |
Щ |
0.36 |
30 |
Э |
0.32 |
31 |
Ф |
0.26 |
32 |
Ъ |
0.04 |
33 |
Ё |
0.04 |
87
Таблица А.2
Таблица частотностей букв английского алфавита
Ранг |
Буква |
Частотность, % |
1 |
E |
12.70 |
|
|
|
2 |
T |
9.06 |
|
|
|
3 |
A |
8.17 |
|
|
|
4 |
O |
7.51 |
|
|
|
5 |
I |
6.97 |
|
|
|
6 |
N |
6.75 |
|
|
|
7 |
S |
6.33 |
|
|
|
8 |
H |
6.09 |
|
|
|
9 |
R |
5.99 |
|
|
|
10 |
D |
4.25 |
|
|
|
11 |
L |
4.03 |
|
|
|
12 |
C |
2.78 |
|
|
|
13 |
U |
2.76 |
|
|
|
14 |
M |
2.41 |
|
|
|
15 |
W |
2.36 |
|
|
|
16 |
F |
2.23 |
|
|
|
17 |
G |
2.02 |
|
|
|
18 |
Y |
1.97 |
|
|
|
19 |
P |
1.93 |
|
|
|
20 |
B |
1.49 |
|
|
|
21 |
V |
0.98 |
|
|
|
22 |
K |
0.77 |
|
|
|
23 |
X |
0.15 |
|
|
|
24 |
J |
0.15 |
|
|
|
25 |
Q |
0.10 |
|
|
|
26 |
Z |
0.05 |
|
|
|
88
Приложение Б ПРЕОБРАЗОВАНИЕ ДЕЙСТВИТЕЛЬНЫХ ЧИСЕЛ
В ДВОИЧНУЮ СИСТЕМУ СЧИСЛЕНИЯ
Перевод действительных чисел в двоичную систему счисления основывается на следующем разложении:
x = an 2n +an−1 2n−1 + +a1 21 +a0 20 +a−1 2−1 +a−2 2−2 + , (Б.1)
где n – некоторое неотрицательное целое число; an ,an−1, ,a1,a0 ,a−1,a−2 , – числа, принимающие значения либо 0, либо 1. Можно доказать, что для всякого действительного числа x разложение (Б.1) единственно. В компактном виде это разложение можно записать как
anan−1 a1a0 .a−1a−2 ,
где последовательность чисел слева от разделителя представляет собой двоичную запись целой части числа x , а последовательность чисел справа от разделителя – это двоичная запись дробной части числа x . Так же, как и в десятичной системе счисления, некоторые числа представляются обрывающимся двоичным рядом (Б.1), но для большинства действительных чисел разложение (Б.1) будет бесконечным. Например, число x =1/ 3 представляется бесконечным рядом
1/ 3 =0 2−1 +1 2−2 +0 2−3 +1 2−4 +0 2−5 +1 2−6 + .
Его дробная часть в двоичной записи – это бесконечная последовательность чередующихся нулей и единиц: 0.01010101 . Напротив, число x = 3 / 4 представляется конечным рядом (Б.1)
3 / 4 =1 2−1 +1 2−2 ,
а его двоичная запись имеет вид 0.11.
89
На практике перевод действительных чисел в двоичную систему счисления осуществляется в два этапа. Сначала выделяют целую часть числа и переводят её в двоичную форму. Алгоритм решения подобной задачи хорошо известен, поэтому мы его опускаем. На втором этапе в двоичную форму переводится дробная часть числа. Для этого используют следующий алгоритм:
•дробная часть умножается на два;
•в полученном произведении выделяется целая часть; если она больше единицы, пишем цифру 1, в обратном случае – пишем цифру 0;
•алгоритм завершается, если дробная часть полученного произведения равна нулю или достигнута требуемая точность вычислений.
Как только десятичные выражения для целой и дробной частей получены, выписываем их в качестве ответа, отделяя знаком-разделителем (точкой или запятой).
90
