3. Составляем частотную таблицу
символов
4. Создаем дерево Хаффмана, относительно этого дерева выстраиваем кодовую таблицу.
Символ |
Код |
о |
101 |
т |
1111 |
е |
1101 |
и |
1100 |
а |
1001 |
м |
0101 |
н |
0010 |
л |
0001 |
к |
11100 |
с |
10001 |
г |
01110 |
у |
01111 |
, |
01101 |
р |
01100 |
д |
01001 |
в |
00111 |
б |
111011 |
з |
111010 |
ь |
000010 |
я |
100001 |
п |
010001 |
ч |
010000 |
ж |
001100 |
й |
000001 |
ы |
000000 |
. |
1000001 |
ф |
00110101 |
х |
00110100 |
ц |
00110111 |
щ |
00110110 |
э |
10000001 |
; |
10000000 |
Итоговая таблица на основе моей частотной таблицы
Символ |
Частота |
размер(бит) ASCII |
размер(бит) UTF - 8 |
Код |
размер(бит) итоговый |
о |
35 |
280 |
560 |
101 |
105 |
т |
25 |
200 |
400 |
1111 |
100 |
е |
22 |
176 |
352 |
1101 |
88 |
и |
22 |
176 |
352 |
1100 |
88 |
а |
21 |
168 |
336 |
1001 |
84 |
м |
16 |
128 |
256 |
0101 |
64 |
н |
13 |
104 |
208 |
0010 |
52 |
л |
12 |
96 |
192 |
0001 |
48 |
к |
11 |
88 |
176 |
11100 |
55 |
с |
10 |
80 |
160 |
10001 |
50 |
г |
9 |
72 |
144 |
01110 |
45 |
у |
9 |
72 |
144 |
01111 |
45 |
, |
9 |
72 |
72 |
01101 |
45 |
р |
8 |
64 |
128 |
01100 |
40 |
д |
8 |
64 |
128 |
01001 |
40 |
в |
7 |
56 |
112 |
00111 |
35 |
б |
6 |
48 |
96 |
111011 |
36 |
з |
6 |
48 |
96 |
111010 |
36 |
ь |
6 |
48 |
96 |
000010 |
36 |
я |
5 |
40 |
80 |
100001 |
30 |
п |
4 |
32 |
64 |
010001 |
24 |
ч |
4 |
32 |
64 |
010000 |
24 |
ж |
3 |
24 |
48 |
001100 |
18 |
й |
3 |
24 |
48 |
000001 |
18 |
ы |
3 |
24 |
48 |
000000 |
18 |
. |
3 |
24 |
24 |
1000001 |
21 |
ф |
1 |
8 |
16 |
00110101 |
8 |
х |
1 |
8 |
16 |
00110100 |
8 |
ц |
1 |
8 |
16 |
00110111 |
8 |
щ |
1 |
8 |
16 |
00110110 |
8 |
э |
1 |
8 |
16 |
10000001 |
8 |
; |
1 |
8 |
8 |
10000000 |
8 |
Общий размер до сжатия (в ASCII): 2288 бит
Общий размер до сжатия (в UTF - 8): 4472 + 24 (BOM) = 4496 бит
Общий размер после сжатия (в ASCII): 1293 бит
Общий размер после сжатия (в UTF - 8): 1293 + 24 (BOM) = 1317 бит
Коэффициент
сжатия из ASCII Коэффициент
сжатия из UTF
- 8
1.769
3.414
5. Проделываем тоже самое, только на основе известной частотной таблицы букв русского языка http://dict.ruslang.ru/freq.php?act=show&dic=freq_letters&title=%D7%E0%F1%F2%EE%F2%ED%EE%F1%F2%FC%20%E1%F3%EA%E2%20%F0%F3%F1%F1%EA%EE%E3%EE%20%E0%EB%F4%E0%E2%E8%F2%E0)
Сортируем по рангу (см. общую таблицу ниже) и задаем условную частоту, на основе условной частоты создаем дерево Хаффмана:
таблица на основе известной частотной таблицы букв русского языка
№ |
Символ (по частоте) |
Частота |
Ранг |
Размер (бит) итоговый |
Символ (по рангу) |
Условная частота |
Кодовая таблица |
1 |
о |
35 |
1 |
140 |
о |
32 |
1001 |
2 |
т |
25 |
6 |
100 |
е |
31 |
1000 |
3 |
е |
22 |
2 |
88 |
а |
30 |
0111 |
4 |
и |
22 |
4 |
88 |
и |
29 |
0101 |
5 |
а |
21 |
3 |
84 |
н |
28 |
0100 |
6 |
м |
16 |
12 |
80 |
т |
27 |
0011 |
7 |
н |
13 |
5 |
52 |
с |
26 |
0001 |
8 |
л |
12 |
10 |
60 |
р |
25 |
0000 |
9 |
к |
11 |
11 |
55 |
в |
24 |
11111 |
10 |
с |
10 |
7 |
40 |
л |
23 |
11101 |
11 |
г |
9 |
19 |
45 |
к |
22 |
11100 |
12 |
у |
9 |
15 |
45 |
м |
21 |
11011 |
13 |
, |
9 |
, |
72 |
д |
20 |
11001 |
14 |
р |
8 |
8 |
32 |
п |
19 |
11000 |
15 |
д |
8 |
13 |
40 |
у |
18 |
10111 |
16 |
в |
7 |
9 |
35 |
я |
17 |
10101 |
17 |
б |
6 |
21 |
36 |
ы |
16 |
10100 |
18 |
з |
6 |
20 |
30 |
ь |
15 |
01101 |
19 |
ь |
6 |
18 |
30 |
г |
14 |
00101 |
20 |
я |
5 |
16 |
25 |
з |
13 |
00100 |
21 |
п |
4 |
14 |
20 |
б |
12 |
111101 |
22 |
ч |
4 |
22 |
24 |
ч |
11 |
110101 |
23 |
ж |
3 |
25 |
18 |
й |
10 |
110100 |
24 |
й |
3 |
23 |
18 |
х |
9 |
101101 |
25 |
ы |
3 |
17 |
15 |
ж |
8 |
011001 |
26 |
. |
3 |
. |
27 |
ц |
7 |
011000 |
27 |
ф |
1 |
31 |
7 |
щ |
6 |
1111001 |
28 |
х |
1 |
24 |
6 |
э |
5 |
1011001 |
29 |
ц |
1 |
28 |
6 |
ф |
4 |
1011000 |
30 |
щ |
1 |
29 |
7 |
, |
3 |
11110001 |
31 |
э |
1 |
30 |
7 |
. |
2 |
111100001 |
32 |
; |
1 |
; |
9 |
; |
1 |
111100000 |
Общий размер до сжатия (в ASCII): 2288 бит
Общий размер до сжатия (в UTF - 8): 4472 + 24 (BOM) = 4496 бит
Общий размер после сжатия (в ASCII): 1341 бит
Общий размер после сжатия (в UTF – 8): 1341 + 24 (BOM) = 1365 бит
Коэффициент
сжатия из ASCII
1.706 Коэффициент
сжатия из UTF
- 8
3.294