Профиль пользователя заблокирован сроком «навсегда» без указания причины
Ответы пользователя по тегу Математика
  • Уникальный ключ (Алгоритм)?

    @MikhailEdoshin
    Недавно был схожий вопрос, вот мой ответ, посмотрите, может подойдет. Смысл в том, что вы берете последовательные номера и как бы шифруете их некоторой простой функцией (нвпример, инвертируете и переставляете биты по известной схеме). В результате получаются номера внешне перемешанные, но стопроцентно уникальные. В вашем случае вы еще и сериализуете результаты в base32.

    Восемь символов каждый по пять бит дают 40 бит информации, то есть 1,099,511,627,776 номеров. Для миллиарда номеров достаточно 30 бит (2^30 = 1,073,741,824). Оставшиеся десять бит (которые, естественно, могут идти не по порядку) можно заполнить случайной информацией и/или использовать для контрольной суммы, дополнительных пометок (номер серии) и т. п. Разумеется, если у вас будут более длинные номера, то простора еще больше.
    Ответ написан
    Комментировать
  • Как компрессировать упорядоченный массив уникальных натуральных чисел огр. диапазона?

    @MikhailEdoshin
    Учитывая, что чисел мало, проще хранить их в отсортированном массиве — 5 млн 32-битовых чисел займут 19 МБ, пересечение и разность находятся так же параллельным просмотром за O(N + M), проверка вхождения элемента двоичным поиском — O(log N).
    Ответ написан
    4 комментария
  • Как компрессировать упорядоченный массив уникальных натуральных чисел огр. диапазона?

    @MikhailEdoshin
    Вообще это run-length encoding. Находить пересечение и разность можно без распаковки, просматривая параллельно оба набора, а вот проверку произвольного числа можно будет сделать тоже только просмотром, не очень эффективно.
    Ответ написан
    Комментировать