Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект ТСО ( 1 часть)посл..doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
5.2 Mб
Скачать

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

ХАРКІВСЬКИЙ НАЦІОНАЛЬНИЙ

УНІВЕРСИТЕТ РАДІОЕЛЕКТРОНІКИ

КОНСПЕКТ ЛЕКЦІЙ

з дисципліни

ТЕОРІЯ СКЛАДНОСТІ ОБЧИСЛЕНЬ”

Харків 2008

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

ХАРКІВСЬКИЙ НАЦІОНАЛЬНИЙ

УНІВЕРСИТЕТ РАДІОЕЛЕКТРОНІКИ

КОНСПЕКТ ЛЕКЦІЙ

з дисципліни

ТЕОРІЯ СКЛАДНОСТІ ОБЧИСЛЕНЬ”

З А Т В Е Р Д Ж Е Н О

кафедрою БІТ

Протокол №9 від 25.12.2007

Конспект лекцій з дисципліни “Теорія складності оючислень”.Упорядник І.В. Лисицька. - Харків: ХНУРЕ, 2008,- 144 с.

Упорядник І.В. Лисицька

Рецензент О.Качко, професор каф. ПЗЕОМ

ЗМІСТ

Вступ…………………………………………………………………………….…6

Лекція 1 Основні поняття й означення теорії складності ....…...........................8

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

Лекція 3 Використання модульної арифметики. Обчислення з многочленами Методи множення. Складність обчислення……………………………………22

Лекція 4 Складність розвязання систем рівнянь…………...…………………31

Лекція 5 Тестування чисел на простоту. Імовірнісні алгоритми з однобічною помилкою.Складність алгоритмів………………………………………………37

Лекція 6 Тестування чисел на простоту. Алгоритми з імовірнісним часом виконання. Детерміновані алгоритми. Складність алгоритмів……………….

Лекція 7 Побудова великих простих чисел. Складність побудови…………

Лекція 8 Побудова великих простих чисел. Складність побудови…………

Лекція 9 Складність алгоритмів факторизації…………………………………

Лекція 10 Складність алгоритмів факторизації……………………………….

Лекція 11 Складність алгоритмів факторизації…………………………………

Лекція 12 Елиптичні криві та операції у групах точок еліптичних кривих…

Лекція 13 Сліди і базиси розширеного поля. Подання точок кривої у різних координатних системах. Складність арифметичних операцій у групі точок ЕК………………………………………………………………………………..

Лекція 14 Оптимальний нормальний базис поля …………………………

Лекція 15 Розрахунок порядку еліптичної кривої……………………………..

Лекція 16 Складність деяких методів експоненціювання точки кривої………

Лекція 17 Проблема дискретного логарифмування в групі точок .

Лекція 18 Складність вирішення проблеми дискретного логарифмування в групі точок ЕК…………………………………………………………………..

Лекція 19 Складність вирішення проблеми дискретного логарифмування в групі точок ЕК………………………………………………………………….

Лекція 20 Складність вирішення проблеми дискретного логарифмування в групі точок ЕК………………………………………………………………….

ВСТУП

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

Широке застосування знаходить використання електронних документів і здійснення електронного документообігу. При цьому під електронним документом розуміється інформація, що зафіксована у вигляді електронних даних, включаючи обов'язкові реквізити документа. Одним з головних вимог до електронних документів є забезпечення цілісності на всіх етапах їхнього життєвого циклу, а також підтвердження авторства.

Питання безпеки інформації  важлива частина процесу впровадження нових інформаційних технологій в усі сфери життя суспільства. Широкомасштабне використання обчислювальної техніки й телекомунікаційних систем у рамках територіально-розподілених інформаційних систем, перехід на цій основі до без паперової технології, збільшення об'ємів оброблюваної інформації й розширення кола користувачів приводять до якісно нових можливостей несанкціонованого доступу до ресурсів і даних інформаційної системи, до їхньої високої уразливості. Реалізація погроз несанкціонованого використання інформації наносить зараз набагато більший збиток, чим, наприклад, "випадкові" пожежі в приміщеннях або фізичний вплив на співробітників. Однак витрати на побудову системи захисту інформації ще поки непомірно малі в порівнянні з витратами на захист від грабіжників або на протипожежний захист.

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

