- •Практичне заняття № 4 Тема: Розв’язування алгебраїчних конгруенцій
- •1. Розв’язування квадратних конгруенцій за простим модулем
- •Алгоритм Шенкса -Тонеллі
- •Обчислити , ,
- •2. Алгебраїчні конгруенції -го степеня за простим модулем
- •3. Алгебраїчні конгруенції -го степеня за складеним модулем
- •4. Алгоритм Берлекемпа розкладання многочлена на незвідні множники над скінченним полем
- •Зміст практичного заняття
3. Алгебраїчні конгруенції -го степеня за складеним модулем
Теорема. Якщо – канонічний розклад модуля на множники, то алгебраїчна конгруенція -го степеня за складеним модулем
, (4)
еквівалентна системі конгруенцій
(5)
і число розв’язків конгруенції (за модулем ) (4) дорівнює добутку чисел розв’язків конгруенцій (5) (кожен з розв’язків за відповідним модулем).
Можливі наступні випадки розв’язування конгруенції (4):
1. Модуль конгруенції (4) має лише прості множники . Якщо відповідна система (5) сумісна, то число розв’язків конгруенції (за модулем ) (4) дорівнює добутку чисел розв’язків конгруенцій (5) (кожен з розв’язків за відповідним модулем). Розв’язуючи систему (5), розв’яжемо спочатку кожну конгруенцію окремо, потім знайдені розв'язки скомбінуємо між собою.
2. Модуль конгруенції (5) має вигляд , де – просте число.
Спочатку розв’яжемо конгруенцію за простим модулем
.
Припустимо, що вона має розв'язки , де . Розкладемо функцію у ряд Тейлора:
Усі члени даного ряду, починаючи з третього, діляться на . Отже, конгруенція має місце при
.
Значення ділиться на , тому що – розв'язок конгруенції за модулем . Із знайденої конгруенції легко визначити за умови, що не ділиться на :
Розв’язком останньої конгруенції буде , , де . Тоді
,
де . В результаті . Підставимо це значення замість в даний многочлен і знову розкладемо функцію у ряд Тейлора:
Усі члени даного ряду, починаючи з третього, діляться на . Звідси випливає, що весь многочлен ділиться на тоді, коли вираз ділиться на . Отже, конгруенція має місце при
.
Значення ділиться на , тому що – розв'язок конгруенції за модулем . Із знайденої конгруенції легко визначити за умови, що не ділиться на :
.
Розв’язком останньої конгруенції буде , , де . Підставивши це значення у вираз для , дістанемо загальний розв'язок за модулем :
де .
Продовжуючи аналогічним чином, дійдемо до конгруенції за модулем , тобто дістанемо розв'язок вихідної конгруенції за цим модулем.
4. Алгоритм Берлекемпа розкладання многочлена на незвідні множники над скінченним полем
Нехай – нормований, вільний від квадратів многочлен степеня над полем . Для розкладання його на незвідні над полем множники застосовується алгоритм, запропонований Е. Берлекемпом.
-
Побудувати матрицю порядку
,
рядки якої є коефіцієнтами многочленів-лишків за модулем . Перший рядок цієї матриці завжди являє собою коефіцієнти многочлена , тобто , другий рядок являє собою коефіцієнти многочлена , третій – , останній – . Щоб знайти коефіцієнти цих многочленів, треба побудувати множину лишків за модулем для степенів , .
-
Побудувати матрицю і знайти базис простору розв’язків системи лінійних алгебраїчних рівнянь . Нехай , , …, – знайдений базис.
Зауваження. Оскільки перший рядок матриці (7) є , то перший стовпець матриці буде нульовим. Тому вектор завжди буде базисним.
-
Число знайдених базисних векторів дорівнює числу незвідних дільників многочлена в . При многочлен незвідний, вектору відповідає сталий многочлен . При треба взяти базисний вектор і побудувати многочлен . Обчислюючи для всіх , знайти розклад на множники, де , .
Якщо , то алгоритм зупиняється. Якщо , то треба взяти базисний вектор , побудувати , обчислюючи для вже знайдених множників , знайти подальший розклад , і т.д., доки не знайдемо всі множників.
Алгоритм зупиняється, коли знайдений розклад многочлена на множників, де .