Изменения

Перейти к: навигация, поиск
Адаптивное арифметическое кодирование
Вероятность каждого символа <tex>\alpha</tex> - <tex>p(\alpha)</tex> устанавливется равной его весу, делённому на суммарный вес всех символов: <tex dpi=180>p(\alpha) = \frac{w_\alpha}{\sum_{i=1}^n w_i}</tex>. После получения очередного символа и построения нужного интервала, вес символа увеличивается на 1. Когда все символы последовательности будут обработаны, необходимо либо записать маркер конца последовательности, либо запомнить её длину, чтобы позже передать декодировщику. После получения нужных границ <tex>[l, r]</tex>, в котором будет лежать код, необходмо выбрать число <tex>x</tex>, описывающее кодирование:
<tex>x \in [l, r]</tex>. Выбор числа <tex>x</tex> производится также, как и в неадаптивном алгоритме. Выбирается число вида <tex>\frac{x}{2^p}: x,p \in \mathbb N</tex>.
 
=== Псевдокод алгоритма ===
 
* <tex>in</tex> --- текст, подаваемый на вход
* <tex>n</tex> --- длина исходного текста
* <tex>Segment</tex> --- структура, задающая подотрезок отрезка <tex>[0, 1)</tex>, соответствующая конкретному символу.
== См. также ==
55
правок

Навигация