LINUX.ORG.RU
ФорумTalks

Дискретное логарифмирование


0

1

Есть задача нахождение дискретного логарифма по модулю для длинных чисел. Для работы с длинными числами используется mpir. Нагуглил следующие алгоритмы:

1) Baby-step-Giant-step

2) метод Полларда

Не могу решить какой алгоритм для этого лучше использовать, потому что 1 выглядит проще, но не понятно каким образом описать хеш-функцию для длинных чисел(или что надо делать, чтобы массив длинных чисел все время был отсортированным) , и сколько памяти это вообще будет использовать. Количество разрядов в числах более 150.

Ответ на: комментарий от aiqu6Ait

Какой алгоритм использовать , и в случае если это Baby-step-Giant-step, то каким образом задать хеш-функцию для использования map

Chubakur ★★
() автор топика

Если представить числа, как строки, то лексикографическое сравнение строк позволит сортировать числа. А это, в свою очередь, позволит засунуть их в твою реализацию SortedSet.

P.S. Ищи реализации больших чисел под целевой ЯП. Напр. в Java есть BigInteger, который тебе может подойти.

Norgat ★★★★★
()
Последнее исправление: Norgat (всего исправлений: 1)
Ответ на: комментарий от Chubakur

реализуй оба и проверь сходимость у обоих, используй тот, который лучше.

aiqu6Ait ★★★★
()
Ответ на: комментарий от Norgat

Вот не знаю как хранятся числа в mpir, возможно не посимвольно, и как их оттуда извлечь. Лексикографическое сравнение это strcmp?

Chubakur ★★
() автор топика
Ответ на: комментарий от Chubakur

Лексикографическое сравнение это strcmp?

http://www.cplusplus.com/reference/cstring/strcmp/

Returns an integral value indicating the relationship between the strings: A zero value indicates that both strings are equal. A value greater than zero indicates that the first character that does not match has a greater value in str1 than in str2; And a value less than zero indicates the opposite.

Судя по этому описанию, да, лексикографическое.

Norgat ★★★★★
()

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

Chubakur ★★
() автор топика
Ответ на: комментарий от Chubakur

Если читать документацию, то это little endian массив чисел

Chubakur ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.