ВУЗ:
Составители:
Рубрика:
4.1. Вероятности появления символов в сообщении
Символ Вероятность
Пробел 1/10
A 1/10
B 1/10
E 1/10
G 1/10
I 1/10
L 2/10
S 1/10
T 1/10
4.2. Интервалы вероятностей для символов сообщения
Символ Вероятность Интервал
Пробел 1/10 [0,00; 0,10]
A 1/10 [0,10; 0,20]
B 1/10 [0,20; 0,30]
E 1/10 [0,30; 0,40]
G 1/10 [0,40; 0,50]
I 1/10 [0,50; 0,60]
L 2/10 [0,60; 0,80]
S 1/10 [0,80; 0,90]
T 1/10 [0,90; 1,00]
В общем виде алгоритм арифметического кодирования может быть описан следующим образом:
НижняяГраница = 0.0; ВерхняяГраница= 1.0;
Пока ((ОчереднойСимвол = ДайОчереднойСимвол()) != КОНЕЦ)
Интервал = ВерхняяГраница – НижняяГраница;
ВерхняяГраница = НижняяГраница + Интервал * ВерхняяГраницаИнтервалаДля(ОчереднойСимвол);
НижняяГраница = НижняяГраница + Интервал * НижняяГраницаИнтервалаДля(ОчереднойСимвол);
Конец Пока
Выдать (НижняяГраница)
Для нашего примера этот алгоритм будет работать следующим образом (табл. 4.3).
4.3. Шаги алгоритма арифметического кодирования
при обработке сообщения
Очередной символ Нижняя граница Верхняя граница
0,0 1,0
B 0,2 0,3
I 0,25 0,26
L 0,256 0,258
L 0,2572 0,2576
ПРОБЕЛ 0,25720 0,25724
G 0,257216 0,257220
A 0,2572164 0,2572168
T 0,25721676 0,2572168
E 0,257216772 0,257216776
S 0,2572167752 0,2572167756
Таким образом, согласно нашей схеме, число 0.2572167752 однозначно кодирует сообщение "BILL GATES". Алго-
ритм арифметического декодирования может быть описан следующим образом:
Число = ПрочитатьЧисло();
Всегда
Символ =Найти_Символ_В_интервал_Которого_Попадает_Число(Число)
Выдать (Символ) Интервал = ВерхняяГраницаИнтервалаДля (Символ) – НижняяГраницаИнтервалаДля (Символ);
Число = Число – НижняяГраницаИнтервалаДля(Символ);
Число = Число / Интервал;
Конец Всегда
Страницы
- « первая
- ‹ предыдущая
- …
- 23
- 24
- 25
- 26
- 27
- …
- следующая ›
- последняя »