Из моего учебника по алгоритмам:
Ежегодные скачки в графстве собирают трех чистокровных, которые никогда не соревновались друг с другом. Возбужденные, вы изучаете их последние 200 рас и суммируете их как распределение вероятностей по четырем результатам: первый («первое место»), второй, третий и другие.
Outcome Aurora Whirlwind Phantasm
first 0.15 0.30 0.20
second 0.10 0.05 0.30
third 0.70 0.25 0.30
other 0.05 0.40 0.20
Какая лошадь самая предсказуемая? Одним из количественных подходов к этому вопросу является рассмотрение сжимаемости. Запишите историю каждой лошади в виде строки из 200 значений (первое, второе, третье, другое). Общее количество битов, необходимых для кодирования этих строк записи дорожки, затем может быть вычислено с использованием алгоритма Хаффмана. Это работает до 290 битов для Авроры, 380 для Вихря и 420 для Фантазма (проверьте это!). Аврора имеет самую короткую кодировку и поэтому в строгом смысле слова является наиболее предсказуемой.
Как они получили 420 за Призрак? Я продолжаю получать 400 байтов, вот так:
Объединить первое, другое = 0,4, объединить второе, третье = 0,6. Получите 2 бита, кодирующих каждую позицию.
Что-то я неправильно понял в алгоритме кодирования Хаффмана?
Учебник доступен здесь: http://www.cs.berkeley.edu/~vazirani/algorithms.html (стр. 156).