Крім традиційних симетричних криптосистем, найбільш відомими технологіями криптографії з відкритим ключем є криптосистеми Райвеста, Шаміра, Адлемана (RSA, 1977), Ель-Гамала (1985), Мілера-Коблиця (1986). Стійкість першої базується на проблемі факторизації великих цілих чисел, а двох інших  на проблемі дискретного логарифмування. На даний час відомі вразливі місця цих систем, які знижують їх стійкість, що вимагає збільшення розмірів модулів за тисячі бітів. Зараз стійкість криптосистем RSA та Ель-Гамала може бути оцінена як субекспоненційна. Криптосистеми на еліптичних кривих запропоновані В. Мілером та Н Кобліцем у 1976 році та з тих пір інтенсивно аналізуються криптографами. Якщо виключити криптографічно слабкі криві, то стійкість таких криптосистем зараз оцінюється як експоненційна.

При проектуванні криптосистеми на першому місці стоїть проблема безпеки, після чого вирішується зв’язана з нею проблема ефективності. Перша проблема вирішується у зв’язку з вимогами до конкретної криптосистеми вибором розміру ключа та загальносистемних параметрів на основі відомих стандартів. Проблема ефективності пов’язана з трудомісткістю криптоперетворень, оптимізацією швидкості обчислень.

Вирішенням проблем безпеки та ефективності в значної мірі й займається теорія складності обчислень. Теорія складності є методикою аналізу обчислювальної складності різних криптографічних методів й алгоритмів. Вона порівнює криптографічні методи та алгоритми й визначає їх надійність.

Головною ціллю теорії складності є забезпечення механізмів класифікації обчислювальних задач згідно ресурсів, необхідних для їх розв'язання. Тому включення цієї дисципліни в перелік дисциплін, які вивчають майбутні спеціалісти з інформаційної безпеки, є виправданим та своєчасним.

Лекція 1

Основні поняття й означення теорії складності.

План

1. Введення в дисципліну.

  1. Основні поняття й означення теорії складності.

  2. Асимптотичне подання.

  3. Класи складності .

У теоретичній криптографії існує два основних підходи до визначення стійкості криптографічних систем і протоколів – теоретично-інформаційний та теоретично-складнісний.

Теоретично-інформаційний підхід передбачає, що супротивник, атакуючий криптографічну систему, не має навіть теоретичної можливості отримати інформацію, достатню для досягнення своїх цілей. Класичний приклад – шифр Вернама з одноразовими ключами, абсолютно стійкий проти пасивного супротивника. Цей шифр є абсолютно надійним.

Нагадаємо, що шифр Вернама (одноразового блокноту) був винайдений в 1917 році Гілбертом Вернамом . У ньому була використана операція побітового додавання за модулем 2. Перед шифруванням повідомлення

представляють у двійковій формі. Ключем є будь-яке двійкове слово, однакової з довжини. Криптотекст отримують таким шляхом: . Розшифрування в шифрі одноразового блокноту співпадає із шифруванням .

Це зрозуміло, оскільки

.

Якщо супротивник не знає ключа , то з підслуханого криптотексту він абсолютно нічого не дізнається про повідомлення . Для супротивника усі ключі є рівноймовірними. Двійкове слово може бути криптотекстом для будь-якого іншого повідомлення , якщо б шифрування відбувалось з використанням якогось іншого ключа , а саме . Наприклад, запишемо слово „БАНАН” у двійковій формі: 000001 000000 010001 000000 010001.

Нехай ключем буде двійкова послідовність

. Отримуємо криптотекст

. Але такий самий криптотекст ми отримаємо, якщо зашифруємо повідомлення „ГРУША” ключем .

Теорія складності є методикою аналізу обчислювальної складності різних криптографічних методів і алгоритмів. Вона порівнює криптографічні методи та алгоритми і визначає їх надійність. Теорія інформації стверджує можливість злому всіх криптографічних алгоритмів (окрім одноразовіх блокнотів). Теорія складності повідомляє, чи можна їх зламати до того, як настане теплова загибель Всесвіту.

