Практичне заняття №3 (ТСО).
Мета заняття : Поглибити теоретичні знання і навчитися на практиці оцінювати складність алгоритмів факторизації.
Факторизація Ферма.
 Вельми плідною ідеєю
при побудові алгоритмів факторизації є пошук чисел   і
 і  ,
для яких виконується співвідношення
,
для яких виконується співвідношення  .
Якщо при цьому
.
Якщо при цьому  , то числа
, то числа   і
 і  суть нетривіальні дільники числа
  суть нетривіальні дільники числа 
Очевидно, першим в цьому напрямі є метод факторизації, застосований
П. Ферма. Він заснований на теоремі Ейлера про представлення числа у вигляді різниці двох квадратів.
 Теорема. Якщо  - непарний, то існує взаємно однозначна відповідність
між розкладаннями на множники
 - непарний, то існує взаємно однозначна відповідність
між розкладаннями на множники  ,
,
 і представлені у вигляді різниці квадратів
  і представлені у вигляді різниці квадратів  ,
,  .
Ця відповідність має вигляд
.
Ця відповідність має вигляд
 
Доказ очевидно.
 
 
 Метод Ферма полягає в тому, що при малих
значеннях параметра  в
уявленні
 в
уявленні   можна знайти пару
 можна знайти пару  , перебираючи як кандидатів на значення числа
, перебираючи як кандидатів на значення числа   числа
 числа
 і перевіряючи для кожного з них рівність
  і перевіряючи для кожного з них рівність 

 Для отбраковки помилкових значень  можна скористатися тим, що якщо число не є квадратом,
то воно з великою вірогідністю не буде і квадратичним лишком для одного з
невеликих простих чисел
 можна скористатися тим, що якщо число не є квадратом,
то воно з великою вірогідністю не буде і квадратичним лишком для одного з
невеликих простих чисел  Остання властивість легко перевіряється шляхом обчислення відповідного
символу Лежандра.
 Остання властивість легко перевіряється шляхом обчислення відповідного
символу Лежандра.
 Вхід:   непарне число,
 непарне число,  невеликі
прості числа.
 невеликі
прості числа.
 Крок 0. Перевірити  Якщо так, то дільник знайдений.
 Якщо так, то дільник знайдений.
 Крок 1. Для кожного    від
 від  до
 до  обчислити
величини
   обчислити
величини 
 Крок 2. Якщо
хоч би для одного  виконано одну з умов:
  виконано одну з умов:
  і
 і  не ділить
  не ділить  або
  або
   і
 і 
 то перейти до наступного  на
кроці 1. В протилежному випадку перейти до кроку 3.
 на
кроці 1. В протилежному випадку перейти до кроку 3.
 Крок 3. Перевірити, чи  є повним квадратом. Якщо
 є повним квадратом. Якщо  то видати відповідь: «
  то видати відповідь: « складене».
складене».
 Якщо  - не
повний квадрат, то перейти до наступного
 - не
повний квадрат, то перейти до наступного   на кроці 1.
 на кроці 1.
Наприклад
 Хай потрібно факторизувати число  Вхід
  Вхід 
 Крок 0. 377
не ділиться на жодне 
Крок 1.
             .

             
             
             
              ...
...

 
                 
         (т.я.
(т.я.  );
 ); 
 
                         
 
  



 Виконано умову   і
 і  переходимо до наступного
  переходимо до наступного  
 
                                
 
                       
 (
  ( , але
 , але  ділить
  ділить
 )
)
 
                       
 ;
;
 
                       
 ( т.к.
( т.к.  );
);
 
                         

 
                          =1.
=1.
 Умови   і
 і  не ділить
  не ділить  або
  або
                    і
 і
 не виконуються для жодного
 не виконуються для жодного 
Переходимо до кроку 3.
 Перевіряємо, чи   є повним квадратом
 є повним квадратом 
 =82
=82                                
  - складене
 - складене  
 По суті даний алгоритм, подібно до методу „пробних
ділень”, є різновидом методу перебору всіх можливих дільників. Складність цього
алгоритму оцінюється величиною  .
Параметр
.
Параметр  визначається з конкретних обчислювальних
можливостей. Чим більше значення
 визначається з конкретних обчислювальних
можливостей. Чим більше значення  ,
тим більше число можливих дільників буде перевірено. Проте, на відміну від
методу „пробних ділень”, за допомогою якого знаходиться найменший дільник,
даний метод дозволяє знаходити найбільшого дільника числа
,
тим більше число можливих дільників буде перевірено. Проте, на відміну від
методу „пробних ділень”, за допомогою якого знаходиться найменший дільник,
даний метод дозволяє знаходити найбільшого дільника числа , що не перевершує
, що не перевершує  
   
 Помітимо, що замість  можна брати
  можна брати  при малих значеннях
  при малих значеннях 
 У багатьох випадках перехід до рівнянь  ,
