Алгоритм Евкліда. Розширений алгоритм Евкліда. Складність алгоритмів. Складність операцій додавання і віднімання

Страницы работы

6 страниц (Word-файл)

Содержание работы

ЛЕКЦІЯ 2

Алгоритм Евкліда. Розширений алгоритм Евкліда. Складність алгоритмів. Складність операцій додавання і віднімання.

План

1. Алгоритм Евкліда.

2. Розширений алгоритм Евкліда.

3. Оцінка складності алгоритмов.

4. Складність операцій додавання і віднімання.

5. Використання модульної арифметики.

      Нагадаємо, що два числа називають взаємнопростими, якщо вони не мають спільних дільників, крім 1. Иншими словами, якщо найбільший спільний дільник чисел  і  дорівнює 1, то то ці числа називають взаємнопростими і записують .

      Один з шляхів обчислення найбільшого спільного дільника двох чисел – використання алгоритма Евкліда. Евклід описав цей алгоритм у своїй книзі „Елементи”, датованій 300 роком до н. е. Однак алгоритм був створений не Евклідом. Історики вважають, що алгоритм на 200 років старіший. Це найдавніший нетривіальний алгоритм, що дойшов до наших днів.

      Будемо позначати найбільший спільний дільник чисел А і В через (А,В). Нагадаємо, що алгоритм Евкліда полягає у послідовному виконанні операції ділення з залишком до отримання нульового залишку. Нехай А > В > 0 . Позначимо A = r-1 , B = r0  і при і . Тоді  і до отримання залишка необхідно виконати  ділення.

Оцінимо число ділень, що виконується у алгоритмі Евкліда. Для цього розглянемо послідовність чисел Фібоначчі

Лема. При вірна нерівність, де .

Доведення. Застосуємо індукцію за . При  тверждення є очевидним.

Далі, використовуючи припущення індукції, маємо

Так як  R є додатнім коренем рівняння

Дійсно,  и .

Теорема (Ламе, 1844). Для будь-якого натурального числа число ділень в алгоритмі Евкліда для знаходження найбільшого спільного дільника чисел А і В,  не перевершує  .

Доведення.

Доведемо, що при . При  вірно. Для   , пам’ятаючи про індукцію, маємо

.

Тому, звідки виходить шукана оцінка числа ділень .

()

Безпосередньо з цієї теореми можно отримати оцінку складності алгоритму Евкліда для знаходження найбільшого спільного дільника двох n-розрядних чисел.

.

Разом з тим, цю оцінку можно уточнити, якщо звернути увагу на те, що складність операції ділення кутом числа  на число  , , насправді має вигляд . Звідси, позначаючи через  довжину запису залишку  , де  , отримаємо більш точну оцінку складності алгоритму Евкліда

Оцінка складності алгоритму Евкліда не є оптимальною для знаходження НСД. Існує багато різних модифікацій алгоритму Евкліда. Можно, наприклад, зменшити кількість кроків алгоритму, модифікуючи алгоритм з метою зменшення абсолютних значень залишків. А саме будемо змінювати залишок остаток   на , якщо . За такого виправлення виходить послідовність чисел, що задовільняє умові . Те, що деякі з чисел будуть від’ємними не впливає на вид спільних дільників. У результаті отримуємо оцінку кількості ділень . Проте, даний підхід не покращує загальну оцінку складності модифікованого алгоритму Евкліда.

      Існують алгоритми, в яких взагалі не виконуєтьмя операція ділення. Наприклад у алгоритмі LSGCD (lift shift greatest common divisor) операція ділення з залишком замінена на лівий зсув дільника з наступним відніманням з делимого, так, що отримана послідовність на кожному кроці задовільняє умові з попереднього алгоритму.

У даному алгоритмі виконуються кроків, кожен з яких має складність , тому загальна оцінка складності маає вигляд .

      Існує алгоритм знаходження НСД з оцінкою складності , однак, його пояснення достатньо складне і тут не наводиться.

      Можно також відмітити, що алгоритм Евкліда широко використовується не тільки при визначенні спільних дільників чисел, але й поліномів. А саме, в теорії подільності його використовують при тестуванні взаємної простоти двох поліномів з коефіцієнтами, наприклад, з кінцевого поля.

Задача обчислення зворотніх значень за модулем трохи складніша. Іноді вона має розв’язок, іноді – ні. Наприклад, зворотнє значення 5 за модулем 14 дорівнює 3. З іншого боку, число 2 не має звототнього значення за модулем 14. У загальному випадку рівняння  має єдиний розв’язок, якщо  і взаємнопрості. Якщо  і не є взаємнопростими, то   не має рішень. Зворотнє значення за модулем  можно обчислити за допомогою розширеного алгоритму Евкліда.

Розглянемо цей алгоритм. Що дозволяє не тільки знаходити НСД чисел  і а ще й знаходити цілі числа  і  , що задовольняють рівності . Із звичайним алгоритмом Евкліда він різниться тим, що разом з послідовністю залишків обчислюються ще дві допоміжні послідовності  і .

Наприклад

5x +7y = НОД (5,7 )

1r- 1 = 5; r0 = 7

x - 1 = 1; y - 1 = 0; x 0 = 0; y 0 = 1

d 1 = ë r -  1 / r 0  ûë 5 / 7 û = 0

r 1 = r - 1 - d 1 r 0 = 5 - 0´ 7 = 5

x 1 = x - 1  - d1 x 0 = 1 - 0´ 0 = 1

y 1 = y - 1 - dy 0 = 0 - 0´ 1= 0

2.   d 2 = ë r / r 1  ûë 7 / 5 û = 1

r 2 = r - dr 1 = 7 - 1´ 5 = 2

x 2 = x  - d2 x 1 = 0 - 1´ 1 = - 1

y 2 = y - dx 1 = 1 - 1´ 0= 1

3. d 3 = ë r  1 / r 2  ûë 5 / 2 û = 2

r 3 = r  1 - d 3 r 2 = 5 - 2´ 2 = 1

x 3 = x  1  - d3 x 2 = 1 - 2´ ( - 1) = 3

y 3 = y  1 - dy 2 = 0 - 2´ 1= - 2

4.  d 4 = ë r 2 / r 3  û =  ë 2 / 1 û = 2

r4 = r 2 - d 4 r 3= 2 - 2´ 1 = 0

Дійсно, знайдені числа та, що задовольняють рівності

Д(5,7)

Похожие материалы

Информация о работе

Предмет:
Математика
Тип:
Конспекты лекций
Размер файла:
392 Kb
Скачали:
0