Складність алгоритма визначається обчислювальними потужностями, необхідними для його виконання. Обчислювальну складність алгоритму часто визначають двома параметрами : Т (часова складність) та S (просторова складність або вимоги до пам’яті). Як Т так і S звичайно відображуються як функції від , де - розмір вхідних даних ( існують також інші міри складності: число випадкових бітів, наскільки широкий канал зв’язку, об’єм даних тощо) .

Обчислювальну складність алгоритму звичайно виражають через символ „О велике”, що вказує порядок величини обчислювальної складності. Це просто член розкладення функції складності, що найшвидше росте за умову росту ; всі чнени нищого порядку ігноруються. Наприклад, якщо часова складність порядку , то вона виражається як .

Часова складність, виміряна подібним чином, не залежить від реалізації.

Не потрібно знати ні точного часу виконання окремих інструкцій, ні числа бітів, які представляють різні змінні, ні навіть швидкості процесора. Один комп’ютер може бути на 50% швидший від іншого, а в третього ширина шини даних може бути вдвічі більше, проте складність алгоритму, що оцінена порядком величини, не зміниться. І це не є хитрим трюком. Під час оцінки доволі складних алгоритмів усім іншим можна знехтувати (з точністю до постійного множника).

Оцінка обчислювальної складності наочно демонструє, як об’єм вхідних даних впливає на вимоги до часу та об’єму пам’яті.

Наприклад, якщо , подвоєння вхідних даних подвоїть і час виконання алгоритма. Якщо , додання лише одного біту до вхідних даних подвоїть час виконання алгоритма.

Головною ціллю теорії складності є забезпечення механізмів класифікації обчислювальних задач згідно ресурсів, необхідних для їх розв’язання. Класифікація не повинна залежати від конкретної обчислювальної моделі, а скоріше оцінювати внутрішню складність задачі.

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

Теорія розглядає мінімальний час і об’єм пам’яті для розв’язання найскладнішого варіанта задачі на теоретичному комп'ютері, відомому як машина Тьюрінга. Машина Тьюрінга є кінцевим автоматом з безкінечною магнітною стрічкою пам’яті для читтання\запису. Це означає, що машина Тьюринга – реалістична обчислювальна модель.

Задачі, які можливо вирішити за допомогою алгоритмів з поліноміальним часом, називають такими, що можуть бути розв’язані, оскільки за умов нормальних вхідних даних вони можуть бути вирішені за прийнятний час ( точне визначення „прийнятності” залежить від конкретних умов ).

Задачі, які можуть бути розвязані тільки за допомогою суперполіноміальних алгоритмів з поліноміальним часом, є обчислювально складними навіть за відносно малими значеннями .

Що ще гірше, Алан Тьюринг доказав, що деякі задачі неможливо розв’язати в принципі. Навіть без урахування часової складності алгоритму, створити алгоритм для їх розв’язання неможливо.

Задачі можливо розбити на класи у відповідності зі складністю їх розв'язання. Найважливіші класи й очікувані співвідношення між ними показані на мал. 1.1. (Нажаль, математично можливо довести лише малу частину цих припущень).

Клас , що є найнижчим містить усі задачі, які можливо розв’язати за поліноміальний час. До класу входять усі задачі, які можливо розв’язати за поліноміальний час тільки на недетермінованій машині Тьюринга ( це варіант звичайної машини Тьюринга, що може робити припущення). Така машина робить припущення щодо розв’язку задачі – чи „удачно вгадуючи”, чи перебираючи усі припущення паралельно – та перевіряє своє припущення за поліноміальний час.

Мал. 1.1. Класи складності.

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

Приклад – криптосистема з відкритим ключем. Вам уже відомо, що вона визначається трьома алгоритмами: алгоритмом генерації ключів, алгоритмом шифрування та алгоритмом розшифрування. Алгоритм генерації є загальнодоступним. Хто завгодно може подати на вхід алгоритму рядок r належної довжини й отримати пару ключів (K1,K2). Відкритий ключ K1  публікується, а секретний ключ K2 і випадковий рядок r - зберігаються в секреті. Нагадаємо, що криптосистема RSA запропонована в 1977 році, і є однією з найбільш популярних криптосистем з відкритим ключем. Назва системи утворене з перших букв прізвищ її творців - Рональда Райвеста, Аді Шаміра и Леонарда Адлемана.

