Алгоритм Діксона може бути вдосконалений по декількох напрямах:
можна замінити процедуру генерації -чисел
так, щоб вірогідність їх породження була більшою;
можна оптимізувати вибір бази, чинника, з тим, щоб зменшити число невідомих в системі рівнянь;
можна удосконалити процедуру відсіву „поганих” чисел , що
не є
-числами;
можна використовувати швидкий алгоритм рішення системи лінійних рівнянь ( наприклад, алгоритм Відемана для розріджених матриць), і т.д.
Подібні поліпшення не дозволяють змінити загальний
вид оцінки складності але дають можливість зменшити
константу
,
Алгоритм Брілхарта - Моррісона.
Суть алгоритму Брілхарта - Моррісона, опублікованого ними в 1975 р., полягає в двох змінах в алгоритмі Діксона:
випадкові числа вибираються
за допомогою методу безперервних дробів, запропонованого Лагранжем, що дозволяє
генерувати такі
, що
є
малим, і тому вірогідність його розкладання вища;
з фактор-бази виключаються
ті числа
, для яких
Розглянемо алгоритм детальніше.
Теорема. Хай -
дійсне число, і
- послідовність його підходячих дробів
,
Тоді при всіх
виконується нерівність
Доказ. Через властивості відповідних дробів маємо
Звідси
Слідство. Хай не
є квадратом і
- відповідний дріб для числа
.
Тоді мінімальний по абсолютній величині лишок
рівний і
не перевершує
Доказ. При
,
причому через теорему Тому
мінімальний по абсолютній величині лишок числа
по
модулю
співпадає з
, що
і потрібно було довести.
Дана властивість показує, що якщо як
випадкові числа на 1 етапі алгоритму Діксону брати числа
, то
мінімальний по абсолютній величині лишок числа
, рівний
, не перевищуватиме значення
..
Тому вірогідність його розкладання в добуток чисел бази
буде
вищою, ніж при випадковому виборі.
Метод квадратичного решета.
У 1981 році К. Померанц запропонував для
породження - чисел використовувати підхід, узагальнюючий метод
Ферма.
Розглянемо функцію
,
що є квадратним тричленом з цілими коефіцієнтами.
При кожному цілому виходить
нетривіальне порівняння
,
причому значення при
малих
невелике:
і тому
Тому, якщо замість випадкових чисел в
алгоритмі розглядати значення при випадкових
, що знаходяться в деякому інтервалі
, то
вірогідність породження
- чисел зростає.
При цьому можна заздалегідь здійснити
просіювання тих з
цього інтервалу, які можуть давати розкладання
на
множники з фактор-бази
Для цього для кожного
,
яке може виступати як співмножник в розкладанні
вирішуємо квадратне рівняння
у кільці .
Якщо
- рішення цього рівняння, то повинна виконуватися
рівність
Виконавши заздалегідь дану роботу по
знаходженню коріня для кожного
,
можна тепер залишити в інтервалі
тільки
ті числа
, для яких порівняння
виконується
для достатньо великої кількості чисел
.
Знання для кожного списку тих, для яких виконуються ці порівняння, допоможе
також швидше здійснити факторизацію числа
якщо
вона існує.
Дж. Девіс і П. Монтгомері узагальнили даний підхід. Вони запропонували використовувати многочлен
де коефіцієнти є цілими числами і удовлерворяют умові
;
При такому виборі коефіцієнтів виконується рівність
звідки одержуємо порівняння
причому
Коефіцієнти вибираються,
виходячи з таких міркувань. Функція
приймає
максимальне значення в кінцях відрізка
Мінімальне значення вона приймає в крапці
Вибиратимемо так, щоб максимальне і мінімальне значення функції
на
відрізку
були рівні по абсолютному значенню і протилежні по
знаку:
![]() |
f(x)
![]() |
-М
![]() |
М x
Тому вважаємо:
Число знаходимо
як рішення порівняння
Нарешті число вибираємо з умови
Помітимо, що умову існування рішення другого
порівняння можна перетворити таким чином: для всіх простих дільників виконується
Значення факторизації числа
необхідно
також тому, що воно бере участь як співмножник в шуканому порівнянні. Тому,
звичайно, як число
вибирають або повний квадрат, або число, що
факторизується в добуток простих чисел з фактор-бази.
При даному виборі параметрів значення
многочлена на інтервалі
задовольняє нерівності
що в разів
краще, ніж у початкового алгоритму Помаранчі, в якому при
Завдання.
Методом Ферма і Діксону факторизувати числа, вказані в таблиці 1. Оцінити складність обчислень. Варіант брати залежно від номера в журналі.
Варіант (номер в журналі) |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
Число (факторизувати методом Ферма) |
143 |
187 |
221 |
247 |
253 |
347 |
323 |
437 |
391 |
77 |
249 |
377 |
Число(факторизувати методом Діксона) |
437 |
323 |
347 |
253 |
247 |
221 |
187 |
143 |
77 |
527 |
403 |
203 |
Варіант (номер в журналі) |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
Число (факторизувати методом Ферма) |
203 |
341 |
403 |
527 |
203 |
217 |
377 |
391 |
221 |
347 |
249 |
247 |
Число (факторизувати методом Діксона) |
341 |
403 |
249 |
377 |
143 |
203 |
217 |
77 |
527 |
187 |
323 |
341 |
Таблиця 1.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.