Кодирование сообщений
Задано сообщение, состоящее из букв алфавита {a, b, c, d, e, f, g, h, i}.
Сообщение: adadbbfbabccdfdfaddebiieffbghhi
a-4
b-6
c-2
d-6
e-2
f-5
g-1
h-2
i-3
всего31
Для данного алфавита:
№ 15. Построить равномерный код.
Решение.
0 1 2 3 4 5 6 7 8 |
a b c d e f g h i |
0000 0001 0010 0011 0100 0101 0110 0111 1000 |
№ 16. Построить код Шеннона – Фано.
Решение.
Символ |
Частота встречаемости |
a b c d e f g h i |
P(a)=4/31=0,13 P(b)=6/31=0,195 P(c)=2/31=0,065 P(d)=6/31=0,195 P(e)=2/31=0,065 P(f)=5/31=0,16 P(g)=1/31=0,03 P(h)=2/31=0,065 P(i)=3/31=0,95 |
Сортируем символы по убыванию частоты встречаемости:
b |
0,195 |
0 |
0 |
|
|
d |
0,195 |
0 |
1 |
0 |
|
f |
0,16 |
0 |
1 |
1 |
|
a |
0,13 |
1 |
0 |
0 |
|
i |
0,095 |
1 |
0 |
1 |
|
c |
0,065 |
1 |
1 |
0 |
0 |
e |
0,065 |
1 |
1 |
0 |
1 |
h |
0,065 |
1 |
1 |
1 |
0 |
g |
0,03 |
1 |
1 |
1 |
1 |
№ 17. Построить код Хаффмана.
Решение.
b
d
f
a
i
c
e
h
g
b – 10
d – 000
f – 001
a – 010
i – 110
c– 0110
e– 0111
h – 1110
g – 1111
№ 18. Найти избыточность равномерного кода и кода Хаффмана
Решение.
Символ |
Код Хаффмана |
p |
n |
Равномерный код |
|
b d f a i c e h g |
10 000 001 010 110 0110 0111 1110 1111 |
0,195 0,195 0,16 0,13 0,095 0,065 0,065 0,065 0,03 |
2 3 3 3 3 4 4 4 4 |
a b c d e f g h i |
0000 0001 0010 0011 0100 0101 0110 0111 1000 |
Избыточность для равномерного кода
Используем формулу K=(nср – H)/nср, где nср=∑pi * ni
H= - ∑ pi * log2pi
H= - 0,195* log2 0,195- 0,195* log2 0,195- 0,16* log2 0,16- 0,13* log2 0,13- 0,095* log2 0,095- 0,065* log2 0,065- 0,065* log2 0,065- 0,065* log2 0,065- 0,03* log2 0,03 = 0,46+0,46+0,42+0,38+0,06+0,05+0,05+0,05+0,03=1,96
nср= 4
K= (4-1,96)/4 = 0,51 (51%)
Избыточность для кода Хаффмана
Используем формулу K=(nср – H)/nср, где nср=∑pi * ni
H= - ∑ pi * log2pi
H= - 0,195* log2 0,195- 0,195* log2 0,195- 0,16* log2 0,16- 0,13* log2 0,13- 0,095* log2 0,095- 0,065* log2 0,065- 0,065* log2 0,065- 0,065* log2 0,065- 0,03* log2 0,03 = 0,46+0,46+0,42+0,38+0,06+0,05+0,05+0,05+0,03=1,96
nср=0,195*2+0,195*3+0,16*3 +0,13* 3+0,095 *3+0,065*4+0,065*4+0,065*4+0,03 *4=3,03
K=(3,03-1,96)/3,03=0,35 (35 %)
№ 19. Закодировать первые два символа сообщения кодом Хаффмана и построить для полученного двоичного сообщения код Хемминга.
a – 010
b – 000
010000
1) (n=6) n-количество разрядов в коде
2) Находим количество проверочных разрядов по формуле P>=log2(n+p+1)
P=1 P>=log2(6+1+1)= log28=3 – не удовлетворяет условию
P=2 P>=log2(6+2+1)= log29=3,17 – не удовлетворяет условию
P=3 P>=log2(6+3+1)= log210=3,32 – не удовлетворяет условию
P=4 P>=log2(6+4+1)= log211=3,46 – удовлетворяет условию
№ разряда |
Обозначение разрядов |
Значение разрядов |
Двоичное представление номеров разрядов |
|||
1 |
Y1 |
1 |
|
|
|
1 |
2 |
Y2 |
0 |
|
|
1 |
0 |
3 |
X1 |
0 |
|
|
1 |
1 |
4 |
Y3 |
1 |
|
1 |
0 |
0 |
5 |
X2 |
1 |
|
1 |
0 |
1 |
6 |
X3 |
0 |
|
1 |
1 |
0 |
7 |
X4 |
0 |
|
1 |
1 |
1 |
8 |
Y4 |
0 |
1 |
0 |
0 |
0 |
9 |
X5 |
0 |
1 |
0 |
0 |
1 |
10 |
X6 |
0 |
1 |
0 |
1 |
0 |
|
|
Код Хемминга |
4 |
3 |
2 |
1 |
Уравнения для контрольных сумм
1=Y1X1X2X4X5 =0 Y1 0 1 0 0 = 0 Y1=1
2=Y2X1X3X4X6 = 0 Y2 0 0 0 0 = 0 Y2= 0
3=Y3X2X3X4 = 0 Y3 1 0 0 = 0 Y3=1
4=Y4X5X6 = 0 Y4 0 0 = 0 Y4=0
Ответ: 1001100000 – код Хемминга