Генерування ключів. Обирають два достатньо великих простих числа і . Для їх добутку функція Ейлера дорівнюватиме (в теорії чисел використовують поняття функції Ойлера , під якою розуміють кількість чисел менших від і взаємнопростих з ). Потім випадковим чином вибирають число е, яке не перевищує значення і буде взаємнопростим з ним. Для цього числа е за алгоритмом Евкліда знаходять елемент d, зворотній до е, тобто такий, що і .

Цей запис у теорії чисел означає, що добуток при діленні на число дає залишок рівний 1 (читається порівняно з одиницею за модулем ).

У результаті:

В якості відкритого ключа пара чисел та .

В якості секретного ключа – число d.

Шифрування виконується блоками. Для цього повідомлення записують у цифровому вигляді та розбивають на блоки так, що кожний блок представляє число, яке не перевищує . Скажемо, якщо блок М записаний у двійковому виді довжини , то повинно виконуватися .

Алгоритм шифрування Е в системі RSA полягає в піднесенні двійкового числа М до степеня . Запишемо це так

.

У результаті виходить шифроблок .

Дешифрування. Алгоритм дешифрування шифроблоку полягає у піднесенні двійкового числа С до степеня , тобто

.

Для простоти викладення припустимо, що відкритий текст і криптограма мають однакову довжину n. Крім того, вважаємо, що відкритий текст, криптограма й обидва ключі – строки в двійковому алфавіті.

Припустимо, що супротивник атакує цю криптосистему. Йому відомий відкритий ключ K1. Він перехопив криптограму d і намагається знайти повідомлення М, де . Оскільки алгоритм загальновідомий, супротивник може послідовно перебирати всі повідомлення довжини n, обчислювати для кожного такого повідомлення криптограму і порівнювати Dі з D. Якщо Dі D, то Mі шуканий текст. Якщо пощастить, то відкритий текст буде знайдений швидко. У найгіршому випадку перебір буде виконаний за час приблизно 2n T(n), де T(n)  час, потрібний на обчислення функції E1 від повідомлення довжини n. Якщо повідомлення мають довжину біля 1000 бітів, то такий перебір є на практиці, навіть за допомогою найпотужніших комп’ютерів. Наведений алгоритм пошуку відкритого тексту називають алгоритмом повного перебору або „метод брутальної сили”.

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

Насправді супротивник може намагатися атакувати криптосистему різними шляхами, використовувати різноманітні, більш складні алгоритми пошуку відкритого тексту.

Клас містить у собі клас , оскільки будь-яку задачу, що можна розв’язати за поліноміальний час на детермінованій машині Тьюрінга, можно розв’язати й на недетермінованій машині Тьюрінга за поліноміальний час, просто етап припущення опускається.

Якщо всі задачі класу розв’язуються за поліноміальний час і на детермінованій машині Тьюринга, . Хоч здається очевидним , що деякі задачі набагато складніші від інших (лобове розкриття алгоритму шифрування проти шифрування випадкового блоку шифротексту), ніхто не доказав, що ( чи ). Однак більшість спеціалістів, що займаються теорією складності, переконані, що ці класи нерівні. Можна навести приклади. . Майкл Кері та Девід Джонсон склали перелік більш ніж 300 - повних задач. Ось деякі з них:

  • Задача комівояжера. Комівояжер повинен об’їхати різних міст, використовуючи тільки один бак з пальним (задана максимальна відстань, яку він може проїхати). Чи існує такий маршрут, що дозволяє йому відвідати кожне місто лише один раз, використовуючи цей єдиний бак з пальним?

  • Задача про трійні шлюби. У кімнаті чоловіків, жінок і священиків (жерців, равінів, тощо). Окрім того існує список припустимих шлюбів, записи якого містять одного чоловіка, одну жінку й одного священика, що згоден провести обряд. Чи можливо, за умов цього списку, побудувати шлюбів так, щоб кожен чи вступав у шлюб тільки з однією людиною, чи реєстрував тільки один шлюб.

