Ну и форум... блин


Сайт о сжатии >> Форум #Компрессор# >> [Ответить] [Ответы]

Автор: Мимошёл,
-, -, 29 февраля 2004 года в 19:50:37

В ответ на : Re: Уточняю вопрос от Мимошёл в 29 февраля 2004 года в 19:33:53:


Таак... понял, в чём моя ошибка.

Ещё раз код примера, уже без знаков
"меньше":

// Найти символ, для которого
// LowerProbability (symbol) <= prob < UpperProbability (symbol)

// Линейный поиск слишком медленный:
//for (symbol=0; UpperProbability (symbol) <= prob; ++symbol) {}

// Поэтому ищем методом деления пополам:

ushort symbolLower = 0;
ushort symbolUpper = model.MaxSymbol;

for (;;) {
// среднее арифметическое:
symbol = (ushort) (((uint) symbolUpper + symbolLower) / 2);

uint probLower = LowerProbability (symbol, model);
uint probUpper = UpperProbability (symbol, model);

if (probLower > prob) {
symbolUpper = symbol;
} else if (probUpper <= prob) {
symbolLower = symbol;
} else break; // probLower <= prob < probUpper
}

Ответы:



Ответить на это сообщение

Тема:

Имя (желательно полное):

E-Mail:

URL:

Город:

Страна:

Вежливый и подробный комментарий:
(Форматируйте его, пожалуйста, как почту - короткими строками
Еnter в конце строки, пустая строка между параграфами).

Пожалуйста, заполните все поля.
И не нажимайте по два раза на кнопку! Дождитесь ответа сервера.