Первое правило построения кодов с переменной длиной вполне
очевидно. Короткие коды следует присваивать часто встречающимся
символам, а длинные - редко встречающимся. Однако есть другая проблема.
Эти коды надо назначать так, чтобы их было возможно декодировать
однозначно, а не двусмысленно. Маленький пример прояснит это.
Рассмотрим четыре символа ai, a2, аз и 04- Если они появляются в
последовательности данных с равной вероятностью (=0.25 каждая), то мы
им просто присвоим четыре двухбитовых кода 00, 01, 10 и 11. Все
вероятности равны, и поэтому коды переменной длины не сожмут ...