непонятно, как найти кратчайшее binary для данного числа.
Если не использовать суббитные алгоритмы (типа арифметического сжатия), то минимально любое число (но только одно!) можно закодировать одним битом: если 1, то выдаём это вот число, если 0, то смотрим что там дальше и декодируем ещё как-то по другому.
Так что данный критерий (кратчайшее binary представление данного числа) совершенно не универсален.
Полезнее критерий сколько бит надо чтобы закодировать
все числа в некотором диапазоне (сумма количества битов для каждого из чисел).
Что приводит к вопросу о вероятностях появления чисел, все ли они равновероятны или нет (и если нет, то коды Хаффмана и арифметического кодирования и ещё разные в помощь).
В принципе даже для равновероятного распределения арифметическое кодирование всё равно даст минимальное количество бит на число, но оно получится дробным (для не кратных степени двойки диапазонов) и потому придётся округлять вверх, что моментально ухудшит характеристику.
Если же ищете только числа которые можно закодировать короче бинарного представления, то главным становится вопрос как именно их кодировать - в зависимости от используемого кода множество чисел будет кардинально меняться. И никакого универсального способа нет и быть не может.
PS. Надеюсь помните что как бы ни изгаляться с кодированием произвольных чисел,
всегда сжать
любое число не получится
в принципе. А то фразы про поиск сжимаемых чисел близки к построению универсального сжимателя, что невозможно.
-- 23.12.2023, 17:59 --хотелось найти пример несложного алгоритма (сравнимого по сложности с переводом в двоичную систему),
который для некоторых (желательно для бесконечного количества) натуральных чисел дает более короткий результат, чем двоичное представление. Чисто как иллюстративный пример.
Дык это совсем несложно: числа вида
кодируем в формате
, все прочие числа
кодируем в формате просто
(в
старшая всегда
). Чисел первого роде бесконечно много и все они кодируются короче своего бинарного представления. Вполне просто и однозначно. Делов-то.
-- 23.12.2023, 18:04 --Если не нравится ведущий
, то можно и так: числа
, все прочие числа
(в
старшая всегда
).