powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Компактная нотация бинарной записи числа
83 сообщений из 83, показаны все 4 страниц
Компактная нотация бинарной записи числа
    #39580885
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пусть есть задача в начале некоторого большого файла произвольного содержания записывать одно целое число, тоже произвольное.

Проблема в том, что за записью этого числа (по условию задачи) идут какие-то не зависящие от него биты. Как указать, где оканчивается "тело" числа?

Очевидно, возможны разные нотации записи этого числа. Например, если бинарная запись этого числа состоит из К битов, сначала ставить К-1 единиц, потом "0", потом само число. То есть для числа 255 получаем вид: "1111111011111111тело_файла..."

Возможна ли более компактная нотация?
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39580908
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понимаю, что число не ограничено сверху? но какая-то вменяемая граница количества битов в нём есть? 4kkk хватит? Выдели первые 4 байта на количество битов своего числа, потом само число, потом независимый хвост. 4Г мало? выдели 8 байт всё равно столько на диск не поместится...
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39580912
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
M бит размер числа, К бит число, тело.

Размер M фиксированный, т.е. выбрать с запасом чтобы все возможные К входили.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39580913
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

запись числа 1 займёт 8 байт + 1 бит? Это компактно?
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39580931
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSзапись числа 1 займёт 8 байт + 1 бит? Это компактно?
Можно еще размер размера писать, для 2^64 потребуется 6 бит
т.е. для числа 1 запись такая:
Код: sql
1.
000001 1 1


всего 1 байт
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39580936
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSВозможна ли более компактная нотация? Цель выбрать надо: компактизация в среднем или каждый раз?
Может "оптимальное кодирование" что-то подскажет (подразумевается минимизация с целью передачи по каналам связи.)
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39580943
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TМожно еще размер размера писать, для 2^64 потребуется 6 бит
т.е. для числа 1 запись такая:
Код: sql
1.
000001 1 1


всего 1 байт
А если размер размера размера добавить, то 6 бит хватит
Код: sql
1.
001 1 1 1
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39580947
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

да, размер размера, пожалуй. То есть нужно как-то в более конкретных условиях задачи найти/обосновать выбор -- ограничиться ли размером_размера, или нужно даже с размера_размера_размера начинать ...
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39580956
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSDima T,

да, размер размера, пожалуй. То есть нужно как-то в более конкретных условиях задачи найти/обосновать выбор -- ограничиться ли размером_размера, или нужно даже с размера_размера_размера начинать ...
Для записи числа размером 2^64 бит потребуется 2 млн. террабайт. Т.е. можно смело предположить что писать больше 2^64 точно не потребуется, поэтому достаточно варианта с размером размера 21089437 . Про "размер размера размера" шутка была.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39581038
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSDima T,

да, размер размера, пожалуй. То есть нужно как-то в более конкретных условиях задачи найти/обосновать выбор -- ограничиться ли размером_размера, или нужно даже с размера_размера_размера начинать ...
Посмотри Код Левенштейна.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39581368
Фотография ptr128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS,

Можно воспользоваться следующей логикой: для самого числа используем 7 бит из 8 каждого байта. Последний байт имеет первым битом 0, остальные байты - 1.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39581374
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В BCD-арифметике можно сохранять. Быстро парсится в десятичную.

В системе Фибоначчи можно хранить. Уверен что этот вариант проще чем Левенштейн. Хотя
возможно менее компактный на больших значениях.

Да мало-ли...
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39581377
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код Левенштейна в Википекдии как-то муторно описан, а другое описание я искать поленился.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39581379
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разумеется не надо тебе его реализовывать. Надо найти готовую реализацию.
А кодить свою - это действительно муторно. Особенно в части тестирования. И поиска багов
уже в реализации под разные платформы. Полюбому что-то вылезет пузом.
Толи сдвиг (>>) толи битовые операции толи ХЗ что.

Ты кстати зачем своё кодишь? Спортивный интерес?
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39581382
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Реально размышляю про архиватор. По-дилетантски, конечно.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39581388
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS, полезная тема. Особенно когда свои структуры данных создаешь.

Некоторое время назад я предложил форуму написать утилиту для поиска
уникальных строк в большом текстовом файле. И ты не поверишь, сколько
идей было. И Диме - спасибо. И даже сердитый Зяма отметился.
Но вот в чем штука. Любая хорошая идея требовала тщательно
продумать как в памяти распределить структуры данных. Биткарты там..
хеш-таблички... деревья. Найти золотую пропорцию. А там еще столько
технических нюансов - мама не горюй. И строки... и поиск и алгоритмизация
и оптимизация. Вобщем у меня от этой задачи так голова разболелась
что я даже ее отложил на годик. И хотя свои собственные решения
для себя - очевидны как божий день - но когда занимашеся перфекционизмом
то эти решения тухнут так и не выйде в альфа версию. И ты смотришь
на них такой и думаешь... а задлянахрена вообще это? Так - то..
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39581574
Фотография ptr128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПосмотри Код Левенштейна.
Во-первых, Омега-код Элиаса на один бит экономичней.
Во-вторых, оба кода дают экономию для чисел меньше 16, и перестают быть экономичными для 16 и более.
То есть, если преобладают числа от 1 до 16, то битовое кодирование оправдано. Если нет, эффективней кодировать байтами или иным размером слова.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39581636
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ptr128,