Наступним у ієрархії складності йде клас . Задачі класу можливо вирішити в поліноміальному просторі. До класу входить клас , але ряд задач вважають більш складним ніж задачі . Звісно, це поки що не може бути доведено. Відомий клас так званих - повних задач, що мають наступну властивість: якщо будь-яка з них є - задачею, то і якщо будь-яка з них є - задачею, то .

І ,нарешті, існує клас . Ці задачі розв’язуються за експоненційний час. На теперішній час можна довести, що -повні задачі неможливо розв’язати за детермінований поліноміальний час. Крім того доведено, що .

Дамо деякі визначення. Ми будемо говорити про алгоритми.

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

Звичайно, термін „чітко задана обчислювальна процедура ” є математично неточною. Вона може бути зроблена точною за допомогою формальних обчислювальних моделей, таких як машини Тьюринга, машини випадкового доступу чи булеві схеми. Однак, чим мати справу з технічними складностями таких моделей, краще розглядати алгоритм як комп’ютерну програму, записану деякою конкретною мовою програмування для конкретного комп’ютера, яка приймає змінні вхідні дані і зупиняється з видачею вихідних даних.

Зазвичай цікавим є знаходження найефективнішого (тобто, найшвидшого) алгоритму для розвязання даної обчислювальної задачі. Час, який витрачає алгоритм до зупинки, залежить від ”розміру” конкретної задачі. Крім того, одиниця часу, що використовується, повинна бути точною, особливо при порівнянні ефективності двох алгоритмів.

Якщо ми маємо справу з алгоритмом, то вважають зафіксованими два алфавіти: вхідний – А і вихідний – В. Робота алгоритму полягає у тому, що він отримує на вхід слово вхідного алфавіту, і як результат виконання послідовності елементарних операцій, подає на вихід слово у вихідному алфавіті.

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

Час виконання алгоритму на конкретних вхідних даних визначається як кількість елементарних операцій чи „кроків”, що виконуються. Часто крок використовується для визначення бітової операції. Для деяких алгоритмів буде більш зручним використовувати крок для маркування чогось ще, наприклад, порівняння, машинної команди, машинного тактового циклу, модулярного множення, тощо.

Якщо t ( n )  cnc для деякої константи с, то алгоритм вирішує задачу за поліноміальний (від довжини входу) час.

Такий алгоритм називають поліноміальним, а задачу такою, що вирішується поліноміально.

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

Алгоритм, що на безкінечній послідовності входів робить більш ніж кроків, де n – довжина входу, а с > 0 – деяка константа, називається експоненційним.

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

Так, наприклад, реалізація ідеї несиметричного шифрування базується на понятті однобічної взаємно однозначної функції , такої, що при відомому порівняно просто обчислити , однак зворотну функцію обчислити (за прийнятний час) неможливо. Цю властивість називають практичною незворотністю. Зазвичай обчислення прямої функції має поліноміальну складність, а зворотної – у кращому випадку експоненційну. У криптосистемі RSA достатньо просто знайти добуток двох простих чисел (поліноміальна складність), але задача розкладання великого числа на прості співмножники є дуже складною (як мінімум експоненційної складності). Сьогодні не існує жодної однобічної функції, для якої математично була б доказана її практична незворотність або експоненційна складність. Ті функції, що знайшли довгострокове застосування в криптографії, вважаються однобічними. При цьому можна лише стверджувати, що на сьогодні відомі алгоритми обчислення зворотної функції зі складністю, що практично може бути реалізована (в рамках заданих параметрів).

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

Нехай f та g будуть двома такими функціями.

Запис f(n) O( g(n)) означає, що f асимптотично зростає не швидше, ніж g(n), з точністю до постійного кратного, у той час як f(n) (g(n)) означає , що f(n) зростає, принаймні, також асимптотично швидко, як зростає g(n), з точністю до постійного множника.

f(n)  O(g(n)) означає, що функція f(n) стає несуттєвою відносно g(n) по мірі зростання n.

При цьому для будь-яких функцій f(n), g(n), h(n) і l(n) справедливі наступні властивості та співвідношення:

f (n) O(g(n)), у випадку, якщо g(n) = (f (n)).

