Факторизация
Материал из Википедии — свободной энциклопедии
Факториза́ция — разложение данного натурального числа на простые множители.
В отличие от задачи распознавания простоты числа, факторизация предположительно является сложной задачей.
Содержание |
[править] Алгоритмы факторизации
В зависимости от сложности алгоритмы факторизации можно разбить на две группы. Первая группа — экспоненциальные алгоритмы, сложность которых экспоненциально зависит от длины входящих праметров (то есть от длины самого числа в бинарном представлении). Вторая группа — субэкспоненциальные алгоритмы, для обозначения сложности которых принята L-нотация:
где N — число подлежащее факторизации, 0 < α < 1 и c — некоторые константы.
Вопрос о существовании алгоритма факторизации с полиномиальной сложностью на классическом компьютере является одной из важных открытых проблем современной теории чисел. В то же время факторизация с полиномиальной сложностью возможна на квантовом компьютере с помощью алгоритма Шора.
[править] Экспоненциальные алгоритмы
- Перебор возможных делителей — наиболее тривиальный алгоритмом факторизации с вычислительной сложностью Θ(N1 / 2).
- ρ-алгоритм Полларда имеет сложность Θ(N1 / 4);
- p-1 алгоритм Полларда;
- p+1 алгоритм Вильямса;
- метод квадратичных форм Шенкса имеет сложность O(N1 / 4);
- метод Шермана — Лемана.
[править] Субэкспоненциальные алгоритмы
- метод непрерывных дробей имеет сложность
; - метод квадратичного решета имеет сложность
; - метод эллиптических кривых имеет сложность
, где p — наименьшее простое, которое делит N.
[править] Решето числового поля
В настоящее время самыми эффективными алгоритмами факторизации являются вариации решета числового поля:
- общий метод решета числового поля со сложностью
; - специальный метод решета числового поля со сложностью
. Однако для использования этого алгоритма накладываются определённые условия на число, подлежащее факторизации.
[править] Применение в криптографии
Предполагаемая сложность задачи факторизации лежит в основе криптостойкости некоторых алгоритмов шифрования с открытым ключом, таких как RSA.
[править] Ссылки
- Н. П. Варновский. Проблема P =? NP, классы сложностей и криптография. 2005.
- Онлайновые программы для факторизации чисел: [1], [2], [3]
- Дональд Э. Кнут. Искусство программирования. Т.2 Получисленные алгоритмы. - Вильямс, 2007, - Раздел 4.5.4. Разложение на простые множители. с. 425-468
| В этой статье не хватает ссылок на источники информации.
Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена.
Вы можете отредактировать эту статью, добавив ссылки на авторитетные источники. |


