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