Алгоритм Діксона може бути вдосконалений по декількох напрямах:
можна замінити процедуру генерації -чисел так, щоб вірогідність їх породження була більшою;
можна оптимізувати вибір бази, чинника, з тим, щоб зменшити число невідомих в системі рівнянь;
можна удосконалити процедуру відсіву „поганих” чисел , що не є -числами;
можна використовувати швидкий алгоритм рішення системи лінійних рівнянь ( наприклад, алгоритм Відемана для розріджених матриць), і т.д.
Подібні поліпшення не дозволяють змінити загальний вид оцінки складності але дають можливість зменшити константу ,
Алгоритм Брілхарта - Моррісона.
Суть алгоритму Брілхарта - Моррісона, опублікованого ними в 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).
Ссылка на скачивание - внизу страницы.