f(n) (g(n)), у випадку. якщо f (n)  O(g(n)) і (f)n (g(n)).

Якщо f (n) O(h(n)) і (g)n O(h(n)), то ( f g)(n)  O(h(n)).

Якщо f (n)  O( h(n)) і g(n)  O(l(n)), то ( f g)( n) O(h(n)l(n)).

Рефлексивність f(n)  O(f(n)).

Транзитивність . Якщо f(n)  O(g(n)) і g(n)  O(h(n)), то f(n)  O(h(n)).

Зупинимося на складності арифметичних операцій із цілими числами.

Модель обчислень.

Вважатимемо, що числа представлені в двійковій системі обчислення.

Складність алгоритмів вимірюють кількістю арифметичних операцій (додавань, віднімань, множень і ділень із залишком ), необхідних для виконання всіх дій. Однак це визначення не бере до уваги величини чисел, що беруть участь в обчисленнях. Тому, часто беруть до уваги ще й величину чисел, зводячи обчислення до бітових операцій, тобто оцінюючи кількість необхідних операцій із цифрами 0 і 1, у двійковому записі чисел. Це залежить від задачі, що розглядається.

Даний підхід зручний з таких міркувань. По-перше у комп’ютерах дані подаються і обробляються і двійковому виді, а інші подання в основному використовують при вводі даних і при виведенні результатів. По - друге, перевід числа від однієї основи системи обчислень до іншої викнується швидко і потребує виконання арифметичних операцій (ділення з залишком, множення або додаваня чисел), де довжина запису числа (основу логарифмам не вказуємо, оскільки воно не впливає на вид оцінки складності). Перехід до іншої основи є рідкісною операцією, затратами на її виконання можна знехтувати. Нарешті, бітова оцінка непогано відображує реальну складність операцій, оскільки, як правило, оцінки складності для інших основ систем обчислень призводять лише до змін у константному множнику функції оцінки складності. При оцінці складності обчислювальних задач, звичайно, застосовують методи редукції і піднесення до інших задач з відомими оцінками складності.

Додавання і віднімання.

Звернемо увагу, що звичайні шкільні алгоритми складення і віднімання чисел стовпчиком, мають оцінку складності O(log N), де N – більше з двох чисел. Це мінімально можлива оцінка складності. Ми розглядаємо оцінку складності з точністю до константного множника. Множення і ділення.

Для множення і ділення двох чисел N і M алгоритми множення стовпчиком і ділення кутом дають оцінку O(log N log M). Тому для оцінки складності множення і ділення двох n-розрядних чисел виконується нерівність

n F(n) O(n2).

Відмітимо, що складності операцій множення, ділення з залишком, піднесення у квадрат і знаходження зворотного до даного елементу співпадають з точністю до константного множника. На перший погляд здається дивним те, що операції ділення і множення за складністю прирівнюють до операцій додавання і віднімання. Життєвий досвід підказує, що перемножити числа набагато складніше, ніж скласти їх. Насправді ж, обчислення можна організувати таким чином, що на множення чи ділення великих чисел буде потрібно не набагато більше бітових операцій, ніж на складення чи віднімання. Наприклад, алгоритм Шенгахе – Штрасена, що базується на так званому швидкому перетворенні Фурь’є, потребує O(n lnn lnln n) бітових операцій для того, щоб перемножити два n-розрядних двійкових числа. Тією ж кількістю операцій можна обійтися при виконанні ділення із залишком двох двійкових чисел, що записуються не більш ніж n числами.

Позначимо M(n) – складність операції множення двох n-розрядних чисел, D(n) – складність операції ділення із залишком 2n-розрядного числа на n-розрядне число, S(n)- складність операції піднесення до квадрату n розрядного числа й R(n)- складність.

Контрольні питання та задачі

  1. Перечислити основні підходи до визначення складності криптографічних систем.

  2. Дати визначення часу виконання алгоритму , часу виконання найгіршого випадка алгоритму, часу виконання середнього випадка алгоритму.

  3. Дати визначення поліномиального, експоненційного та субекспоненційного алгоритмів, навести приклади.

  4. Навести класи складності задач та взаємовідносини між ними.