Изменения

Перейти к: навигация, поиск

Арифметическое кодирование

377 байт убрано, 14:25, 17 июня 2016
м
Откат изменения комментариев к коду, смена дефисов на тире
# Выберем любое число из получившегося отрезка. Это и будет результат арифметического кодирования.
left = 0 <span style="color:green"> // Левая граница [left; right) отрезка изначально равна 0 </span> right = 1 <span style="color:green"> // Правая граница [left; right) отрезка изначально равна 1 </span>
'''while''' !eof
'''read'''(symb)
left = newLeft
right = newRight
ans = (left + right) / 2 <span style="color:green"> // В качестве результата взята средняя точка отрезка [left; right) </span>
=== Декодирование ===
||proof=Размер сообщения <tex> L = \prod\limits_{i=1}^l p_{fi} = \prod\limits_{i=1}^n p_{i}^{f_{i}}</tex> (<tex>l</tex> {{- --}} длина текста; <tex>n</tex> {{--- }} размер алфавита; <tex>f_i</tex> {{--- }} частота встречаемости символа; <tex>p_i</tex> {{--- }} вероятность вхождения символа)
Число бит в закодированном тексте: <tex>\log_2 L = \sum\limits_{i=1}^n f_i\cdot \log_2 p_i = l \cdot \sum\limits_{i=1}^n p_i\cdot \log_2 p_i = -l \cdot H(p_1...p_n)</tex>
48
правок

Навигация