Есть поток 32битных целых, надо его максимально эффективно сжать. Значения распределены неравномерно, скажем так примерно половина влезет в 16 бит, но на деле распределение еще сложнее - хочется построить максимально эффективный код. Нужно что-то типа алгоритма Хаффмана, но напрямую (с алфавитом из 2^32 букв) его не применить. Есть идея отталкиваться от длины последовательности, т.е. разбить значения на 32 класса по числу значащих битов, и для каждого Хоффманом вывести префикс. Но как учитывать в алгоритме длину, просто умножать на частоту? Может есть другие варианты - думаю было бы эффективнее разбить числа на большее число классов.
Ссылки/хинты/идеи?