,  . дозволяє знайти шукане значення шляхом коротшого перебору значень
. дозволяє знайти шукане значення шляхом коротшого перебору значень  , чим при
, чим при  .
При цьому, у разі успіху таке уявлення також дозволяє факторізовать число
.
При цьому, у разі успіху таке уявлення також дозволяє факторізовать число  , оскільки числа
, оскільки числа  лежать
в інтервалі
 лежать
в інтервалі  і задовольняють рівності
 і задовольняють рівності 
Алгоритм Діксона.
 У багатьох сучасних алгоритмах факторизації для
знаходження дільників використовується ідея Лежандра (1798 р.). що полягає в
пошуку чисел   и
 и  ,
що задовольняють умовам
,
що задовольняють умовам 
Цей підхід є узагальненням методу Ферма, в якому потрібне виконання строгої рівності.
Для пошуку таких чисел використовується поняття факторної бази.
 Назвемо факторною базою деяку множину  невеликих
простих чисел. Звичайно в якості
 невеликих
простих чисел. Звичайно в якості  беруть
прості числа, що не перевершують деякої межі
 беруть
прості числа, що не перевершують деякої межі 
 Говоритимемо, що ціле число  є
  є  -
числом, якщо число
-
числом, якщо число  розкладається на добуток простих чисел з факторної
бази.
  розкладається на добуток простих чисел з факторної
бази.
  .
.
 Зіставимо кожному  -
числу вектор показників з цього розкладання
-
числу вектор показників з цього розкладання
 
 а також двійковий вектор,
одержаний з вектора  приведенням всіх його координат по модулю 2
  приведенням всіх його координат по модулю 2 
 
 Якщо тепер яким-небудь чином підібрати таке
меножество різних  - чисел
- чисел  ,  при
якому виконується лінійне співвідношення
,  при
якому виконується лінійне співвідношення 
 то для добутку  виконується
співвідношення
  виконується
співвідношення 
 
 де число  визначається
по векторах показників рівністю
 визначається
по векторах показників рівністю
 

Алгоритм Діксона полягає в наступному.
 Крок 1. Вибрати випадкове  ,
, , і обчислити
, і обчислити  .
.
 Крок 2. Пробними
діленнями спробувати розкласти  на
прості множники з факторної бази.
 на
прості множники з факторної бази.
 Крок 3. Якщо  є
  є  -числом,
тобто
-числом,
тобто  ,
,
 то запам'ятати   і
 і Повторити
процедуру генерації чисел
 Повторити
процедуру генерації чисел  до тих пір, поки не буде знайдено
  до тих пір, поки не буде знайдено  
  - чисел
 - чисел  .
.
 Крок 4.
Знайти . наприклад, вирішуючи за допомогою алгоритму послідовного виключення
невідомих Гауса однорідну систему лінійних рівнянь  відносно
невідомих  співвідношень лінійної залежності
 відносно
невідомих  співвідношень лінійної залежності
 ,
,
Покласти
  ,
,



 Крок 5. Перевірити  Якщо
це так, то повторити процедуру генерації. Якщо ні, то знайдено нетривіальне
розкладання
 Якщо
це так, то повторити процедуру генерації. Якщо ні, то знайдено нетривіальне
розкладання
 
 Приклад. Хай потрібне факторізовать число 
 Хай   Фактор-база 2,3,5.
 Фактор-база 2,3,5.
 
                             



 
        
3. 
 
   
 
                                           









НСД
НСД



НСД
НСД
 На трудомісткість алгоритму Діксону істотно
впливає вибір бази, чинника. Якщо число  вибране
так, що
 вибране
так, що , то майже кожне
, то майже кожне  буде
 буде
 -числом, але одержувані при цьому порівняння
-числом, але одержувані при цьому порівняння  будуть
тривіальними. Крім того, потрібно буде вирішувати системи від дуже великого
числа невідомих. Якщо
 будуть
тривіальними. Крім того, потрібно буде вирішувати системи від дуже великого
числа невідомих. Якщо  - мало, то
  - мало, то  -
числа з'являтимуться дуже рідко.
  -
числа з'являтимуться дуже рідко.
 Помітимо, що якщо   -
складене, то рівняння
 -
складене, то рівняння   має принаймні 4 рішення. Тому вірогідність
появи пари
  має принаймні 4 рішення. Тому вірогідність
появи пари  з
 з  не перевершує 1/2. Отже, повторюючи процедуру
набору для отримання потрібної пари
 не перевершує 1/2. Отже, повторюючи процедуру
набору для отримання потрібної пари  разів
ми одержимо, що надійність даного методу знаходження дільника не менша, ніж
  разів
ми одержимо, що надійність даного методу знаходження дільника не менша, ніж  .
.
Трудомісткість алгоритму Діксону оцінюється таким чином:
 
 Через   позначено
 позначено

Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.