вопрос не в кодировании самом по себе, а в том ЕЩЁ, чтобы отделить запись числа от следующих непосредственно за ней произвольных битов.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39581663
Фотография ptr128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSptr128,

вопрос не в кодировании самом по себе, а в том ЕЩЁ, чтобы отделить запись числа от следующих непосредственно за ней произвольных битов.
Это я понимаю, но в чем проблема, если кодирование не битовое, а по словам?
То есть длина кода всегда кратна N бит, а сам код позволяет определить количество слов по N бит.
Даже если слово у нас 8 бит (байт), то совсем не обязательно выравнивать его на границу байта в файле.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39581803
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSПусть есть задача в начале некоторого большого файла произвольного содержания записывать одно целое число, тоже произвольное.

Проблема в том, что за записью этого числа (по условию задачи) идут какие-то не зависящие от него биты. Как указать, где оканчивается "тело" числа?

Очевидно, возможны разные нотации записи этого числа. Например, если бинарная запись этого числа состоит из К битов, сначала ставить К-1 единиц, потом "0", потом само число. То есть для числа 255 получаем вид: "1111111011111111тело_файла..."

Возможна ли более компактная нотация?тут снова можно обратиться к Шеннону, который все это обдумал еще в 1945 году :)
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39581809
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSвопрос не в кодировании самом по себе, а в том ЕЩЁ, чтобы отделить запись числа от следующих непосредственно за ней произвольных битов. В теори кодирования это свойство называется префиксностью. Необязательно префикс в программистском смысле. Есть срогое определение, не помню только. В пересказе - примерно то самое, что требуется.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39581818
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Префиксность" -- это про все подстроки строки. А здесь - только в одном месте, в начале строки.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39581919
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот и нет. Это относится к методу кодирования (строке, закодированной метдом). Я подразумевал, что заголовок строки и собственно строка "закодированы" разными методами.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39582120
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ptr128maytonПосмотри Код Левенштейна.
Во-первых, Омега-код Элиаса на один бит экономичней.
Во-вторых, оба кода дают экономию для чисел меньше 16, и перестают быть экономичными для 16 и более.
То есть, если преобладают числа от 1 до 16, то битовое кодирование оправдано. Если нет, эффективней кодировать байтами или иным размером слова.
Во первых я ничуть не против кодов Элиаса.

Во вторых во втором вашем тезисе есть заявление о том что "эффективней кодировать байтами". Это странно.
Вы фактически опровергли работы Левенштейна и Элиаса. Чтобы что-то кодировать байтами или иным размером
слова вы должны вернуться к началу и определиться с диапазоном. А поскольку автор еще не определился
с диапазоном - то спорить не о чем. Если вы решили кодировать "байтами" то вам все равно необходимо
где-то хранить длину байтов и мы неизбежно приходим к префиксным или унарным или любым другим способам
кодирования.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39582126
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
S.G.тут снова можно обратиться к Шеннону, который все это обдумал еще в 1945 году :)
Работы Шеннона относились к проблемам и вызовам которые стояли в середине 20-го века.
Шеннон оперировал понятием "символа". Это понятие возникло задолго до байта или бита.
Символ - это единица информации в телеграфе. В телексе. И в прочих простых устройствах
связи которые работали по аналаговым каналам.

Нисколько не умаляя работ этого замечательного инженера я скажу что он жил в своё
время и писал про своё. И актуальность и применимость его исследований к современным
архиваторам - весьма ограничена. Так-же как и работы Дональда Кнута для современного
веб-разработчика. Большая часть материала - не нужна.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39582408
Фотография ptr128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonptr128если преобладают числа от 1 до 16, то битовое кодирование оправдано. Если нет, эффективней кодировать байтами или иным размером слова.
Вы фактически опровергли работы Левенштейна и Элиаса.
А поскольку автор еще не определилсяс диапазоном
Я ничего не опровергаю. Читайте внимательней. Я четко написал, когда выбор универсального кода оправдан. Не забывайте, что универсальные коды по определению не предназначены для случаев, когда распределение вероятностей известно.
ТС, кстати, изначально рассматривал число 255. Если речь идет о числах такого порядка, то ему точно лучше кодировать словами.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39582441
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Файл. В нем есть сколько-то бит всего, и часть из них можно сэкономить за счет более или менее правильного кодирования Первого Числа. Сколь велико оно? если оно всегда помещается в не более чем 256 байт то - структура - байт длинны - байты числа. Если оно не помещается в 256 байтов, то тогда на префикс нужно выделять два байта....

