Совершенно безвозмездно :)
Автор: Vadim, 16 апреля 2003 года в 11:22:34 В ответ на : Re: ответ на вопрос об оплате от Александр в 12 апреля 2003 года в 03:29:25: > 1-ю консультацию оплачу $30. Странно, что раньше никто не ответил... Да и грех за такие вопросы деньги брать. Книга, в которой подробно описано это и далеко не только это, стоит гораздо дешевле. :) > Здесь необходимо объяснение алгоритма декодирования ( при целочисленной ! реализации, т.е. метода, при котором снимается ограничение разрядности и становится возможным кодирование бесконечной разрядности), а также принцип расширения интервала при ситуации напр. LOW = 79999 HI = 80000. Во-первых, имеет смысл поддерживать максимальную разницу между LOW и HI. Точнее сказать, приемлимо большую. Само мобой, мы предполагаем, что минимальная вероятность кодируемого символа нам примерно известна. И в соответствии с этим знанием прикидываем поддеживаемую разницу. Чем сильнее будет эта разница превышать минимальную вероятность символа, тем лучше. Далее. Если выдвигаемый старший разряд принимает максимальное значение (в твоем примере это 9), то этот разряд мы сразу на выход не пишем, а запоминаем где-нибудь сбоку. Если таких девяток сдвигается несколько штук подряд, то наша задача - сосчитать их количество и хранить его в некоем счетчике. Если при очередном кодировании мы зашкалили, то выполняем т.н. перенос, т.е. инкрементируемый последний поданный на выход символ, а вместо девяток досылаем на выход такое же количество нулей. Если ничего страшного не произошло и после кучи девяток мы должны закодировать нормальное :) число, можно смело досылать перед ним на выход запомненное количество девяток. > 2-ю консультацию по второму вопросу оплачу отдельно также в $30. Да надо просто вместо вероятностей хранить счетчики символов. А из счетчиков получить вероятность в любой момент - плевое дело.
|
Ответы:
- Re: Совершенно безвозмездно :) Максим 14:30:28 22/5/2003
(0)
Ответить на это сообщение