MakarovSuites
Русский
EnglishDeutschРусскийУкраїнськаFrançaisEspañolItalianoPolski
Связь и лицензии

Math

Код Хаффмана

Очередь частот превращается в дерево префиксного кода. Выберите букву, чтобы увидеть её биты; проходите слияния по шагам.

Код Хаффмана — Изображение из программы
Изображение из программы

Что происходит

Каждый шаг объединяет два наименьших веса. Метки 0 и 1 задают код на пути от корня к символу. Выбор буквы выделяет весь этот путь. Меняйте частоты и сравнивайте результат. L — средняя длина кода, H — энтропия. Хаффман минимизирует L среди двоичных префиксных кодов отдельных символов и при L > H. Равенство достигается, когда вероятности имеют вид 2^(-k). Показанный объём в битах не учитывает таблицу кодов и заголовки файла.

Уравнения модуля
Уравнения
построение: сливаем два самых лёгких узла, n−1 раз; код символа - это его путь от корня, влево 0, вправо 1
L = Σ p(i)·l(i)  (бит на символ);  H = −Σ p(i)·log₂ p(i);  длина кода l(i) равна глубине листа
Крафт: у любого префиксного кода Σ 2^(−l(i)) ≤ 1, и любой такой вектор - это дерево; дерево Хаффмана полное, поэтому сумма в точности равна 1
H ≤ L < H + 1 всегда;  L = H в точности тогда, когда каждое p(i) есть степень двойки
оптимальность проверяется перебором ВСЕХ допустимых по Крафту векторов длин - перебор ничего не знает об алгоритме
равные частоты: 2(n − 2^k) символов получают длинный код, где 2^k - наибольшая степень двойки, меньшая n
частоты Фибоначчи 1, 1, 2, 3, 5, … дают самое несбалансированное дерево: длины n−1, n−1, n−2, …, 1

Другие эксперименты

К каталогу
Рюкзак: жадность против таблицы — Изображение из программы

Math

Рюкзак: жадность против таблицы

Собери пронумерованные грузы при ограничении массы. Сравни свой набор с жадностью и точным решением, раскрой ячейку таблицы и пройди обратный ход к оптимальному набору.

Симплекс на плоскости — Изображение из программы

Math

Симплекс на плоскости

Допустимая область лежит на столе, а над ней висит плита на высоте цели. Цель линейна, поэтому плита ровная и наклонная, и лучшая точка — буквально её самый высокий угол. Симплекс поднимается к нему по рёбрам.

Машина Тьюринга и «занятые бобры» — Изображение из программы

Math

Машина Тьюринга и «занятые бобры»

Бумажная лента между двумя катушками, металлическая головка с лампой состояния и таблица правил. Каждый шаг проигрывается как чтение, запись, сдвиг, новое состояние; журнал внизу хранит весь прогон, а правка правила оставляет старый прогон призраком. Рекорды найдены перебором всех машин, а не процитированы.