Так, суперправильный мегаспособ кодирования какой процент экономии даст по сравнению с менее правильными? на общей длине файла ((( ну так, мысли вслух((((
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39582459
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39582488
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir Baskakov,

одно число перед строкой - это упрощённая постановка задачи. А если нужно не одно число там разместить, а 100500?
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39582555
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSVladimir Baskakov,

одно число перед строкой - это упрощённая постановка задачи. А если нужно не одно число там разместить, а 100500?

а тогда надо сразу задавать вопрос, тот который надо, а не другой. С привходящими ограничениями. чтобы отвечающих в заблуждение не вводить ((((
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39582571
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir Baskakov,

извините, а какая разница: "произвольное содержание" файла после первого числа вполне может быть другим числом.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39582576
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSодно число перед строкой - это упрощённая постановка задачи. А если нужно не одно число там разместить, а 100500?
Объяви число 0 концом файла, а дальше так:
Код: sql
1.
размер1, значение1, размер2, значение2, ... размерN, значениеN, 0
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39582579
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSVladimir Baskakov,

извините, а какая разница: "произвольное содержание" файла после первого числа вполне может быть другим числом.

разница большая. в том, как оптимизировать, что и на сколько, и какой ценой. и надо ли вообще. это кмк сильно зависит от длинны чисел, распределения вероятности маленьких и больших.
Оптимальный метод упаковки разным будет .....
Нужно ли быстро выделять из ==последовательности упакованных== по номеру. Т.е. чтобы понять упаковку, надо понимать и жизненный цикл массива данных.....

так то в каком-то смысле ==все файлы состоят из чисел== ....
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39582629
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir Baskakov,

файлы состоят из чисел, да не из тех (из битов). Мы обсуждаем компактное представление натурального числа битовой записью в ситуации, когда адрес первого бита этой записи известен к моменту начала чтения этой записи (то есть этот адрес может быть описан как "первый бит после чего-то там", например, "первый бит в начале файла"; но может быть и "первый бит после окончания считывания предыдущего числа").
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39582635
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TОбъяви число 0 концом файла, а дальше так:
Код: sql
1.
размер1, значение1, размер2, значение2, ... размерN, значениеN, 0


а какое битовое выражение для "запятой" использовать предлагаете?

И я ведь не сказал, что после 100500 чисел будет конец файла.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39582646
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSDima TОбъяви число 0 концом файла, а дальше так:
Код: sql
1.
размер1, значение1, размер2, значение2, ... размерN, значениеN, 0


а какое битовое выражение для "запятой" использовать предлагаете?
Никакой "запятой" не надо.

Это стандартный подход: писать размер данных, затем данные. Как записать размер я уже предложил 21089437

Иван FXSИ я ведь не сказал, что после 100500 чисел будет конец файла.
Назови 0 концом блока чисел.

В чем проблема?
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39582663
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

проблема в том, что вы, кажется, совсем не заботитесь о компактности формата. В то время как вопрос звучал "Возможна ли более компактная нотация?"

В той нотации, которая описана в корневом посте, для записи чисел 0 и 1 требуется 2 бита , для 2 и 3 требуется 4 бита , для 4-7 требуется 6 битов и т.д.
_____________________
Причём видно, что даже в рамках этого подхода можно расходовать биты более экономно: поскольку 0 и 1 записываются в 2-битной нотации, то в 4-битной 0 и 1 уже не появятся, и можно впихнуть в неё 2, 3, 4 и 5 .

То есть:
"0 0" это 0
"0 1" это 1

"10 00" это 2
"10 01" это 3
"10 10" это 4
"10 11" это 5

"110 NNN" это c 6 до 13 (по формуле 6+NNN)

"1110 NNNN" это c 14 до 29 (по формуле 14+NNN)

и т.д.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39582674
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Любопытно, что если следовать Хаффману, то нужно инвертировать префиксы, объявляющие длину битовой записи "тела" числа. То есть, например:

"1111110 0" это 0
"1111110 1" это 1

"111110 00" это 2
"111110 01" это 3
"111110 10" это 4
"111110 11" это 5

"11110 NNN" это c 6 до 13 (по формуле 6+NNN)

"1110 NNNN" это c 14 до 29 (по формуле 14+NNNN)

"110 NNNNN" это c 30 до 61 (по формуле 14+NNNNN)

"10 NNNNNN" это c 62 до 125 (по формуле 61+NNNNNN)

"0 NNNNNNN" это c 126 до 253 (по формуле 125+NNNNNNN)
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39582686
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSпроблема в том, что вы, кажется, совсем не заботитесь о компактности формата. В то время как вопрос звучал "Возможна ли более компактная нотация?"
Вопрос 21097085 прозвучал так
Иван FXSА если нужно не одно число там разместить, а 100500?

А какую нотацию ты решишь использовать - не имеет значения.

Иван FXSВ той нотации, которая описана в корневом посте, для записи чисел 0 и 1 требуется 2 бита , для 2 и 3 требуется 4 бита , для 4-7 требуется 6 битов и т.д.
_____________________
Причём видно, что даже в рамках этого подхода можно расходовать биты более экономно: поскольку 0 и 1 записываются в 2-битной нотации, то в 4-битной 0 и 1 уже не появятся, и можно впихнуть в неё 2, 3, 4 и 5 .

То есть:
"0 0" это 0
"0 1" это 1

"10 00" это 2
"10 01" это 3
"10 10" это 4
"10 11" это 5

"110 NNN" это c 6 до 13 (по формуле 6+NNN)

"1110 NNNN" это c 14 до 29 (по формуле 14+NNN)

и т.д.
Что лучше зависит от того какие числа ты писать будешь чаще.
Например число 100500 (17 бит) в твоем варианте займет 34 бита, в моем 26 если добавить выкидывание старшей 1
Код: sql
1.
000101 0001 1000100010010100
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39582692
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В твоей нотации запись числа N занимает 2 * log 2 (N) бит

а в моей 6 + log 2 (log 2 (N)) + log 2 (N)

Поэтому на числах порядка тысячи они сравняются и далее мой будет компактнее.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39582694
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В сухом остатке: в начале записи (перед телом числа) идет "имя диапазона", обозначающее одновременно и число бит в теле числа, и "базу диапазона" -- константу, к которой нужно прибавить двоичное число, выраженное этими битами тела числа, чтобы получить окончательный результат.

То есть:

"однобитныйдиапазон 0" и "однобитныйдиапазон 1" - это запись двух чисел: База(1)+0 и База(1)+1;

"двухбитныйдиапазон NN" - это запись четырёх чисел: База(2)+0, База(2)+1, База(2)+2 и База(2)+3;

"трёхбитныйдиапазон NNN" - это запись 8 чисел - от База(3)+0 по База(3)+7;

"четырёхбитныйдиапазон NNNN" - это запись 16 чисел типа База(4)+NNN;

и так далее.

Словарь {"однобитныйдиапазон", "двухбитныйдиапазон", "трёхбитныйдиапазон","четырёхбитныйдиапазон", ... "М-битныйдиапазон"} должен обладать свойствами префиксности и оптимальности (для нашей задачи), то есть, например, битовые значения

0, 10, 110, 1110, ... (М_минус_одна_единица)0

-- должны быть распределены по нему в соответствии с нашими априорными ожиданиями частот записи нами разных чисел.

При этом для "хвоста" очень больших чисел, появление которых мы представляем совсем редким, должна работать дополнительная (к словарю) формальная нотация записи имён диапазонов:

(М_единиц)0

-- означающая "битовые тела" чисел, содержащие М+1 бит. Ну и базы, к которым нужно прибавлять двоичные числа, представленные этими битовыми телами, тоже будут рассчитываться по единой формуле ...
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39582696
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как можно на запрос наиболее компактной нотации отвечать:
Dima TА какую нотацию ты решишь использовать - не имеет значения
?

Ваши заказчики такие ответы принимают?
____________________________
Dima Tесли добавить выкидывание старшей 1
то есть ваша нотация, как она была описана, уже сбойнула?
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39582697
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSТо есть:

"однобитныйдиапазон 0" и "однобитныйдиапазон 1" - это запись двух чисел: База(1)+0 и База(1)+1;

"двухбитныйдиапазон NN" - это запись четырёх чисел: База(2)+0, База(2)+1, База(2)+2 и База(2)+3;

"трёхбитныйдиапазон NNN" - это запись 8 чисел - от База(3)+0 по База(3)+7;
...
Чтобы тебе считать проще было:
Код: sql
1.
2.
База(M) = 2^(M+1) - 2
Ширина диапазона М = 2^M
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39582700
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

похоже на то. Там сдвиг будет зависеть от того, нужно ли нам -- по условию задачи -- иногда записывать число 0, или только натуральные числа.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39582703
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSКак можно на запрос наиболее компактной нотации отвечать:
Dima TА какую нотацию ты решишь использовать - не имеет значения
?

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

Иван FXSDima Tесли добавить выкидывание старшей 1
то есть ваша нотация, как она была описана, уже сбойнула?
Та тоже рабочая, но ее можно улучшить: 2 бита сэкономить.
Можно не писать первую единицу, т.к. старший разряд всегда 1.
Например число 17 (10001 2 ) можно записать как 0001 2
Остается вопрос как писать 0, как вариант указывать размер размера 000000.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39582707
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TВопрос 21097085 прозвучал так
Иван FXSА если нужно не одно число там разместить, а 100500?это было не о том, как записать одно число "сто тысяч пятьсот", а о том, что, возможно, нужно будет размещать "стопяцот" чисел.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39582709
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TТа тоже рабочая как ваша нотация справится с задачей записи числа

127213652436512428173512214698378623721714738352374 ?
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39582711
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSDima TВопрос 21097085 прозвучал так
Иван FXSА если нужно не одно число там разместить, а 100500?
это было не о том, как записать одно число "сто тысяч пятьсот", а о том, что, возможно, нужно будет размещать "стопяцот" чисел.
И ... ? Какое из двух окончаний ты не дописал:
1. Я хочу сделать это максимально компактно.
2. Я не знаю как записать несколько чисел.

Я подумал про второе, т.к. первое многократно обсудили выше. Хотя не удивлюсь если окажется третье.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39582714
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я как раз знаю, как записать несколько чисел: сначала первое, потом вплотную к нему (без всяких запятых) второе и т.д.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39582789
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSDima TТа тоже рабочая как ваша нотация справится с задачей записи числа

127213652436512428173512214698378623721714738352374 ?
Никак. Мой формат подразумевает максимальное значение. Я же писал 21089437 что до 2^64.
Можно 1 бит добавить в размер размера и будет максимум 2^128 и т.д.

Если надо такие числа в больших количествах, то есть смысл подумать про вариант 21089482 , в том виде он до 2^256 (примерно 75+ десятичных разрядов), если 1 бит добавить станет до 2^65536.
Хотя не такая уж и шутка там получилась, вот число 100500 в том формате:
Код: sql
1.
011 01 0001 1000100010010100


25 бит, на 1 бит короче 21098396 , т.е. чем больше числа тем еще короче будет по сравнению с другими способами записи.

PS Идеального решения этой задачи не существует, поэтому надо затачивать решение под ожидаемые данные. Как вариант отдельно задавать тип кодирования чисел и использовать тот, который окажется короче в данном конкретном случае.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39583607
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще, конкретный оптимальный алгоритм будет зависеть от распределения получаемых значений по диапазону.

Вот например вариант [длина + значение]:

Разбиваем значение на диапазоны, с разрядностью кратной 4 битам, т.е.: 0..15, 16..270, 271..4365, ...
Сначала записываем длину в блоках, причём размер длины кратен 2м битам, т.е.: 00 = 1, 01 = 2, 10 = 3, 1100 = 4, 1101 = 5, ...
После длины идёт N*4 бит числа.

Число 100500 будет записано как 1101 0001 1000 1000 1001 0100 -> 24 бита.
Число '127213652436512428173512214698378623721714738352374' в двоичную систему переводить лень, но оно займет 196 бит.

Имеется некоторая избыточность (например, число 1 займёт 6 бит), но без этого никуда :)
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39583608
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpЧисло 100500 будет записано как 1101 0001 1000 1000 1001 0100 -> 24 бита.

На самом деле: 1101 0000 0111 0111 1000 1000
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39583627
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как бы писал я.

Я бы меньше байта не мельчил - только расстраиваться.
У каждого байта я бы считал старший разряд флагом конца числа. А младшие семь - значимыми разрядами. И число 0-127 помещались бы в один байт, 0.....128*128-1 - в два байта и так далее.

Двухбайтные из диапазона 0....127 я бы оставил себе на память как эскейп- коды.

Если жалко терять один бит из восьми, то тогда бы брал слова (или двойные слова) с битом-флагом. Тогда потери на флаг конца - 1/16 32 64 - Это хорошо. Но, диапазон ноль-127 кодируется в два байта - это небольшая потеря, если маленьких чисел мало, большая - если много.

Опять же, если чисел в диапазоне 0...32000 мало, в общем объеме, то флагом можно снабжать уже не слово, а двойное, или даже четверное слово. Или даже кусок бОльшей разрядности.

В зависимости от того, насколько большие числа в среднем - выгодно будет использовать кусочки разной длины. Для переключения между разрядностью зафлагированного куска - вышеупомянутые эскейп - коды.

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


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

Но нужна все же статистика - каких чисел в потоке много, каких - мало, без этого решать вопрос о кодировании оптимальном неправильно.....
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39583652
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir BaskakovЯ бы меньше байта не мельчил - только расстраиваться.
У каждого байта я бы считал старший разряд флагом конца числа. А младшие семь - значимыми разрядами. И число 0-127 помещались бы в один байт, 0.....128*128-1 - в два байта и так далее.

Зачем вы оперируете байтами? В битовом потоке решительно все равно.

Вообще если брать Левенштейна, и ему подобные (с унарным префиксом) то изначально
предполагается что меньшие числа занимают меньшую разрядную сетку.

Но если изначально гистограмма чисел идущих на вход известна и имеет
некий перекос (чаще встречаются большие числа чем меньшие) то
тогда Омега*, Левенштейн* и прочие теряют смысл. Нужно искать другие
подходы.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39583671
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mayton - байтами удобно работать процессору. Это может быть неидеальный код, на байтах. Но. Он не запредельно хуже хорошего, который на битовой строке. И немного заплатить эффективностью за удобство работы по моему, на практике, вполне логично.

И, я согласен с мнением ранее высказанным в теме - не имея представления о гистаграмме входного массива, оценивать эффективность кода невозможно....

Как с сортировкой - каждому алгоритму можно подобрать такой набор входной, что он поработает подольше.

То есть, если задачу рассматривать как игру разума - то тогда битовый массив, а только соберешься в сторону прикладного - байты, слова, двойные и четверные - тут как тут....

Ну, мнение. Уважаю тех, кто способен к более абстрактному, менее приземленному мышлению.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39583684
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В конце концов, ну давайте нагоним тест. На вход впихнем поток рандомных натуральных 0...2^64-1.

И посмотрим, какой компактификатор сделает среднюю битность меньше 60?

В среднем 64 разрядном числе вероятность иметь 64 бита - половина, больше 62 - 3/4, больше 61 - 7/8, > 60 ----- 15/16.....
И так далее. В общем средняя длина в битах числа из равномерного рандомного потока - немногим меньше разрядности.

Исхитряйся или нет. Если поток сильно отличается от равномерного, и мелочи там много - тогда конечно дело другое. Но, как справедливо отмечали выше, тогда эту неравномерность и перекос надо описывать? Перед моделированием для битвы кодировок, в которой побеждает компактнейшая.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39583831
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir BaskakovВ конце концов, ну давайте нагоним тест. На вход впихнем поток рандомных натуральных 0...2^64-1.

И посмотрим, какой компактификатор сделает среднюю битность меньше 60?

В среднем 64 разрядном числе вероятность иметь 64 бита - половина, больше 62 - 3/4, больше 61 - 7/8, > 60 ----- 15/16.....
И так далее. В общем средняя длина в битах числа из равномерного рандомного потока - немногим меньше разрядности.

Это немного разные задачи ИМХО. Исходная задача была: использовать для записи числа минимально необходимое число бит. Т.е. не записывать 32-х разрядные числа 64ю битами и т.п, но при этом иметь возможность записать число любой разрядности.

А вы хотите сжимать поток 64-х разрядных чисел с равномерным распределением значенией, а это уже конкретно сжатие, к тому же случайных [в общем случае] данных. Разные задачи - разные решения, к тому же вторая задача [в случае действительно случайных данных с равномерным распределением] решения [скорее всего] не имеет.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39583860
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpсжимать поток 64-х разрядных чисел с равномерным распределением значенией ... [в случае действительно случайных данных с равномерным распределением] решения [скорее всего] не имеет
если нам дан поток "действительно случайных данных с равномерным распределением", то он нам дан в какой-то нотации ("битовой нотации", поскольку в компе есть только биты). Вопрос "удастся ли сжать" имеет смысл только с указанием двух нотаций -- исходной и сжатой.

Так почему исходную нотацию нельзя сжать? Потому что нотации вообще все одинаково компактны или потому что исходная всегда самая компактная?
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39583862
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте уточним формулировку.

Например, создать битовый код для натуральных чисел 1...N , позволяющий записывать их в поток и считывать в произвольном количестве и порядке, такой что сумма битовых длинн по всему набору была минимальна? Или как? Или с доп ограничением, что длинна битовой последовательности для маленького числа была заметно меньше, чем для числа очень большого?

или доп- требование минимакса - чтобы максимальная длинна кодирующей последовательности по всему набору была как можно меньше? Для последнего выгодно кодирование в равной разрядности.

---- критерии к.м.к. не заданы точно, отсюда разночтения
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39583866
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для кодировки произвольного натурального числа можно построить ф-цию R(n) - сколько разрядов бинарного представления нужно для представления числа n.

Какой интеграл, или максимум, или еще чего от этой ф-ции мы оптимизируем на всем множестве возможных кодировок? Понятно, что наитупейшая кодировка такова - столько единичек, какое число а потом нолик. Такими кодами можно кодить любое натуральное и r(n)=n по такому случаю,
Самая остроумная кодировка по моему не может давать стабильно лучше чем log 2 (N).

какой интеграл от ф-ции разрядности соответствует интуитивному идеалу --компактного представления числа-- ?
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39583870
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе, я могу предложить простенькую кодировку для r(n) = A* log B (n) + C.

Например берем X. Кодируем n. В системе по основанию 2^x-1 - если икс=2 - то в троичной.

Каждому знаку этой кодировки ставим в соответствие ее двоичный код, разрядности икс.

При этом, одна битовая последовательность у нас осталась незанятой - ее мы используем как признак окончания числа.

Ну вот, вышли на логарифмическую метрику, с константами A, B, C. Она хорошая, или нет? И почему? В каком смысле другие ==кодировки== лучше или хуже..... практичнее? В принципе, вариант ==байт с маркером== дает такую же метрику

чем больше икс, тем меньше лишних разрядов будет на больших числах, но больше - на маленьких, вроде так.......
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39583872
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSСловарь {"однобитныйдиапазон", "двухбитныйдиапазон", "трёхбитныйдиапазон","четырёхбитныйдиапазон", ... "М-битныйдиапазон"} должен обладать свойствами префиксности и оптимальности (для нашей задачи), то есть, например, битовые значения

0, 10, 110, 1110, ... (М_минус_одна_единица)0

-- должны быть распределены по нему в соответствии с нашими априорными ожиданиями частот записи нами разных чисел.
-- вот там (точнее на одну реплику выше) у меня было озарение, что ставить самое короткое префиксное слово "0" для обозначения "однобитногодиапазона"-- множества занимающих один бит чисел, -- которых всего два: 0 и 1, ... это совсем не компактно. А если тупо инвертировать порядок префиксных слов, то получаем нотацию с одинаковым размером записи слов по всему диапазону от "однобитных" до "М-битных" ... и почему тогда не пользоваться самой обычной нотацией с фиксированным размером записи числа?
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39583875
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir Baskakov простенькую кодировку для r(n) = A* log B (n) + C.

Например берем X лично я не понял, как у вас тут соотносятся r и Х ...
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39583951
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSalekcvpсжимать поток 64-х разрядных чисел с равномерным распределением значенией ... [в случае действительно случайных данных с равномерным распределением] решения [скорее всего] не имеет
если нам дан поток "действительно случайных данных с равномерным распределением", то он нам дан в какой-то нотации ("битовой нотации", поскольку в компе есть только биты). Вопрос "удастся ли сжать" имеет смысл только с указанием двух нотаций -- исходной и сжатой.

Так почему исходную нотацию нельзя сжать? Потому что нотации вообще все одинаково компактны или потому что исходная всегда самая компактная?
Сжатие как процесс - это удаление избыточности из данных. В случайном потоке 64-х битных чисел с равномерным распределением значений избыточности нет по-определению. Соответственно и сжатию без потерь он не поддаётся.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39583955
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp, кажется, в вашей формулировке "случайный поток 64-х битных чисел с равномерным распределением значений"
-- склеены описание распределения (а именно: равномерно-случайно распределённые целые числа в диапазоне от 0 до 2^64-1 ) и описание нотации (а именно: двоичная запись числа с дополнением слева нолями до полного числа 64 бита). Интересно, как такой нетривиальной конструкции из смежных дисциплин приписывается квалификация "избыточности нет по-определению" ...
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39583964
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSИнтересно, как такой нетривиальной конструкции из смежных дисциплин приписывается квалификация "избыточности нет по-определению" ...
Ну простой пример: при сжатии текста нам не обязательно хранить все буквы и знаки препинания, из которых он состоит. Ведь в любом тексте есть повторяющие-ся слова или как минимум слоги. Поэтому можно составить словарик этих повторений, отсортировать их по частоте появления и закодировать последовательностями бит разной длины, чем чаще встречается - тем короче последовательность (код Хаффмана).

В случае же абсолютно случайной последовательности (любой разрядности) - повторяющихся групп чисел либо не будет вовсе, либо будет минимальное количество минимальной длины, соответственно и сжать таким образом её не получится.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39583965
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSalekcvp, кажется, в вашей формулировке "случайный поток 64-х битных чисел с равномерным распределением значений"
-- склеены описание распределения и описание нотации
Читать как "случайный поток чисел в диапазоне от 0 до 2^64 - 1".
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39583970
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpВ случае же абсолютно случайной последовательности (любой разрядности) - повторяющихся групп чисел либо не будет вовсе, либо будет минимальное количество минимальной длины, соответственно и сжать таким образом её не получится.
-- будут и повторы, и любой, вообще говоря, длины. А сжать не получится потому, что нужно будет сохранить также и словарь, который "сожрёт" весь эффект от сжатия (это перекличка с соседней темой про "генерируемый словарь").

А если был бы "параллельный льготный тариф" для отправки (хранения) словаря, то можно было бы забацать "словарь" из одного слова ( = отправляемый текст). Тогда сам "архив" имел бы длину 1 бит.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39583972
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpЧитать как "случайный поток чисел в диапазоне от 0 до 2^64 - 1".
тогда ваше утверждение состоит в том, что нотация "двоичная запись чисел с дополнением слева нолями до полного числа 64 бита и выкладыванием этих записей вплотную одна за другой (без префиксов и разделителей, которые не требуются)" -- является наиболее компактной (в том смысле, что никакой более компактной нотации не существует).
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39583982
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSVladimir Baskakov простенькую кодировку для r(n) = A* log B (n) + C.

Например берем X лично я не понял, как у вас тут соотносятся r и Х ...

Для случая икс=2.

2^x-1 = 3.

Кодируем число в троичной системе.

Каждый знак кода заменяем
0 на 00
1 на 01
2 на 10

11 - стоп-биты.

Длина кода в тоичной системе для числа N - log 3 (N), каждый знак кодируется двумя битами - A=2, стоп-битов тоже два С=2.

Икс=3 - два в кубе=8, кодируем в семиричной системе

3 (log 7 (n)) + 3.

Умные кодировки, они конечно получше. Намного ли? Вопрос.

На практике, я бы этим кодом кодировал длину битовой последовательности числа. а само число оставлял как есть.

Ноль
01 11 0
1 01 11 1
2 - 10 11 10

-- на практике от этого польза сбалансирована вредом. Так, на тысячебитное целое В заголовке будет 6*2+2 - 10 бит.... вроде немного, но такие длинные целые малотипичны. Для 64 разрядного - 4*2+2 = 10 бит. Потери больше 10 %...
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39583984
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp,

а представьте, что задача стоит передавать "случайный поток чисел в диапазоне от 0 до К* 2^64 - 1", где К=0.55 ... тогда "стандартная битовая нотация" очевидно (для меня, по крайней мере) не является самой компактной ...
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39583987
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpВ случае же абсолютно случайной последовательностиАбсолютно случайно может быть только бесконечная последовательность. В любой конечной, включая подпоследовательность случайно, можно поискать какие-нибудь закономерности. Не факт, что повезёт, но шанс - не нулевой.

P.S. Другой вопрос, что:
1. Всё равно глупость: проблема (исходной) технологии не в применимости, а в практичности;
2. 512 (да хоть и 4096) битов - коротковато в любом случае.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39583995
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovВ любой конечной, включая подпоследовательность случайно, можно поискать какие-нибудь закономерности. Не факт, что повезёт, но шанс - не нулевой.
Найти какие-нибудь отдельные закономерности вы может и найдёте, но накладные расходы на их кодирование съедят весь выигрыш от этой операции ИМХО.

Иван FXSalekcvp,
а представьте, что задача стоит передавать "случайный поток чисел в диапазоне от 0 до К* 2^64 - 1", где К=0.55 ... тогда "стандартная битовая нотация" очевидно (для меня, по крайней мере) не является самой компактной ...
Ну, тут оптимальнее будет разве что запись с дробным количеством бит на число, и то не факт. Мне лень считать, если честно :)
Во всех остальных случаях ИМХО всё равно 64-х битная запись будет оптимальнее.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39584008
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кому как, но лично мне достаточно очевидно, что любой алгоритм сжатия (с потерями или без) создаёт детерминированную последовательность. Да, не произведя сжатия, результат мы не знаем, но повторные сжатия выдадут тот же самый результат.
Что изменится, если одним и тем же алгоритмом (схема сжатия плюс параметры конкретного режима) одни и те же данные обработает миллион участников? Ничего.
Сколько участников не просто готовы, а реально могут изобрести новый алгоритм сжатия, адаптированный под конкретную последовательность? А повторять этот подвиг ежесекундно?
Если быть реалистом - строгий ноль. Что, собственно, и делает бессмысленной исходную затею.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39584020
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov, адаптировать алгоритм сжатия под конкретную последовательность (подбирая в нём значение некоторого параметра) -- это всё-таки совершенно не называется "изобрести новый алгоритм сжатия"
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39584027
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSадаптировать алгоритм сжатия под конкретную последовательность (подбирая в нём значение некоторого параметра) -- это всё-таки совершенно не называется "изобрести новый алгоритм сжатия"За неимением вашего алгоритма, я могу сослаться на существующие и вполне обоснованно утверждать, что разные режимы одного алгоритма дают разницу на проценты для больших объёмов хорошо сжимаемых данных.
А вы предлагаете манипулировать сотнями-тысячами бит потенциально плохо сжимаемых данных - параметру тупо не хватит материала для набора статистики.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39584028
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSalekcvpВ случае же абсолютно случайной последовательности (любой разрядности) - повторяющихся групп чисел либо не будет вовсе, либо будет минимальное количество минимальной длины, соответственно и сжать таким образом её не получится.
-- будут и повторы, и любой, вообще говоря, длины. А сжать не получится потому, что нужно будет сохранить также и словарь, который "сожрёт" весь эффект от сжатия (это перекличка с соседней темой про "генерируемый словарь").

А если был бы "параллельный льготный тариф" для отправки (хранения) словаря, то можно было бы забацать "словарь" из одного слова ( = отправляемый текст). Тогда сам "архив" имел бы длину 1 бит.
Я изначально предложил подойти ad-absurdum и заменить случайную последовательсность справочника
на sequence но меня не услышали.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39584047
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovЗа неимением вашего алгоритма, я могу сослаться на существующие и вполне обоснованно утверждать, что разные режимы одного алгоритма дают разницу на проценты для больших объёмов хорошо сжимаемых данных.испытываю большие трудности в понимании написанного

1. "За неимением вашего алгоритма ... вы предлагаете манипулировать сотнями-тысячами бит потенциально плохо сжимаемых данных" -- это про какую из инициированных мной в этом году тем? (Да виноват, инициировал несколько, прорвало.)

2. "дают разницу на проценты" -- а разве разные архиваторы конкурируют друг с другом не "за проценты" (в смысле единицы процентов)? Ну не в десятки же раз "хороший архиватор" сжимает лучше, чем "плохой архиватор"!

3. "разные режимы одного алгоритма" -- вы понимаете разницу между выбором seed в каком-нибудь параметризованном алгоритме (типа градиентного спуска) и выбором, например, количества слоёв в нейронной сети? Хотя и то, и другое можно назвать "выбором значения параметра" ...
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39584055
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSиспытываю большие трудности в понимании написанногоОбычно, помогает не сразу вывалить идею на публику, а подумать над ней, что-нибудь сделать или, хотя бы, просто отложить, а спустя некоторое время подумать ещё раз.

Насколько я понял, вам кажется странным тратить усилия на майнинг хэшей и вы предлагаете майнить степени сжатия.

Лично для меня бессмысленны оба занятия, но ваш вариант - ещё менее осмысленный: для майнинга хэшей есть чёткий алгоритм и побеждать будет тот, у кого больше вычислительных мощностей при равной архитектуре. Включая архитектуру, специально разработанную под конкретную задачу.

Чтобы майнить степени сжатия требуется или каждый раз разрабатывать алгоритм сжатия под конкретную последовательность, что выглядит несколько утопично или подбирать некий мифический параметр. Это не только выглядит совершенной маниловщиной, но и является ею по сути.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39584186
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все 4 страницы срача я не читал, поэтому сразу предложу хорошее решение. Звиняйте, если оно уже было.
Число записывается в формате <длина числа в битах><само число>
Длина числа в битах записывается в виде набора байт, где у каждого байта старший бит - признак конца, а 7 младших - данные. т.е.
<0xxxxxxx>, <0xxxxxxx>, <1xxxxxxx> для чисел до 2^21 или <1xxxxxxx> для чисел до 127
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39584223
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovНасколько я понял, вам кажется странным тратить усилия на майнинг хэшей и вы предлагаете майнить степени сжатия.
это в другую тему реплика, давайте не перемешивать темы. Ответил там: 21106660
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39584337
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подумал, и понял что у Левенштейна - хороший код. плотнее пожалуй не загонишь.
для совсем частных случаев можно попробовать, а в целом - вряд ли.
...
Рейтинг: 0 / 0
Компактная нотация бинарной записи числа
    #39584345
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ изначально предложил подойти ad-absurdum и заменить случайную последовательность справочника на sequence но меня не услышали.
можете дать ссылку на то ваше изначальное предложение?
...
Рейтинг: 0 / 0
83 сообщений из 83, показаны все 4 страниц
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Компактная нотация бинарной записи числа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]