
1.Цель работы: изучить основные методы кодирования данных с известной статистикой
2.Постановка задачи:
Закодировать заданный текст с помощью метода Хафмана, метода Шенона, методом Гильберта-Мура и при помощи арифметического кода. Результат работы представить в таблицах.
3. Исходный текст:
Сунул˽Грека˽руку˽в˽реку, ˽рак˽за˽руку˽Греку˽цап! ˽А˽вот˽белка˽не˽бела, ˽белой˽даже˽не˽была.
4. Таблица результатов
n |
H(xn) |
H(x/xn-1) |
Hn(x) |
к.х. |
к.ш. |
к.г.м. |
ар. Код |
|||||
|
|
|
|
mx |
Rx |
mш |
Rш |
mгм |
Rгм |
mак |
Rак |
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
|
|
|
|
|
|
|
|
|
|
5. Побуквенное кодирование:
xi |
Ni |
p(xi) |
J(xi) |
p(xi)J(xi) |
mш |
q(xi) |
Cш |
mгм |
сигма |
Сгм |
mx |
Сх |
˽ |
18 |
0,2117647 |
2,2395 |
0,4742 |
3 |
0 |
0 |
4 |
0,1059 |
1 |
2 |
0 |
е |
9 |
0,1058824 |
3,2395 |
0,343 |
4 |
0,2118 |
11 |
5 |
0,2647 |
1000 |
2 |
1 |
а |
9 |
0,1058824 |
3,2395 |
0,343 |
4 |
0,3176 |
101 |
5 |
0,3706 |
1011 |
3 |
100 |
у |
7 |
0,0823529 |
3,602 |
0,2966 |
4 |
0,4235 |
110 |
5 |
0,4647 |
1110 |
3 |
101 |
к |
7 |
0,0823529 |
3,602 |
0,2966 |
4 |
0,5059 |
1000 |
5 |
0,5471 |
10001 |
4 |
1100 |
р |
6 |
0,0705882 |
3,8244 |
0,27 |
4 |
0,5882 |
1001 |
5 |
0,6235 |
10011 |
4 |
1101 |
л |
5 |
0,0588235 |
4,0875 |
0,2404 |
5 |
0,6588 |
10101 |
6 |
0,6882 |
101100 |
5 |
11100 |
б |
4 |
0,0470588 |
4,4094 |
0,2075 |
5 |
0,7176 |
10110 |
6 |
0,7412 |
101111 |
5 |
11101 |
н |
3 |
0,0352941 |
4,8244 |
0,1703 |
5 |
0,7647 |
11000 |
6 |
0,7824 |
110010 |
6 |
111100 |
Г |
2 |
0,0235294 |
5,4094 |
0,1273 |
6 |
0,8 |
110011 |
7 |
0,8118 |
1100111 |
6 |
111101 |
в |
2 |
0,0235294 |
5,4094 |
0,1273 |
6 |
0,8235 |
110100 |
7 |
0,8353 |
1101010 |
8 |
11111000 |
о |
2 |
0,0235294 |
5,4094 |
0,1273 |
6 |
0,8471 |
110110 |
7 |
0,8588 |
1101101 |
8 |
11111001 |
, |
2 |
0,0235294 |
5,4094 |
0,1273 |
6 |
0,8706 |
110111 |
7 |
0,8824 |
1110000 |
8 |
11111010 |
С |
1 |
0,0117647 |
6,4094 |
0,0754 |
7 |
0,8941 |
1110010 |
8 |
0,9 |
11100110 |
8 |
11111011 |
ц |
1 |
0,0117647 |
6,4094 |
0,0754 |
7 |
0,9059 |
1110011 |
8 |
0,9118 |
11101001 |
9 |
111111000 |
п |
1 |
0,0117647 |
6,4094 |
0,0754 |
7 |
0,9176 |
1110101 |
8 |
0,9235 |
11101100 |
9 |
111111001 |
А |
1 |
0,0117647 |
6,4094 |
0,0754 |
7 |
0,9294 |
1110110 |
8 |
0,9353 |
11101111 |
9 |
111111010 |
т |
1 |
0,0117647 |
6,4094 |
0,0754 |
7 |
0,9412 |
1111000 |
8 |
0,9471 |
11110010 |
9 |
111111011 |
ж |
1 |
0,0117647 |
6,4094 |
0,0754 |
7 |
0,9529 |
1111001 |
8 |
0,9588 |
11110101 |
9 |
111111100 |
ы |
1 |
0,0117647 |
6,4094 |
0,0754 |
7 |
0,9647 |
1111011 |
8 |
0,9706 |
11111000 |
9 |
111111101 |
! |
1 |
0,0117647 |
6,4094 |
0,0754 |
7 |
0,9765 |
1111100 |
8 |
0,9824 |
11111011 |
9 |
111111110 |
. |
1 |
0,0117647 |
6,4094 |
0,0754 |
7 |
0,9882 |
1111110 |
8 |
0,9941 |
11111110 |
9 |
111111111 |
Арифм. Код |
||||
xi |
p(xi) |
q(xi) |
Fi |
Ci |
a |
0,105882353 |
0,317647059 |
0,317647059 |
0,105882353 |
п |
0,011764706 |
0,917647059 |
0,41477384 |
0,00124962 |
! |
0,011764706 |
0,976470588 |
0,41599409393 |
0,000014745516 |
˽ |
0,211764706 |
0 |
0,41599409393 |
0,0000031231002888 |
А |
0,011764706 |
0,929411765 |
0,41599699653940841072 |
0,00000003685258340784 |
˽ |
0,211764706 |
0 |
0,41599699653940841072 |
0,000000007805377165780512 |
=
29
01101010011010101100110010011
=
Декодирование |
|||
шаг |
Fi |
σi |
a |
1 |
0,3176 |
0,1059 |
п |
2 |
0,41477384 |
0,00124962 |
! |
3 |
0,41599409393 |
0,000014745516 |
˽ |
4 |
0,41599409393 |
0,0000031231002888 |
А |
5 |
0,41599699653940841072 |
0,00000003685258340784 |
˽ |
6 |
0,41599699653940841072 |
0,000000007805377165780512 |
|
Дерево для кода Хафмана:
1
8/85
•
9
/85•
9
/85 •
7
/85 •
7
/85
•
6
/85 •
5
/85 •
4
/85 •
3
/85
•
2
/85 •
2
/85 •
2
/85 •
2
/85 •
1 /85 •
1
/85 •
1
/85
•
1
/85 •
1
/85
•
1
/85
•
1
/85
•
1
/85
•
1/85 •