Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > арифметическое кодирование


Автор: JayW 22.4.2008, 11:02
реализуя алгоритм арифметического кодирования, столкнулся с проблемой.
предположим, имеется строка "dacdd"
задаём, соответственно, диапазоны: a [0.0;0,2]. c [0.2;0.4]. d [0.4;1.0]
далее кодируем, получаем какое-то выражение. например 0,7236...
далее, как мне указали в задании мы передаём только полученный код, тоесть 0.7236...
вопрос. можно ли восстановить исходный код (декодировать) не имея заданных диапазонов. на мой взгляд, ничего не получится таким образом. можно ваш комментарий по данному вопросу.
заранее спасибо.

p.s. понимаю, что вопрос странный, однако не возьму в толк кто прав и что я мог не уловить в этом алгоритме..

Автор: xvr 22.4.2008, 11:10
Нельзя, нужен алфавит и диапазоны. Можно делать адаптивное кодирование (например, как делается Хафман после LZ кодирования во всяких zip'ах) - диапазоны строить по частотному распределению символов, изначально считать распределение равновероятным (или брать из таблицы), по мере кодирования/декодирования корректировать распределение и интервалы.

Автор: JayW 22.4.2008, 11:31
ну, с Хафманом-то все понятно. спасибо большое.
очень благодарен.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)